论文:YOLOv4: Optimal speed and accuracy of object detection
代码:https://github.com/AlexeyAB/darknet
作者:AlexeyAB
时间:2020.08
一、背景
由于实际应用中有很多需要达到实时检测的效果,如高速自动驾驶,所以本文作者致力于设计一个快速的检测器,称为 YOLOv4,其结果如图 1 所示,贡献点如下:
- 设计了一个又快又好的检测器
- 验证了很多 Bag of Freebies 和 Bag of Specials 方法的效果
- 证明了现有的 SOTA 的方法可以更有效并且在单个 GPU 上训练
YOLOv4 将目标检测器分为了 4 个部分:
- Input:Image、Patches、Image Pyramid
- Backbone:VGG-16、ResNet、EfficientNet 等
- Neck:
- Additional blocks:SPP、ASPP、RFB、SAM 等
- Path-aggregation blocks:FPN、PAN、NAS-FPN、ASFF 等
- Heads:
- Dense Prediction(one-stage):
- RPN、SSD、YOLO、RetinaNet(anchor based)
- CornerNet、CenterNet、FCOS(anchor free)
- Sparse Prediction(two-stage):
- Faster RCNN、R-FCN、Mask RCNN(anchor based)
- RepPoints(anchor free)
- Dense Prediction(one-stage):
二、方法
2.1 BoS 和 BoF
Bag of Freebies:指的是那些不增加模型复杂度,也不增加推理的计算量的训练方法技巧,来提高模型的准确度
Bag-of-Specials:指的是那些增加少许模型复杂度或计算量的训练技巧,但可以显著提高模型的准确度
BoF指的是:
- 数据增强:图像几何变换(随机缩放,裁剪,旋转),Cutmix,Mosaic等
- 网络正则化:Dropout、Dropblock等
- 损失函数的设计:边界框回归的损失函数的改进 CIOU
BoS指的是:
- 增大模型感受野:SPP、ASPP等
- 引入注意力机制:SE、SAM
- 特征集成:PAN,BiFPN
- 激活函数改进:Swish、Mish
- 后处理方法改进:soft NMS、DIoU NMS
2.2 YOLOv4 的结构
YOLOv4 由以下三个部分组成,使用了很多 BoF 和 BoS:
- Backbone:CSPDarknet53
- Neck:SPP, PAN
- Head:YOLOv3
使用的策略:
-
Backbone:
- BoF: CutMix and Mosaic data augmentation, DropBlock regularization, Class label smoothing
- BoS: Mish activation, Cross-stage partial connections (CSP), Multiinput weighted residual connections (MiWRC)
-
detector:
- BoF: 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
- BoS: Mish activation, SPP-block, SAM-block, PAN path-aggregation block, DIoU-NMS