【目标检测-YOLO】YOLOv4(第一篇)

YOLOv4: 优化目标检测的速度和精度

摘要

卷积多技巧,实践出真知。若干有局限,还需选通用。BN速收敛,残差解退化。

通用特性包括加权残差连接(Weighted-Residual-Connections, WRC)、跨阶段部分连接(Cross-Stage-Partial-connections,CSP)、跨迷你批量归一化(Cross mini-Batch Normalization,CmBN)、自对抗训练(Self-adversarial-training,SAT)和Mish激活函数。

我们使用新特性:WRC,CSP, CmBN,SAT,Mish激活函数,马赛克数据增广,CmBN,DropBlock正规化,CIoU loss函数,并将它们进行组合在COCO数据集上达到最先进的结果:43.5%AP(65.7% AP_{50} ),在Tesla V100上实时速度约65FPS。源代码在:https://github.com/AlexeyAB/darknet。
意思是:v4 是一篇与时俱进的缝合之作。

1. 引言

本工作的主要目标是生产系统中快速运行的目标检测器的设计并行计算的优化,而不是低计算量理论指标(BFLOP)。我们希望设计的对象能够容易训练和使用。例如,任何人使用一个常规GPU进行训练和测试都可以获得实时、高质量、令人信服的目标检测结果,如图1所示是YOLOv4的结果。本文的贡献总结如下:
1.我们开发了一个高效、强大的目标检测模型。每个人都可以使用一个1080 Ti或2080 Ti来训练一个超级快速和准确的目标检测器。
2.在检测器训练过程中,我们验证了最先进的Bag-of-Freebies和Bag-of-Specials方法的影响。
3.我们改进了目前最先进的方法,使它们更有效且更适用于单GPU训练,包括CBN、PAN[、SAM等。

【目标检测-YOLO】YOLOv4(第一篇)_第1张图片

图1:YOLOv4和其他最先进的目标检测器对比。YOLOv4的运行速度是EfficientDet两倍以上,性能相当。比YOLOv3提高AP和FPS分别为10%和12%。

【目标检测-YOLO】YOLOv4(第一篇)_第2张图片

2. Related work

2.1. Object detection models

现代目标检测器一般由两部分组成,一个backbone(主干网络)和一个head,backbone是在ImageNet上预训练的,head是用于预测物品的类别和包围框。在GPU平台上运行的检测器,它们的backbone一般是VGG,ResNet ,ResNeXt或者 DenseNet。在CPU平台上运行的检测器,它们的backbone一般是SqueezeNet ,MobileNet 或者ShuffleNet。head一般分为两类,即one-stage检测器和two-stage检测器。

典型的two-stage检测器有R-CNN系列,包括fast R-CNN,faster R-CNN,R-FCN和Libra R-CNN 。也可以将two-stage检测器变成anchor-free目标检测器,如RepPoints。

典型的one-stage检测器有 YOLO ,SSD 和RetinaNet 。近年来,出现了anchor-free的one-stage目标检测,如CenterNet,CornerNet ,FCOS 。

近年来还发展出了在backbone和head中间加入一些layer,这些层通常用于收集不同阶段的feature map特征图。我们将其称为目标检测器的neck。通常,一个neck通常由若干自底向上路径和自顶向下路径组成。具备这种机制的网络包括Feature Pyramid Network (FPN) ,Path Aggregation Network (PAN) ,BiFPN 和 NAS-FPN 。

除了上述模型,一些研究人员把重点放在直接建立一个新的backbone(DetNet ,DetNAS)或者一个全新的模型(SpineNet ,HitDetector )。
总结一下,一个通用的目标检测器包含以下部分:
【目标检测-YOLO】YOLOv4(第一篇)_第3张图片

 2.2.Bag of freebies免费礼包

通常,一个常规的目标检测器是离线训练的。因此,学者往往利用这一点来开发更好的训练方法使目标检测器能够达到更好的准确度,同时不增加推理的成本。我们称这些改变训练策略或增加训练成本的方法为免费礼包。经常使用的免费礼包有数据增广数据增广的目的在于增加输入图像的多样性,从而使得设计出来的目标检测模型对不同环境的图像具有更高的鲁棒性。例如,光度失真和几何失真(photometric distortions and geometric distortions)是两种常用的数据增广方法,在目标检测任务中很有效。在处理光度失真时,通过调节图像的亮度、对比度、色相、饱和度和噪声来实现。对于几何失真,通过随机缩放、裁剪、翻转和旋转来实现。

上述的数据增广方法都是像素级的调整被调整区域的所有原始像素级的信息都被保留。另外,一些数据增强的研究者将重点放在模拟物体遮挡,并在图像分类和目标检测领域得到很好的结果。例如,随机擦除和CutOut可以随机选取图像中的矩形区域,并填入一个随机值或补零。而hide-and-seek和grid mask是随机或平均地选择图像中的多个矩形区域并用零值替补。在特征图中相似的操作有DropOut、DropConnect和DropBlock。另外,还有一些学者提出了用多个图像一起进行数据增广。例如,MixUp使用不同的系数比例将两个图像相乘或叠加然后使用同样的比例调整标签。而CutMix则是将裁剪后的图像覆盖到其他图像的矩形区域,并根据混合区域的大小调整标签。除了上述方法外,style transfer GAN进行数据增强,这样可以有效减少CNN学习到的纹理偏差
不同于上面提到的各种方法,还有一些免费礼包方法旨在解决 数据集的语义分布可能有偏差的问题(the problem that the semantic distribution in the dataset may have bias.)。解决语义分布偏差时,一个很重要的问题是不同类别的数据之间的不平衡,在two-stage目标检测器中这个问题通常通过负样本难例挖掘(hard negative example mining)或在线难例挖掘(online hard example mining)来解决。但是样本挖掘的方法不适用于one-stage目标检测器,因为这类检测器检测器属于稠密预测结构。因此 "Focal loss for dense object detection." 在处理不同类别的数据不平衡问题时提出了focal loss另一个很重要的问题是,用one-hot表示法很难表达不同类别之间的关联程度。而one-hot表示法在labeling的时候常用,"Rethinking the inception ar-
chitecture for computer vision."提出了Label Smoothing将硬标签转换成软标签,使得模型更加鲁棒。为了获得更好的软标签,"Label refinement network for coarse-to-fine semantic segmentation."引入了知识蒸馏的概念来设计标签细化网络。

最后一个免费礼包方法就是BBox回归的目标函数。传统的目标检测器一般使用MSE(Mean Square Error)直接对中心点坐标 以及高度和宽度进行回归,即{{x_{center}, y_{center}, w, h}},或者左上右下点,即\{x_{top\_left}, y_{top\_left}, x_{bottom\_right},y_{bottom\_right}\}。对于基于anchor的方法,一般是估计偏移量,例如\{ x_{center\_offset}, y_{center\_offset}, w_{offset}, h_{offset} \}\{ x_{top\_left\_offset}, y_{top\_left\_offset}, x_{bottom\_right\_offset}, y_{bottom\_right\_offset} \}。然而,直接估计BBox中每个点的坐标值,是将这些点视为独立的变量,并没有考虑对目标身的完整性。 为了使效果更好,一些学者提出了IoU loss,将预测BBox和真值BBox的覆盖范围加以考虑。IoU loss计算过程通过BBox的四个坐标点计算和真值的IoU,将结果送入完整的代码。因为IoU是一种尺度不变的表示法,所以它能解决\{x, y, w, h\}的传统 l_{1}l_{2} loss,loss随尺度增加的问题。近年来,又有学者继续改进IoU loss。例如GIoU loss是在覆盖区域的基础上包括了目标的形状和方向,提出了同时覆盖预测BBox和真值BBox的最小面积BBox作为分母,替代原IoU loss中的分母。DIoU额外考虑了目标中心点之间距离CIoU同时考虑了重叠面积,中心点之间的距离和纵横比CIoU在BBox回归问题上能取得较好的收敛速度和精度。

2.3.Bag of specials特价礼包

将那些只增加少量推理成本但能够显著提升目标检测准确度插件模块和后处理方法,称为特价礼包。一般来说,这些插件模块能够提升模型的特定属性,比如扩大感受野、引入注意力机制或者增强特征融合能力等等。后处理就是一种筛选模型预测结果的方法

扩大感受野的通用模块有SPP、ASPP和RFB。SPP模块来源于Spatial Pyramid Matching (SPM),而SPM方法是将特征图分成若干个 d\times d的块,d 可以是\{1, 2, 3,...\},从而组成空间金字塔并生成bag-of-word特征。SPP模块将SPM和CNN结合,使用最大池化操作来替代 bag-of-word 操作。何恺明提出的SPP插件输出是一维特征向量,不能应用于全卷积网络Fully Convolutional Network (FCN)。

YOLOv3的设计中,Redmon和Farhadi通过concat  k\times k核的 max-pooling 输出(k=\{1, 5, 9,13\}, stride=1) 改进了SPP模块。通过这个设计,一个相对大的  k\times k maxpooling显著增加了backbone feature 的感受野。增加了改进SPP模块后,YOLOv3-608 增加了0.5%的计算成本,同时将MS COCO目标检测任务的AP_{50}提升了2.7%。改进SPP模块和ASPP模块在运算的差异主要 一个是k\times k核大小、步长stride=1的最大池化一个是3\times3核大小、膨胀系数为k、步长stride=1的膨胀卷积RFB模块也使用了若干个 k\times k 膨胀卷积核,膨胀系数为k,步长stride=1,获得比ASPP更全面的空间覆盖。RFB只增加了7%的推理时间,把 SSD 在MS COCO上的AP_{50} 提升了5.7%。

目标检测中常用的注意力模块主要分为通道注意和点注意,这两种注意模型的代表分别是挤压-激励(Squeeze-and-Excitation, SE) 和 空间注意模块(Spatial attention Module, SAM)。尽管SE模块增加2%的计算成本,将ResNet50在ImageNet图像分类任务上的top-1准确率提升1%,但是GPU的计算时间通常会增加10%,所以它更适合在移动设备上使用。而SAM只增加0.1%的额外计算,就能将ResNet50在ImageNet图像分类任务上的top-1准确率提升0.5%。最重要的是,它完全不影响GPU上的推理速度

特征融合方面,早期的实践有skip connection 或hyper-column将底层的物理特征和高层的语义特征融合。由于多尺度的预测方法FPN的流行,很多集成不同特征金字塔的轻量模块被提出。这类方法包括SFAM,ASFF和BiFPNSFAM的主要思想是使用SE模块对多尺度级联特征图进行通道级重加权ASFF使用softmax作为像素级重加权,然后添加不同尺度的特征图。BiFPN中,多输入加权残差连接被用于生成尺度级重加权,然后增加不同尺度的特征图。

还有一些人将深度学习的研究重点放在激活函数上。一个好的激活函数能够使梯度更有效地传播,同时不会增加太多额外的计算消耗。2010年,Nair和Hinton提出的ReLU,从根本上解决了使用传统tanh和sigmoid函数会导致梯度爆炸的问题。随后,LReLU、PReLU、ReLU6、SELU(Scaled Exponential Linear Unit)、Swish、hard-Swish和Mish等等被提出。LReLU和PReLU的主要目的是解决ReLU在输出小于0的时候梯度为0的问题ReLU6和hard-Swish则是专门为量子化网络设计的SELU是为了满足神经网络的自归一化而提出的。需要注意的是Swish和Mish都是连续可微的激活函数
基于深度学习的目标检测常用的后处理方法是NMS,可以滤除同一个目标预测结果中较差的BBox,保留一个较好的候选框。改进NMS与优化目标函数的方法是一致的。原始的NMS方法没有考虑上下文信息,所以Girshick等人在R-CNN中加入分类置信值作为参考,根据置信值的顺序,按照高到低的顺序进行greedy NMS。soft NMS考虑到目标遮挡可能会导致置信度下降的问题,从而影响greedy NMS的IoU评分DIoU NMS的思路是在soft NMS的基础上,在BBox筛选过程中加入中心点距离的信息。值得一提的是,由于上述后处理方法都没有直接指向图像特征,因此在后续的无锚方法开发中不再需要后处理。

3. Methodology方法论

基本的目标是提高在生产系统中神经网络的运行速度和优化并行计算,而不是低计算量理论指标(BFLOP)。我们提出了两种实时神经网络的选择:
针对GPU我们使用少量(1-8组)的卷积层:CSPResNeXt50 / CSPDarknet53
针对VPU我们使用成组的卷积,但是避免使用SE块。包括以下模型:EfficientNet-lite / MixNet / GhostNet / MobileNetV3

3.1. Selection of architecture网络结构的选择

首要目标是在输入分辨率卷积层数量参数量filter\_size^2*filters*channel/groups) 和层输出的数量(filters)之间寻找平衡。例如,我们的大量研究表明,在ILSVRC2012 (ImageNet)数据集上的目标分类任务上,CSPResNeXt50比CSPDarknet53要好得多。然而,相反地,CSPDarknet53在MS COCO数据集的目标检测任务上比CSPResNeXt50更好。

