【全文翻译】YOLOv4:目标检测的最佳速度和准确性

 

论文链接:https://arxiv.org/abs/2004.10934

翻译的不少都是直译的,不许的地方请欢迎大佬指正git

摘要

    有许多功能能够提升卷积神经网络(CNN)的准确性。须要在大型数据集上对这些特征的组合进行实际测试,并对结果进行理论证实。一些功能仅在某些模型上运行,而且仅在某些问题上运行,或者仅在小规模数据集上运行; 而某些功能(例如批归一化和残差链接)适用于大多数模型,任务和数据集。咱们假设此类通用功能包括加权残差链接(WRC),跨阶段部分链接(CSP),跨小批量标准化(CmBN),自对抗训练(SAT)和Mish激活函数。咱们使用如下新功能:WRC,CSP,CmBN,SAT,Mish激活,Mosaic数据加强,CmBN,DropBlock正则化和CIoU_loss,并结合使用其中的一些功能以实现最新的结果:43.5%的AP(65.7 在Tesla V100上,MS COCO数据集的实时速度约为65 FPS。源代码位于https://github.com/AlexeyAB/darknetgithub

Introduction

     大多数基于CNN的物体检测器仅适用于推荐系统。例如,经过慢速精确模型执行经过城市摄像机搜索空闲停车位的过程,而汽车碰撞警告则与快速不许确的模型有关。提升实时物体检测器的准确性,不只能够将它们用于生成推荐系统,还能够用于独立的流程管理并能减小人工输入。常规图形处理单元(GPU)上的实时对象检测器操做容许它们以可承受的价格进行大量使用。最精确的现代神经网络没法实时运行,而且须要大量的GPU来进行大型mini-batch-size的训练。咱们经过建立CNN来解决此类问题,该CNN在常规GPU上实时运行,而且训练仅须要一个常规GPU。算法

                                   

 

       这项工做的主要目标是设计生产系统中目标检测器快速运行,并优化并行计算,而不是低计算量理论指标(BFLOP)。咱们但愿能够轻松地训练和使用设计的对象。例如,使用YOLOv4结果如图1所示,任何使用常规GPU进行训练和测试的人均可以得到实时的、高质量的和使人信服的对象检测结果。咱们的贡献总结以下:网络

  1. 咱们开发了一种高效而强大的物体检测模型。它使每一个人均可以使用1080 Ti或2080 Ti GPU训练超快速和准确的物体检测器。
  2. 咱们在探测器训练期间验证了SOTA大礼包(Bag-of Freebies 不增长推理成本的trick)和特价袋 (Bag-of-Specials 增长推理成本的trick)检测方法的影响
  3. 咱们修改了SOTA方法,使它们更有效且更适合单个GPU训练,包括CBN [89],PAN [49],SAM [8]

 

 

2    相关工做架构

2.1 物体检测模型dom

     现代检测器一般由两部分组成,一个是在ImageNet数据上通过预训练的骨干网络,另外一个是用来预测物体的类别和边界框的头部。对于在GPU平台上运行的那些检测器,其主干多是VGG [68],ResNet [26],ResNeXt [86]或DenseNet [30]。对于在CPU平台上运行的那些检测器,其主干能够是SqueezeNet [31],MobileNet [2八、6六、2七、74]或ShuffleNet [9七、53]。至于头部,一般分为两类,即一级目标检测器和二级目标检测器。最有表明性的两级对象检测器是R-CNN [19]系列,包括快速R-CNN [18],更快的R-CNN [64],R-FCN [9]和Libra R-CNN [58]。也有可能使二级对象检测器成为无锚对象(anchor-free)检测器,例如RepPoints [87]。对于一级目标检测器,最具表明性的模型是YOLO [6一、6二、63],SSD [50]和RetinaNet [45]。近年来,开发了无锚的一级物体检测器。这种检测器是CenterNet [13],CornerNet [3七、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])上。ide

综上所述,普通的物体检测器由如下几部分组成:函数

  1.  输入:图像,Patches,图像金字塔性能

  2. 骨干网络:VGG16 [68],ResNet-50 [26],SpineNet [12],EfficientNet-B0 / B7 [75],CSPResNeXt50 [81],CSPDarknet53 [81]学习

  3. 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 RCNN [23] (anchor based)

        RepPoints [87] (anchor free)

