YOLOv4 Optimal Speed and Accuracy of Object Detection

YOLOv4: Optimal Speed and Accuracy of Object Detection

有大量的特征据说可以提高卷积神经网络(CNN)的准确性.需要在大型数据集上对这些特征的组合进行实际测试,并对结果进行理论上的论证.有些特征只对某些模型和某些问题进行专门的操作,或者只对小规模的数据集进行操作;而有些特征,如batch-normalization和residual-connections,适用于大多数模型、任务和数据集。我们假设这样的通用特征包括Weighted-Residual-Connections(WRC)、Cross-Stage-Partial-connections(CSP)、Cross mini-Batch Normalization(CmBN)、Self-adversarial-training(SAT)和Mish-activation。我们使用新的功能。WRC、CSP、CmBN、SAT、Mish**、Mosaic数据增强、CmBN、DropBlock正则化和CIoU损失,并结合其中的一些功能来实现最先进的结果。在Tesla V100上以65 FPS的实时速度对MS COCO数据集进行43.5%的AP(65.7% AP50)。Source code is at
https://github.com/AlexeyAB/darknet.

1. Introduction

大多数基于CNN的目标检测器基本上只适用于recommendation systems。例如,通过城市视频摄像头搜索免费停车位是由慢速精确模型执行的,而汽车碰撞预警则与快速不精确模型有关。提高对象检测器的实时精度,不仅可以将其用于提示生成的recommendation systems,还可以用于独立的流程管理和减少人工投入。在传统的图形处理单元(GPU)上进行实时目标检测器操作,使其能够以合理的价格大规模使用。现代最精确的神经网络不能实时运行,需要大量的GPU来进行大批量的训练。我们通过创建一个在传统GPU上实时运行的CNN来解决这样的问题,对其
训练只需要一个传统的GPU。

YOLOv4 Optimal Speed and Accuracy of Object Detection

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

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

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

YOLOv4 Optimal Speed and Accuracy of Object Detection

2. Related work

2.1. Object detection models

现代的检测器通常由两部分组成,一个是在ImageNet上预先训练的骨干,另一个是用于预测对象的类和bounding boxes的头部.对于那些运行在GPU平台上的检测器,它们的骨干可以是VGG[68], ResNet[26], ResNeXt[86], 或DenseNet[30]. 对于那些运行在CPU平台上的检测器,它们的主干可以是SqueezeNet[31],MobileNet[28,66,27,74],或者ShuffleNet[97,53]。至于头部部分,通常分为两种,即one-stage目标检测器和two-stage目标检测器。最有代表性的two-stage对象检测器是R-CNN[19]系列,包括fast R-CNN[18]、faster 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的单级物体检测器得到发展。这类检测器有CenterNet[13]、CornerNet[37,38]、FCOS[78]等。近年来发展起来的目标检测器往往在骨干和头部之间插入一些层,这些层通常用来收集不同阶段的特征图。我们可以称之为物体检测器的颈部。通常情况下,一个颈部由若干个自下而上的路径和若干个自上而下的路径组成。配备这种机制的网络包括特征金字塔网络(FPN)[44]、路径聚合网络(PAN)[49]、BiFPN[77]和NAS-FPN[17]。除了上述模型外,一些研究者把重点放在直接建立一个新的骨干模型(DetNet[43]、DetNAS[7])或新的整体模型(SpineNet[12],HitDetector[20])进行物体检测。

综上所述,一个普通的目标检测器是由几个部分组成的。

YOLOv4 Optimal Speed and Accuracy of Object Detection

2.2. Bag of freebies

通常情况下,传统的目标检测器是离线训练的。因此,研究人员总是喜欢利用这一优势,开发出更好的训练方法,在不增加推理成本的情况下,使对象检测器得到更好的精度。我们把这些只改变训练策略或只增加训练成本的方法称为 “bag of freebies”。目标检测方法经常采用的、符合 "bag of freebies "定义的是数据增强。**数据增强的目的是增加输入图像的变化性,使所设计的物体检测模型对不同环境获得的图像具有更高的鲁棒性。**例如,光度失真和几何失真是两种常用的数据增强方法,它们无疑有利于目标检测任务。在处理光度失真时,我们要调整图像的亮度、对比度、色调、饱和度和噪声。对于几何失真,我们添加随机缩放、裁剪、翻转和旋转。

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