第二个目标是是选择额外的块来增加感受野,并为不同的检测器选择来自不同backbone levels的最佳参数聚合方法:如 FPN, PAN, ASFF, BiFPN。

一个在分类任务上最优的参考模型不一定是检测最优的。相比于分类器,检测器需要如下

  • 更高的网络输入尺寸(分辨率)——检测不同的小目标
  • 更多层——更大的感受野来覆盖增大的网络输入
  • 更多参数——更大的模型容量来检测单张图像中不同尺寸的多个目标。

我们可以假设一个模型被选为 backbone,该模型有更大的感受野尺寸(大量的 3x3 卷积层)和 大量的参数。表1 显示 CSPResNeXt50、CSPDarknet53和EfficientNet B3的信息。CSPResNeXt50仅包含16个3 x 3的卷积层,一个425 x 425的感受野和20.6M的参数。CSPDarknet53包含29个3x3的卷积层,一个725x725的感受野和27.6M的参数。这个理论论证,加上我们大量的实验,表明CSPDarknet53是作为目标检测的主干网络的最优模型

Table 1: Parameters of neural networks for image classification.

不同尺寸的感受野的影响总结如下:

  • 目标大小层面-可以看到整个目标
  • 网络大小层面-可以看到目标周围的上下文信息
  • 超过网络大小层面-增加图像点和最终激活之间的连接数量

