YOLOv4论文翻译(已校正)

此篇为目标检测系列论文:YOLOv4 论文翻译(YOLOv4: Optimal Speed and Accuracy of Object Detection)翻译(已逐句校正,方便大家学习)

论文下载:https://arxiv.org/pdf/2004.10934.pdf 

论文源码:GitHub - AlexeyAB/darknet: YOLOv4 / Scaled-YOLOv4 / YOLO - Neural Networks for Object Detection (Windows and Linux version of Darknet ) 


YOLOv4: Optimal Speed and Accuracy of Object Detection

  摘要    

        据说有大量的特征可以提高卷积神经网络(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。

图1:对拟建的YOLOv4和其他最先进的目标检测器进行比较。YOLOv4 的速度比高效德特快两倍,具有同等的性能。YOLOv3 的 AP 和 FPS 分别提高了 10% 和 12%。

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

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

        2、在检测器训练期间,我们验证最先进的开源方法和特殊检测方法的影响;

        3、我们修改最先进的方法,使其更高效,适合单次 GPU 训练,包括 CBN [89]、PAN [49]、SAM [85]等。

 (图2 目标检测器)

2、相关工作

2.1、目标检测模型

      现代目标检测器通常由两部分组成。ImageNet上预训练的backbone和用于预测类和BBOX的检测器head。对于那些在GPU平台上运行的探测器,其backbone可以是VGG[68],ResNet[26]、ResNeXt[86]、或 DenseNet [30]。对于那些运行在CPU平台上的检测器形式,它们的backbone可以是SqueezeNet[31]、MobileNet[28,66,27,74],或ShuffleNet[97,53]。至于head部分,它通常被分两类:即one-stage目标检测器和two-stage目标检测器。最有代表性的two-stage检测器是R-CNN[19]系列。包括快速的R-CNN[18],更快的R-CNN[64],R-FCN[9],和Libra R-CNN[58]。也可以做一个two-stage目标检测器一个anchor-free目标检测器,如RepPoints[87]。对于one-stage检测器来说,最代表性的有YOLO[61、62、63]、SSD[50]、和RetinaNet[45]。近几年来,anchor-free one-stage目标探测器被开发,如CenterNet[13],CornerNet[37,38],FCOS[78]等。近年来发展起来的检测器,往往会在backbone和head之间插入一些层,这些层用于收集不同阶段的特征图。我们可以称它为检测器的neck。通常情况下neck是由几个bottom-up paths and several top-down paths组成。Feature Pyramid Network (FPN)[44], Path Aggregation(PAN)[49]、BiFPN[77]和NAS-FPN[17]具有这个机制。

          除上述模型外,有的研究者重新构建backbone(DetNet[43], DetNAS[7])或重新构建整个模型(SpineNet[12],HitDetector[20])用于目标检测。总结,通常目标检测模型有如下架构:
• Input: Image, Patches, Image Pyramid
• Backbones: VGG16 [68], ResNet-50 [26], SpineNet[12], EfficientNet-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. Bag of freebies

      通常情况下,传统的目标检测器的训练都是在离线进行的,因此,研究者们总是喜欢研究更好的训练方法,使之目标检测器在不增加推理损耗的情况下达到更好的精度。我们将这些方法称为只需转变训练策略或只增加训练量成本为 " bag of freebies "。目标检测经常采用这种方法,并符合这个定义的就是数据增强。数据增强的目的是:增加输入图像的可变性,从而使设计的目标检测模型对不同环境的图片具有较高的鲁棒性。比如photometric distortions和geometric distortions是两种常用的数据增强方法,它们对检测任务肯定是有好处的。在处理photometric distortions,我们调整亮度,对比度。图像的色相、饱和度和噪声。对于geometric distortions,我们添加了随机缩放、裁剪、翻转和旋转。

       上面提到的数据增强方法都是像素的调整,以及所有原始像素信息在调整后的区域被保留下来。此外,一些从事数据扩容工作的研究者,把重点放在了模拟object occlusion问题。他们在图像分类和目标检测取得了好的结果。例如,random erase [100] and CutOut [11]可以随机的选取图像中的矩形区域,并随机填入或补充值为零。至于hide-and-seek [69]和grid mask [6],他们随机或均匀地选择多个图像中的矩形区域,并将其替换为全0。如果将类似的概念应用到特征图中,就是DropOut[71]、DropConnect[80]和DropBlock[16]方法。此外,有研究者提出了多张图像一起使用数据的方法扩增。例如,MixUp[92]使用了两个图像乘以不同系数的乘法叠加,并调整标签。至于CutMix[91],它是为了覆盖裁剪后的图像到其他图像的矩形区域,并根据混合区的大小调整标签。除了以上提到的方法,style transfer GAN[15]也是数据扩容方法,这种使用可以有效地实现数据扩容,减少CNN学习的纹理偏差。
       与上面提出的各种方法不同。其他的一些Bag of freebies方法是专门解决数据集中的语义分布偏差。在处理语义困扰的问题上,有一个很重要的问题是不同类别之间的数据不平衡,而two-stage 检测器处理这个问题通常是通过hard negative example mining [72]或online hard example mining [67]。但example mining method不适用于one-stage 目标检测器,因为这种检测器属于密集预测架构。因此,Linet al.[45]提出了focal loss解决数据不平衡问题。另一个很重要的问题是,one-hot编码很难表达出类与类之间关联程度问题。在执行标签化通常使用这种表示方式。在[73]中提出的label smoothing方案是将硬标签转化为软标签进行训练,可以使模型更鲁棒。为了获得更好的软标签,Islam等[33]将知识蒸馏的概念引入标签细化网络设计中。
         最后一个bag of freebies是objective function of Bounding Box (BBox) 回归。检测器通常使用MSE对BBOX的中心点和宽高进行回归,至于anchor-based方法,它是为了估算出对应的偏移量。但是,要直接估计BBOX的点坐标值,是要将这些点作为独立变量,但实际上未考虑对象本身的完整性。为了使这一问题得到更好的处理,一些研究人员最近提出的IoU损失[90],同时考虑预测的BBox面积和ground truth BBox面积覆盖。IoU损失会计算到BBox的四个坐标点,然后连接到生成一个完整的代码。因为IOU是一个尺度不变表示,它可以解决当传统方法计算{x,y,w,h}的l1或l2损失导致尺度增加。最近,一些研究人员不断改善IOU损失。例如GIoU损失[65]除覆盖面积也考虑物体的形状和方向。他们建议找到能同时覆盖预测BBOX和ground truth 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 的原始方法是将feature map拆分为多个d*d等块,其中 d 可以是 {1、2、3、……},从而形成空间金字塔,然后提取词袋(bag-of-word) 特征。SPP 将 SPM 集成到 CNN 中,并使用最大池化操作,而不是词袋操作。由于He等人提出的SPP模块[25]将输出一维特征矢量,因此在全卷积网络(FCN)中应用是不可行的。因此,在 YOLOv3 [63] 的设计中,Redmon 和 Farhadi 改进了 SPP 模块与内核大小 k * k 的最大池输出的串联,其中 k = {1、5、9、13 } 和步长等于 1。在此设计下,相对较大的 k * k maxpool 可有效增加骨干特征的感受野。添加改进版的 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 上的 AP 50 SSD 增加 5.7%。

        目标检测中常用的注意模块主要分为channel-wise attention和pointwise attention,这两个注意模型的代表分别是Squeeze-and-Excitation (SE) [29]和Spatial Attention Module[SAM][85]。虽然SE模块可以提高ResNet50在ImageNet图像分类任务中的top-1 准确率提高1%,而成本只增加计算工作量2%(这里指的是floats),但在GPU上通常会增加10%左右计算时间,因此在移动设备中使用更合适。但对于 SAM,它只需要额外花费0.1% 的计算,并且它可以提高 ResNet50-SE 在 ImageNet 图像分类任务中 0.5% 的前 1 精度。最重要的是,它根本不影响 GPU 上的推理速度。

        在特征融合方面,早期做法是使用skip connection [51] 或hyper-column [22] 将低级物理特征与高级语义特征进行融合。由于FPN等多尺度预测方法已经普及,许多融合不同特征金字塔的轻量级模块被提出来。此类模块包括 SFAM [98]、ASFF [48] 和 BiFPN [77]。SFAM 的主要思想是使用 SE 模块在 多尺度channelwise level re-weighting上执行通道级重新加权。至于ASFF,它使用softmax作为point-wise级reweighting,然后添加不同层级的特征图。在 BiFPN 中,输入多尺度权重残差连接来提取不同层的scale-wise level re-weighting,然后添加不同层的特征图。

        在深度学习的研究中,有些人把精力放在寻找好的激活函数上。良好的激活函数可以使梯度更有效地传播,同时也不会造成过多的额外计算成本。2010年,Nair和Hinton[56]提出ReLU激活函数从根本上解决梯度消失问题。随后,提出了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] 开发人员的思维方式是在软 NMS 的基础上将中心点距离的信息添加到 BBox 筛选过程中。值得一提的是,由于上述后处理方法没有一种直接是指捕获的图像特征,因此在后续开发无锚方法时不再需要后处理。
 

