[论文解读]YOLOv4论文翻译+解读+总结

YOLOv4: Optimal Speed and Accuracy of Object Detection
YOLOv4:物体检测的最佳速度和准确性

看过这篇论文之后,顺便做个翻译,解读和总结,方便需要时查看,文中有些地方直接引用原文,原因在于能够直接对其中的一些专有名词拥有直观的感受,相信做机器视觉的大家都能够看懂。如有问题和理解不到位的地方,欢迎大家指出,共同讨论。

摘要

一些技巧仅针在某些模型、某些问题、小规模数据集;

而一些技巧通用,包括:批处理归一化,残差连接

这些通用技巧包括:

  1. Weighted-Residual-Connections (WRC)
  2. Cross-Stage-Partial-connections (CSP),
  3. Cross mini-Batch Normalization (CmBN),
  4. Self-adversarial-training (SAT)
  5. Mish-activation.

本文使用新的技巧:

  1. WRC,加权残差连接
  2. CSP,跨阶段部分连接
  3. CmBN,跨小批量标准化
  4. SAT,自对抗训练
  5. Mish activation,Mish激活
  6. Mosaic data augmentation,马赛克数据增强
  7. CmBN
  8. DropBlock regularization,DropBlock正则化
  9. CIoU loss

一、介绍

1.1 效果

在这里插入图片描述

图 1:比较所提出的YOLOv4和其他最先进的物体探测器。 YOLOv4的运行速度比性能相当的高效DET快两倍。 将YOLOv3的AP和FPS分别提高10%和12%。
Figure 1: Comparison of the proposed YOLOv4 and other state-of-the-art object detectors. YOLOv4 runs twice faster than EffificientDet with comparable performance. Improves YOLOv3’s AP and FPS by 10% and 12%, respectively.

1.2 贡献

  1. 模型强大,使用1080 Ti和2080 Ti GPU就可以训练一个超快、准确的目标检测器。
  2. 验证了最先进的Bag-of Freebies and Bag-of-Specials methods
  3. 修改方法使其高效,适合单GPU训练,使用方法包括:CBN,PAN,SAM。

在这里插入图片描述

图 2:目标检测
Figure 2: Object detector

二、相关工作

2.1 目标检测模型

普通的物体检测器是由几个部分组成:

  • Input: Image, Patches, Image Pyramid

  • Backbones: VGG16, ResNet-50, SpineNet, EffificientNet-B0/B7, CSPResNeXt50,CSPDarknet53

  • Neck:

    1. Additional blocks: SPP, ASPP , RFB , SAM
    2. Path-aggregation blocks: FPN , PAN ,NAS-FPN , Fully-connected FPN, BiFPN , ASFF , SFAM
  • Heads:

    1. Dense Prediction (one-stage):

      RPN , SSD , YOLO , RetinaNet (anchor based)

      CornerNet , CenterNet , MatrixNet, FCOS (anchor free)

    2. Sparse Prediction (two-stage):

      Faster R-CNN , R-FCN , Mask R-CNN (anchor based)

      RepPoints [87] (anchor free)

作者把所有的调优手段分为了两大类“Bag of freebies(免费礼包) ”和“Bag of specials(特价礼包)

2.2 Bag of freebies(免费礼包)

传统的目标检测器的训练都是在离线进行的,因此,研究者们总是喜欢研究更好的训练方法,使之目标检测器在不增加推理损耗的情况下达到更好的精度。我们将这些方法称为只需转变训练策略或只增加训练量成本为 " bag of freebies "。

数据增强photometric distortionsgeometric distortions

光度畸变:调整亮度、对比度,加入了色相、饱和度和噪声

几何畸变:随机缩放、裁剪、翻转和旋转

  • 一些人重点放在了模拟object occlusion,他们在图像分类和目标检测中取得了好的结果

例如:random erase和CutOut,可以随机选取图像中的矩形区域

​ hide-and-seek和grid mask,随机或均匀地选择多个图像中的矩形区域,并将其替换为全0,若将类似概念运用到特征图中,就是DropOut,DropConnect和DropBlock方法。

  • 一些人提出多张图像一起使用数据的方法扩增

例如:MixUp,使用两个图像乘以不同系数的乘法叠加,并调节标签

