FastestDet:轻量级目标检测 实时Anchor-free目标检测算法

举报
风吹稻花香 发表于 2022/07/05 23:58:34 2022/07/05
【摘要】 预训练模型1.1m 速度看起来还可以。 代码地址:https://github.com/dog-qiuqiu/FastestDet NetworkCOCO mAP(0.5)ResolutionRun Time(4xCore)Run Time(1xCore)FLOPs(G)Params(M)Yolo-FastestV1.124.40...

预训练模型1.1m

速度看起来还可以。

代码地址:https://github.com/dog-qiuqiu/FastestDet

Network COCO mAP(0.5) Resolution Run Time(4xCore) Run Time(1xCore) FLOPs(G) Params(M)
Yolo-FastestV1.1 24.40 % 320X320 26.60 ms 75.74 ms 0.252 0.35M
Yolo-FastestV2 24.10 % 352X352 23.8 ms 68.9 ms 0.212 0.25M
FastestDet 27.8% 512X512 21.51ms 34.62ms * 0.25M

Multi-platform benchmark

Equipment Computing backend System Framework Run time(Single core) Run time(Multi core)
Radxa rock3a RK3568(arm-cpu) Linux(aarch64) ncnn 34.62ms 21.51ms
AMD R5-5600(X86-cpu) Linux(amd64) ncnn 2.16ms 1.73ms
Intel i7-8700(X86-cpu) Linux(amd64) ncnn 5.21ms 4.73ms

01概述

FastestDet是设计用来接替yolo-fastest系列算法,相比于业界已有的轻量级目标检测算法如yolov5n, yolox-nano, nanoDet, pp-yolo-tiny, FastestDet和这些算法压根儿不是一个量级,FastestDet无论在速度还是参数量上,都是要小好几个数量级的(不要在拿int8的模型和我fp32的模型比体积了,不公平),但是精度自然而然也比不过。FastestDet是针对计算资源紧缺的ARM平台设计的,突出单核效能,因为在实际业务场景中,不会把所有CPU资源都给推理框架做模型推理的,假如说你想在例如树莓派, RK3399, RK3568去跑实时目标检测,那么FastestDet是比较好的选择,或者移动端上不想占用太多cpu资源,也可以去用单核并设置cpu sleep去推理FastestDet,在低功耗的条件下运行算法。

02

新框架算法

先说下FastestDet的几个重要特性: 

  • 单轻量化检测头

  • anchor-free

  • 跨网格多候选目标

  • 动态正负样本分配

  • 简单的数据增强

下面我就一个个去详细讲下吧:

单轻量化检测头

这个是对网络结构上对算法模型进行优化,主要是提升算法运行速度,简化后处理步骤,大家可以先看下这块的网络结构:

其实多检测头设计的是为了适应检测不同尺度物体目标,高分辨率的检测头负责检测小物体,低分辨的检测头负责检测大物体,一种分而治之的思想。

我个人觉得根因在于感知野,不同尺度的物体所需要的感知野是不同的,而模型每层的感知野都是不一样的,包括FPN也是对不同感知野特征的汇总融合。这块单检测头我也是参考的YOLOF的思想,在网络结构中,采用类似inception的5x5分组卷积并行网络结构,期待能融合不同感知野的特征,让单个检测头也能适应检测不同尺度的物体。

Anchor-Free

原先的anchor-base算法在训练模型都需要对数据集进行anchor-bias的运算,anchor-bias可以理解为对数据集中标注物体的宽高进行聚类,得到一组先验宽高,网络在这组先验宽高的基础上去优化预测框的宽高。FastestDet采用的是anchor-free算法,模型是直接回归gt于特征图宽高的scale值的,是没有先验宽高。这种方法可以简化模型后处理。而且对于anchor-base算法每个特征图的特征点是对应N个anchor候选框的,而这种anchor-free每个特征图的特征点只对应一个候选框,所以在推理速度上也是有优势的。

跨网格多候选目标

这块还是借鉴了yolov5,不单单只把gt中心点所在的网格当成候选目标,还把附近的三个也算进行去,增加正样本候选框的数量,如下图所示:

动态正负样本分配

所谓的动态正负样本分配其实就是在模型训练过程去动态分配正负样本,这是有别于以前yolo-fastest的,原先yolo-fastest的anchor-bias设置好以后, 通过计算anchor-bias与gt宽高的scale,对scale卡固定阈值分配正负样本(参考yolov5的做法),而anchor-bias和gt在训练过程中都是不变的,所以正负样本分配在训练过程中也是不变的。

而在FastestDet的正负样本分配参考的ATSS,通过设置预测框与GT计算的SIOU的均值作为分配正负样本的阈值,假如当前预测框与GT的SIOU阈值大于均值,那么为正样本,反之异然。(为什么没有参考simota?那是因为在构建cost矩阵时,不同loss的权重还得调超参,懒的调了)

简单的数据增强

对于轻量级的模型数据增强要慎重,本来学习能力差,脑子不怎么好使,上来给难题做可不拉跨,所以采用简单的数据增强如随机平移和随机缩放,并没有采用moscia和Mixup。

03

实验结果

文章来源: blog.csdn.net,作者:AI视觉网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/125611465

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。