我们在CSPDarknet53上增加了SPP块能够显著地扩大感受野,分出最显著的上下文特征并且几乎不降低网络运行速度。我们在不同的检测器levels 的不同backbone levels 中都使用了PANet作为参数融合手段,而不是YOLOv3中的FPN。
最终,我们选定了CSPDarknet53的backbone、SPP附加模块、PANet参数融合neck和YOLOv3(anchor based)head作为YOLO v4的结构
未来我们计划扩充目标检测器的BoF (Bag of Freebies)的内容,理论上来说可以解决一些问题并提高探测器的准确性,并以实验的方式依次检验每个特征的效果。
我们没有使用Cross-GPU Batch Normalization(CGBN或SyncBN)或者昂贵的专用设备。这使得每个人都可以使用一个常规的GPU(GTX1080Ti或者RTX2080Ti)来复现我们的结果。

3.2. Selection of BoF and BoS

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

  • 激活函数:ReLU、leaky-ReLU、parametric-ReLU、ReLU6、SELU、Swish或Mish
  • BBox回归损失:MSE、IoU、GIoU、CIoU、DIoU
  • 数据增广:CutOut、MixUp、CutMix
  • 正则方法:DropOut、DropPath、Spatial DropOut或DropBlock
  • 通过网络激活的平均值和方差进行归一化:Batch Normalization (BN) 、Cross-GPU Batch Normalization (CGBN or SyncBN)、Filter Response Normalization (FRN) 或Cross-Iteration Batch Normalization (CBN)
  • 跳跃连接:残差连接、加权残差连接、多输入加权残差连接或跨阶段部分连接