​ CutMix,为了覆盖裁剪后的图像到其他图像的矩形区域,并根据混合区的大小调整标签

​ style transfer GAN,

问题

不同于上面的方法,其他方法专门解决数据集中的语义分布偏差。在处理语义困扰的问题上,有一个很重要的问题是不同类别之间的数据不平衡。

解决

two-stage检测器处理这个问题,通过hard negative example mining或online hard example mining。

但是example mining method不适用于一级目标检测器,因为这种检测器属于密集预测架构,Linet al 提出focal loss解决了数据不平衡问题。

问题

one-hot编码很难表达出类与类之间关联程度问题

解决

label smoothing方案是将硬标签转化为软标签进行训练,为了获得更好的软标签,lslam将知识蒸馏的概念引入标签席话网络设计中。

问题

最后一个bag of freebies是objective function of Bounding Box (BBox)回归。

检测器通常使用MSE对BBOX的中心点和宽高进行回归,至于anchor-based方法,它是为了估算出对应的偏移量。但是,要直接估计BBOX的点坐标值,是要将这些点作为独立变量,但实际上未考虑对象本身的完整性。

解决

IoU损失[90],同时考虑预测的Bbox面积和ground truth Bbox面积覆盖。IoU损失会计算到BBox的四个坐标点,然后连接到生成一个完整的代码。因为IOU是一个尺度不变表示,它可以解决当传统方法计算 { x c e n t e r , y c e n t e r , w , h } \{ x_{center},y_{center},w,h \} {xcenter,ycenter,w,h} l 1 l_1 l1 l 2 l_2 l2损失导致尺度增加。

改进建议找到能同时覆盖预测Bbox和ground truth Bbox的最小面积Bbox,并使用这个Bbox作为分母,以取代IoU损失的分母。至于 DIoU 损失[99],它另外还包括考虑物体中心的距离,CIoU损失[99],另一方面,同时考虑到重叠区域,中心点之间的距离,以及长宽比。CIoU可以在BBox回归问题上实现更好的收敛速度和精度。

2.3 Bag of specials(特价礼包)

对于那些插入模块和后期处理方法只会增加少量的推理成本,但可显著提高目标检测的准确性,我们称其为 “Bag of specials”。

插入模块

一般来说,这些插入模块是用来增强某些属性,例如: enlarging receptive field, introducing attention mechanism, or strengthening feature integration capability, etc。而后处理是一种筛选模型预测结果方法。可用于扩大感受野:SPPASPPRFB

注意力模块

在目标检测中经常使用的注意力模块,通常分为channel-wise注意力和point-wise注意力。代表模型是Squeeze-and-Excitation (SE) and Spatial Attention Module (SAM) 。

特征融合

在特征融合方面,早期的做法是用skip connection或hyper-column来融合低级和高级特征。由于FPN等多尺度预测方法已成为流行,许多轻量级模块集成了不同的特征金字塔。包括SFAM、ASFF和BiFPN。SFAM的主要思想是利用SE模块在多尺度叠加特征图上来执行channel-wise级别re-weighting。至于ASFF,它用softmax惊醒点对点re-weighting,然后添加不同尺度的特征图。在BiFPN中,提出multi-input weighted residual connections执行scale-wise level re-weighting然后再添加不同尺度的特征图。

激活函数

2010年,Nair and Hinton提出了ReLU,随后LReLU,PReLU,ReLU6,Scaled Exponential Linear Unit (SELU)、Swish、hard-Swish、和Mish等

LReLU和PReLU其主要目的是:是为了解决梯当输出小于零时,ReLU的梯度为零。至于ReLU6和Hard-Swish,它们是专为量化网络设计。对于自归一化的神经网络,提出了SELU的激活函数满足子归一化目的。有一点需要注意的是,Swish和Mish都是连续可微激活函数。

后处理方法

常用NMS,它可以用于过滤那些预测错误的BBoxes,并只保留较高的候选BBoxes。NMS努力改进的方式与以下目标函数的优化方法一致。