与上述各种方法不同,其他一些bag of freebies方法致力于解决数据集中语义分布可能存在偏差的问题。在处理语义分布偏差问题时,一个非常重要的问题是不同类之间存在数据不平衡的问题,这一问题通常通过两级对象检测器中的bag of freebies[72]或online hard example mining[67]来解决。

但实例挖掘法不适用于单级对象检测器,因为这种检测器属于密集预测架构。因此Lin等人[45]提出了focalloss来处理不同类之间存在的数据不平衡问题。另一个非常重要的问题是,用one-hot hard representation很难表达不同类别之间的关联度关系。这种表示方案在执行标签时经常使用.[73]中提出的标签平滑是将硬标签转化为软标签进行训练,可以使模型更加稳健。为了获得更好的软标签,Islam等[33]引入知识蒸馏的概念来设计标签细化网络

最后一个bag of freebies是边界盒(BBox)回归的目标函数。传统的物体检测器通常使用均方误差(MSE)直接对BBox的中心点坐标和高度、宽度进行回归。**但是,如果直接估计BBox各点的坐标值,就是把这些点当作独立的变量,其实并没有考虑对象本身的完整性。为了使这一问题得到更好的处理,最近有研究者提出了IoU损失[90],将预测BBox区域的覆盖率和ground truth BBox区域的覆盖率考虑在内。**在IoU损失计算过程中,通过执行IoU与ground truth值,触发BBox四个坐标点的计算,然后将生成的结果连接成一个整体代码。由于IoU是一种尺度不变的表示方法,它可以解决传统方法计算{x,y,w,h}的l1l_1l2l_2损耗时,损失会随着尺度的增加而增加的问题。最近,一些研究者不断改进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模块起源于空间金字塔匹配(Spatial Pyramid Matching,SPM)[39],SPMs最初的方法是将特征图分割成多个dxd相等的块,其中d可以是{1,2,3,…},从而形成空间金字塔,然后提取bag-of-word特征。SPP将SPM集成到CNN中,并使用最大池化操作代替bag-of-word操作。由于He等人[25]提出的SPP模块将输出一维的特征向量,在完全卷积网络(FCN)中应用是不可行的。因此在YOLOv3[63]的设计中,Redmon和Farhadi将SPP模块改进为最大池化输出的并联,其内核大小为kxk,其中k={1,5,9,13},stride等于1。在这种设计下,相对较大的kxk maxpooling有效地增加了骨干特征的感受野。加入改进版SPP模块后,YOLOv3-608在MS COCO对象检测任务上将AP50提升了2.7%,代价是额外计算0.5%。ASPP[5]模块与改进版SPP模块在操作上的区别主要是由原来的kxk内核大小、最大池化的stride等于1到几个3 x3内核大小、稀释比等于k、稀释卷积操作中stride等于1。RFB模块是对kxk核采用多次稀释卷积,稀释比等于k,stride等于1,以获得比ASPP更全面的空间覆盖。RFB[47]只需要额外花费7%的推理时间,就可以将MS COCO上SSD的AP50提高5.7%。

在物体检测中经常使用的注意力模块主要分为通道注意力和点注意力,这两种注意力模型的代表分别是Squeeze-and-Excitation(SE)[29]和Spatial Attention Module(SAM)[85]。虽然SE模块在ImageNet图像分类任务中可以提高ResNet50的功率1%顶1的准确率,代价是只增加2%的计算量,但在GPU上通常会增加10%左右的推理时间,所以更适合在移动设备上使用。但对于SAM来说,它只需要付出0.1%的额外计算,就可以在ImageNet图像分类任务上提高ResNet50-SE 0.5%的顶1精度。最重要的是,它完全不影响GPU上的推理速度。

在特征整合方面,早期的做法是采用skip connection51]或hyper-column[22],将低级物理特征整合为高级语义特征。由于FPN等多尺度预测方法已经普及,因此提出了许多整合不同特征金字塔的轻量级模块。这类模块包括SFAM[98]、ASFF[48]和BiFPN[77]。SFAM的主要思想是利用SE模块对多尺度的concatenated特征图进行通道级re-weighting。而ASFF则采用softmax作为point-wise 级别re-weighting,然后添加不同尺度的特征图.在BiFPN中,提出了多输入加权残差连接,执行尺度级别重权,然后添加不同尺度的特征图。

