YOLOv4-目标检测方法-论文翻译

YOLOv4:目标检测的最佳速度和精度

2020年4月24日,著名目标检测方法YOLO推出了第四个版本,以下是论文的原文翻译。

摘要

当前,有大量的特征被认为可以提高卷积神经网络(CNN)的精度。需要在大型数据集上对这些特征的组合进行实际测试,并对结果进行理论证明。某些特征对特定的模型具有决定性的作用,对于某些特定的问题仅适用于小规模数据集;而某些特性(如批处理规范化和剩余连接)适用于大多数模型、任务和数据集。我们假设这些通用特征包括加权剩余连接(WRC)、跨阶段部分连接(CSP)、跨小批量规范化(CmBN)、自对抗训练(SAT)和Mish激活。我们使用新功能:WRC、CSP、CmBN、SAT、误激活、马赛克数据增强、CmBN、DropBlock正则化和CIoU丢失,并将其中一些功能结合起来,以达到最新的结果:43.5%AP(65.7%AP50)用于MS COCO数据集,在Tesla V100上以65 FPS的实时速度。源代码位于:https://github.com/AlexeyAB/darknet

1介绍

大多数基于CNN的目标检测器大多只适用于推荐系统。例如,通过城市摄像机搜索免费停车位是由低精度模型执行的,而汽车碰撞警告则与高精度模型相关。通过提高实时目标检测的准确性,不仅可以将其用于提示生成推荐系统,还可以用于独立的过程管理和减少人工输入。在传统图形处理单元(GPU)上进行实时目标检测,可以以合理的价格,大量使用。最精确的现代神经网络不具备实时性,需要大量的gpu进行小批量的训练。我们通过创建一个CNN来解决这些问题,CNN在传统GPU上实时运行,而训练只需要一个传统GPU。

图1:提出的YOLOv4和其他最新物体探测算法的比较。YOLOv4的运行速度比EfficientDet快两倍,性能相当。使YOLOv3的AP和FPS分别提高10%和12%。

这项工作的主要目标是设计生产系统中目标探测器的快速运行速度和并行计算的优化,而不是低计算量理论指标(BFLOP)。我们希望所设计的对象可以很容易地训练和使用。例如,任何使用传统GPU进行训练和测试的人都可以获得实时、高质量和令人信服的目标检测结果,如图1所示的YOLOv4结果。我们的贡献总结如下:

  1. 我们建立了一个高效而强大的目标检测模型。它使得每个人都可以使用1080ti或2080ti GPU来训练一个超快速和精确的目标探测器。
  2. 在检测模型训练过程中,我们验证了最先进的Freebies和Bag-of-Specials对目标检测方法的影响。
  3. 我们修改了最新的方法,使之更有效,更适合于单一GPU训练,包括CBN[89]、PAN[49]、SAM[85]等。

2相关工作

2.1目标检测模型

现代检测器通常由两部分组成,一部分是在图像网络上预先训练的主干,另一部分是用来预测物体类别和边界盒的头部。对于运行在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、62、63]、SSD[50]和RetinaNet[45]。近年来,无锚单级目标探测器得到了发展。这类探测器有CenterNet[13]、CornerNet[37、38]、FCOS[78]等,近年来发展起来的目标探测器往往在主干和头部之间插入一些层,这些层通常用于收集不同阶段的特征图。我们可以称之为目标探测器的颈部。通常,颈部由几个自下而上的路径和几个自上而下的路径组成。具有这种机制的网络包括特征金字塔网络(FPN)[44]、路径聚合网络(PAN)[49]、BiFPN[77]和NAS-FPN[17]。

除了上述模型外,一些研究人员还将重点放在直接构建用于目标检测的新骨干网(DetNet[43]、DetNAS[7])或新的整体模型(SpineNet[12]、hitdector[20])。

综上所述,普通目标探测器由几个部分组成:

  • 输入:图像、切片、图像金字塔
  • 主干网络:VGG16 [68], ResNet-50 [26], SpineNet[12], EfficientNet-B0/B7 [75],CSPResNeXt50 [81],CSPDarknet53 [81]
  • 颈部:
    • 附加块: 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 R-CNN [23] (anchor based);RepPoints [87] (anchor free)

2.2一袋免费包

