前言
《YOLOv4: Optimal Speed and Accuracy of Object Detection》发表与2020CVPR,以下是YOLOV4在当时MSCOCO数据集上和其他目标检测模型的表现。
trick
- Weighted-Residual-Connections (WRC)
- Cross-Stage-Partial-connections (CSP)
- Cross mini-Batch Normalization (CmBN)
- Self-adversarial-training (SAT)
- Mish-activation
- Mosaic data augmentation
- DropBlock regularization
- CIoU loss
YOLOV4结合了以上trick,MS COCO数据集的43.5%AP(65.7%AP50),实时速度为~特斯拉V100上的每秒65帧。
Contribution
- 我们开发了一个高效且功能强大的目标检测模型。它使每个人都可以使用1080 Ti或2080 Ti GPU来训练一个超快速和精确的目标探测器。
- 在探测器培训期间,我们验证了最先进的“Bag-of-Freebies”和“Bag-of-Specials”目标检测方法的影响。
- 我们修改了最先进的方法,使其更加有效,并适用于单个GPU培训,包括CBN[89]、PAN[49]、SAM[85]等。
- CBN[89]Zhuliang Yao, Y ue Cao, Shuxin Zheng, Gao Huang, and Stephen
Lin. Cross-iteration batch normalization.arXiv preprint arXiv:2002.05712, 2020.1,6 - PAN[49]Shu Liu, Lu Qi, Haifang Qin, Jianping Shi, and Jiaya Jia.Path aggregation network for instance segmentation. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pages 8759–8768, 2018.1,2,7
- SAM[85]Sanghyun Woo, Jongchan Park, Joon-Y oung Lee, and In
So Kweon. CBAM: Convolutional block attention module.In Proceedings of the European Conference on Computer Vision (ECCV), pages 3–19, 2018.1,2,4
CBN是估计时序上的均值和方差来实现的Batch Normlization PAN是对于FPN空间金字塔网络结构的进一步提炼了网络结构,从FPN的自顶向下聚合不同尺度结构,再加多了一个自底向上聚合的更细节的尺度结构
BOS
BOF:bag of freebies,使目标检测器在不增加推理成本的情况下获得更好的精度。我们将这些只改变培训策略或只增加培训成本的方法称为“bag of freebies” BOS:bag of specials,对于那些只增加少量推理成本,却能显著提高目标检测精度的插件模块和后处理方法,我们称之为“bag of specials”。
Enhance Receptive Field
增强感受野的结构,论文指出 SPP结构能将YOLOV3-608将MSCOCO的AP50增加2.7%,作了些修改,相比原论文的SPP结构。 RFB的结构能将MSCOCO SSD的AP50增加5.7%,对ASPP作了些改进。
- SPP [25]Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Spatial pyramid pooling in deep convolutional networks for visual recognition.IEEE ransactions on Pattern Analy- sis and Machine Intelligence (TPAMI), 37(9):1904–1916, 2015.2,4,7
- ASPP [5]Liang-Chieh Chen, George Papandreou, Iasonas Kokkinos,
Kevin Murphy, and Alan L Y uille. DeepLab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected CRFs.IEEE Transactionson Pattern Analysis and Machine Intelligence (TPAMI),40(4):834–848, 2017.2,4 - RFB [47]Songtao Liu, Di Huang, et al. Receptive field block net for accurate and fast object detection. InProceedings of the European Conference on Computer Vision (ECCV), pages 385–400, 2018.2,4,11
Attention Module
注意力机制模块
目标检测常用的注意力模块主要分为通道注意和点注意
通道注意的代表:Squeeze-and-Excitation (SE) [29]
Jie Hu, Li Shen, and Gang Sun. Squeeze-and-excitation networks. InProceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pages 71327141, 2018.4
虽然SE模块可以在ImageNet图像分类任务中提高ResNet50的能力1%的top-1精度,但只需增加2%的计算工作量,但在GPU上通常会增加约10%的推理时间,因此更适合用于移动设备。
空间注意的代表: Spatial Attention Module (SAM) [85]
Sanghyun Woo, Jongchan Park, Joon-Y oung Lee, and In So Kweon. CBAM: Convolutional block attention module.In Proceedings of the European Conference on Computer Vision (ECCV), pages 3–19, 2018.1,2,4
对于SAM,它只需要支付0.1%的额外计算,并且它可以在ImageNet图像分类任务中提高ResNet50 SE 0.5%的top-1精度。最重要的是,它根本不会影响GPU上的推理速度。
Methodology
网络结构要求
- 更高的输入网络大小(分辨率)-用于检测多个小尺寸对象
- 更多层次–更高的感受野,覆盖更大的输入网络
- 更多参数–使模型在单个图像中检测多个不同大小对象的能力更强
不同大小的感受野的影响总结如下:
- 最大对象大小-允许查看整个对象
- 最大网络大小-允许查看对象周围的上下文
- 超过网络大小-增加图像点和最终激活之间的连接数
作者在CSPDarknet53上添加了SPP块,因为它显著增加了感受野,分离出最重要的上下文特征,并且几乎不会降低网络运行速度。使用PANet作为从不同主干级别为不同检测器级别聚合参数的方法,而不是YOLOv3中使用的FPN。 最后,选择CSPDarknet53主干、SPP附加模块、PANet路径聚合颈和YOLOv3(基于锚)头作为YOLOv4的体系结构。并且作者计划大幅增加Bag of Freebies给整个模型,并且做了很多消融实验来评价。
作者没有使用Cross-GPU Batch Normalization (CGBN or SyncBN)或昂贵的专用设备,仅仅在GTX1080TI或者RTX2080TI上实现最先进的结果。
BOF和BOS的选择
为了改进目标检测培训,CNN通常使用以下方法:
- 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 [36],Spatial DropOut [79], or DropBlock
- Normalization of the network activations by their mean and variance: Batch Normalization (BN) [32],Cross-GPU Batch Normalization (CGBN or SyncBN)[93], Filter Response Normalization (FRN) [70], orCross-Iteration Batch Normalization (CBN) [89]
- Skip-connections: Residual connections, Weighted residual connections, Multi-input weighted residual connections, or Cross stage partial connections (CSP)
激活函数选择:作者移除了对PReLU,SELU以及ReLU6的实验,因为PReLU和SELU非常训练,ReLU6是专门为量化网络设计的(RELU6的论文我没读过,因此怎么量化,什么效果,代价未知)。
正则化:DropBlock的论文做了很多实验,对比其他正则化赢得了很多,因此作者选择DropBlock作为正则化方法。
其他改进
为了使模型在单一GPU上训练,作了如下改进:
- Mosaic data augmentation and Self-Adversarial Training (SAT)
- 我们在应用遗传算法时选择最优超参数
- SAM(CBAM),PAN,Cross mini-Batch Normalization(CmBN)
Mosaic代表了一种新的数据增强方法,它混合了4幅训练图像。 Mosaic:混合了4张图片,而CutMix只混合了两张图片。这允许检测其正常上下文之外的对象。此外,批处理规范化从每层上的4个不同图像计算激活统计信息。这大大减少了对大型小型批量的需求。
Self-Adversarial Training (SAT):自我对抗训练(SAT)也代表了一种新的数据增强技术,分两个前后阶段进行操作。在第一阶段,神经网络改变原始图像,而不是网络权重。通过这种方式,神经网络对自身执行对抗性攻击,改变原始图像,从而产生图像上没有所需对象的欺骗。在第二阶段,神经网络以正常的方式进行训练,以检测出畸形的图像。
这里SAT的第一阶段改变原始图像的方式是重点,以及阶段的时机
Batch Normlization: CmBN表示CBN修改版本,如图4所示,定义为交叉小批量标准化(CmBN)。这仅在单个批次内的小批次之间收集统计信息。
我们将SAM从空间注意修改为点注意,并将PAN的shortcut替换为concatenation,分别如图5和图6所示。
YOLOV4
网络搭建基础
YOLOv4 consists of:
- Backbone: CSPDarknet53 [81]
- Neck: SPP [25], PAN [49]
- Head: YOLOv3 [63]
YOLO v4 uses:
- Bag of Freebies (BoF) for backbone: CutMix and Mosaic data augmentation, DropBlock regularization, Class label smoothing
- Bag of Specials (BoS) for backbone: Mish activation, Cross-stage partial connections (CSP), Multi-input weighted residual connections (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 [52], Optimal hyper-parameters, Random training shapes
- Bag of Specials (BoS) for detector: Mish activation,SPP-block, SAM-block, PAN path-aggregation block,DIoU-NMS
进一步对BOF的扩展
- S: Eliminate grid sensitivity,等式
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?,其中
c
x
c_x
cx?和
c
y
c_y
cy?始终是整数,在YOLOV3中表示网格左上角坐标。因此对于接近
c
x
c_x
cx?或
c
x
+
1
c_x+1
cx?+1的
b
x
b_x
bx?值,需要极高的
t
x
t_x
tx?的绝对值才能达到。我们通过将
s
i
g
m
o
i
d
sigmoid
sigmoid乘以超过1.0的因子来解决这个问题,从而消除了网格对无法检测到对象的影响。
- M:Mosaic数据增强-在训练期间使用4幅图像Mosaic,而不是单个图像
- IT:IoU阈值-对单个ground truth IoU使用多个anchor(truth,anchor)> IoU_threshold
- GA:Genetic algorithms-在前10%时间段的网络训练期间,使用遗传算法选择最佳超参数(V3是固定的)
- LS:Class label smoothing-使用类标签平滑进行sigmoid激活
- CBN:CmBN-使用跨小批量标准化来收集整个批次内的统计信息,而不是在单个小批量内收集统计信息
- CA:余弦退火调度器-在正弦训练期间改变学习速率
- DM:动态小批量-使用随机训练形状在小分辨率训练期间自动增加小批量
- OA:优化anchor-使用优化anchor进行512x512网络分辨率的训练
- GIoU、CIoU、DIoU、MSE-使用不同的有界box回归损失算法
进一步对BOS的研究
backbone
不同mini-batch size的影响
可见CSPDarknet53-PANet-SPP对mini-batch size的影响并不太敏感。
与其他目标检测模型在精度和速度的比较
|