在深度学习的研究中,有人把重点放在寻找好的**函数上。一个好的**函数可以使梯度更有效地传播,同时也不会造成太多的额外计算成本。2010年,Nair和Hinton[56]提出ReLU,大幅解决了传统tanh和sigmoid**函数中经常遇到的梯度消失问题。随后,又提出了LReLU[54]、PReLU[24]、ReLU6[28]、Scaled Exponential Linear Unit(SELU)[35]、Swish[59]、hard-Swish[27]和Mish[55]等用于解决梯度消失问题的方法。LReLU和PReLU的主要目的是解决当输出小于零时,ReLU的梯度为零的问题。至于ReLU6和hard-Swish则是专门为量化网络设计的。对于神经网络的自归一化,提出了SELU**函数来满足目标。需要注意的是,Swish和Mish都是continuously differentiable**函数。

在基于深度学习的对象检测中,常用的后处理方法是NMS,它可以用来过滤那些不好预测同一对象的BBox,只保留响应较高的候选BBox。NMS试图改进的方式与优化目标函数的方法是一致的。NMS提出的原始方法没有考虑上下文信息,所以Girshick等[19]在R-CNN中加入分类置信度得分作为参考,根据置信度得分的顺序,按照从高分到低分的顺序进行 greedy NMS。至于sogt-NMS[1],它考虑了在 greedy NMS中,物体的遮挡可能会导致IoU得分的置信度分数下降的问题。DIoU NMS[99]开发者的思路是在sogt-NMS的基础上,在BBox筛选过程中加入中心点距离的信息。值得一提的是,由于以上的后处理方法都没有直接参考采集到的图像特征,所以在后续开发anchor-free方法时,不再需要进行后处理。

3. Methodology

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

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

对于VPU,我们使用分组卷积,但我们避免使用Squeeze-and-excitement (SE)块,具体包括以下模型。EfficientNet-lite / MixNet [76] / GhostNet [21] / MobileNetV3。

3.1. Selection of architecture

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

接下来的目标是选择增加感受野的附加区块,并从不同的骨干级别中选择最佳的参数聚合方法,用于不同的检测器级别:如FPN、PAN、ASFF、BiFPN。

对分类来说是最优的参考模型,对检测器来说却不一定是最优的。与分类器相比,检测器需要以下条件:

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

更多的层数–为了获得更高的感受野,以覆盖更大的输入网络

更多参数–使模型具有更大的能力来检测单个图像中不同大小的多个对象

YOLOv4 Optimal Speed and Accuracy of Object Detection

假设说,我们可以认为应该选择感受野大小较大(卷积层数3×3)、参数数量较多的模型作为骨干。表1是CSPResNeXt50、CSPDarknet53和EfficientNet B3的信息。CSPResNext50只包含16个3×3卷积层,425×425的感受野和20.6M的参数,而CSPDarknet53包含29个3×3卷积层,725×725的感受野和27.6M的参数。这一理论依据,加上我们的大量实验,表明CSPDarknet53神经网络是两者中作为检测器骨干的最佳模型。

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

最大的对象尺寸–允许查看整个目标。

最大网络规模–允许查看目标周围的上下文。

Exceeding the network size–增加image point和final activation之间的连接数。

我们在CSPDarknet53上增加了SPP块,因为它显著增加了感受野,分离出了最重要的上下文特征,并且几乎不会造成网络运行速度的降低。我们采用PANet作为检测器的参数聚合方法,而不是YOLOv3中使用的FPN。

最后,我们选择CSPDarknet53骨干、SPP附加模块、PANe path-aggregation neck、YOLOv3(基于anchor)头部作为YOLOv4的架构

未来我们计划大大扩展检测器的Bag of Freebies内容,理论上可以解决一些问题,提高检测器的精度,并以实验的方式依次检查各特征的影响。

我们不使用Cross-GPU批量归一化(CGBN或SyncBN)或昂贵的专用设备。这使得任何人都可以在传统的图形处理器上重现我们最先进的成果,例如GTX 1080Ti或RTX 2080Ti。

3.2. Selection of BoF and BoS

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

