YOLOv4论文(中文版)

摘要

       据说有大量的特征可以提高卷积神经网络(CNN)的准确性。需要在大数据集上对这些特征的组合进行实际测试,并对结果进行理论验证。有些特征专门针对某些模型和某些问题,或者只针对小规模数据集;而一些特性,如批处理标准化和剩余连接,适用于大多数模型、任务和数据集。我们假设这些通用特征包括加权剩余连接(WRC),跨阶段部分连接(CSP),跨小批处理标准化(CmBN),自我对抗训练(SAT)和mish激活。我们使用了新的功能:WRC, CSP,CmBN, SAT, Mish激活,马赛克数据增强,CmBN, DropBlock regularization, CIoU loss,并结合其中一些方法,达到最先进的效果:43.5%,对MS COCO数据集的AP (65.7% AP50),在Tesla V100上的实时速度约为65 FPS。源代码在https://github.com/AlexeyAB/darknet。

1、介绍

       大多数基于cnn的对象检测器在很大程度上只适用于推荐系统。例如,通过城市摄像机搜索免费停车位是由慢速准确的模型执行的,而车辆碰撞预警则与快速不准确的模型相关。提高实时对象检测器的准确性使它们不仅可以用于生成提示推荐系统,还可以用于独立进程管理和减少人工输入。实时对象检测器操作在传统的图形处理单元(GPU)上,允许他们大量使用在一个负担得起的价格。最精确的现代神经网络并不实时运行,并且需要大量的gpu来进行大规模的小批量训练。我们通过创建一个在传统GPU上实时运行的CNN来解决这些问题,而对于CNN的训练只需要一个传统的GPU。

YOLOv4论文(中文版)_第1张图片

图1:提出的YOLOv4和其他最先进的对象检测器的比较。在性能相当的情况下,YOLOv4的运行速度比EfficientDet快两倍。提高了
YOLOv3的AP和FPS分别上涨了10%和12%。

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

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

    2、训练的时候我们验证了最先进的Bag-of-FreebiesBag-of-Specials方法的影响。

    3、我们修改了目前最先进的方法,使其更有效,更适合单一GPU训练,包括CBN [89], PAN [49], SAM[85]等。YOLOv4论文(中文版)_第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, 62, 63], SSD [50], RetinaNet[45]。近年来,研制出了无锚一阶段目标检测器。这类检测器是CenterNet[13],CornerNet[37,38],FCOS[78]等。近年来发展起来的目标检测器通常在主干和头部之间插入一些层,这些层通常用于收集不同阶段的特征图。我们可以称它为目标检测器的颈部。颈通常由几个自下而上的路径和几个自上而下的路径组成。具有这种机制的网络包括特征金字塔网络(Feature Pyramid Network, FPN)[44]、路径聚合网络(Path Aggregation Network, PAN)[49]、BiFPN[77]和NAS-FPN[17]。除了上述模型,一些研究人员将重点放在直接构建一个新的主干(DetNet [43],
用于目标检测的DetNAS[7])或新的整个模型(SpineNet [12], HitDetector[20])。

综上所述,一个普通的物体检测器由以下几个部分组成:

     Input: Image, Patches, Image Pyramid ;

     Backbones: VGG16 [68], ResNet-50 [26], SpineNet [12], EffificientNet-B0/B7 [75], CSPResNeXt50 [81],CSPDarknet53[81]

     Neck:

         Additional blocks: SPP [25], ASPP [5], RFB [47], SAM [85]

         Path-aggregation blocks: FPN [44], PAN [49], NAS-FPN [17], Fully-connected FPN, BiFPN [77], ASFF [48], SFAM [98]

      Heads:

         Dense Prediction (one-stage):

             RPN [64], SSD [50], YOLO [61], RetinaNet [45] (anchor based)

             CornerNet [37], CenterNet [13], MatrixNet [60], FCOS [78] (anchor free)

          Sparse Prediction (two-stage):

             Faster R-CNN [ 64 ], R-FCN [ 9 ], Mask R CNN [ 23 ] (anchor based)
 
             RepPoints [ 87 ] (anchor free)
 