2.2. Bag of freebies

    一般,常规的物体检测器是离线训练的。所以,研究人员老是喜欢利用这一优点,并开发出更好的训练方法,以使物体检测器得到更好的精度而又不增长推理成本。咱们称这些方法为“bag of freebies”,即改变培训策略或仅增长培训成本。数据加强是对象检测方法常常采用的并符合bag of freebies定义的数据。数据加强的目的是增长输入图像的可变性,从而使设计的物体检测模型对从不一样环境得到的图像具备更高的鲁棒性。例如,光度畸变和几何畸变是两种经常使用的数据加强方法,它们无疑有益于物体检测任务。在处理光度失真时,咱们会调整图像的亮度,对比度,色相,饱和度和噪点。对于几何变形,咱们添加了随机缩放,裁剪,翻转和旋转等方式

    上面提到的数据扩充方法都是逐像素调整,而且保留了调整区域中的全部原始像素信息。此外,一些从事数据加强的研究人员将重点放在模拟对象遮挡问题上。他们在图像分类和目标检测中取得了良好的效果。例如,随机擦除[100]和CutOut [11]能够随机选择图像中的矩形区域,并填充零的随机或互补值。至于hide-and-seek [69]和grid mask [6],他们随机或均匀地选择图像中的多个矩形区域,并将它们替换为全零。若是相似的概念应用于特征图,则有DropOut [71],DropConnect [80]和DropBlock [16]方法。另外,一些研究人员提出了使用多个图像一块儿执行数据加强的方法。例如,MixUp [92]使用两个图像以不一样的系数比率进行乘法和叠加,而后使用这些叠加比率来调整标签。对于CutMix [91],它是将裁切后的图像覆盖到其余图像的矩形区域,并根据混合区域的大小调整标签。除了上述方法以外,style transfer GAN [15]还用于数据扩充,这种用法能够有效地减小CNN所学习的纹理误差。

    与上面提出的各类方法不一样,专门设计了一些其余bag of freebies来解决数据集语义分布中可能存在的误差问题。在处理语义分布误差问题时,一个很是重要的问题是不一样类之间存在数据不平衡的问题,一般能够经过如下方法解决此问题:否认示例挖掘[72]或在线示例在线挖掘[67] ]两级物体检测器。可是示例挖掘方法不适用于第一级目标检测器,由于该检测器属于密集预测体系结构。所以,林等[45]提出了焦点损失来解决各个类别之间的数据不平衡问题。另外一个很是重要的问题是,很难使用one-hot来表达不一样类别的相关性之间的关系。执行标记时常用此表示方案,在[73]中提出的标签平滑将硬标签转换为软标签以进行训练,这可使模型更健壮。为了得到更好的软标签,Islam等 [33]介绍了知识蒸馏的概念来设计标签细化网络。

    最后bag of freebies是边界框(BBox)回归的目标函数。传统的物体检测器一般使用均方偏差(MSE)直接对BBox的中心点坐标以及高度和宽度执行回归,即{xcenter,ycenter,w,h}或左上角和右下角点,即{xtop_left,ytop_left,xbottom_right,ybottom_right }。对于anchor-based的方法,将估计相应的偏移量,例如{xcenter偏移量,ycenter偏移量,woffset,hoffset}和{xtop左偏移量,ytop左偏移量,xbottom右偏移量,ybottom右偏移量}。可是,直接估计BBox的每一个点的坐标值是将这些点视为独立变量,但实际上并未考虑对象自己的完整性。为了使这个问题获得更好的处理,一些研究者最近提出了IoU损失[90],该方法考虑了预测的BBox区域和地面真实BBox区域的覆盖范围。IoU损失计算过程将经过使用基本事实执行IoU,而后将生成的结果链接到整个代码中,触发BBox的四个坐标点的计算。由于IoU是尺度不变表示,因此能够解决传统方法计算{x,y,w,h}的L1或者L2损失时会随着尺度增长的问题。最近,一些研究人员继续改善IoU损失。例如,GioU损失[65]除了覆盖区域外还包括对象的形状和方向。他们建议找到能够同时覆盖预测的BBox和地面真值BBox的最小面积BBox,并使用该BBox做为分母来代替最初用于IoU损失的分母。至于DIoU损失[99],它还考虑了对象中心的距离,而CIoU损失[99]同时考虑了重叠区域,中心点之间的距离和纵横比。CIoU能够在BBox回归问题上实现更好的收敛速度和准确性。