**Activations:**ReLU, leaky-ReLU, parametric-ReLU, ReLU6, SELU, Swish, or Mis

Bounding box regression loss: MSE, IoU, GIoU, CIoU, DIoU

Data augmentation: CutOut, MixUp, CutMix

Regularization method: DropOut, DropPath [36], Spatial DropOut [79], or DropBlock

Normalization of the network activations by their mean and variance:Batch Normalization (BN) [32], Cross-GPU Batch Normalization (CGBN or SyncBN) [93], Filter Response Normalization (FRN) [70], or Cross-Iteration Batch Normalization (CBN) [89]

Skip-connections: Residual connections, Weighted residual connections, Multi-input weighted residual connections, or Cross stage partial connections (CSP)

在训练**函数方面,由于PReLU和SELU的训练难度较大,而ReLU6是专门为量化网络设计的,因此我们将上述**函数从候选名单中删除。在reqularization的方法中,发表Drop-Block的人将他们的方法与其他方法进行了详细的比较,他们的reqularization方法赢得了很多。因此,我们毫不犹豫地选择DropBlock作为我们的正则化方法。至于正则化方法的选择,由于我们专注于只使用一个GPU的训练策略,所以不考虑syncBN

3.3. Additional improvements

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

我们介绍了一种新的数据增强方法Mosaic,以及自我对抗训练(SAT)。

我们用遗传算法选择最优参数

我们修改了一些现有的方法,使我们的设计适合于高效的训练和检测–修改后的SAM,修改后的PAN和交叉小批量归一化(CmBN)。

Mosaic是一种新的数据增强方法,它混合了4张训练图像。因此混合了4个不同的上下文,而CutMix只混合了2个输入图像。这样就可以检测到正常上下文之外的物体。此外,批量归一化在每层上计算4张不同图像的**统计。这大大降低了对大的large mini-batch size的需求

自对抗训练(SAT)也是一种新的数据增强技术,它的操作分为2个forward backward阶段。在第1阶段,神经网络改变原始图像而不是网络权重。以这种方式,神经网络对自身进行对抗性攻击,改变原始图像,以制造图像上没有所需对象的欺骗。在第二阶段,训练神经网络以正常的方式检测修改后的图像上的目标。

YOLOv4 Optimal Speed and Accuracy of Object Detection

CmBN代表了CBN的修改版本,如图4所示,定义为跨小批归一化(CmBN)。这只收集单个批次内mini-batches之间的统计数据。

############################################

https://blog.****.net/justsolow/article/details/106401065

而CmBN的做法和前面两个都不一样,其把大batch内部的4个mini batch当做一个整体,对外隔离,主要改变在于BN层的统计量计算方面,具体流程是:假设当前是第t次迭代时刻,也是mini-batch的起点,

(1) 在第t时刻开始进行梯度累加操作

(2) 在第t时刻开始进行BN统计量汇合操作,这个就是和CBN的区别,CBN在第t时刻,也会考虑前3个时刻的统计量进行汇合,而CmBN操作不会,其仅仅在mini batch内部进行汇合操作

(3) 就是正常的应用BN,对输入进行变换输出即可

(4) 在mini batch的最后一个时刻,进行参数更新和可学习参数更新

可以明显发现CmBN是CBN的简化版本,其唯一差别就是在计算第t时刻的BN统计量时候,CBN会考虑前一个mini batch内部的统计量,而CmBN版本,所有计算都是在mini batch内部。我怀疑是为了减少内存消耗,提高训练速度,既然大家都是近似,差距应该不大,而且本身yolo训练时候,batch也不会特别小,不至于是1-2,所以CmBN的做法应该是为了yolov4专门设计的,属于实践性改进。

############################################

YOLOv4 Optimal Speed and Accuracy of Object Detection

YOLOv4 Optimal Speed and Accuracy of Object Detection

我们将SAM从空间上的注意修改为点上的注意,并将PAN的shortcut替换为concatenation,分别如图5和图6所示。

3.4. YOLOv4

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

YOLOv4 Optimal Speed and Accuracy of Object Detection

YOLO v4 uses:

Bag of Freebies(BoF)for backbone。CutMix和Mosaic数据增强,DropBlock正则化,类标签平滑化。

Bag of Specials (BoS) for backbone: Mish activation, Cross-stage partial connections (CSP), Multiinput weighted residual connections (MiWRC)

