YOLOv4: Optimal Speed and Accuracy of Object Detection

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

Alexey Bochkovskiy ∗ [email protected] Chien-Yao Wang ∗ Institute of Information Science Academia Sinica, Taiwan [email protected] Hong-Yuan Mark Liao Institute of Information Science Academia Sinica, Taiwan [email protected]

摘要

据说有大量的特征可以提高卷积神经网络(CNN)的准确性。

需要在大型数据集上对这些特征的组合进行实际测试,并对结果进行理论证明。

某些功能只在某些模型上运行,也只在某些问题上运行,或者只在小规模数据集上运行;而一些特性,如批量规范化和剩余连接,适用于大多数模型、任务和数据集。我们假设这些通用特征包括加权剩余连接(WRC)、跨阶段部分连接(CSP)、跨小批量标准化(CmBN)、自我对抗训练(SAT)和Mish激活。我们使用了新功能:WRC、CSP、CmBN、SAT、Mish激活、马赛克数据增强、CmBN、DropBlock正则化和CIoU丢失,并将其中一些功能结合起来,以实现最先进的结果:MS COCO数据集的43.5%AP(65.7%AP 50),实时速度为∼ 特斯拉V100上的每秒65帧。源代码位于https://github.com/AlexeyAB/darknet .

1.导言

    大多数基于CNN的对象检测器基本上只适用于推荐系统。例如,通过城市摄像机搜索免费停车位是由慢速精确模型执行的,而汽车碰撞警告则与快速不精确模型相关。提高实时对象检测器的准确性不仅可以用于生成提示的推荐系统,还可以用于独立的流程管理和减少人工输入。传统图形处理单元(GPU)上的实时对象检测器操作允许以合理的价格大量使用。最精确的现代神经网络不能实时运行,需要大量的GPU来进行大批量的训练。
    我们通过创建一个CNN来解决这些问题,该CNN在传统GPU上实时运行,培训只需要一个传统GPU。
    这项工作的主要目标是设计生产系统中目标检测器的快速运行速度,并优化并行计算,而不是低计算量理论指标(BFLOP)。我们希望设计的对象可以很容易地训练和使用。例如,任何使用传统GPU进行训练和测试的人都可以获得实时、高质量和令人信服的目标检测结果,如图1所示。我们的贡献总结如下:。
YOLOv4: Optimal Speed and Accuracy of Object Detection_第1张图片
图1:拟议的YOLOv4和其他最先进的物体探测器的比较。YOLOv4的运行速度是EfficientDet的两倍,性能相当。YOLOv3的AP和FPS分别提高10%和12%。

  • 1.我们开发了一个高效、强大的目标检测模型。它使每个人都可以使用1080Ti或2080Ti的GPU来训练一个超快速和精确的目标探测器。

  • 2.在探测器培训期间,我们验证了最先进的袋装炸弹和袋装特种物品目标检测方法的效果。

  • 3.我们修改了最先进的方法,使其更有效,并适用于单个GPU培训,包括CBN[89]、PAN[49]、SAM[85]等。

YOLOv4: Optimal Speed and Accuracy of Object Detection_第2张图片
图2:物体探测器。

2.相关工作

2.1. 目标检测模型

    现代检测器通常由两部分组成,一部分是在ImageNet上预先训练的主干,另一部分是用于预测对象类别和边界框的头部。
    对于在GPU平台上运行的探测器,它们的主干可以是VGG[68]、ResNet[26]、ResNeXt[86]或DenseNet[30]。对于在CPU平台上运行的探测器,它们的主干可以是SqueezeNet[31]、MobileNet[28,66,27,74]或Shuf flenet[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],HitDetector[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],全连通FPN、BiFPN[77]、ASFF[48]、SFAM[98]•磁头:•密集预测(单阶段):◦ RPN[64]、SSD[50]、YOLO[61]、视网膜网[45](基于锚定)◦ CornerNet[37]、CenterNet[13]、MatrixNet[60]、FCOS[78](无锚)•稀疏预测(两阶段):◦ 更快的R-CNN[64],R-FCN[9],掩码RCNN[23](基于主播)◦ RepPoints[87](无锚)。