2.3. Bag of specials

     对于那些仅增长少许推理成本但能够显着提升对象检测准确性的插件模块和后处理方法,咱们将其称为“bag of specials”。通常而言,这些插件模块用于加强模型中的某些属性,例如扩大接受域,引入注意力机制或加强特征集成能力等,然后处理是用于筛选模型预测结果的方法。

    能够用来加强感觉野的经常使用模块是SPP [25],ASPP [5]和RFB [47]。SPP模块起源于空间金字塔匹配(SPM)[39],SPM的原始方法是将特征图分割为几个d×d个相等的块,其中d能够为{1,2,3,...},从而造成空间金字塔,而后bag-of-word袋特征。SPP将SPM集成到CNN中,并使用最大池化操做而不是bag-of-word。因为He等人提出的SPP模块[25]将输出一维特征向量,在全卷积网络(FCN)中应用是不可行的。所以,在YOLOv3 [63]的设计中,Redmon和Farhadi将SPP模块改进为内核大小为k×k的最大池化输出的级联,其中k = {一、五、九、13},步幅等于1。在这种设计下,相对较大的k×k最大池化有效地增长了骨干特征的接收场。在添加了改进版本的SPP模块以后,YOLOv3-608在MS COCO对象检测任务上将AP50升级了2.7%,而额外的计算费用为0.5%。ASPP [5]模块和改进的SPP模块之间的操做差别主要在于原始k×k内核大小,步幅的最大池化等于1到几个3×3内核大小,dilated ratio等于k,步幅等于在膨胀卷积运算中为1。RFB模块将使用k×k个核的膨胀卷积,膨胀比等于k,步幅等于1,以得到比ASPP更全面的空间覆盖范围。RFB [47]仅需花费7%的额外推理时间便可将MS COCO上SSD的AP50提升5.7%

    物体检测中常用的注意力模块主要分为channel-wise注意和point-wise注意,这两种注意模型的表明是Squeeze-and-Excitation(SE)[29]和Spatial Attention Module (SAM) [85]。尽管SE模块能够将ImageNet图像分类任务中的ResNet50的功能提升1%至top-1精度,但其代价仅是将计算工做量增长2%,但在GPU上一般会增长大约10%的推理时间,所以更适合在移动设备中使用。可是对于SAM,它只须要0.1%的额外费用,就能够在ImageNet图像分类任务上将ResNet50-SE的top-1准确性提升0.5%。最好的是,它根本不影响GPU上的推理速度。

    在特征集成方面,早期的实践是使用跳链接[51]或hyper-column [22]将低层物理特征集成到高层语义特征。因为诸如FPN的多尺度预测方法已变得流行,所以提出了许多集成了不一样特征金字塔的轻量级模块。这种模块包括SFAM [98],ASFF [48]和BiFPN [77]。SFAM的主要思想是使用SE模块在多尺度级联特征图上执行通道级重加权。对于ASFF,它使用softmax做为逐点级别的权重,而后添加不一样比例的特征图。在BiFPN中,提出了多输入加权残差链接以执行按比例的级别从新加权,而后添加不一样比例的特征图。

    在深度学习的研究中,有些人专一于寻找良好的激活功能。良好的激活函数可使梯度更有效地传播,同时不会引发过多的额外计算成本。Nair和Hinton [56]在2010年提出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。对于soft NMS [1],考虑了物体的遮挡可能会致使贪婪的NMS的IoU评分置信度下降的问题。DIoU NMS [99]开发人员的思惟方式是在softNMS的基础上将中心点距离的信息添加到BBox筛选过程当中。值得一提的是,因为上述后处理方法均未直接涉及捕获的图像特征,所以在随后的anchor-free方法开发中再也不须要后处理。

       

3. Methodology

在生产系统中使用神经网络以更快的速度运行,并优化并行计算,而不是使用低计算量理论指标(BFLOP)。咱们提供了两种实时神经网络选项:

  1. 对于GPU,咱们在卷积层中使用少许组(1-8):CSPResNeXt50 / CSPDarknet53
  2. 对于VPU-咱们使用分组卷积,但不要使用Squeeze-and-excitement (SE)块-具体来讲,它包括如下模型:EfficientNet-lite / MixNet [76] / GhostNet [21] / MobileNetV3

