论文题目 :《YOLOv4: Optimal Speed and Accuracy of Object Detection》
论文地址:https://arxiv.org/pdf/2004.10934.pdf
一文读懂YOLOv1:YOLOv1
一文读懂YOLOv2:YOLOv2
一文读懂YOLOv3:YOLOv3
在YOLO之父Joseph Redmon宣布退出计算机视觉研究的时候,很多人都以为目标检测“神器”YOLO系列就此终结。然而就在2020年4月23日,继任者YOLOv4却悄无声息的来了。Alexey Bochkovskiy发表了一篇名为《YOLOV4: Optimal Speed and Accuracy of Object Detection》的文章。并得到了Joseph Redmon的官方认可,被认为是当前最强的实施目标检测模型之一。
YOLOv4主要针对各种可以提升精度的trick进行了整合,加入到YOLOv3中,得到了最终的YOLOv4.最终在coco数据集上达到了43.5%AP,在Tesla V100上达到65FPS,实现了速度和精度的完美结合。一句话概括就是:“速度差不多的,精度碾压;精度差不多的,速度碾压”。
上图为YOLOv4与其他优秀检测框架的对比,相比YOLOv3,其在COCO数据集上的平均精度(AP)和帧率精度(FPS)分别提高了10%和12%。
YOLOv4 使用了以下特征组合,实现了新的 SOTA 结果:
● 加权残差连接(WRC)
● 跨阶段部分连接(Cross-Stage-Partial-connection,CSP)
● 跨小批量标准化(Cross mini-Batch Normalization,CmBN)
● 自对抗训练(Self-adversarial-training,SAT)
● Mish激活(Mish-activation)
● Mosaic 数据增强
● DropBlock 正则化
● CIoU Loss
YOLOv4的主要贡献如下:
● 开发了一个高效、强大的目标检测模型。它使每个人都可以使用1080 Ti或2080 TiGPU来训练一个超级快速和准确的目标探测器。
● 验证了在检测器训练过程中,最先进的Bag-of-Freebies和Bag-of-Specials 的目标检测方法的影响。
● 修改了最先进的方法,使其更有效,更适合于单GPU训练,包括CBN、PAN、SAM等。
目前检测器通常可以分为以下几个部分,不管是two-stage还是one-stage都可以划分为如下图的结构,只不过各类目标检测算法设计改进侧重在不同位置。
● Input:模型的输入。包括整个图像、一个patch、或者是image pyramid(图像金字塔)。
● Backbone:在不同图像细粒度上聚合并形成图像特征的卷积神经网络, 可以理解为是提取图像特征的部分。可以是VGG16,ResNet-50,ResNeXt-101,DarkNet53等;同时还有一些轻量级的backbone,例如MobileNetv1、v2、v3和ShuffleNetv1、v2等。
● Neck:一系列混合和组合图像特征的网络层,并将图像特征传递到预测层。典型的有( Additional blocks:SPP、ASPP、RFB、SAM),还有一些(Path-aggregation blocks:FPN、PAN、NAS-FPN、BiFPN、ASFF、SFAM)。
● Head:对图像特征进行预测,生成边界框和并预测类别。包括:Dense Prediction (one-stage):RPN , SSD , YOLO , RetinaNet (anchor based), CornerNet, CenterNet , MatrixNet, FCOS (anchor free); Sparse Prediction (two-stage):Faster R-CNN , R-FCN , Mask RCNN (anchor based)RepPoints (anchor free)。
因此,对于一个目标检测模型,可以理解为:
Object detection models = Backbone + Neck + Head
仅仅改变训练策略,并且只增加训练的开销,不增加推理测试的开销的改进,称为Bag of freebies。包括:
(1)数据增强(Data Augmentation):brightness ,contrast ,hue ,saturation,noise ,random scaling,cropping,flipping ,rotating ,CutOut, MixUp, CutMix
(2)正则化方法:DropOut, DropPath ,Spatial DropOut , or DropBlock
(3)难例挖掘:hard negative example mining ,online hard example mining,focal loss ,label smoothing
(4)损失函数:MSE, IoU, GIoU, CIoU, DIoU
只通过增加很小的计算量就可以极大的提高模型精度的方法,称为Bag of specials。包括:
(1)增大感受野:SPP、ASPP、RFB 、Spatial Pyramid Matching (SPM)
(2)引入注意力机制:Squeeze-and-Excitation (SE)、Spatial Attention Module (SAM)
(3)特征融合or特征集成:Residual connections、Weighted residual connections、Multi-input weighted residual connections、Cross stage partial connections (CSP) 、FPN、SFAM、ASFF、BiFPN
(4)激活函数:ReLU、leaky-ReLU、parametric-ReLU、ReLU6、 SELU、Swish、hard-Swish、Mish
(5)后处理(NMS):NMS, soft NMS,DIoU NMS
(6)归一化方法:Batch Normalization (BN) 、Cross-GPU Batch Normalization (CGBN or SyncBN)、Filter Response Normalization (FRN) 、Cross-Iteration Batch Normalization (CBN)
一个模型分类效果好不一定检测效果就好,想要检测效果好需要满足一下几点:
(1)更高的输入图像分辨率:有助于检测小物体。
(2)更深的网络层:能够覆盖更大面积的感受野
(3)更多的参数:更好的检测不同的物体
假设符合上面几点要求的backboone就是预期的backbone,作者对CSPResNext50和CSPDarknet53进行了比较,如下表所示,表明CSPDarknet53神经网络是作为目标检测backbone的最优选择。
为了改善目标检测训练,CNN通常使用以下方法:
● 对于训练激活函数,由于PReLU和SELU更难训练,而ReLU6是专门为量化网络设计的,因此将上述其余激活函数从候选列表中删除。
● 在正则化(reqularization)方法上,发表Drop-Block的人将其方法与其他方法进行了详细的比较,其regularization方法取得了很大的成果。因此,作者毫不犹豫地选择DropBlock作为regularization方法。
● 在归一化方法的选择上,由于关注的是只使用一个GPU的训练策略,所以没有考虑syncBN。
为了使设计的检测器更适合于单GPU上的训练,作者做了如下的附加设计和改进:
● 新的数据增强方法:Mosaic和Self-Adversarial Training(SAT)。
● 应用遗传算法选择最优参数。
● 改进SAM,改进PAN和交叉小批量标准化(CmBN),使我们的设计适合于有效的训练和检测。
1. Mosaic
如下图所示,Mosaic方法是将4张训练图像混合成一张新图像,这样可以丰富图像的上下文信息。这种做法的好处是允许检测上下文之外的目标,增强模型的鲁棒性。此外,在每一层从4个不同的图像批处理标准化计算激活统计,这大大减少了对大mini-batch处理size的需求。
2. Self-Adversarial Training(SAT)
这是一种新的数据扩充技术,该技术分前后两个阶段进行。在第一阶段,神经网络改变原始图像而不是网络权值。通过这种方式,神经网络对自身执行一种对抗性攻击,改变原始图像,从而造成图像上没有目标的假象。在第二阶段,训练神经网络对修改后的图像进行正常的目标检测。
3. CmBN
表示CBN的修改版本,如下图所示,定义为跨微批量标准化(CmBN)。这仅收集单个批中的小批之间的统计信息。
4. SAM的改进
将SAM从空间上的attention修改为点上的attention,并将PAN的short-cut连接改为拼接,分别如图5和图6所示:
1. YOLOv4结构:
● Backbone:CSPDDarkNet53
● Neck:SPP、PAN
● Head:YOLOv3
2. 调优技巧
BOF:
● backbone:CutMix和mosaic数据增强、DropBlock正则化、类标签平滑(label smoothing)。
● detector:CIoU-loss、CmBN、DropBlock正则化、Mosaic数据增强、自对抗训练(Self-Adversarial Training)、消除网格敏感性(Eliminate grid sensitivity)、为单个ground truth使用多个anchors、余弦退火调度器(Cosine annealing scheduler)、最优超参数(Optimal
hyperparameter)、随机训练形状(Random training shapes)。
BOS:
● backbone:Mish激活函数、跨级部分连接(Cross-stage partial connection,CSP)、多输入加权剩余连接(Multi-input weighted residual connection,MiWRC)。
● detector:Mish激活函数、SPP-block、SAM-block、PAN path-aggregation block、DIoU-NMS。