三、方法论

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

  • 对于GPU,我们在卷积层使用少量组(1-8)。CSPResNeXt50 / CSPDarknet53
  • 对于VPU----我们使用分组卷积,但不使用Squeeze-and-excitement (SE) blocks
  • 具体来说,这包括以下模型:EfficientNet-lite / MixNet [76] / GhostNet[21] / MobileNetV3

3.1 架构选择

我们的目的是寻求最佳平衡,在网络输入分辨率、卷积层数、卷积层数、参数(滤波器大小^2滤波器通道/组)和层输出(过滤器)的数量之中。

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

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

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

  • 最大对象尺寸-允许查看整个对象
  • 取决于网络大小-允许查看周围的环境物体
  • 超出网络规模-图片输入和最终激活值的连接数

我们将SPP模块添加到CSPDarknet53上,因为它大大增加了感受野,分离出最重要的context特征,几乎不会导致降低网络运行速度。我们使用PANet作为来自不同backbone的参数聚合方法而不是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 BoF和BoS的选择

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

  1. 激活函数(Activation): ReLU, leaky-ReLU, parametric-ReLU, ReLU6, SELU, Swish, or Mish
  2. 边界框回归损失(Bounding box regression loss):MSE, IoU, GIoU, CIoU, DIoU
  3. 数据扩充(Data augmentation):CutOut, MixUp, CutMix
  4. 正则化方法(Regularization method):DropOut, DropPath, Spatial DropOut, or DropBlock
  5. 网络激活的均值和方差归一化(Normalization of the network activations by their mean and variance):Batch Normalization (BN), Cross-GPU Batch Normalization (CGBN or SyncBN), Filter Response Normalization (FRN), or Cross-Iteration Batch Normalization (CBN)
  6. 残差连接(Skip-connections):Residual connections, Weighted residual connections, Multi-input weighted residual connections, or Cross stage partial connections (CSP)

Training activation function: PReLU and SELU较难训练,ReLU6特别适合为量化网络而设计。

Reqularization:DropBlock

3.3 其他改进

为了适合单GPU训练,做了额外的设计和仿真设计

  1. 新的数据增强方法:Mosaic和Self-Adversarial Training(SAT)
  2. 应用遗传算法选择最优的超参数
  3. 修改现有方法,更利于训练和检测: modifified SAM, modifified PAN, and Cross mini-Batch Normalization (CmBN)

Mosaic:混合了四个训练图像,代表了一种新的数据增强方法,而CutMix只混合了两个输入图像,这允许他探测到正常内容之外的物体。此外,batch normalization从每层上的4个不同的图像计算激活数据,显著减少了对大batch size的需要。

Self-Adversarial Training(SAT):以2个前向操作阶段的方式进行操作。

第一阶段:神经网络改变的是原始图像而不是网络权重,这样神经网络对其自身进行对抗性攻击,改变原有的形象,创造出图像上没有物体的欺骗假象。

第二阶段:神经网络以通常方式训练物体

在这里插入图片描述

图3:Mosaic代表了一种新的数据增强方法
Fig 3: Mosaic represents a new method of data augmentation.

Cross mini-Batch Normalization (CmBN)

mBN是CBN的修改版,在图4中,定义为Cross mini-Batch Normalization(CmBN),这只收集一个批次内mini-batches之间的数据。

在这里插入图片描述

图4:交叉迷你批处理规范化
Figure 4: Cross mini-Batch Normalization.
我们修改SAM,从spatial-wise attention修改为point-wise attention,并将PAN的shortcut connection改为connection。如图5和图6所示。

在这里插入图片描述

图6:改进PAN
Figure 6: Modifified PAN

3.4 YOLOv4细节

组成部分

  1. Backbone: CSPDarknet53
  2. Neck: SPP, PAN
  3. Head: YOLOv3

YOLOv4使用

  1. Bag of Freebies (BoF) for backbone: CutMix and Mosaic data augmentation, DropBlock regularization, Class label smoothing
  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

四、实验

测试了不同的训练改进的影响。包括(ILSVRC 2012年val)ImageNet数据集分类准确性,然后是MS COCO(test-dev 2017)数据集的检测准确性。

4.1 实验设置

ImageNet默认超参数如下:

超参数细节
训练步数8,000,000
batch size128
mini-batch size32
the polynomial decay learning rate scheduling strategyinitial learning rate 0.1
warm-up steps1000
momentum0.9
weight decay0.005
BoS experimentsdefault
比较了LReLU、Swish和Mish的效果
BoF experimentsadd an additional 50% training steps
验证MixUp, CutMix, Mosaic, Bluring数据增强、和label smoothing regularization方法

MS COCO默认超参数:

超参数搜索使用遗传算法,所有其他实验使用默认设置。遗传算法实验使用YOLOv3-SPP以GIoU损失进行训练,对min-val 5k数据搜索 300轮。对于所有的实验,我们只使用一个GPU训练,因此,诸如syncBN这样的技术可以优化多GPU训练并未使用。

超参数细节
训练步数500500500
step decay learning rate scheduling strategyinitial learning rate 0.01,并分别在40万步和45万步时乘以系数0.1
momentum0.9
weight decay0.0005
mini-batch size8或4
searched learning rate0.00261
momentum0.949
IoU threshold for assigning ground truth0.213
loss normalizer0.07

We have verifified a large number of BoF, including grid sensitivity elimination, mosaic data augmentation, IoU threshold, genetic algorithm, class label smoothing, cross mini-batch normalization, self-adversarial training, cosine annealing scheduler, dynamic mini-batch size, DropBlock, Optimized Anchors, different kind of IoU losses. We also conduct experiments on various BoS, including Mish, SPP, SAM, RFB, BiFPN, and Gaus-sian YOLO [8]. For all experiments, we only use one GPU for training, so techniques such as syncBN that optimizes multiple GPUs are not used.

4.2 不同技巧对分类器训练的影响

首先,我们研究了不同技巧对分类训练的影响

Class label smoothing

data augmentation techniques, bilateral blurring, MixUp, CutMix and Mosaic,详见图7

different activations, such as Leaky-ReLU (by default), Swish, and Mish.

在这里插入图片描述

图 7:数据增强的各种方法
Figure 7: Various method of data augmentation.
如图2所示,在我们的实验中,分类准确度的提高是通过引入以下特征:

CutMix and Mosaic data augmentation, Class label smoothing, and Mish activation.

所以,our BoF-backbone (Bag of Freebies) for classififier training include:

CutMix and Mosaic data augmentation and Class label smoothing

此外,使用Mish activation作为补充选择,如表2,3所示

表2:BoF和Mish对CSPResNeXt-50分类器精度的影响
Table 2: Inflfluence of BoF and Mish on the CSPResNeXt-50 classififier accuracy

在这里插入图片描述

表3:BoF和Mish对CSPDarknet-53分类精度的影响
Table 3: Inflfluence of BoF and Mish on the CSPDarknet-53 classififier accuracy

在这里插入图片描述

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

表4中,进一步研究了不同的Bag-of-Freebies (BoF-detector)对检测器训练精度的影响

通过研究提高检测器精度而不影响FPS的不同特性,显著地扩展了BoF列表。

S: Eliminate grid sensitivity the equation b x = σ ( t x ) + c x , b y = σ ( t y ) + c y b_x = \sigma (t_x) + c_x,b_y = \sigma (t_y)+c_y bx=σ(tx)+cx,by=σ(ty)+cy, where c x c_x cxand c y c_y cyare always whole numbers, is used in YOLOv3 for evaluating the object coordinates, therefore, extremely high t x t_x tx absolute values are required for the b x b_x bx value approaching the c x c_x cxor c x + 1 c_x +1 cx+1 values. We solve this problem through multiplying the sigmoid by a factor exceeding 1.0, so eliminating the effect of grid on which the object is undetectable.

M: Mosaic data augmentation - using the 4-image mosaic during training instead of single image

IT: IoU threshold - using multiple anchors for a single ground truth IoU (truth, anchor) > IoU threshold

GA: Genetic algorithms - using genetic algorithms for selecting the optimal hyperparameters during network training on the fifirst 10% of time periods

LS: Class label smoothing - using class label smoothing for sigmoid activation

CBN: CmBN - using Cross mini-Batch Normalization for collecting statistics inside the entire batch, instead of collecting statistics inside a single mini-batch

CA: Cosine annealing scheduler - altering the learning rate during sinusoid training

DM: Dynamic mini-batch size - automatic increase of mini-batch size during small resolution training by using Random training shapes

