没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
YOLOv4:目标检测的最佳速度和精度
摘要
有大量的特征据说可以提高卷积神经网络(CNN)的准确性。需要在大数据集
上对这些特征的组合进行实际测试,并对结果进行理论论证。有些特性仅适用于
某些模型和某些问题,或仅适用于小规模的数据集; 而一些特性,如批处理规范
化和残差连接,适用于大多数模型、任务和数据集。我们假设这些通用特征包括
加权残差连接(Weighted-Residual-Connections, WRC),跨阶段部分连接(CSP),跨
小批量标准化(CmBN)、自我对抗训练(SAT)和 mishish -activation。我们使用了新
的特征:WRC, CSP,CmBN, SAT, Mish 激活函数,Mosaic 数据增强,CmBN,
DropBlock 正则化,CIoU 损失,并结合其中一些,达到最佳的结果: 43.5% AP (65.7%
AP50) 时在 Tesla V100 上,MS COCO 数据集的实时速度为 65 FPS。源代码见
https://github.com/AlexeyAB/darknet.
1.介绍
大多数基于 cnn 的目标检测器在很大程度上只适用于推荐系统。例如,通过城市
摄像机搜索免费停车位是由慢速精确模型执行的,而汽车碰撞预警则与快速不准
确模型相关。通过提高实时对象检测器的精度,不仅可以将其用于提示生成推荐
系统,还可以用于独立流程管理和减少人工输入。实时物体检测器操作的传统图
形处理单元(GPU)允许其大规模使用在一个负担得起的价格。最精确的现代神经
网络不是实时操作的,需要大量的 GPU 来进行大规模的小批处理训练。我们通
过创建一个在传统 GPU 上实时运行的 CNN 来解决这些问题,而训练只需要一
个传统的 GPU。
图 1:YOLOv4 与其他最先进的目标探测器的比较 YOLOv4 的运行速度是
EfficientDet 的两倍,具有相当的性能。提高了 YOLOv3 的 AP 和 FPS 值,分别提
高了 10%和 12%。
本文工作的主要目标是设计一种在生产系统中运行速度快的目标检测器,并优化
并行计算,而不是低计算量理论指标(BFLOP)。我们希望所设计的对象能够易于
训练和使用。例如,任何使用传统 GPU 进行训练和测试的人都可以获得实时、
高质量、置信度较高的的目标检测结果,如图 1 所示的 YOLOv4 结果。我们的
贡献总结如下:
1. 我们开发了一种高效和强大的目标检测模型它使每个人都可以使用 1080Ti 或
2080Ti GPU 训练出一个超快、超准确的目标检测器。
2. 在检测器训练期间,我们验证了最先进的 Bag-of-Freebies 和 Bag-of-Specials 方
法对目标检测的影响。
3. 我们对最先进的方法进行了改进,使其更有效,更适合单个 GPU 的训练,包
括 CBN [89], PAN [49] ,SAM[85]等。
图 2:目标检测器
2. 相关工作
2.1.目标检测模型
现有的检测器通常由两部分组成,一个是在 ImageNet 上预先训练的主干,一个
是用来预测目标的类别和边界框的头部。对于 GPU 平台上运行的探测器,其主
干可以是 VGG[68]、ResNet[26]、ResNeXt[86]或 DenseNet[30]。对于那些运行在
CPU 平台上的检测器,它们的主干可以是 SqueezeNet [31], MobileNet[28, 66,
27, 74]或 ShuffleNet[97, 53]。最具代表性的两级物体检测器是 R-CNN[19]系列,
包括 fast R-CNN[18]、faster R-CNN[64]、R-FCN[9]、Libra R-CNN[58]。也可以将
两级对象检测器做成无锚目标检测器,例如 RepPoints[87]。对于单级物体检测器,
最具代表性的模型有 YOLO[61,61,63]、SSD[50]和 RetinaNet[45]。近年来,无锚
单级目标探测器得到了发展。这类探测器是 CenterNet [13], CornerNet [37, 38],
FCOS[78]等。近年来发展起来的目标检测器经常在主干网和头部之间插入一些
层,这些层通常用于收集不同阶段的特征图。我们可以称它为物体探测器的颈部。
通常,颈部 neck 由几个自底向上的路径和几个自顶向下的路径组成。具有这种
机制的网络包括特征金字塔网络(FPN)[44]、路径聚合网络(PAN)[49]、BiFPN[77]
和 NAS-FPN[17]。除上述模型外,一些研究人员将重点放在直接构建一个新的主
干 网络(DetNet [43] , DetNAS[7]) 或 一 个 新 的 整 体 模 型 (SpineNet [12] ,
HitDetector[20])用于目标检测。
综上所述,一个普通的物体探测器由以下几个部分组成:
•输入:图像,填充,图像金字塔
•Backbones: VGG16 [68], ResNet-50 [26], SpineNet[12], EfficientNet-B0/B7 [75],
CSPResNeXt50 [81],CSPDarknet53 [81]
•颈部 Neck:
•附加块: SPP [25], ASPP [5], RFB[47], SAM [85]
•路径聚合块: FPN [44], PAN [49],NAS-FPN [17], Fully-connected FPN, BiFPN
[77], ASFF [48], SFAM [98]
•头部:
•密集预测(单阶段):
◦RPN [64], SSD [50], YOLO [61], RetinaNet[45] (anchor based)
◦CornerNet [37], CenterNet [13], MatrixNet[60], FCOS [78] (anchor free)
•稀疏预测(两阶段):
◦Faster R-CNN [64], R-FCN [9], Mask RCNN [23] (anchor based)
◦RepPoints [87] (anchor free)
2.2. Bag of freebies
通常,传统的物体检测器是离线训练的。因此,研究者们一直喜欢利用这一
优势,开发更好的训练方法,使目标检测器在不增加推理成本的情况下获得更好
的准确性。我们把这些只会改变训练策略或只会增加训练成本的方法称为“Bag of
freebies”。 目标检测方法经常采用的符合 Bag of freebies 定义的方法是数据增强。
数据增强的目的是增加输入图像的可变性,使所设计的目标检测模型对不同环境
下获得的图像具有更高的鲁棒性。例如,光度畸变和几何畸变是两种常用的数据
增强方法,它们无疑有利于目标检测任务。在处理光度失真时,我们调整图像的
亮度、对比度、色调、饱和度和噪声。对于几何失真,我们添加了随机缩放、裁
剪、翻转和旋转。
上述数据增强方法均为逐点调整,调整区域内所有原始像素信息均被保留。
此外,一些从事数据增强的研究人员将重点放在模拟物体遮挡问题上。它们在图
像分类和目标检测方面取得了良好的效果。例如,random erase[100]和 CutOut[11]
可以随机选择图像中的矩形区域,填充一个随机或补零的值。而 hide-and-seek[69]
和 grid mask[6]则是在一幅图像中随机或均匀地选取多个矩形区域,并将其全部
替换为 0。如果将类似的概念应用于特征映射,则有 DropOut[71]、DropConnect[80]
和 DropBlock[16]方法。此外,也有研究者提出了利用多幅图像一起进行数据增
强的方法。例如,MixUp[92]使用两幅图像以不同的系数比进行相乘和叠加,然
后用这些叠加的系数比调整标签。CutMix[91]是将裁剪后的图像覆盖到其他图像
的矩形区域,并根据 mix 区域的大小调整标签。除了上述方法外,我们还使用了
风格转移 GAN[15]进行数据增强,这样的使用可以有效的减少 CNN 学习到的纹
理偏差。
与上面提出的各种方法不同的是,其他一些 Bag of freebies 方法致力于解决
数据集中的语义分布可能存在偏差的问题。在处理语义分布偏差问题时,一个非
常重要的问题是不同类之间存在数据不平衡的问题,这一问题通常通过两阶段目
标检测器中的难反例挖掘[72]或在线难例挖掘[67]来解决。但是实例挖掘方法并
不适用于单级目标检测器,因为这类检测器属于密集预测体系结构。因此 Lin 等
人[45]提出了 focal loss(焦点损失函数)来解决不同类别间数据不平衡的问题。另
一个非常重要的问题是,很难用一种热的硬表征来表达不同类别之间的关联程度
关系。这种表示模式在执行标记时经常使用。[73]提出的标签平滑是将硬标签转
换为软标签进行训练,可以使模型更加鲁棒。为了获得更好的软标签,Islam 等
人[33]引入了知识精炼的概念来设计标签细化网络。
最后的 Bag of freebies 是目标函数边界盒(BBox)回归。传统的对象探测器通常使
用均方误差(MSE)直接执行回归中心点坐标和 BBox 的高度和宽度,即{x
center
,
y
center
,w, h},或左上角和右下角点,也就是说, {x
top_lef
t, y
top_left
, x
bottom_right
, y
bottom_ right
}。
基于锚的方法是估计相应的偏移量,例如{xcenter_offset, ycenter_offset,woffset, hoffset}和{xtop_left offset,
ytop_lef t_offset,xbotto_ right_offset, ybottom_right_offset}。但是,要直接估计各点的坐标值 BBox 将这
些点视为独立变量,但实际上并不考虑目标本身的完整性。为了更好地处理这一
问题,最近一些研究者提出了 IoU loss[90],将预测 BBox 区域和 ground truth BBox
区域的覆盖率考虑在内。在 IoU 损失计算过程中,会根据 ground truth 执行 IoU,
触发 BBox 四个坐标点的计算,然后将生成的结果连接成一个完整的编码。由于
IoU 是一种尺度不变表示,它可以解决传统方法计算 l
1
或 l
2
的{x, y, w, h}损失,
损失会随着尺度的增大而增大的问题。例如 GIoU loss[65]是指除覆盖区域外,还
包括物体的形状和方向。他们提出找到最小的同时覆盖预测 BBox 和地面真实
BBox 的区域 BBox,并加以利用以 BBox 作为分母,取代原来用于借据丢失的分
母。对于 DIoU 损失[99],它又考虑了物体中心的距离,CIoU 损失[99],另一方
面又同时考虑了重叠区域、中心点之间的距离和宽高比。CIoU 在 BBox 回归问
题上具有较好的收敛速度和精度。
2.3. Bag of specials
对于那些只增加少量推理成本但能显著提高目标检测精度的插件模块和后
处理方法,我们称之为“Bag of specials”。 总的来说,这些插件模块是为了增强
模型中的某些属性,如增大感受野、引入注意机制、增强特征融合能力等,后处
理是一种筛选模型预测结果的方法。
可以用来增大感受野的常用模块有 SPP[25]、ASPP[5]和 RFB[47]。SPP 模块
来源于空间金字塔匹配(Spatial Pyramid Matching, SPM) [39], SPM 的原始方法
是将特征映射分割成几个 d × d 相等的块,其中 d 为{1, 2,3…},从而组成空间金
字塔,进而提取词袋特征。SPP 将 SPM 集成到 CNN 中,使用 max-pooling 操作
代替 bag-of-word 操作。由于 He 等人[25]提出的 SPP 模块会输出一维的特征向
量,因此在全卷积网络(Fully Convolutional Network, FCN)中应用是不可行的。因
此,在 YOLOv3[63]的设计中,Redmon 和 Farhadi 改进了 SPP 模块连接最大池化
输出,其内核大小为 k × k,其中 k = {1,5,9,13},步长等于 1。在这种设计下,一
个相对较大的 k × k maxpooling 有效地增加了骨干网络的感受野。在添加了 SPP
模块的改进版本后,YOLOv3-608 在 MS COCO 目标检测任务上将 AP50 升级
2.7%,增加了 0.5%的计算量。ASPP[5]模型与改进后的 SPP 模块在操作上的差异
主要来自于原始的 k×k 内核大小, stride 的 max-pooling 等于 1 到几个 3 × 3 内核
大小,膨胀比等于 k,膨胀卷积运算的 stride 等于 1。RFB 模块是利用 k×k 内核
的几个膨胀卷积,膨胀比等于 k, 步长等于 1,获得比 ASPP 更全面的空间覆盖。
RFB[47]仅花费 7%的额外推理时间,将 MS COCO 上 SSD 的 AP50 增加 5.7%。
目标检测中常用的注意模块主要分为通道式注意和点式注意,这两种注意模
型的代表分别是 squeeze-and-inspire (SE)[29]和 Spatial attention module (SAM)[85]。
虽然 SE 模块可以提高 ResNet50 在 ImageNet 图像分类任务中 1% top-1 准确率的
能力,而代价只是增加了 2%的计算工作量, 但在 GPU 上通常会增加 10%左右的
推理时间,所以它更适合用于移动设备。而对于 SAM,只需要额外增加 0.1%的
计算量,就可以将 ResNet50-SE 在 ImageNet 图像分类任务上的 top-1 准确率提高
0.5%。最重要的是,它根本不会影响 GPU 的推理速度。
在特征融合方面,早期的实践是使用跳过连接(skip connection)[51]或超列
(hyper-column)[22]将低级得分物理特征融合到高级的语义特征。随着 FPN 等多
尺度预测方法的流行,人们提出了许多集成不同特征金字塔的轻量级模型。这类
模型包括 SFAM[98]、ASFF[48]和 BiFPN[77]。SFAM 的主要思想是利用 SE 模块
对多尺度的级联特征图进行通道级重加权。对于 ASFF,它使用 softmax 作为逐
点级调整权重,然后添加不同尺度的特征图。在 BiFPN 中,提出多输入加权残
差连接进行尺度级重加权,然后添加不同尺度的特征映射。
在深度学习的研究中,一些人把注意力放在寻找好的激活函数上。一个好的
激活函数可以使梯度更有效地传播,同时不会造成过多的额外计算成本。2010 年,
Nair 和 Hinton[56]提出 ReLU 激活函数,实质上解决了传统 tanh 和 sigmoid 激活
函数中经常遇到的梯度消失问题。随后,LReLU [54], PReLU [24], ReLU6[28],
比例指数线性单元(SELU)[35]、Swish[59]、hard-Swish[27]和 Mish [55],被提出
从而解决了梯度消失问题。LReLU 和 PReLU 主要目的是为了解决输出小于零时
ReLU 的梯度为零的问题。至于 ReLU6 和 hard-Swish,它们是专门为量化网络设
计的。对于神经网络的自归一化,提出了 SELU 激活函数来满足目标。需要注意
的是,Swish 和 Mish 都是连续可微的激活函数。
基于深度学习的对象检测中常用的后处理方法是 NMS,它可以过滤那些预
测同一对象不好的 bbox,只保留响应较高的候选 bbox。NMS 尝试改进的方式与
优化目标函数的方法是一致的。NMS 原来提出的方法没有考虑背景信息,所以
Girshick 等人[19]在 R-CNN 中加入分类置信度得分作为参考,并根据置信度得分
的顺序,贪婪 NMS 按照得分高到低的顺序进行。对于 soft NMS[1],考虑了 greedy
NMS的 IoU评分,目标的遮挡可能会导致其置信度降低的问题。而 DIoU NMS[99]
开发人员的思路是在 soft NMS 的基础上将中心点距离的信息添加到 BBox 筛选
过程中。值得注意的是,由于上述后处理方法都没有直接引用捕获的图像特征,
因此在后续开发无锚方法时不再需要后处理。
3.方法
基本目标是快速的神经网络运行速度,在生产系统和并行计算的优化,而不
是低计算量理论指标(BFLOP)。我们提出了两种实时神经网络的选择:
• 对于 GPU , 我 们 在 卷 积 层 中 使 用 少 量 的 组 (1-8):CSPResNeXt50 /
CSPDarknet53
•对于 VPU -我们使用分组卷积,但我们避免使用 Squeeze-and-excitement (SE)
块-具体包括以下型号:EfficientNet-lite / MixNet [76] / GhostNet [21] / MobileNetV3
3.1.结构的选择
我们的目标是在输入网络分辨率、卷积层数、参数个数(filter size2 * filters *
channel / groups) (filter_size2 *滤波器*通道/组)和层输出数(滤波器)之间找到最优
的平衡。例如,我们的大量研究表明,在 ILSVRC2012 (ImageNet)数据集[10]上,
CSPResNext50 在目标分类方面比 CSPDarknet53 要好得多。然而,相反,
CSPDarknet53 在 MS COCO 数据集[46]上检测目标方面比 CSPResNext50 更好。
剩余29页未读,继续阅读
长沙有肥鱼
- 粉丝: 1w+
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- sony 索尼IMX334摄像头模组电路板AD版硬件PCB图(6层板).zip
- 基于flask和echarts融合交易策略的bitfinex可视化微服务.zip
- 包含了wvp-assist.tar wvp-talk.tar zlmediakit.tar .
- 3r4efgh53wgrf43tw
- 2024新版Java基础从入门到精通全套视频+资料下载
- Spring AI大模型视频教程+ChatGPT视频教程+OpenAI大模型视频教程(资料+视频教程)
- ABB工业机器人教程PDF版本
- 123321123323211
- yolov8实战第八天-pyqt5-yolov8实现车牌识别系统(论文(8700+字+数据集+完整部署代码+代码使用说明)
- 三相桥式全桥整流电路MATALB Simulink仿真文件
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0