通常,传统的目标探测器是离线训练的。因此,研究者总是希望利用这一优势,开发出更好的训练方法,使目标检测器在不增加推理成本的情况下获得更好的精度。我们把这些只改变训练策略或只增加训练成本的方法称为“免费包”,目标检测方法通常采用的满足免费包定义的方法是数据增强。数据增强的目的是增加输入图像的可变性,使所设计的目标检测模型对来自不同环境的图像具有更高的鲁棒性。例如,光度学和几何学是两种常用的数据增强方法,它们无疑有利于目标检测任务。在处理光度失真时,我们调整图像的亮度、对比度、色调、饱和度和噪声。对于几何失真,我们添加了随机缩放、裁剪、翻转和旋转。

上述数据增强方法均为逐像素调整,并且保留调整区域中的所有原始像素信息。此外,一些从事数据增强的研究者把重点放在模拟物体遮挡问题上。在图像分类和目标检测方面取得了良好的效果。例如,random erase[100]和CutOut[11]可以随机选择图像中的矩形区域,并填充0的随机值或互补值。至于捉迷藏(69)和网格掩码(6),它们随机或均匀地选择图像中的多个矩形区域,并将它们替换为全部零。如果将类似的概念应用于特征地图,则有DropOut[71]、DropConnect[80]和DropBlock[16]方法。此外,一些研究者还提出了利用多幅图像进行数据增强的方法。例如,MixUp[92]使用两个图像以不同的系数比率进行乘法和叠加,然后使用这些叠加比率调整标签。对于CutMix[91],它是将裁剪后的图像覆盖到其他图像的矩形区域,并根据混合区域的大小调整标签。除了上述方法外,样式转移GAN[15]还用于数据增强,这样的使用可以有效地减少CNN学习到的纹理偏差。

与以上提出的各种方法不同的是,其他一些免费包方法致力于解决数据集中的语义分布可能存在偏差的问题。在处理语义分布偏差问题时,一个非常重要的问题是不同类之间存在数据不平衡的问题,这一问题通常通过两级对象检测器中的硬负示例挖掘[72]或在线硬示例挖掘[67]来解决。但是,由于单级目标检测器属于密集预测结构,因此实例挖掘方法不适用于单级目标检测器。因此,Lin等人。[45]提出了焦点损失的概念,以解决不同类别之间存在的数据不平衡问题。另一个非常重要的问题是,很难用一个热的硬性表示来表达不同类别之间关联度的关系。此表示方案通常在执行标记时使用。文[73]提出的标签平滑是将硬标签转化为软标签进行训练,使模型更加健壮。为了获得更好的软标签,Islam等人。[33]引入知识蒸馏的概念,设计了标签细化网络。

最后一袋赠品是边界盒回归的目标函数。传统的目标检测器通常使用均方误差(MSE)直接对BBox的中心点坐标和高度、宽度进行回归,即{xcenter,ycenter,w,h},或是左上点和右下点,即{xtop lef t,ytop lef t,xbottom right,ybottom right}。基于锚的方法是估计相应的偏移量,如f集的{xcenter of f set,ycenter of f set,wof f set,hof f set}和{xtop lef t of f set,ytop lef t of f set,xbottom right of f set,ybottom right of f set}。然而,直接估计BBox中每个点的坐标值就是把这些点作为自变量来处理,但实际上并不考虑对象本身的完整性。为了使这个问题得到更好的处理,一些研究人员最近提出了IoU损失[90],其中考虑了预测BBox面积和地面真实BBox面积的覆盖。IoU损耗计算过程将通过执行IoU和地面真值来触发BBox四个坐标点的计算,然后将生成的结果连接成一个完整的代码。由于IoU是尺度不变的表示,它可以解决传统方法计算{x,y,w,h}的l1或l2损耗时,损耗会随着尺度的增大而增大的问题。最近,一些研究人员继续改善借据损失。例如,GIoU loss[65]是除了覆盖区域之外还包括对象的形状和方向。他们提出寻找能同时覆盖预测BBox和地面真值BBox的最小面积BBox,并用这个BBox作为分母来代替原来用于IoU损失的分母。对于DIoU损失[99],它另外考虑了物体中心的距离,而CIoU损失[99],另一方面,它同时考虑了重叠区域、中心点之间的距离和纵横比。CIoU算法在BBox回归问题上具有较好的收敛速度和精度。

2.3一袋特殊包

对于那些只增加少量推理代价却能显著提高目标检测精度的插件模块和后处理方法,我们称之为“特殊包”。一般来说,这些插件模块是为了增强模型中的某些属性,如扩大接受域、引入注意机制、增强特征集成能力等,后处理是筛选模型预测结果的一种方法。

