YOLOv4

YOLOv4已在上周千呼万唤始出来。YOLO之父Jeseph Redmon在今年2月已宣布退出CV学术界,大家都以为YOLO系列已不再更新了,幸而,学术界和开源社区的力量是强大的。另一位曾经参与YOLO项目维护的大神Alexey Bochkovskiy接过了YOLO这面大旗,在arXiv上提交了YOLO v4,而且,这篇论文已经被拉入原来YOLO之父建立的项目主线。
YOLOv4:目标检测的最优速度和准确率
YOLOv4
摘要:

有大量的特征被认为可以提高卷积神经网络(CNN)的精度。需要在大型数据集上对这些特征的组合进行实际测试,并对结果进行理论证明。某些特性对特定的模型具有决定性的作用,对于某些特定的问题仅适用于小规模数据集;而某些特性(如批处理规范化和剩余连接)适用于大多数模型、任务和数据集。我们假设这些通用特征包括加权残差连接(WRC)、跨阶段部分连接(CSP)、跨小批量规范化(CmBN)、自对抗训练(SAT)和Mish**函数。我们使用以下新功能:WRC、CSP、CmBN、SAT、Mish**、Mosaic数据增强、CmBN、DropBlock正则化和CIoU_loss,并将其中一些功能结合起来,以达到最新的结果:43.5%AP(65.7%AP50)用于MS COCO数据集,在Tesla V100上以65 FPS的实时速度。

YOLOv4的发布可以说是YOLO系列的集大成者,里面涉及了许多tricks的组合。YOLOv4主要是选取了许多features进行组合的形式来对数据集进行测试训练,从而来验证性能效果。
论文核心中的核心:作者将 Weighted-Residual-Connections (WRC), Cross-Stage-Partial-connections (CSP), Cross mini-Batch Normalization (CmBN), Self-adversarial-training (SAT) and Mish-activation. 而且还使用了一些最近出来的新features:WRC, CSP, CmBN, SAT, Mish activation, Mosaic data augmentation, CmBN, DropBlock regularization, and CIoU loss。通过对这些features进行有效的组合得到了爆炸性的YOLOv4,可以吊打一切的YOLOv4.在MS-COCO数据上:43.5%@AP(65.7%@AP50)同时可以达到[email protected]
YOLOv4
论文链接:https://arxiv.org/abs/2004.10934
代码地址:https://github.com/AlexeyAB/darknet

Tricks选择
为更好的训练目标检测模型,CNN模型通常具有以下模块:

Activations:ReLU、Leaky-ReLU、PReLU、ReLU6、SELU、Swish or Mish
Bounding box regression Loss:MSE、IoU、GIoU、CIoU、DIoU
Data Augmentation:CutOut、MixUp、CutMix
Regularization:DropOut、DropPath、Spatial DropOut、DropBlock
Normalization:BN、SyncBn、FRN、CBN
Skip-connections: Residual connections, weighted residual connections, Cross stage partial connections
作者从上述模块中选择如下:**函数方面选择Mish;正则化方面选择DropBlock;由于聚焦在单GPU,故而未考虑SyncBN。

YOLOv4论文中所用tricks如下:

用于backbone的BoF:CutMix和Mosaic数据增强,DropBlock正则化,Class label smoothing
用于backbone的BoS:Mish**函数,CSP,MiWRC
用于检测器的BoF:CIoU-loss,CmBN,DropBlock正则化,Mosaic数据增强,Self-Adversarial 训练,消除网格敏感性,对单个ground-truth使用多个anchor,Cosine annealing scheduler,最佳超参数,Random training shapes
用于检测器的Bos:Mish**函数,SPP,SAM,PAN,DIoU-NMS

文中提供的预训练模型的权重和参数信息可见代码地址:
YOLOv4
YOLOv4
简而言之:YOLOv4 =CSPDarknet53+SPP+PAN+YOLOv3

YOLOv4-detector信息