对于激活函数,由于PReLU和SELU更难训练,而ReLU6是为量化网络设计的,因此我们将这些从候选列表中删除。

而正则化方面,提出DropBlock的学者将他们的方法和其他方法进行了详细对比,DropBlock完胜。因此,我们直接选择DropBlock作为正则化手段。

在归一化方法上,我们只关注单GPU上的训练策略,因此不考虑syncBN

3.3. Additional improvements

为了设计更合适单GPU训练的检测器,我们做了额外的设计和改进

  • 全新的数据增广方法:Mosaic和SAT(Self-Adversarial Training自对抗训练)
  • 应用遗传算法选择优化的超参数
  • 修改了一些现有方法使之更适合训练和检测—改进的SAM、改进的PAN和Cross mini-Batch Normalization(CmBN)

Mosaic(马赛克)展示了一种全新的数据增广方法,将四张训练图像混合四张不同图像的上下文信息被混合,而CutMix只混合了两张图像。这允许目标的检测超出它们正常的上下文。另外,BN(batch normalization)会在每一层中从四张不同的图像中计算激活信息,这显著地减少了对大mini-batch尺寸的要求

【目标检测-YOLO】YOLOv4(第一篇)_第4张图片

图3:全新的数据增广方法Mosaic 

自对抗训练SAT(Self-Adversarial Training)也是一种全新的数据增广技术前向和反向传播两个阶段进行。在第一阶段,神经网络改变原始图像而不是网络权重。这样神经网络就对自身进行了一次对抗攻击,修改图像制造出图像上没有期望目标的假象在第二阶段,训练神经网络以正常的方式检测出修改过的图像上的目标。