可用于增强感受野的常见模块有SPP[25]、ASPP[5]和RFB[47]。SPP模块源于空间金字塔匹配(SPM)[39],SPMs最初的方法是将特征图分割成若干个d×d相等的块,其中d可以是{1,2,3,…},从而形成空间金字塔,然后提取一袋字的特征。SPP将SPM集成到CNN中,使用max池操作而不是包字操作。自He等人提出SPP模块以来。[25]将输出一维特征向量,不适用于全卷积网络(FCN)。因此,在YOLOv3[63]的设计中,Redmon和Farhadi改进了SPP模块,将最大池输出与内核大小k×k(其中k={1,5,9,13},步长等于1)连接起来。在这种设计下,相对较大的k×k最大池有效地增加了骨干特征的接收场。在加入了改进版的SPP模块后,YOLOv3-608在MS-COCO目标检测任务上以0.5%的额外计算代价将ap50升级了2.7%。ASPP[5]模与改进的SPP模在运算上的区别主要在于原k×k核大小、最大步长池等于1到几个3×3核大小、扩展比等于k、扩展卷积运算步长等于1。RFB模块是利用k×k核的几个扩展卷积,扩展比为k,步长为1,得到比ASPP更全面的空间覆盖。RFB[47]仅需7%的额外推断时间,即可将MS-COCO上SSD的ap50提高5.7%。

在目标检测中常用的注意模块主要分为通道注意和点注意,这两种注意模型的代表分别是挤压和激发(SE)[29]和空间注意模块(SAM)[85]。虽然SE模块可以提高ResNet50在ImageNet图像分类任务中的能力1%的top-1精度,只需增加2%的计算量,但在GPU上通常会增加10%左右的推理时间,因此更适合在移动设备中使用。但对于SAM,只需额外支付0.1%的计算费用,就可以在ImageNet图像分类任务中提高ResNet50 SE 0.5%的top-1精度。最重要的是,它根本不影响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和硬开关,它们是专门为量化网络设计的。为了实现神经网络的自规范化,提出了一种SELU激活函数。需要注意的是Swish和Mish都是连续可微的激活函数。

在基于深度学习的目标检测中,常用的后处理方法是NMS,它可以过滤那些对同一目标预测不好的bbox,只保留响应较高的候选bbox。NMS试图改进的方法与优化目标函数的方法是一致的。NMS提出的原始方法不考虑上下文信息,因此Girshick等人。[19] 在R-CNN中加入分类置信度得分作为参考,根据置信度得分的顺序,贪婪NMS的得分由高到低依次进行。对于软NMS[1],考虑了对象的遮挡可能导致贪婪的具有IoU分数的NMS的置信度下降的问题。DIoU NMS[99]开发人员的思路是在软NMS的基础上,在BBox筛选过程中加入中心点距离信息。值得一提的是,由于上述后处理方法都没有直接引用捕获的图像特征,因此在随后的无锚方法的开发中不再需要后处理。

3研究方法

其基本目标是神经网络在生产系统中的快速运行和并行计算的优化,而不是低计算量理论指标
(BFLOP)。我们提出了两种实时神经网络方案:

  • 对于GPU,我们在卷积层中使用少量的组(1-8):CSPResNeXt50/CSPDarknet53
  • 对于VPU,我们使用分组卷积,但我们不使用挤压和刺激(SE)块,具体来说,这包括以下模型:EfficientNet lite/MixNet[76]/GhostNet[21]/MobileNetV3

3.1选择结构

我们的目标是找到输入网络分辨率、卷积层数、参数数(滤波器尺寸2 * 滤波器 * 信道/组)和层输出数(滤波器)的最佳平衡。例如,我们的大量研究表明,就ILSVRC2012(ImageNet)数据集上的对象分类而言,CSPResNext50比CSPDarknet53要好得多[10]。然而,相反地,在检测MS-COCO数据集上的对象方面,CSPDarknet53比CSPResNext50要好[46]。

下一个目标是为增加接收场选择额外的块,并为不同的检测器水平从不同的骨干水平选择最佳的参数聚集方法:例如FPN、PAN、ASFF、BiFPN。

对于检测器来说,分类最优的参考模型并不总是最优的。与分类器相比,检测器需要以下各项:

  • 更高的输入网络尺寸(分辨率)-用于检测多个小型物体
  • 更多的层-为了一个更高的接收场以覆盖输入网络增大的尺寸
  • 更多的参数-为了提高模型在单个图像中检测多个不同大小对象的能力