1、提出了一种高效而强大的目标检测模型。它使每个人都可以使用1080 Ti或2080 Ti GPU 训练超快速和准确的目标检测器。
2、在检测器训练期间,验证了SOTA的Bag-of Freebies 和Bag-of-Specials方法的影响。
3、改进了SOTA的方法,使它们更有效,更适合单GPU训练,包括CBN [89],PAN [49],SAM [85]等。文章将目前主流的目标检测器框架进行拆分:input、backbone、neck 和 head 具体如下图所示:
YOLOv4
除上述模型外,一些研究人员将重点放在直接构建用于对象检测的新主干(DetNet [43],DetNAS [7])或新的整个模型(SpineNet [12],HitDetector [20])上。

综上所述,普通的目标检测器由以下几个部分组成:

**输入:**图像、Patches、图像金字塔

**骨干网络:**VGG16[68]、ResNet-50[26]、SpineNet[12]、EfficientNet-B0/B7[75]、CSPResNeXt50[81]、CSPDarknet53[81]

Neck:

Additional blocks:
SPP[25]、ASPP[5]、RFB[47]、SAM[85]
Path-aggregation blocks:
FPN[44]、PAN[49]、NAS-FPN[17]、Fully-connected FPN、BiFPN[77]、ASFF[48]、SFAM[98]
Heads:

密集预测(一阶段):

(1)RPN[64]、SSD[50]、YOLO[61]、RetinaNet[45](基于锚)

(2)CornerNet[37]、CenterNet[13]、MatrixNet[60]、FCOS[78](无锚)

稀疏预测(两阶段):

(1)更快的R-CNN[64]、R-FCN[9]、掩码RCNN[23](基于锚)

(2)RepPoints[87](无锚)

Bag of freebies
常规的物体检测器是离线训练的。因此,研究人员总是喜欢利用这一优势,并开发出更好的训练方法,以使物体检测器获得更好的精度而又不增加推理成本。我们称这些方法为“bag of freebies”,即改变训练策略或仅增加训练成本。数据增强是对象检测方法经常采用的并符合bag of freebies定义的数据。数据增强的目的是增加输入图像的可变性,从而使设计的物体检测模型对从不同环境获得的图像具有更高的鲁棒性。例如,光度畸变和几何畸变是两种常用的数据增强方法,它们无疑有益于物体检测任务。在处理光度失真时,我们会调整图像的亮度,对比度,色相,饱和度和噪点。对于几何变形,我们添加了随机缩放,裁剪,翻转和旋转等方式。
在基于深度学习的对象检测中通常使用的后处理方法是NMS,它可以用于过滤那些不好地预测同一对象的BBox,并仅保留具有较高响应的候选BBox。NMS尝试改进的方法与优化目标函数的方法一致。NMS提出的原始方法没有考虑上下文信息,因此Girshick等 [19]在R-CNN中添加了分类置信度得分作为参考,并且根据置信度得分的顺序,从高分到低分的顺序执行了贪婪的NMS。对于soft NMS [1],考虑了物体的遮挡可能会导致贪婪的NMS的IoU评分置信度降低的问题。DIoU NMS [99]开发人员的思维方式是在softNMS的基础上将中心点距离的信息添加到BBox筛选过程中。值得一提的是,由于上述后处理方法均未直接涉及捕获的图像特征,因此在随后的anchor-free方法开发中不再需要后处理。
YOLOv4
表1:用于图像分类的神经网络参数
Selection of BoF and BoS

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

**:ReLU、leaky ReLU、parametric ReLU、ReLU6、SELU、Swish或Mish
边界框回归损失:MSE、IoU、GIoU、CIoU、DIoU
数据增强:剪切、混合、剪切
正则化方法:DropOut、DropPath[36]、space DropOut[79]或DropBlock
空间DropOut [79]或DropBlock
通过均值和方差对网络**进行归一化:批归一化(BN)[32],Cross-GPU批归一化(CGBN或SyncBN)[93],过滤器响应归一化(FRN)[70]或交叉迭代批归一化(CBN)[89]
跳过连接:残留连接,加权残留连接,多输入加权残留连接或跨阶段局部连接(CSP)

YOLOv4
各类检测器之间性能的比较
YOLOv4
性能炸裂的YOLOv4结果展示
YOLOv4
YOLOv4
YOLOv4

参考链接:https://blog.****.net/mrjkzhangma/article/details/105730677
https://blog.****.net/sinat_39783664/article/details/105728290