论文【YOLOv4: Optimal Speed and Accuracy of Object Detection】
YOLOv4目标检测模型虽然没有特别的理论创新,但实验并应用了很多最新的CNN方面的方法和技巧,在公开数据集上的检测性能与速度都达到非常高的水平。
使用了一些通用方法Weighted-Residual-Connections (WRC), Cross-Stage-Partial-connections (CSP), Cross mini-Batch Normalization (CmBN), Self-adversarial-training (SAT) and Mish-activation.在MS COCO数据集达到当前最好的水平(AP 43.5%,AP50 65.7%),并且Tesla V100上达到实时~65 FPS的速度。
现代的目标检测器通常由两部分组成:由ImageNet预训练的backbone、用来预测类别和包围盒位置的head。 前者可以是VGG、ResNet、ResNeXt或者DenseNet等。后者通常分两种,一种是单阶段目标检测如R-CNN系列,一种是双阶段目标检测如YOLO系列、SSD、RetinaNet等。
目标检测这些年的发展经常是在backbone和head的中间插入各种层来收集feature maps,这里将这部分称为neck。具有这种机制的网络包括:FPN、PAN、BiFPN和NAS-FPN。
下面介绍一些网络训练的方法技巧:
**Bag of Freebies (BoF)**仅增加模型预测能力而不增加预测时间的方法,作者将其称之为bag of freebies。包括如下:
1、data augmentation。
像素级:对图像进行光度失真(亮度、对比度、色调、饱和度、噪声等),几何失真(随机裁剪、缩放、翻转、旋转等)。遮挡:随机或均匀的擦除一部分图像(类似于Dropout的思想)。融合:将两张及以上的图像融合(裁剪一部分图像覆盖到其他图像上、不同系数比率相乘叠加等方式)并调整标签而进行数据增强。风格迁移:GAN,有效降低CNN网络学到的纹理偏向。
2、解决语义分布偏差问题。如类别不平衡问题,通常用样本挖掘(example mining)的方式解决。
3、标签。硬标签不能很好的表现不同类别间的关系,通过标签平滑的方式获得软标签进行训练。
4、objective function。目标检测传统的objective function是直接用MSE loss对包围盒中心点、高、宽进行回归或对包围盒左上右下坐标点回归,这种对包围盒各变量独立回归的方式没有考虑物体的整体性。因此,一些学者提出了IoU loss、GIoU loss、DIoU loss、CIoU loss等方式更好的处理这个问题。
Bag of Specials(BoS)
对于少量提高预测时间却能显著提高准确度的方法,作者称之为bag of specials。一般包括插入模块和增加处理方法两种。前者往往为了增强模型某方面属性,如增大感受野、引入注意力机制、增强特征集成能力等。后者则是为了筛选模型预测结果。
后处理中常用的基于深度学习的目标检测算法是NMS,可以过滤掉不好的候选框。
目标检测中通常用到的方法:
Activations: ReLU, leaky-ReLU, parametric-ReLU, ReLU6, SELU, Swish, or Mish
Bounding box regression loss: MSE, IoU, GIoU, CIoU, DIoU
Data augmentation: CutOut, MixUp, CutMix
Regularization method: DropOut, DropPath, Spatial DropOut, or DropBlock
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)
Skip-connections: Residual connections, Weighted residual connections, Multi-input weighted residual connections, or Cross stage partial connections (CSP)
YOLOv4 模型组成:
Backbone: CSPDarknet53
Neck: SPP,PAN
Head:YOLOv3
BoF(backbone):CutMix、Mosaic、DropBlock、Label Smoothing
BoS(backbone): Mish、CSP、MiWRC
BoF(detector):CIoU、CMBN、DropBlock、Mosaic、SAT、Eliminate grid sensitivity、Multiple Anchor、Cosine Annealing scheduler、Random training shape
BoS(tector):Mish、SPP、SAM、PAN、DIoU-NMS