CmBN是CBN的改进版本,如图4所示。这个方法仅仅统计单个batch里面的mini-batch间的信息。

【目标检测-YOLO】YOLOv4(第一篇)_第5张图片

 图4:跨mini-batch归一化(Cross mini-Batch Normalization.)

我们将SAM从空间注意力机制(spatial-wise attention)改成像素注意力机制(point-wise attention),并将PAN中的shortcut连接替换为concatenation,分别如图5、6所示。

【目标检测-YOLO】YOLOv4(第一篇)_第6张图片

 图5:改进的SAM

【目标检测-YOLO】YOLOv4(第一篇)_第7张图片

 图6:改进的PAN

3.4. YOLOv4

YOLOv4的组成:

  • Backbone: CSPDarknet53
  • Neck: SPP, PAN
  • Head检测头: YOLOv3

YOLOv4使用:

Bag of Freebies (BoF) for backbone: CutMix and Mosaic data augmentation, DropBlock regularization, Class label smoothing

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

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

  • Bag of Specials (BoS) for backbone: Mish激活函数、CSP、多输入加权残差连接(MiWRC)

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, Optimal hyper-parameters, Random training shapes

  • Bag of Freebies (BoF) for detector: CIoU-loss, CmBN, DropBlock正则化、Mosaic数据增广、SAT自对抗训练、grid敏感性消除、单GT多锚点、余弦退火 、最优超参数、随机训练尺寸

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

  • Bag of Specials (BoS) for detector: Mish激活函数、SPP块、SAM块、PAN路径聚合块, DIoU非极大抑制

4. Experiments

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

4.1. Experimental setup