3.1 Selection of architecture

    咱们的目标是在输入网络分辨率,卷积层数,参数数(filter size2 * filters * channel / groups)和层输出(过滤器)的数量之间找到最佳平衡。例如,咱们的大量研究代表,就ILSVRC2012ImageNet)数据集上的对象分类而言,CSPResNext50CSPDarknet53相比要好得多[10]。可是,相反,在检测MS COCO数据集上的对象方面,CSPDarknet53CSPResNext50更好。

    下一个目标是针对不一样的检测器级别从不一样的主干级别中选择其余块来增长接收场和参数汇集的最佳方法: FPN,PAN,ASFF,BiFPN。

    对于分类最佳的参考模型对于检测器并不是老是最佳的。与分类器相比,检测器须要知足如下条件:

  1. 更高的输入网络规模(分辨率)–用于检测多个小型物体
  2. 更高的层数–更高的接收范围,以覆盖输入网络不断扩大的规模
  3. 更多参数–具备更大的模型容量,可在单个图像中检测不一样大小的多个对象

     假设,咱们能够选择一个具备较大接收场大小(具备大量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神经网络是二者的最佳模型,是检测器的骨干。

不一样大小的接收场的影响总结以下:

  1. 达到对象大小-容许查看整个对象
  2. 达到网络大小-容许查看对象周围的上下文
  3. 超出网络大小-增长了图像点和最终激活之间的链接数

    咱们在CSPDarknet53上添加了SPP块,由于它显着增长了接收场,分离出最重要的上下文特征,而且几乎没有下降网络运行速度。咱们使用PANet做为来自不一样主干级别,针对不一样检测器级别的参数聚合方法,而不是YOLOv3中使用的FPN。

    最后,咱们选择CSPDarknet53骨干网,SPP附加模块,PANet path-aggregation neck和YOLOv3(anchor based)头做为YOLOv4的体系结构。

    未来,咱们计划大幅扩展用于探测器的Bag of Freebies(BoF)的内容,从理论上讲,它能够解决一些问题并提升探测器的准确性,并以实验方式依次检查每一个功能的影响。

    咱们不使用跨GPU批量标准化(CGBN或SyncBN)或昂贵的专用设备。这使任何人均可以在常规图形处理器上重现咱们的最新技术成果,例如 GTX 1080Ti或RTX 2080Ti。

3.2. Selection of BoF and BoS

为了改进目标检测训练,CNN一般使用如下方法:

  1. 激活:ReLU,leakage-ReLU,parameter-ReLU,ReLU6,SELU,Swish或Mish
  2. 边界框回归损失:MSE,IoU,GIoU,CIoU,DIoU
  3. 数据扩充:CutOut,MixUp,CutMix
  4. 正则化方法:DropOut,DropPath [36]
  5. 空间DropOut [79]或DropBlock
  6. 经过均值和方差对网络激活进行归一化:批归一化(BN)[32],Cross-GPU批归一化(CGBN或SyncBN)[93],过滤器响应归一化(FRN)[70]或交叉迭代批归一化(CBN)[89]
  7. 跳过链接:残留链接,加权残留链接,多输入加权残留链接或跨阶段局部链接(CSP)

 

    至于训练激活功能,因为PReLU和SELU更难以训练,而且ReLU6是专门为量化网络设计的,所以咱们从候选列表中删除了上述激活功能。在从新量化方法中,发布DropBlock的人们已将其方法与其余方法进行了详细的比较,而且其正则化方法赢得了不少。所以,咱们绝不犹豫地选择了DropBlock做为咱们的正则化方法。至于标准化方法的选择,因为咱们专一于仅使用一个GPU的训练策略,所以不考虑syncBN。

3.3.其余改进

为了使设计的检测器更适合在单个GPU上进行训练,咱们进行了如下附加设计和改进:

  1. 咱们介绍了一种新的数据加强Mosaic, and Self-Adversarial Training (SAT)方法
  2. 咱们在应用遗传算法的同时选择了最佳超参数
  3. 咱们修改了一些现有方法,使咱们的设计适合进行有效的训练和检测-改进的SAM,改进的PAN和Cross mini-Batch Normalization(CmBN)

    Mosaic表示一种新的数据加强方法,该方法混合了4个训练图像。所以,有4种不一样的上下文混合,而CutMix仅混合2个输入图像。这样能够检测正常上下文以外的对象。此外,批量归一化从每层上的4张不一样图像计算激活统计信息。这大大减小了对大批量生产的需求。

 

                                                            

 

    Self-Adversarial Training (SAT)也表明了一项新的数据加强技术,该技术可在2个向前和向后的阶段进行操做。在第一阶段,神经网络会更改原始图像,而不是网络权重。以这种方式,神经网络对其自身执行对抗攻击,从而改变原始图像以产生对图像上没有指望物体的欺骗。在第二阶段,训练神经网络以正常方式检测此修改图像上的对象。

                                

 

    CmBN表示CBN修改版本,如图4所示,定义为交叉微型批处理规范化(CmBN)。这仅收集单个批次中的迷你批次之间的统计信息。

    咱们将SAM从空间注意改成点注意,并将PAN的快捷链接替换为串联,分别如图5和图6所示。

                                 

3.4. YOLOv4

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

YOLOv4 consists of:
Backbone: CSPDarknet53 [81]
Neck: SPP [
25], PAN [49]
Head: YOLOv3 [
63]

YOLO v4 uses:

  1. Bag of Freebies (BoF) for backbone:CutMix和Mosaic数据加强,DropBlock正则化,类标签平滑
  2. Bag of Specials (BoS) for backbone:Mish activation, Cross-stage partial connections (CSP), Multiinput weighted residual connections (MiWRC)
  3. Bag of Freebies (BoF) for detector:CIoU-loss, CmBN, DropBlock regularization, Mosaic data augmentation, Self-Adversarial Training, Eliminate grid sensitivity, Using multiple anchors for a single ground truth, Cosine annealing scheduler [52], Optimal hyperparameters, Random training shapes
  4. Bag of Specials (BoS) for detector::Mish activation, SPP-block, SAM-block, PAN path-aggregation block, DIoU-NMS

实验

     咱们测试了不一样训练改进技术对ImageNet(ILSVRC 2012 val)数据集上分类器准确性的影响,而后测试了MS COCO(test-dev 2017)数据集上检测器准确性的影响

4.1实验设置

    在ImageNet图像分类实验中,默认的超参数以下:训练步骤为8,000,000;批量大小和最小批量大小分别为128和32;采用多项式衰减学习率调度策略,初始学习率为0.1。预热步骤(warm-up steps)为1000;动量和权重衰减分别设置为0.9和0.005。咱们全部的BoS实验都使用与默认设置相同的超参数,而且在BoF实验中,咱们添加了额外的50%训练步骤。在BoF实验中,咱们验证了MixUp,CutMix,Mosaic,模糊数据加强和标签平滑正则化方法。在BoS实验中,咱们比较了LReLU,Swish和Mish激活功能的效果。全部实验均使用1080 Ti或2080 Ti GPU进行训练

    在MS COCO对象检测实验中,默认的超参数以下:训练步骤是500,500;采用步阶衰减学习率调度策略,初始学习率为0.01,并分别在400,000步和450,000步处乘以系数0.1。动量和权重衰减分别设置为0.9和0.0005。全部架构都使用单个GPU以64的批量大小执行多尺度训练,而最小批量大小是8或4,这取决于架构和GPU内存限制。除了使用遗传算法进行超参数搜索实验外,全部其余实验均使用默认设置。遗传算法使用YOLOv3-SPP训练GIoU损失,并搜索300个纪元的最小值5k集。对于遗传算法实验,咱们采用搜索学习率0.00261,动量0.949,IoU阈值来分配ground truth 0.213,并使用损失归一化器0.07。咱们已经验证了大量BoF,包括消除网格敏感度,镶嵌数据加强,IoU阈值,遗传算法,类标签平滑,交叉小批量标准化,自对抗训练,余弦退火调度程序,动态小批量大小,DropBlock,优化锚,不一样类型的IoU损失。咱们还对各类BoS进行了实验,包括Mish,SPP,SAM,RFB,BiFPN和高斯YOLO [8]。对于全部实验,咱们仅使用一个GPU进行训练,所以未使用可优化多个GPU的诸如syncBN之类的技术。

4.2 不一样功能对分类器训练的影响

    首先,咱们研究不一样特征对分类器训练的影响;具体来讲,如标签7所示,类别标签平滑化的影响,不一样数据加强技术的影响,双边模糊,MixUp,CutMix和Mosaic的影响,以及Leaky-ReLU(默认状况下),Swish等不一样激活的影响和Mish。

                              

    在咱们的实验中,如表2所示,经过引入如下功能提升了分类器的准确性:CutMix和Mosaic数据加强,类标签平滑和Mish激活。所以,咱们用于分类器训练的BoFbackbone(Bag of Freebies))包括如下内容:CutMix和Mosaic数据加强和类标签平滑。此外,咱们使用Mish激活做为补充选项,如表2和表3所示。

                                 

 