Bag of Freebies (BoF) for detector: CIoU损失、CmBN、DropBlock正则化、Mosaic数据增强、自对抗训练、消除网格敏感度(Eliminate grid sensitivity)、 Using multiple anchors for a single ground truth、余弦退火调度器[52]、最佳超参数、随机训练图片尺寸。

Bag of Specials (BoS) for detector: Mish activation, SPP-block, SAM-block, PAN path-aggregation block, DIoU-NMS

4. Experiments

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

4.1. Experimental setup

在ImageNet图像分类实验中,默认的超参数如下:训练步数为8,000,000;批次大小和mini-batch大小分别为128和32;采用多项式衰减学习率调度策略,初始学习率为0.1;预热步数为1000;动量和权重衰减分别设置为0.9和0.005。我们所有的BoS实验都使用相同的超参数作为默认设置,在BoF实验中,我们增加了50%的训练步数。在BoF实验中,我们验证了MixUp、CutMix、Mosaic、Bluring数据增强和标签平滑正则化方法。在BoS实验中,我们比较了LReLU、Swish和Mish**函数的效果。所有实验都是用1080 Ti或2080 Ti GPU进行训练。

在MS COCO目标检测实验中,默认超参数如下:训练步数为500,500;采用步长衰减学习率调度策略,初始学习率为0.01,分别在40万步和45万步时乘以系数0.1;动量和权重衰减分别设置为0.9和0.0005。所有架构都使用单颗GPU执行多尺度训练,批处理量为64,而小批处理量为8或4,取决于架构和GPU内存的限制。除超参数搜索实验采用遗传算法外,其他实验均采用默认设置。遗传算法使用YOLOv3-SPP进行GIoU损耗训练,搜索300个epochs的min-val 5k组。我们采用搜索学习率0.00261,动量0.949,分配ground truth值的IoU阈值0.213,遗传算法实验的损失归一化0.07。我们验证了大量的BoF,包括grid sensitivity elimination、mosaic数据增强、IoU阈值、遗传算法、类标签平滑化、跨小批归一化、自对抗训练、余弦退火调度器、动态小批大小、DropBlock、Optimized Anchors、不同种类的IoU损失。我们还对各种BoS进行了实验,包括Mish、SPP、SAM、RFB、BiFPN和高斯YOLO[8]。在所有的实验中,我们只使用一个GPU进行训练,所以没有使用syncBN等优化多个GPU的技术。

4.2. Influence of different features on Classifier training

YOLOv4 Optimal Speed and Accuracy of Object Detection

YOLOv4 Optimal Speed and Accuracy of Object Detection

YOLOv4 Optimal Speed and Accuracy of Object Detection

首先,我们研究不同特征对分类器训练的影响;具体来说,如Fugure 7所示,Class标签平滑的影响,不同数据增强技术、双边模糊(bilateral blurring)、MixUp、CutMix和Mosaic的影响,以及不同**的影响,如Leaky-ReLU(默认)、Swish和Mish。

在我们的实验中,如表2所示,通过引入特征来提高分类器的准确性,如。CutMix和Mosaic数据增强,Class标签平滑和Mish**。因此,我们用于分类器训练的BoF backbone(Bag of Freebies)包括以下内容。CutMix和Mosaic数据增强和Class标签平滑化。此外我们还使用Mish**作为补充选项,如表2和表3所示。

4.3. Influence of different features on Detector training

YOLOv4 Optimal Speed and Accuracy of Object Detection

进一步研究关注不同的Bag-of-Freebies(BoF-detector)对detector训练精度的影响,如表4所示。我们通过研究不同的特征,在不影响FPS的情况下,显著扩大了BoF列表,提高了检测器精度。

S:消除网格灵敏度方程bx=σ(tx)+cx,by=σ(ty)+cyb_x=\sigma(t_x)+c_x,b_y=\sigma(t_y)+c_y,其中cxc_xcyc_y总是整数,在YOLOv3中用于评估目标坐标,因此,对于接近cxc_xcx+1c_{x+1}值的bxb_x值,需要极高的txt_x绝对值。我们通过将sigmoid乘以超过1.0的系数来解决这个问题,所以消除了网格的影响,而网格上的物体是无法检测到的。