ImageNet图像分类实验中,默认的超参数如下:训练步长为8000000批大小为128,最小批大小为32采用多项式衰减学习率调度策略(the polynomial decay learning rate
scheduling strategy),初始学习率为0.1
预热(warm-up)步长为1000动量和权重衰减(momentum and weight decay)分别设置为0.9和0.005。本文所有的BoS实验都使用与默认设置相同的超参数。BoF实验中,本文添加了50%的额外训练步骤。在BoF实验中,本文验证了MixUp、CutMix、Mosaic、模糊数据增强(Bluring data augmentation)和标签平滑正则化方法。在BoS实验中,本文比较了sofLReLU、Swish和Mish激活函数的效果。所有实验均采用一个 1080 Ti或2080ti GPU进行训练。

MS-COCO目标检测实验中,默认超参数为:训练步长为500500采用步长衰减学习速率调度策略(step decay learning rate scheduling strategy)初始学习速率为0.01在400000步和450000步分别乘以因子0.1动量衰减和权重衰减分别为0.9和0.0005。所有架构都使用单个GPU执行 batch size=64的多尺度(multi-scale)训练,而 mini-batch = 8或4 取决于架构和GPU内存限制除了使用遗传算法进行超参数搜索实验外,所有其他实验都使用默认设置。遗传算法利用YOLOv3-SPP 进行带GIoU损失的训练,搜索300个 epochs 的min-val 5k sets。采用搜索学习率=0.00261、动量=0.949、分配ground truth的IoU阈值=0.213、loss normalizer=0.07进行遗传算法实验。本文已经验证了大量的BoF,包括网格敏感度消除 grid sensitivity elimination,马赛克数据增强mosaic data augmentation,IoU阈值,遗传算法,类标签平滑class label smoothing,跨mini-batch规范化cross mini-batch normalization,自对抗训练,余弦退火调度cosine annealing scheduler,动态小批量大小dynamic mini-batch size,DropBlock,Optimized Anchors,不同种类的IOU osses。本文还对各种BoS进行了实验,包括Mish、SPP、SAM、RFB、BiFPN和Gaussian YOLO。对于所有的实验,本文只使用一个GPU进行训练,所以不使用syncBN等优化多个GPU的技术。

4.2. Influence of different features on Classifier training

首先,本文研究不同特征对分类训练的影响;具体来说,如图7所示,Class label smoothing的影响,不同数据增强技术的影响,双边模糊bilateral blurring、MixUp, CutMix 和 Mosaic,以及不同激活函数的影响,如 Leaky-ReLU(默认)、Swish和Mish。

【目标检测-YOLO】YOLOv4(第一篇)_第8张图片

 图7. 数据增强的多种方法

在本文的实验中,如表2所示,通过引入CutMix和Mosaic数据增强、类标签平滑Class label smoothing和Mish激活等功能,分类精度得到了提高。因此,本文用于分类训练的BoF backbone(Bag of Freebies)包括以下内容:CutMix和Mosaic数据增强和类标签平滑。此外,本文使用Mish激活作为补充选项,如表2和表3所示。

表2:BoF 和 Mish 对 CSPResNeXt-50 分类器精度的影响。

【目标检测-YOLO】YOLOv4(第一篇)_第9张图片

表3:BoF 和 Mish 对 CSPDarknet-53 分类器精度的影响。 

【目标检测-YOLO】YOLOv4(第一篇)_第10张图片

4.3. Influence of different features on Detector training

进一步的研究涉及 Bag-of-Freebies (BoF-detector) 对检测训练精度的影响,如表4所示。本文通过研究在不影响FPS的情况下提高检测精度的不同特性,显著地扩展了BoF列表:

表4:Bag-of-Freebies的消融研究。 (CSPResNeXt50-PANet-SPP, 512x512).

【目标检测-YOLO】YOLOv4(第一篇)_第11张图片

  •  S:消除网格敏感度方程为:

b_{x}=\sigma (t_{x}) + c_{x}b_{y}=\sigma (t_{y}) + c_{y}

其中,c_{x},c_{y}始终是整数。该方程在YOLOv3中用于评估目标坐标。因此,b_{x}值近似于 c_{x} 或 c_{x}+1