3. 方法论

基本目的是生产系统中的神经网络的快速运行速度和并行计算的优化
我们提出了两种实时神经网络。

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

2.对于VPU----我们使用分组卷积,但不使用Squeeze-and-excitement (SE) blocks--具体来说,这包括以下模型:EfficientNet-lite / MixNet [76] / GhostNet[21] / MobileNetV3

3.1架构选择

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

       下一个目标是选择更多的block扩大感受野,为不同级别的backbone、不同的检测器级别:如FPN、PAN、ASFF、BiFPN找到参数聚合的最佳方法。一个最佳的分类参考模型是并不总是最佳的检测器。相比之下,检测器需要满足:

  • 更高的输入网络尺寸(分辨率)----用于检测多个小物件
  • 更多的层数:提高模型的感受野,能应对网络输入尺寸增加
  • 更多参数–更大的模型容量,在单个图像中检测多个大小不同的物体。

      我们可以假设一个模型具有较大的感受野(很多3×3卷积层),应该选择很多参数的backbone,表1显示了CSPResNeXt50,CSPDarknet53和EfficientNet B3的信息。CSPResNext50仅包含16个3×3卷积层、425×425感受野大小和20.6M个参数,而CSPDarknet53包含29个3×3卷积、725×725感受野大小和27.6M个参数。 这种理论上的证明,连同我们的大量实验表明,CSPDarknet53神经网络是最佳的backbone。