M:Mosaic数据增强–在训练过程中使用4幅图像Mosaic,而不是单一图像。

IT:IoU阈值-对单个ground truth IoU(truth,anchor)>IoU阈值使用多个anchor

GA:遗传算法–在网络训练过程中,使用遗传算法在前10%的时间段内选择最优超参数。

LS:类标签平滑-使用类标签平滑来**sigmoid

CBN:CmBN - 使用跨小批量归一化来收集整个批次的统计数据,而不是收集单个小批量的统计数据。

CA: 余弦退火调度器–改变正弦训练过程中的学习率。

DM:动态小批量尺寸–在小分辨率训练过程中,使用随机训练形状自动增加小批量尺寸。

OA:Optimized Anchors - 使用Optimized Anchors进行512x512网络分辨率的训练。

GIoU、CIoU、DIoU、MSE–使用不同的损失算法进行bounded box回归。

YOLOv4 Optimal Speed and Accuracy of Object Detection

进一步研究关注不同的Bag-of-Special(BoS-detector)对检测器训练精度的影响,包括PAN、RFB、SAM、高斯YOLO(G)和ASFF,如表5所示。在我们的实验中,当使用SPP、PAN和SAM时,检测器得到了最好的性能。

表6:使用不同的分类器预训练权重进行检测器训练(所有其他训练参数在所有模型中都相似)。

YOLOv4 Optimal Speed and Accuracy of Object Detection

4.4. Influence of different backbones and pretrained weightings on Detector training不同骨架和预训练权重对检测器训练的影响。

进一步我们研究不同骨干模型对检测器精度的影响,如表6所示。我们注意到,在检测器精度方面,分类精度最好的特征模型不一定是最好的。

首先,虽然与CSPDarknet53模型相比,不同特征训练的CSPResNeXt-50模型的分类精度更高,但在对象检测方面,CSPDarknet53模型表现出更高的精度。

其次,使用BoF和Mish对CSPResNeXt50分类器进行训练可以提高其分类精度,但进一步将这些预训练的权重应用于检测器训练,则会降低检测器的精度。然而,将BoF和Mish用于CSPDarknet53分类器的训练,可以提高分类器和使用该分类器预训练权重的检测器的精度。净结果是,骨干CSPDarknet53比CSPResNeXt50更适合于检测器

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

4.5. Influence of different mini-batch size on Detector training

YOLOv4 Optimal Speed and Accuracy of Object Detection

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

5. Results

YOLOv4 Optimal Speed and Accuracy of Object Detection

YOLOv4 Optimal Speed and Accuracy of Object Detection

图8:不同物体检测器的速度和精度比较。(有些文章只说了其中一款GPU的检测器的FPS。Maxwell/Pascal/Volta)

与其他最先进的物体检测器所得到的结果比较如图8所示。我们的YOLOv4位于Pareto optimality curve上,在速度和精度上都优于最快、最准确的探测器。

表8:不同物体检测器在MS COCO数据集上的速度和精度比较(testdev 2017)。(FPS 30或更高的实时检测器在此突出显示。我们在不使用 tensorRT 的情况下,比较了 batch=1 的结果)。

YOLOv4 Optimal Speed and Accuracy of Object Detection

YOLOv4 Optimal Speed and Accuracy of Object Detection

表9:不同物体检测器在MS COCO数据集上的速度和精度比较(test-dev 2017)。(这里突出显示了FPS 30或更高的实时检测器。我们在不使用 tensorRT 的情况下,比较了 batch=1 的结果)。)

YOLOv4 Optimal Speed and Accuracy of Object Detection

YOLOv4 Optimal Speed and Accuracy of Object Detection

表10:不同物体探测器在MS COCO数据集上的速度和精度比较(test-dev 2017)。(这里突出显示了FPS 30或更高的实时检测器。我们在不使用 tensorRT 的情况下,比较了 batch=1 的结果)。)

YOLOv4 Optimal Speed and Accuracy of Object Detection

YOLOv4 Optimal Speed and Accuracy of Object Detection

表10:不同物体探测器在MS COCO数据集上的速度和精度比较(test-dev 2017)。(这里突出显示了FPS 30或更高的实时检测器。我们在不使用 tensorRT 的情况下,比较了 batch=1 的结果)。)

由于不同的方法使用不同架构的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。