需要 t_{x}取极端值我们通过 将sigmoid乘以一个超过1.0的系数 解决这个问题。从而消除了网格影响,在网格上目标无法检测到。

  • M:Mosaic data augmentation-在训练中使用4图像mosaic代替单个图像。
  • IT:IoU threshold - 对于单个 ground truth 与多个 anchor 计算IOU,IoU (truth, anchor) > IoU threshold
  • GA:Genetic algorithms 遗传算法 - 在前10%的时间段内,使用遗传算法选择网络训练期间的最佳超参数
  • LS:Class label smoothing - 对sigmoid激活使用类标签平滑
  • CBN:CmBN - 使用跨小批量归一化(Cross mini-Batch Normalization)来收集整个batch中的统计信息,而不是在单个mini-batch中收集统计信息
  • CA:Cosine annealing scheduler(余弦退火调度程序)- 在正弦训练期间改变学习率
  • DM: Dynamic mini-batch size(动态小批量大小) - 利用随机训练shape在小分辨率训练中自动增加mini-batch size
  • OA:Optimized Anchors- 用优化的anchor进行512x512网络分辨率的训练
  • GIoU, CIoU, DIoU, MSE - 对边框回归用不同loss算法

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

 表5:Bag-of-Specials的消融研究. (Size 512x512).

【目标检测-YOLO】YOLOv4(第一篇)_第12张图片

4.4. Influence of different backbones and pretrained weightings on Detector training

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

首先,尽管与CSPDarknet53模型相比,CSPResNeXt50模型的分类精度更高,但CSPDarknet53模型在目标检测方面显示出更高的精确度

第二,使用BoF和Mish进行CSPResNeXt50分类器训练可提高其分类精度,但进一步将这些预先训练的权重用于检测器训练会降低检测器的精度。然而,使用BoF和Mish进行CSPDarknet53分类器训练同时提高分类器和检测器精度,检测器使用分类器的预训练权重。最终结果是CSPDarknet53比CSPResNeXt50 backbone更适合于检测器

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

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

【目标检测-YOLO】YOLOv4(第一篇)_第13张图片

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

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

表7:对于检测器训练使用不同的 mini-batch size

【目标检测-YOLO】YOLOv4(第一篇)_第14张图片

5. Results

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

【目标检测-YOLO】YOLOv4(第一篇)_第15张图片

 图 8:不同目标检测器的速度和精度比较。 (一些文章指出他们的检测器的 FPS 仅适用于其中一种 GPU:Maxwell/Pascal/Volta)

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

表8 Maxwell GPU :MS COCO 数据集(test-dev 2017)上不同目标检测器的速度和准确度比较。 (此处 FPS 30 或更高的实时检测器 突出显示。我们在不使用 tensorRT 的情况下 使用 batch=1 比较结果。)

【目标检测-YOLO】YOLOv4(第一篇)_第16张图片

 表 9 Pascal GPU:MS COCO 数据集上不同目标检测器的速度和准确度比较(test-dev 2017)。 (此处突出显示 FPS 30 或更高的实时检测器。我们在不使用 tensorRT 的情况下 使用 batch=1 比较结果。)

【目标检测-YOLO】YOLOv4(第一篇)_第17张图片

 6. Conclusions

我们提供一个 state-of-the-art 的检测器,它比所有可用的替代检测器更快 (FPS) 且更准确 (AP_{50...95} \ and\ AP 50)。 所描述的检测器可以在具有 8-16 GB-VRAM 的传统 GPU 上进行训练和使用,这使得其广泛使用成为可能。 one-stage anchor-based detectors 的原始概念已经证明了它的可行性。 我们已经验证了大量的特征,并选择使用这些特征来提高分类器和检测器的准确性。 这些功能可以用作未来研究和开发的最佳实践。

7. 致谢

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

参考

https://arxiv.org/pdf/2004.10934.pdf

你可能感兴趣的:(论文阅读,视觉,YOLO,深度学习,计算机视觉,pytorch)