假设地说,我们可以假设一个感受野较大的模型(卷积层数为3×3)和参数较多的模型应该被选为主干。表1显示了CSPResNeXt50、CSPDarknet53和EfficientNet B3的信息。CSPResNext50仅包含16个卷积层3×3、425×425感受野和20.6M参数,CSPDarknet53包含29个卷积层3×3、725×725感受野和27.6M参数。理论证明和大量实验表明,CSPDarknet53神经网络是二者作为探测器骨干的最优模型。

不同大小的感受野的影响总结如下:

  • 最大对象大小-允许查看整个对象
  • 最大网络大小-允许查看对象周围的上下文
  • 超过网络大小-增加图像点和最终激活之间的连接数

我们在CSPDarknet53上添加了SPP块,因为它显著地增加了接收场,分离出了最重要的上下文特征,并且几乎没有降低网络运行速度。我们用PANet代替YOLOv3中的FPN,从不同的主干层对不同的检测器层进行参数聚合。

最后,选择CSPDarknet53骨干网、SPP附加模块、PANet路径聚合颈部和YOLOv3(基于锚的)头部作为YOLOv4的体系结构。

在未来,我们计划对检测器的免费包(Bag of Freebies,BoF)内容进行显著扩展,理论上可以解决一些问题,提高检测器的准确度,并以实验的方式依次检查每个特征的影响。

我们不使用跨GPU批处理规范化(CGBN或SyncBN)或昂贵的专用设备。这允许任何人在传统图形处理器(如GTX 1080Ti或RTX 2080Ti)上复制我们的最新成果。

3.2选择BoF和BoS

为了改进目标检测训练,CNN通常使用以下方法:

  • 激活函数:ReLU、leaky ReLU、parametric ReLU、ReLU6、SELU、Swish或Mish
  • 边界盒回归损失:MSE、IoU、GIoU、CIoU、DIoU
  • 数据增强: CutOut, MixUp, CutMix
  • 正则化方法:DropOut, DropPath [36],Spatial DropOut [79], or DropBlock
  • 按均值和方差对网络激活进行规范化: Batch Normalization (BN) [32],Cross-GPU Batch Normalization (CGBN or SyncBN)[93], Filter Response Normalization (FRN) [70], or Cross-Iteration Batch Normalization (CBN) [89]
  • 跳过链接: Residual connections, Weighted residual connections, Multi-input weighted residual
    connections, or Cross stage partial connections (CSP)

至于训练激活函数,由于PReLU和SELU更难训练,并且ReLU6是专门为量化网络设计的,因此我们将上述激活函数从候选列表中移除。在重新规范化方法中,发表DropBlock的人详细比较了他们的方法和其他方法,他们的正则化方法赢得了很多。因此,我们毫不犹豫地选择DropBlock作为正则化方法。至于规范化方法的选择,由于我们关注的是一种只使用一个GPU的训练策略,所以不考虑syncBN。

3.3其他改进

为了使所设计的检测器更适合单GPU的训练,我们做了如下的额外设计和改进:

  • 介绍了一种新的数据增强拼接和自对抗训练方法(SAT)
  • 应用遗传算法选择最优超参数
  • 我们修改了一些现有的方法,使我们的设计适合于有效的训练和检测-修改的SAM、修改的PAN和交叉小批量规范化(CmBN)

马赛克代表了一种新的数据增强方法,混合了4幅训练图像。因此,4种不同背景的混合,而CutMix只混合2个输入图像。这允许检测正常上下文之外的对象。此外,批处理规范化从每一层上的4个不同图像计算激活统计信息。这大大减少了对大批量的需求。

自对抗训练(SAT)也代表了一种新的数据增强技术,它分为两个前后阶段。在第一阶段,神经网络改变原始图像而不是网络权值。通过这种方式,神经网络对自身进行了一次对抗性攻击,改变原始图像,从而制造出图像上没有所需对象的欺骗。在第二阶段,神经网络以正常的方式被训练到目标物体上。

CmBN表示CBN修改版本,如图4所示,定义为跨小批量规范化(CmBN)。这只收集单个批次中的小批次之间的统计信息。

我们将SAM从空间注意修改为点注意,并替换PAN到连接的快捷连接,分别如图5和图6所示。

3.4YOLOv4

在本节中,我们将详细介绍YOLOv4。