2.2. 免费赠品袋

    通常,传统的目标探测器是离线训练的。
    因此,研究人员一直希望利用这一优势,开发更好的训练方法,使目标检测器在不增加推理成本的情况下获得更好的精度。我们将这些只会改变培训策略或只会增加培训成本的方法称为“免费赠品袋”目标检测方法通常采用的,并且符合免费赠品袋的定义的是数据增强。数据增强的目的是增加输入图像的可变性,使所设计的目标检测模型对从不同环境获得的图像具有更高的鲁棒性。例如,光度畸变和几何畸变是两种常用的数据增强方法,它们肯定有利于目标检测任务。在处理光度失真时,我们调整图像的亮度、对比度、色调、饱和度和噪声。对于几何变形,我们添加了随机缩放、裁剪、弯曲和旋转。
    上面提到的数据增强方法都是逐像素调整,并且保留调整区域中的所有原始像素信息。此外,一些从事数据增强的研究人员将重点放在模拟对象遮挡问题上。在图像分类和目标检测方面取得了良好的效果。例如,random erase[100]和CutOut[11]可以随机选择图像中的矩形区域,并填充零的随机或互补值。至于捉迷藏(69)和网格掩码(6),它们随机或均匀地选择图像中的多个矩形区域,并将它们替换为全部零。
    如果将类似概念应用于特征地图,则有DropOut[71]、DropConnect[80]和DropBlock[16]方法。此外,一些研究人员还提出了使用多幅图像进行数据增强的方法。例如,MixUp[92]使用两幅图像以不同的系数比率相乘和叠加,然后用这些叠加的比率调整标签。
    至于CutMix[91],它是将裁剪后的图像覆盖到其他图像的矩形区域,并根据混合区域的大小调整标签。除了上述方法外,风格转移GAN[15]还用于数据增强,这种使用可以有效地减少CNN学习到的纹理偏差。
    与上面提出的各种方法不同,其他一些免费赠品包方法致力于解决数据集中的语义分布可能存在偏差的问题。在处理语义分布偏差问题时,一个非常重要的问题是不同类之间存在数据不平衡的问题,这个问题通常通过两级对象检测器中的硬否定示例挖掘[72]或在线硬示例挖掘[67]来解决。
    但是,示例挖掘方法不适用于单级目标检测器,因为这种检测器属于密集预测结构。因此,林等人。[45]针对不同类别之间存在的数据不平衡问题,提出了焦点丢失方案。另一个非常重要的问题是,很难用一个热硬表示来表达不同类别之间的关联度的关系。在执行标记时经常使用这种表示方案。
    [73]中提出的标签平滑是将硬标签转化为软标签进行训练,使模型更具鲁棒性。为了获得更好的软标签,Islam等人。[33]引入知识提炼的概念来设计标签细化网络。
    最后一袋赠品是边界盒(BBox)回归的目标函数。传统的目标检测器通常使用均方误差(MSE)直接对BBox的中心点坐标和高度和宽度进行回归,即{x center,y center,w,h},或左上点和右下点,即{x top left,y top left,x bottom right,y bottom right}。对于基于锚定的方法,它是估计相应的偏移量,例如{x中心偏移量、y中心偏移量、w偏移量、h偏移量}和{x左上偏移量、y左上偏移量、x右下偏移量、y右下偏移量}。然而,直接估计BBOX的每个点的坐标值是把这些点当作独立变量,但实际上不考虑对象本身的完整性。为了更好地处理这一问题,一些研究人员最近提出了IoU损失[90],其中考虑了预测BBox区域和地面真相BBox区域的覆盖范围。
    IoU损耗计算过程将触发BBox四个坐标点的计算,方法是使用地面真值执行IoU,然后将生成的结果连接成一个完整的代码。由于IoU是一种尺度不变性表示,它可以解决传统方法计算{x,y,w,h}的L1或L2损失时,损失会随着尺度的增加而增加的问题。最近,一些研究人员继续改善IoU损失。例如,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中,并使用最大池操作而不是字袋操作。
    自从他等人提出SPP模块以来。[25]将输出一维特征向量,不适用于全卷积网络(FCN)。因此,在YOLOv3[63]的设计中,Redmon和Farhadi将SPP模块改进为最大池输出与内核大小k×k的串联,其中k={1,5,9,13},步长等于1。在这种设计下,相对较大的k×k最大池有效地增加了主干特征的接收场。在添加改进版的SPP模块后,YOLOv3-608将MS COCO目标检测任务的AP 50升级了2.7%,而额外计算的成本为0.5%。
    ASPP[5]模块与改进的SPP模块在运算上的差异主要来自原始的k×k内核大小,最大步长池等于1到几个3×3内核大小,扩展比等于k,扩展卷积运算中的步长等于1。RFB模块使用k×k核的几个扩展卷积,扩展比等于k,步长等于1,以获得比ASPP更全面的空间覆盖。RFB[47]只需额外花费7%的推理时间,就能将MS COCO上SSD的AP 50提高5.7%。
    目标检测中常用的注意模块主要分为通道式注意和点式注意,这两种注意模型的代表分别是挤压和激发(SE)[29]和空间注意模块(SAM)[85]。虽然SE模块可以将ResNet50在ImageNet图像分类任务中的能力提高1%的top-1精度,但只需增加2%的计算工作量,但在GPU上,它通常会将推理时间增加约10%,因此更适合用于移动设备。但对于SAM来说,它只需要额外支付0.1%的计算,并且可以将ResNet50 SE在ImageNet图像分类任务中的最高精度提高0.5%。最重要的是,它根本不会影响GPU上的推理速度。
    在特征集成方面,早期的实践是使用跳过连接[51]或超列[22]将低级物理特征集成到高级语义特征。随着FPN等多尺度预测方法的流行,许多集成了不同特征金字塔的轻量级模块被提出。这类模块包括ASFF[77]和SFPN[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,它可以用来过滤那些对同一目标预测不好的B盒,只保留响应较高的候选B盒。
    NMS试图改进的方式与优化目标函数的方法一致。NMS提出的原始方法不考虑上下文信息,因此Girshick等人。[19]在R-CNN中增加了分类置信度得分作为参考,并根据置信度得分的顺序,按照从高分到低分的顺序进行贪婪NMS。对于软NMS[1],它考虑了对象的遮挡可能会导致具有IoU分数的贪婪NMS的置信度降低的问题。DIoU NMS[99]开发者的思路是在软NMS的基础上,将中心点距离的信息添加到BBox筛选过程中。值得一提的是,由于上述后处理方法均不直接涉及捕获的图像特征,因此在随后开发的无锚方法中不再需要后处理。
表1:用于图像分类的神经网络参数。
avatar

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.6 M参数,而CSPDarknet53包含29个卷积层3×3、725×725感受野和27.6 M参数。这一理论证明以及我们的大量实验表明,CSPDarknet53神经网络是将两者作为探测器主干的最佳模型。
    不同大小的感受野的影响总结如下:•最大对象大小允许查看整个对象•最大网络大小允许查看对象周围的环境•超过网络大小增加图像点和最终激活之间的连接数我们在CSPDarknet53上添加SPP块,因为它显著增加了感受野,分离出最重要的上下文特征,并且几乎不会降低网络运行速度。我们使用PANet作为从不同主干级别为不同检测器级别聚合参数的方法,而不是YOLOv3中使用的FPN。
    最后,我们选择CSPDarknet53主干、SPP附加模块、PANet路径聚合颈和基于锚的YOLOv3头作为YOLOv4的体系结构。
    在未来,我们计划大幅增加探测器的免费赠品包(BoF)内容,这在理论上可以解决一些问题,提高探测器的精度,并以实验方式依次检查每个特征的影响。
    我们不使用跨GPU批量标准化(CGBN或SyncBN)或昂贵的专用设备。这使得任何人都可以在传统图形处理器(如GTX 1080Ti或RTX 2080Ti)上重现我们最先进的成果。

3.2. BoF和BoS的选择

    为了改进目标检测训练,CNN通常使用以下方法:•激活:ReLU、泄漏ReLU、参数ReLU、ReLU6、SELU、Swish或Mish•边界盒回归损失:MSE、IoU、GIoU、CIoU、DIoU•数据增强:剪切、混合、剪切混合•正则化方法:辍学、辍学路径[36],空间辍学[79],或DropBlock•通过均值和方差对网络激活进行标准化:批量标准化(BN)[32]、交叉GPU批量标准化(CGBN或SyncBN)[93]、过滤器响应标准化(FRN)[70]或交叉迭代批量标准化(CBN)[89]•跳过连接:剩余连接、加权剩余连接、多输入加权剩余连接,或者跨阶段部分连接(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所示。
YOLOv4: Optimal Speed and Accuracy of Object Detection_第3张图片
图3:Mosaic代表了一种新的数据增强方法。
YOLOv4: Optimal Speed and Accuracy of Object Detection_第4张图片
图4:交叉小批量标准化。
YOLOv4: Optimal Speed and Accuracy of Object Detection_第5张图片
图5:修改后的SAM。
YOLOv4: Optimal Speed and Accuracy of Object Detection_第6张图片
图6:改进的PAN。

3.4. YOLOv4

    在本节中,我们将详细介绍YOLOv4。
    YOLOv4由以下部分组成:。

  • •主干:CSPDarknet53[81]

  • •颈部:SPP[25],PAN[49]

  • •头部:YOLOv3[63]

    YOLO v4使用:。

  • •主干网免费赠品包(BoF):CutMix和Mosaic数据增强、DropBlock正则化、类标签平滑

  • •主干网专用包(BoS):Mish激活、跨级部分连接(CSP)、多输入加权剩余连接(MiWRC)

  • •探测器的免费赠品包(BoF):CIoU损失、CmBN、DropBlock正则化、马赛克数据增强、自我对抗训练、消除网格敏感性、使用多个锚点实现单一地面真相、余弦退火调度程序[52]、最佳超参数、随机训练形状

  • •探测器专用袋(BoS):Mish激活、SPP块、SAM块、PAN路径聚合块、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实验中,我们验证了混合、剪切混合、镶嵌、模糊数据增强和标签平滑正则化方法。我们在实验中比较了BoS和Mish的激活作用。所有实验都使用1080 Ti或2080 Ti GPU进行训练。
    在MS COCO目标检测实验中,默认的超参数如下:训练步骤为500500;采用步长衰减学习率调度策略,初始学习率为0.01,在40万步和45万步时分别乘以系数0.1;动量和重量衰减分别设置为0.9和0.0005。所有体系结构都使用单个GPU来执行批量大小为64的多尺度训练,而最小批量大小为8或4取决于体系结构和GPU内存限制。除了使用遗传算法进行超参数搜索实验外,所有其他实验都使用默认设置。遗传算法使用YOLOv3 SPP进行GIoU loss训练,并在300个时段内搜索min-val 5k集。我们采用搜索学习率0.00261、动量0.949、IoU阈值0.213和损失归一化器0.07进行遗传算法实验。我们已经验证了大量的BoF,包括网格敏感性消除、马赛克数据增强、IoU阈值、遗传算法、类标签平滑、交叉小批量标准化、自对抗训练、余弦退火调度、动态小批量、DropBlock、优化锚定、不同类型的IoU损失。我们还对各种BO进行了实验,包括Mish、SPP、SAM、RFB、BiFPN和Gaussian YOLO[8]。对于所有实验,我们只使用一个GPU进行训练,因此不使用优化多个GPU的syncBN等技术。

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

    首先,我们研究了不同特征对分类器训练的影响;具体而言,如图7所示,类标签平滑的影响、不同数据增强技术的影响、双边模糊、混合、剪切混合和镶嵌,以及不同激活的影响,如泄漏ReLU(默认情况下)、Swish和Mish。
    在我们的实验中,如表2所示,通过引入CutMix和Mosaic数据增强、类标签平滑和Mish激活等功能,提高了分类器的准确性。因此,我们用于分类器训练的BoFbackbone(免费赠品包)包括以下内容:CutMix和Mosaic数据增强和类标签平滑。此外,我们使用Mish激活作为补充选项,如表2和表3所示。
YOLOv4: Optimal Speed and Accuracy of Object Detection_第7张图片
图7:各种数据扩充方法。
表2:BoF和Mish对CSPRESEXT-50分级精度的影响。
YOLOv4: Optimal Speed and Accuracy of Object Detection_第8张图片
表3:BoF和Mish对CSPDarknet-53分级精度的影响。
YOLOv4: Optimal Speed and Accuracy of Object Detection_第9张图片

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

    进一步的研究涉及不同钢包(BoF检测器)对检测器训练精度的影响,如表4所示。通过研究在不影响FPS的情况下提高探测器精度的不同特征,我们显著扩展了BoF列表:•S:消除网格灵敏度方程avatar
    
avatar
,其中Cx和Cy始终是整数,在YOLOv3中用于评估对象坐标,因此,对于接近avatar值的Bx值,需要极高的Tx绝对值。我们通过将sigmoid乘以超过1.0的因子来解决这个问题,这样就消除了网格对无法检测到对象的影响。
    •M:在训练期间使用四幅图像马赛克而不是单个图像的马赛克数据增强•IT:使用多个锚点的IoU阈值用于单个地面真值IoU(真值,锚)>IoU阈值•GA:使用遗传算法在前10%时间段的网络训练期间选择最佳超参数•LS:使用类标签平滑用于乙状结肠激活的标签平滑•CBN:CmBN使用交叉小批量标准化收集整个批次内的统计数据,不是在单个小批量中收集统计数据•CA:余弦退火调度器改变正弦训练期间的学习率•DM:动态小批量大小使用随机训练形状在小分辨率训练期间自动增加小批量大小•OA:优化锚使用优化锚用于512x512网络分辨率的训练•GIoU,CIoU、DIoU、MSE使用不同的有界盒回归损失算法进一步研究了不同Bagof Specials(BoS检测器)对检测器训练精度的影响,包括PAN、RFB、SAM、Gaussian YOLO(G)和ASFF,如表5所示。在我们的实验中,当使用SPP、PAN和SAM时,探测器获得最佳性能。
表4:免费赠品袋的消融研究。(CSPResNeXt50 PANet SPP,512x512)。
YOLOv4: Optimal Speed and Accuracy of Object Detection_第10张图片
表5:Bag of Specials的烧蚀研究。(尺寸512x512)。
YOLOv4: Optimal Speed and Accuracy of Object Detection_第11张图片

4.4. 不同脊柱和预训练重量对探测器训练的影响

    此外,我们还研究了不同主干模型对探测器精度的影响,如表6所示。我们注意到,具有最佳分类精度的模型在检测器精度方面并不总是最佳的。
    首先,尽管使用不同特征训练的CSPResNeXt50模型的分类精度高于CSPDarknet53模型,但CSPDarknet53模型在目标检测方面显示出更高的精度。
    其次,在CSPResNeXt50分类器训练中使用BoF和Mish可以提高其分类精度,但在检测器训练中进一步应用这些预先训练的权重会降低检测器精度。然而,在CSPDarknet53分类器训练中使用BoF和Mish可以提高分类器和使用该分类器预训练权重的检测器的准确性。最终的结果是,主干CSPDarknet53比CSPResNeXt50更适合检测器。
    我们观察到,由于各种改进,CSPDarknet53模型显示出更大的提高探测器精度的能力。
    .
表6:使用不同的分类器预训练权重进行检测器训练(所有模型中的所有其他训练参数都类似)
YOLOv4: Optimal Speed and Accuracy of Object Detection_第12张图片

4.5. 不同小批量对检测器培训的影响

    最后,我们分析了用不同小批量训练的模型得到的结果,结果如表7所示。从表7所示的结果中,我们发现在添加BoF和BoS训练策略后,小批量对检测器的性能几乎没有影响。
    这一结果表明,在引进BoF和BoS后,不再需要使用昂贵的GPU进行培训。换句话说,任何人都只能使用传统的GPU来训练优秀的探测器。
表7:使用不同的小批量进行检测器培训。
YOLOv4: Optimal Speed and Accuracy of Object Detection_第13张图片
YOLOv4: Optimal Speed and Accuracy of Object Detection_第14张图片
图8:不同物体探测器的速度和精度比较。(一些文章只对其中一个GPU(Maxwell/Pascal/Volta)说明了其探测器的FPS)

5.结果

    图8显示了与其他最先进的物体探测器的对比结果。我们的YOLOv4位于帕累托最优曲线上,在速度和精度方面都优于最快和最准确的检测器。
    由于不同的方法使用不同体系结构的GPU进行推理时间验证,我们在Maxwell、Pascal和Volta体系结构的常用GPU上运行YOLOv4,并将其与其他最先进的方法进行比较。表8列出了使用麦克斯韦GPU的帧速率比较结果,可以是GTX Titan X(麦克斯韦)或特斯拉M40 GPU。表9列出了使用Pascal GPU的帧速率比较结果,可以是Titan X(Pascal)、Titan Xp、GTX 1080 Ti或特斯拉P100 GPU。表10列出了使用Volta GPU的帧速率比较结果,可以是Titan Volta或Tesla V100 GPU。

6.结论

    我们提供最先进的探测器,比所有可用的替代探测器更快(FPS)和更准确(MS COCO AP 50…95和AP 50)。所述检测器可在具有8-16 GB-VRAM的常规GPU上训练和使用,这使其广泛使用成为可能。单级锚基探测器的最初概念已经证明了其可行性。我们已经验证了大量特征,并选择使用这些特征来提高分类器和检测器的准确性。这些特性可以作为未来研究和开发的最佳实践。

7.致谢

    作者希望感谢Glenn Jocher提出的马赛克数据增强、使用遗传算法选择超参数以及解决网格敏感性问题的想法https://github.com/ultralytics/yolov3。

你可能感兴趣的:(CV,CV,yolov4,目标检测)