不同大小的感受野的影响总结如下:
•最大对象尺寸-允许查看整个对象
•取决于网络大小-允许查看周围的环境物体
•超出网络规模-图片输入和最终激活值的连接数

       我们将SPP模块添加到CSPDarknet53上,因为它大大增加了感受野,分离出最重要的context特征,几乎不会导致降低网络运行速度。我们使用PANet作为来自不同backbone的参数聚合方法而不是YOLOv3中使用的FPN。最后,我们选择CSPDarknet53主干,SPP添加模块,PANet path-aggregation neck和YOLOv3(anchor based)头作为YOLOv4架构。
       将来,我们计划大幅扩展(BoF)的内容,可以解决一些问题并增加检测器准确性,并顺序检查每个功能的影响。
       我们不使用Cross-GPU Batch Normalization(CGBN或SyncBN)或昂贵的专用设备。这个使任何人都可用常规图形处理器再现我们最新的成果,例如GTX 1080Ti或RTX2080Ti。

3.2、BoF 和 BoS 的选择

为了提升目标检测训练,CNN 通常使用以下内容:

激活函数: ReLU, leaky-ReLU, parametric-ReLU, ReLU6, SELU, Swish, or 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 的训练,我们进行了如下其他设计和改进:

  • 我们引入了一种新的数据扩增Mosaic和Self-Adversarial Training (SAT)方法;
  • 应用遗传算法选择最佳的超参数。

        我们修改了一些现有的方法,使我们的设计适合高效的训练和检测 – modified SAM, modified PAN, and Cross mini-Batch Normalization (CmBN)Mosaic(马赛克)是一种新的数据扩增方法,它混合了4个训练图像。因此,4个不同的上下文混合,而CutMix只混合2个输入图像。这允许检测其正常上下文之外的对象。此外,批处理规范化计算每个层上 4 个不同图像的激活统计信息。这大大减少了对大batch size的需求。

 图3:Mosaic 数据增强表现

       Self-Adversarial Training (SAT) 代表一种新的数据扩增技术,可在 2 个forward backward阶段运行。在第一阶段,神经网络更改原始图像而不是网络权重。通过这种方式,神经网络对自身执行对抗攻击,更改原始图像以创建映像上没有所需对象的假图。在第二阶段,神经网络被训练以正常方式检测此修改图像上的目标。

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

 我们修改SAM,从spatial-wise attention改为pointwise attention,并将 PAN 的shortcut connection改为concatenation,如图 5 和图 6 所示。