4.3 不一样功能对探测器训练的影响

    进一步的研究涉及到不一样的Bag-of Freebies(BoF-detector)对探测器训练精度的影响,如表4所示。咱们经过研究在不影响FPS的状况下提升探测器精度的各类功能来显着扩展BoF列表:

  1. S:消除网格敏感度,公式bx =σ(tx)+ cx,其中cx和cy始终是整数,在YOLOv3中用于评估对象坐标,所以,对于接近c x或cx + 1值的bx值,须要很是高的tx绝对值。基本事实咱们经过将sigmoid乘以超过1.0的因数来解决此问题,从而消除了没法检测到物体的网格的影响.
  2. M:镶嵌数据扩充-在训练过程当中使用4幅图像而非单幅图像
  3. IT:IoU阈值-对单个ground truth IoU(真相,锚点)> IoU阈值使用多个锚点
  4. GA:遗传算法-使用遗传算法在网络训练的前10%的时间段内选择最佳超参数•
  5. LS:类标签平滑-使用类标签平滑进行S型激活
  6. CBN:CmBN-使用交叉mini-batch收集整个批次内的统计信息,而不是在单个mini-batch内收集统计信息
  7. CA:余弦退火调度程序-在正弦曲线训练期间更改学习率
  8. DM:动态微型批次尺寸-在小分辨率下自动增长微型批次尺寸使用随机训练形状进行训练
  9. OA:优化的锚点-使用优化的锚点以512x512网络分辨率进行训练
  10. GIoU,CIoU,DIoU,MSE-使用不一样的损失算法进行有界框回归

    进一步的研究涉及不一样的Bagof-Specials(BoS-探测器)对探测器训练精度的影响,包括PAN,RFB,SAM Gaussian YOLO 和ASFF,如表5所示。在咱们的实验中,探测器得到了使用SPP,PAN和SAM时的最佳性能。

            

                                        