2.2、免费赠品包

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

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

       与上面提出的各种方法不同,其他一些免费的方法致力于解决数据集中的语义分布可能存在偏差的问题。在处理语义分布偏差问题时,一个非常重要的问题是不同类别之间存在数据不平衡问题,而这一问题通常通过二阶段目标检测器中的硬反例挖掘[72]或在线硬例挖掘[67]来解决。但实例挖掘方法不适用于单级目标检测器,因为该类检测器属于稠密预测架构。因此Linet al.[45]提出了focal loss来处理不同类之间存在的数据不平衡问题。其他非常重要的问题是,很难表达的程度之间的关系与在一个炎热的困难表示不同类别之间的联系。另一个非常重要的问题是很难用单一的硬表示来表达不同类别之间的关联度关系。执行标记时经常使用这种表示方案。在[73]中提出的标签平滑是将硬标签转换为软标签进行训练,可以提高模型的鲁棒性。为了获得更好的软标签,Islam等[33]引入了知识蒸馏的概念来设计标签精炼网络。

       最后一袋赠品是的目标函数边界盒(BBox)回归。传统的目标检测器通常使用均方误差(MSE)直接对BBox的中心点坐标和高度、宽度进行回归,即:{xcenter, ycenter, w, h},或者左上点和右下点,也就是,{xtop lef t, ytop lef t, xbottom right, ybottom right}。基于锚点的方法,例如估计相应的偏移量{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 loss[90],将预测BBox面积的覆盖和ground truth BBox面积考虑在内。IoU损失计算过程将通过与ground truth执行IoU来触发对BBox的四个坐标点的计算,然后将生成的结果连接成一个完整的代码。由于IoU是一个尺度不变的表示,它可以解决传统方法计算{x, y, w, h}的l1或l2损失时,损失会随着尺度的增大而增大的问题。最近,一些研究人员不断改善欠条损失。例如,GIoU损失[65]是除了覆盖范围外,还包括了物体的形状和方向。他们提议找到能同时覆盖预测BBox和ground truth BBox的最小面积BBox,并使用它以BBox作为分母,取代IoU损失中原来使用的分母。DIoU loss[99]同时考虑了物体的中心点距离和CIoU loss[99],同时考虑了重叠区域、中心点之间的距离和高宽比。在BBox回归问题上,CIoU可以取得更好的收敛速度和精度。

2.3、特价包

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

       增强感受野的常用模块有SPP[25]、ASPP[5]和RFB[47]。SPP模块源于空间金字塔匹配(SPM) [39], SPMs原始方法是将feature map分割成几个d×d等块,其中d可以是{1,2,3,…},从而形成空间金字塔,然后提取词包特征。SPP将SPM集成到CNN中,使用max-pooling操作,而不是word包操作。由于He等人[25]提出的SPP模块输出的是一维特征向量,因此不能应用于全卷积网络(FCN)中。因此在YOLOv3[63]的设计中,Redmon和Farhadi有所改进SPP模块,将内核大小为k×k的最大池输出连接起来,其中k = {1,5,9,13}, stride = 1。在此设计下,一个较大的k×k maxpooling有效地增加了骨干特征的接受域。添加SPP模块的改进版本后,YOLOv3-608在MS COCO对象检测任务上对AP50升级了2.7%,但增加了0.5%的计算量。ASPP[5]模块与改进后的SPP模块在运算上的差异主要来自于原始的k×k kernel size, stride的max-pooling等于1到几个3×3 kernel size,扩张比等于k,在扩张卷积运算中stride等于1。RFB模块是利用k×k核的几个扩张卷积,扩张比等于k, stride等于1,获得比ASPP更全面的空间覆盖。RFB[47]只需要额外7%的推断时间,就可以将MS COCO上的SSD的AP50提高5.7%。

       在目标检测中常用的注意模块主要分为信道定向注意和点态注意,这两种注意模型的代表分别为压缩激励[29]和空间注意模块SAM[85]。虽然SE模块可以改善的能力ResNet50 ImageNet图像分类任务中排名前1%精度的代价只会增加2%的计算工作,但是在GPU通常会增加推理时间约10%,所以它更适合用于移动设备。但是对于SAM来说,它只需要额外付出0.1%的计算,就可以在ImageNet图像分类任务中提高ResNet50-SE 0.5%的top-1准确率。最重要的是,它不会影响GPU推理的速度。

       在特征集成方面,早期的做法是使用跳过连接[51]或超列[22],将低级物理特征集成为高级语义特征。随着FPN等多尺度预测方法的流行,许多集成不同特征金字塔的轻量级模块被提出。这类模块包括SFAM[98]、ASFF[48]和BiFPN[77]。SFAM的主要思想是利用SE模块对多尺度连接的feature map执行信道级重加权。至于ASFF,它使用softmax作为点级别调整,然后添加不同比例的特征地图。在BiFPN中,提出了多输入加权残差连接进行尺度级重加权,然后添加不同尺度的特征图。

       在深度学习的研究中,一些人把重点放在寻找好的激活函数上。一个好的激活函数可以使梯度更有效地传播,同时也不会造成太多的额外计算代价。2010年,Nair和Hinton[56]提出ReLU,实质上解决了传统tanh和s型激活函数中经常遇到的梯度消失问题。随后,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按照高分到低分的顺序执行。对于软NMS[1],考虑了在IoU评分的贪婪NMS中,由于对象的闭塞可能导致置信评分下降的问题。DIoU NMS[99]开发人员的思路是在软的基础上将中心点距离信息添加到BBox筛选过程中NMS。值得一提的是,由于以上所有的后处理方法都没有直接引用所捕获的图像特征,因此在后续无锚方法的开发中不再需要进行后处理。

YOLOv4论文(中文版)_第3张图片

3、方法

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

对于GPU,我们在卷积层中使用少量的组(1 - 8):CSPResNeXt50 / CSPDarknet53

对于VPU,我们使用组卷积,但我们避免使用压缩和刺激(SE)块-具体包括以下模式:EfficientNet-lite / MixNet [76] / GhostNet [21] / MobileNetV3

3.1、架构选择

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

       下一个目标是选择额外的增强感受野的块,以及针对不同的检测器级别(如FPN、PAN、ASFF、BiFPN),从不同的主干级别选择参数聚合的最佳方法。

       对分类最优的参考模型并不总是对检测器最优的。与classi- fier相反,检测器需要以下内容:

更高的输入网络尺寸(分辨率)-用于检测多个小尺寸物体

更多的层-为了一个更高的接收域来覆盖增大的输入网络

更多的参数-为更大的能力,一个模型检测多个不同大小的目标在一个单一的图像

       假设我们可以选择接受野大小较大的模型(卷积层数量较多,3×3)和参数数量较多的模型作为骨干。表1显示了CSPResNeXt50、CSPDarknet53和Effi- cientNet B3的信息。CSPResNext50只包含16个3×3的卷积层,一个425×425的感受野和20.6CSPDarknet53包含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等传统图形处理器上复制我们的最新成果2080 ti。

3.2、BoF和BoS的选择

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

激活方式:ReLU, leaky-ReLU,参数y-ReLU,ReLU6, SELU, Swish,或Mish

边界盒回归损失:MSE, IoU, GIoU,CIou, DIoU

数据增强:CutOut, MixUp, CutMix

正规化方法:DropOut, DropPath [36],Spatial DropOut[79],或DropBlock

通过平均值和方差对网络激活进行标准化:批处理标准化(BN) [32],交叉gpu批处理标准化(CGBN或SyncBN)滤波器响应归一化(FRN)[70],或交叉迭代批处理标准化(CBN) [89]

跳转连接:剩余连接、加权剩余连接、多输入加权剩余连接或跨阶段部分连接(CSP)

       在训练激活函数方面,自PReLU和SELU更难训练,而ReLU6是专门为量化网络设计的,因此我们将上述激活函数从候选列表中删除。在reqularization方法中,发布DropBlock的人将他们的方法与其他方法进行了详细的对比,他们的正则化方法获得了很大的成功。因此,我们毫不犹豫的选择了DropBlock作为我们的正则化方法。在归一化方法的选择上,由于我们关注的是只使用一个GPU的训练策略,因此没有考虑syncBN。

3.3、进一步的改进

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

介绍了一种新的数据增强、拼接和自对抗训练方法。

应用遗传算法选择最优超参数

我们修改了一些现有的方法,使我们的设计适合于有效的训练和检测改进SAM、改进PAN和交叉小批标准化(CmBN)

       Mosaic提出了一种混合4张训练图像的数据增强方法。因此混合了4种不同的上下文,而CutMix只混合了2个输入图像。这个半岛低点检测正常的上下文之外的对象。此外,批处理归一化计算每层4张不同图像的激活统计。这大大减少了对大型迷你批处理的需求。

YOLOv4论文(中文版)_第4张图片

       自对抗训练(SAT)也代表了一种新的数据增强技术,操作在两个向前后阶段。在第一阶段,神经网络改变原始图像而不是网络权值。通过这种方式,神经网络对自己进行了对抗性的攻击,改变原始图像来制造图像上没有需要的对象的假象。在第二阶段,训练神经网络以正常的方式在修改后的图像上检测目标。

YOLOv4论文(中文版)_第5张图片

       CmBN表示CBN的修改版本,如图4所示,定义为交叉小批标准化(CmBN)。这只收集单个批处理中的小批之间的统计信息。

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

YOLOv4论文(中文版)_第6张图片

3.4、YOLOv4

YOLOv4包括:

YOLOv4论文(中文版)_第7张图片

YOLOv4用途:

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

骨干专用包(BoS): Mish激活、跨阶段部分连接(CSP)、多输入加权剩余连接(MiWRC)

免费赠品包(BoF)检测器:CIoU-loss,CmBN, DropBlock正则化,拼接数据增强,自对抗训练,消除网格敏感性,使用多个锚点对单一ground truth,余弦退火调度[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%的训练步骤。在转炉实验中,我们验证了这一点MixUp, CutMix, Mosaic, Bluring data augmentation,以及label smoothing regularization methods。在BoS实验中,我们比较了LReLU、Swish和Mish激活函数的效果。所有的实验都使用1080Ti或2080 Ti GPU 进行训练。

在MS COCO目标检测实验中,默认超参数为:训练步骤为500500;采用阶跃衰减学习率调度策略,初始学习率为0.01,在40万步和45万步分别乘以因子0.1;动量衰减和重量衰减分别设为0.9和0.0005。所有架构都使用单一GPU在64个批处理的情况下进行多尺度训练,而迷你批处理为8或4则取决于架构和GPU内存的限制。除超参数搜索实验使用遗传算法外,其他实验均使用默认设置。遗传算法采用YOLOv3-SPP算法进行GIoU缺失训练,最小5k集搜索300个epoch。遗传算法实验采用搜索学习率0.00261,动量0.949,IoU阈值分配ground truth 0.213, loss normalizer 0.07。我们验证了大量的BoF,包括网格灵敏度消除、拼接数据增强、IoU阈值、遗传算法、类标签平滑、交叉小批标准化、自对抗训练、余弦退火调度、动态小批大小、DropBlock、优化锚定、不同类型IoU损失。我们还进行了各种实验BoS,包括Mish, SPP, SAM, RFB, BiFPN,和Gaussian YOLO[8]。在所有实验中,我们只使用一个GPU进行训练,所以没有使用同步bn等优化多个GPU的技术。

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

首先,研究了不同特征对分类器训练的影响;具体来说,类标签平滑的影响,不同数据增强技术、双边模糊、混合、CutMix和马赛克的影响,如Fugure 7所示,以及不同激活的影响,如Leaky-ReLU(默认)、Swish和Mish。

YOLOv4论文(中文版)_第8张图片

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

YOLOv4论文(中文版)_第9张图片

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

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

S:消除网格灵敏度方程bx = σ(tx)+ cx, by = σ(ty)+cy,其中cx和cy总是整数,在YOLOv3中用于计算目标坐标,因此,对于接近cx或cx + 1的bx值,需要极高的tx绝对值。我们通过将sigmoid乘以一个超过1.0的因子来解决这个问题,从而消除了无法检测到物体的网格的影响。

M:马赛克数据增强——训练时使用四幅图像拼接代替单一图像

IoU阈值-使用多个锚点为一个单一的ground truth IoU (truth, anchor) > IoU阈值

遗传算法-使用遗传算法在前10%的时间段内选择网络训练的最优超参数

类标签平滑-使用类标签平滑来激活sigmoid

CBN: CmBN——使用跨小批标准化来收集整个批内的统计信息,而不是在单个小批内收集统计信息

余弦退火调度-改变学习速率在正弦训练

动态小批量尺寸-在小分辨率训练中使用随机训练形状自动增加小批量尺寸

优化的锚-使用优化的锚训练与512x512网络分辨率

GIoU, CIoU, DIoU, MSE -使用不同的损失算法进行有界盒回归

进一步研究不同Bagof-Specials (boss -detector)对检测器训练精度的影响,包括PAN、RFB、SAM、Gaussian YOLO (G)和
ASFF,见表5。在我们的实验中,使用SPP、PAN和SAM时,检测器的性能最好。

YOLOv4论文(中文版)_第10张图片

YOLOv4论文(中文版)_第11张图片

4.4、不同主干和预训练权重对检测器训练的影响

进一步我们研究了不同主链模型对检测器精度的影响,如表6所示。我们注意到,具有最佳分类精度特征的模型在检测器精度方面并不总是最好的。

首先,虽然CSPResNeXt的分类精度与CSPDarknet53模型相比,经过不同特征训练的50个模型的检测精度更高,CSPDarknet53模型在目标检测方面的准确率更高。

其次,使用BoF和Mish进行CSPResNeXt50分类器的训练提高了分类精度,但是进一步应用这些预先训练好的权重进行检测器训练会降低检测器的精度。然而,使用BoF和Mish进行CSPDarknet53分类器的训练,提高了分类器和使用这种分类器预训练权重的检测器的准确率。最终的结果是,主干CSPDarknet53比CSPResNeXt50更适合检测器。

我们观察到,由于各种改进,CSPDarknet53模型在提高检测器准确度方面表现出了更大的能力。

YOLOv4论文(中文版)_第12张图片

4.5、不同小批量尺寸对检测器训练的影响

最后,我们对不同小批量训练的模型的结果进行分析,结果如表7所示。从表7所示的结果中,我们发现在添加BoF和BoS训练策略后,迷你批处理的大小对检测器的性能几乎没有影响。这一结果表明,引进后BoF和BoS,不再需要昂贵的使用gpu进行训练。换句话说,任何人都能使用传统的GPU来训练优秀的检测器。

YOLOv4论文(中文版)_第13张图片

YOLOv4论文(中文版)_第14张图片

YOLOv4论文(中文版)_第15张图片

图8:不同目标探测器的速度和精度比较(有些文章指出他们的检测器的FPS只适用于一个gpu: Maxwell/Pascal/Volta)

5、结果

图8将所获得的结果与其他先进的对象检测器进行了比较。我们的YOLOv4位于Pareto最优曲线上,在速度和准确度方面都优于最快和最准确的检测器。

由于不同的方法使用不同架构的gpu进行推理时间验证,所以我们在常用的Maxwell、Pascal、Volta架构的gpu上运行YOLOv4,并与其他先进的方法进行比较。表8列出了使用Maxwell GPU的帧率比较结果,它可以是GTX Titan X (Maxwell)或Tesla M40 GPU。表9列出了使用Pascal GPU的帧率比较结果,可以是Titan X (Pascal),Titan Xp, GTX 1080 Ti,或特斯拉P100 GPU。至于表它列出了使用Volta的帧率比较结果它可以是泰坦Volta或者特斯拉V100 GPU。

6、结论

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

7、感谢

作者要感谢Glenn Jocher提出的马赛克数据增强的思想,使用遗传算法选择超参数,解决网格灵敏度问题https://github.com/ ultralytics/yolov3。

YOLOv4论文(中文版)_第16张图片

YOLOv4论文(中文版)_第17张图片

YOLOv4论文(中文版)_第18张图片

YOLOv4论文(中文版)_第19张图片

YOLOv4论文(中文版)_第20张图片

YOLOv4论文(中文版)_第21张图片

YOLOv4论文(中文版)_第22张图片

 

你可能感兴趣的:(深度学习)