OA: Optimized Anchors - using the optimized anchors for training with the 512x512 network resolution

GIoU, CIoU, DIoU, MSE - using different loss algorithms for bounded box regression

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

Table 4: Ablation Studies of Bag-of-Freebies. (CSPResNeXt50-PANet-SPP, 512x512)

在这里插入图片描述

Table 5: Ablation Studies of Bag-of-Specials. (Size 512x512)

在这里插入图片描述

4.4 不同backbones和预训重量对探测器训练的影响

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

Table 6: Using different classififier pre-trained weightings for detector training (all other training parameters are similar in all models)

在这里插入图片描述

首先,虽然CSPResNeXt50的分类准确率高于 CSPDarknet53,CSPDarknet53模型在目标检测方面有更高的精度。

第二,使用BoF和Mish对CSPResNeXt50训练,提高了其分类精度,但进一步应用这些预先训练过的权重降低了检测器的精度。然而,使用BoF和Mish用于CSPDarknet53分类器的训练均提高了分类器和检测器的精度。结果是,backbone CSPDarknet53比CSPResNeXt50更适合用于检测器。

我们观察到,CSPDarknet53模型显示了更大的能力来提高检测器的精度,这是因为各种改进。

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

用模型来分析用不同的mini-batch进行训练,结果发现,在加入BoF和BoS训练策略后,mini-batch size几乎对检测器的每一个batch的检测结果没有任何影响,只是用一个传统GPU即可训练。

表 7 使用不同的小批量大小进行探测器训练
Table 7: Using different mini-batch size for detector training

在这里插入图片描述
在这里插入图片描述

图8:不同对象检测器的速度和精度比较。 (有些文章指出,它们的探测器的FPS只适用于一个GPU:Maxwell/Pascal/Volta)
Figure 8: Comparison of the speed and accuracy of different object detectors. (Some articles stated the FPS of their detectors for only one of the GPUs: Maxwell/Pascal/Volta)

五、结论

与其他SOTA检测器结果比较,YOLOv4位于Pareto optimality curve曲线,并且是最快和最准确的检测器。由于不同方法使用不同架构GPU,为了进行推理实践验证,我们让YOLOv4运行在Maxwell,Pascal和Volta等常用GPU,并与其他最新技术进行比较。

表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:MSCOCO数据集上不同对象检测器的速度和精度的比较(testdev2017)。 (此处突出显示FPS30或更高的实时检测器。我们比较一下结果 批处理=1的LTS不使用张量RT)
Table 8: Comparison of the speed and accuracy of different object detectors on the MS COCO dataset (test-dev 2017). (Real-time detectors with FPS 30 or higher are highlighted here. We compare the results with batch=1 without using tensorRT.)

在这里插入图片描述

表9:MS COCO数据集上不同物体检测器的速度和准确性的比较(test-dev 2017)。 (FPS 30或更高的实时检测器在此处突出显示。我们将结果与batch = 1进行比较,而无需使用 tensorRT。)
Table 9: Comparison of the speed and accuracy of different object detectors on the MS COCO dataset (test-dev 2017).(Real-time detectors with FPS 30 or higher are highlighted here. We compare the results with batch=1 without usingtensorRT.)

在这里插入图片描述

表10:MS COCO数据集上不同物体检测器的速度和准确性的比较(test-dev 2017)。 (FPS 30或更高的实时检测器在此处突出显示。我们将结果与batch = 1进行比较,而无需使用 tensorRT。)

Table 10: Comparison of the speed and accuracy of different object detectors on the MS COCO dataset (test-dev 2017).
(Real-time detectors with FPS 30 or higher are highlighted here. We compare the results with batch=1 without using tensorRT.)

在这里插入图片描述

表10:MS COCO数据集上不同物体检测器的速度和准确性的比较(test-dev 2017)。 (FPS 30或更高的实时检测器在此处突出显示。我们将结果与batch = 1进行比较,而无需使用 tensorRT。)

Table 10: Comparison of the speed and accuracy of different object detectors on the MS COCO dataset (test-dev 2017).

(Real-time detectors with FPS 30 or higher are highlighted here. We compare the results with batch=1 without using tensorRT.)

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值