3.4、YOLO V4

  在本节中,我们将详细阐述YOLOv4的细节。

YOLOv4 包括:

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

YOLO v4 使用:

  • Bag of Freebies (BoF) for backbone: CutMix 和 Mosaic 数据增强, DropBlock regularization, Class label smoothing
  • Bag of Specials (BoS) for backbone: Mish 激活, Cross-stage partial connections (CSP), Multiinput weighted residual connections (MiWRC)
  • Bag of Freebies (BoF) for detector: CIoU 损失, CmBN, DropBlock 正则化, Mosaic数据扩增, Self-Adversarial 训练, Eliminate grid sensitivity, Using multiple anchors for a single ground truth, Cosine annealing scheduler [52], Optimal hyperparameters, Random training shapes
  • Bag of Specials (BoS) for detector: Mish 激, SPP-block, SAM-block, PAN path-aggregation block, DIoU-NMS

4、实验

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

4.1.实验设置

       在 ImageNet 图像分类实验中,默认的超参数如下:训练steps 为 8,000,000; batch size和mini-batch size大小分别为128和32;采用多项式衰减学习率调度策略,初始learning rate为0.1;warm-up steps为1000;momentum 和weight decay分别设置为 0.9 和 0.005。我们所有的 BoS 实验都使用与默认设置相同的超参数,在 BoF 实验中,我们增加了 50% 的训练步骤。在 BoF 实验中,我们验证 MixUp、CutMix、Mosaic、Bluring数据扩增和label smoothing regularization方法。在BoS实验中,我们比较了LReLU、Swish和Mish激活函数的影响。所有实验都使用 1080 Ti 或 2080 Ti GPU 进行训练。

        在MS COCO目标检测实验中,默认超参数如下:训练steps为500,500;采用step decay learning rate调度策略,初始学习速率0.01,在400,000步和45万步时乘以因子0.1;momentum和weight decay分别设置为 0.9 和 0.0005。所有网络结构都使用单个 GPU 执行批处理大小为 64 的多级训练,而mini-batch大小为 8 或 4 取决于网络结构和 GPU 内存限制。除了使用遗传算法进行超参数搜索实验外,所有其他实验都使用默认设置。遗传算法使用YOLOv3-SPP训练与GIoU损失和搜索300个epochs为min-val 5k验证集。采用搜索学习速率0.00261、动量0.949、分配真值IoU阈值为0.213,遗传算法实验的损失规范化器0.07。我们已经验证了大量的BoF,包括grid sensitivity elimination、mosaic数据扩增、IoU阈值、遗传算法、class label smoothing, cross mini-batch normalizationselfadversarial training, cosine annealing scheduler, dynamic mini-batch size, DropBlock, Optimized Anchors、不同类型的IoU损失。我们还对各种 BoS 进行实验,包括Mish、SPP、SAM、RFB、BiFPN 和Gaussian YOLO [8]。对于所有实验,我们只使用一个 GPU 进行训练,因此不使用syncBN 优化多个 GPU 等技术。

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

    首先,研究了不同特性对分类器训练的影响;具体来说,class label smoothing,不同数据扩增技术的影响,双边模糊,MixUp,CutMix和Mosaic,如Fugure 7所示,以及不同激活的影响,如Leaky-ReLU(默认情况下),Swish和Mish。

 图7:不同的数据增强方法

        在我们的实验中,如表2所示,引入了以下技巧提高了精度,如CutMix和Mosaic数据增强,Class label smoothing,和Mish activation。因此,我们的分类器训练BoF-backbone (Bag of Freebies)是: CutMix和Mosaic data augmentation和Class label smoothing,此外我们还使用Mish activation作为补充方案,如表2和表3所示。

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

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

  •        S: 消除grid sensitivity方程 bx = delta(tx )+ cx, by = delta(ty )+ cy , 其中 cx 和 cy 始终为整数, 在 YOLOv3 中使用其用于评估目标坐标, 因此,接近 cx 或 cx = 1 值的 bx 值需要极高的 tx 绝对值。我们通过将 sigmoid 乘以超过1.0 的因子来解决此问题,从而消除了网格无法检测到对象的影响;
  •         M:Mosaic数据扩增 – 在训练期间使用 4 图像镶嵌,而不是单个图像;
  •         IT:IoU 阈值 – 使用多个锚点进行单个接地真值 IoU(真锚)> IoU 阈值;
  •         GA:遗传算法 – 在前 10% 的时间段的网络训练期间使用遗传算法选择最佳超参数;
  •         LS:class label smoothing – 使用类标签平滑进行 sigmoid 激活;
  •         CBN: CmBN – 使用交叉小批处理规范化收集整个批处理中的统计信息,而不是在单个小批处理中收集统计信息;
  •         CA:模拟退火调节器 – 改变正弦训练中的学习速率;
  •         DM:动态小批量尺寸– 在小分辨率训练期间使用随机训练尺度,自动增加mini-batch的大小;
  •         OA:优化的锚点 – 使用优化的anchors 进行 512×512 网络分辨率的训练;
  •         GIoU、CIoU、DIoU、MSE – 对边界框回归使用不同的损失函数。

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

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

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

   首先,虽然与CSPDarknet53模型相比,训练具有不同功能的CSPReSNeXt50模型的分类精度较高,但CSPDarknet53模型在物体检测方面表现出更高的精度。

        其次,将BoF和Mish用于CSPResNeXt50分类器训练,提高了其分类精度,但进一步将这些预先训练的权重应用于检测器训练,降低了检测器的精度。但是,将 BoF 和 Mish 用于 CSPDarknet53 分类器训练可提高分类器和检测器的准确性,后者使用此分类器预先训练的权重。最终结果是,主干 CSPDarknet53 更适合检测器,而不是 CSPResNeXt50。

        我们观察到,CSPDarknet53模型表明,由于各种改进,提高了检测器精度的能力。

4.5、不同mini-batch大小对检测器训练的影响

      最后,  分析了使用不同小批次大小的模型获得的结果,结果显示在表7中。从表7所示的结果中,我们发现,在添加了BoF和BoS训练策略后,小批量大小对检测器的性能几乎没有影响。这一结果表明,在引入BoF和BoS后,不再需要使用昂贵的 GPU 进行训练。换句话说,任何人都可以只使用传统的 GPU 来训练出色的检测器。

5、实验结果

        图8显示了与其他最先进的目标检测器结果的比较。我们的 YOLOv4 位于Pareto最佳曲线上,在速度和精度方面优于最快、最精确的检测器。

 图8: 不同物体检测速度和精度的比较

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

6、结论

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

7、致谢

        作者希望感谢Glenn Joche的Mosaic的数据扩增想法,选择超参数通过使用遗传算法和解决网格敏感性问题,https://github.com/ultralytics/yolov3。

猜你喜欢

转载自blog.csdn.net/m0_57787115/article/details/130584380
今日推荐