YOLOv4包括:

  • 主干网:CSPDarknet53[81]
  • 颈部:SPP[25],PAN[49]
  • 头部:YOLOv3[63]

YOLO v4使用:

  • 主干免费包(BoF):CutMix和Mosaic数据增强、DropBlock正则化、类标签平滑
  • 主干网特殊包(BoS):误激活、跨阶段部分连接(CSP)、多输入加权剩余连接(MiWRC)
  • 检测器的免费包(BoF):CIoU丢失,CmBN,DropBlock正则化,马赛克数据增强,自对抗训练,消除网格敏感度,使用多个锚实现单个地面真实,余弦退火调度器[52],最优超参数,随机训练形状
  • 检测器专用包(BoS):Mish激活、SPP块、SAM块、泛路径聚合块、DIoU NMS

4实验

在ImageNet(ILSVRC 2012 val)数据集上测试了不同训练改进技术对分类器精度的影响,然后在MS-COCO(test dev 2017)数据集上测试了检测器的精度。

4.1实验设置

在ImageNet图像分类实验中,默认的超参数为:训练步为8000000;批大小和最小批大小分别为128和32;采用多项式衰减学习率调度策略,初始学习率为0.1;预热步数为1000;动量衰减和重量衰减分别设为0.9和0.005。我们所有的BoS实验都使用与默认设置相同的超参数,在BoF实验中,我们添加了50%的额外训练步骤。在BoF实验中,我们验证了MixUp、CutMix、Mosaic、模糊数据增强和标签平滑正则化方法。在BoS实验中,我们比较了lrelu、Swish和mish激活函数的效果。所有实验均采用1080ti或2080ti GPU进行训练。

在MS-COCO目标检测实验中,默认超参数为:训练步长为500500;采用步长衰减学习速率调度策略,初始学习速率为0.01,在400000步和450000步分别乘以因子0.1;分别设置动量衰减和权重衰减分别为0.9和0.0005。所有体系结构都使用单个GPU执行64批的多尺度训练,而最小批大小为8或4取决于体系结构和GPU内存限制。除了使用遗传算法进行超参数搜索实验外,所有其他实验都使用默认设置。遗传算法利用YOLOv3 SPP进行带GIoU损失的训练,搜索300个时间段的最小val 5k集。采用搜索学习率0.00261、动量0.949、IoU阈值指定地面真值0.213、损失归一化器0.07进行遗传算法实验。我们已经验证了大量的BoF,包括网格敏感度消除、马赛克数据增强、IoU阈值、遗传算法、类标签平滑、交叉小批量规范化、自对抗训练、余弦退火调度、动态小批量、DropBlock、优化锚、不同类型的IoU损失。我们还对各种BoS进行了实验,包括Mish、SPP、SAM、RFB、BiFPN和Gaussian YOLO[8]。对于所有的实验,我们只使用一个GPU进行训练,所以不使用syncBN等优化多个GPU的技术。

4.2不同特征对分类器训练的影响

首先,我们研究了不同特征对分类器训练的影响;具体来说,如图7所示,类标签平滑的影响,不同数据增强技术的影响,双边模糊、混合、剪切和镶嵌,以及不同激活的影响,如漏ReLU(默认)、Swish和Mish。

在我们的实验中,如表2所示,通过引入CutMix和Mosaic数据增强、类标签平滑和误激活等特性,提高了分类器的准确性。因此,我们用于分类器训练的BoFbackbone(免费包)包括以下内容:CutMix和Mosaic数据增强和类标签平滑。此外,我们使用Mish激活作为补充选项,如表2和表3所示。

4.3不同特征对探测器训练的影响

进一步研究了不同的冷藏袋(BoF检测器)对检测器训练精度的影响,如表4所示。我们通过研究在不影响FPS的情况下提高探测器精度的不同特性,显著扩展了BoF列表:

S: 消除网格敏感度在YOLOv3中使用公式bx=σ(tx)+cx,by=σ(ty)+cy,其中cx和cy始终是整数,用于计算对象坐标,因此,接近cxor cx+1值的bx值需要极高的txabsolute值。我们通过将乙状结肠乘以一个超过1.0的因子来解决这个问题,从而消除了物体无法检测到的网格效应。
M: 马赛克数据增强-在训练期间使用4图像马赛克而不是单个图像
IT:IoU阈值-使用多个锚定一个地面真相IoU(真相,锚定)>IoU阈值
GA:遗传算法-使用遗传算法在前10%时间段的网络训练中选择最佳超参数

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值