4.4 不一样骨干和预训练权重对检测器训练的影响

      进一步,咱们研究了不一样主干模型对检测器精度的影响,如表6所示。咱们注意到,具备最佳分类精度的模型在检测器精度方面并不老是最佳的。

     首先,尽管与CSPDarknet53模型相比,通过不一样功能训练的CSPResNeXt50模型的分类准确性更高,可是CSPDarknet53模型在对象检测方面显示出更高的准确性。

     其次,将BoF和Mish用于CSPResNeXt50分类器训练可提升其分类精度,可是将这些预训练权重进一步用于检测器训练会下降检测器准确性。可是,对CSPDarknet53分类器训练使用BoF和Mish能够提升分类器和使用该分类器预训练加权的检测器的准确性。

      最终结果是,骨干CSPDarknet53比CSPResNeXt50更适合于检测器。咱们观察到,因为各类改进,CSPDarknet53模型显示出提升检测器精度的更大能力。

                            

 

 4.5  不一样小批量的大小对探测器训练的影响

      最后,咱们分析了使用不一样小批量大小训练的模型得到的结果,结果显示在表7中。从表7中显示的结果中,咱们发如今添加BoF和BoS训练策略以后,小批量大小对检测器的性能几乎没有影响。该结果代表,在引入BoF和BoS以后,再也不须要使用昂贵的GPU进行训练。换句话说,任何人都只能使用常规的GPU来训练出色的检测器。

                                       

结果:

    与其余最早进的物体探测器得到的结果的比较如图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或Tesla P100 GPU。

至于表10,它列出了使用Volta GPU的帧率比较结果,能够是Titan Volta或Tesla V100 GPU。

结论

     咱们提供了一种最新的检测器,它比全部可用的替代检测器更快(FPS)而且更准确(MS COCO AP50 ... 95和AP50)。所描述的检测器能够训练并在具备8-16 GB-VRAM的常规GPU上使用,这使得它的普遍使用成为可能。一阶段基于锚的探测器的原始概念已经证实了其可行性。咱们已经验证了大量功能,并选择使用这些功能以提升分类器和检测器的准确性。这些功能能够用做将来研究和开发的最佳实践。

        

           

         

                            

                                 

相关文章
相关标签/搜索