一、概述
论文首先将当时一些前沿的技术一一挪列出来,作者将不同领域发表的最新论文的技术,集成到自己的算法中加以创新并做了许多消融实验,详细的描述了实验的过程,3.4之后才是描述yolov4的内容。
【原文】
Our contributions are summarized as follows:
1. We develope an efficient and powerful object detection model. It makes everyone can use a 1080 Ti or 2080 Ti GPU to train a super fast and accurate object detector.
2. We verify the influence of state-of-the-art Bag-ofFreebies and Bag-of-Specials methods of object detection during the detector training.
3. We modify state-of-the-art methods and make them more effecient and suitable for single GPU training, including CBN [89], PAN [49], SAM [85], etc.
我们的贡献总结如下:
-
我们开发了一个高效且功能强大的目标检测模型。它使每个人都可以使用 1080 Ti 或 2080 Ti 的 GPU 来训练一个超级快速和准确的目标检测器。
-
我们验证了最先进的 Bag-of-Freebies 和 Bag-of-Specials 对象检测方法在检测器训练期间的影响。
-
我们修改了最先进的方法,使其更有效并适用于单GPU训练,包括CBN [89]、PAN [49]、SAM [85]等。
二、创新点
1.输入端
1.1.Mosaic数据增强
Mosaic数据增强是通过随机裁剪、随机缩放、随机排布将四张图片拼接在一起,可以增加输入图像中的多样性,从而帮助模型更好地泛化和适应各种场景。Mosaic是参考2019年底提出的CutMix数据增强的方式,但CutMix只使用了两张图片进行拼接。
yolov4为什么要进行Mosaic数据增强?
解决小目标在样本中分布不均匀的问题,增加图像的多样性。
这样做的好处:
1.让数据集更加丰富,图像传达的信息更具多样性。
2.减少GPU使用,(概述中提及作者说明的yolov4的主要贡献)因为将4张图片拼接在一起,可以减小batch size,一个GPU也可以有很好的效果。
1.2.cmBN
【翻译】
- BN(Batch Normalization):假设一个batch包含四个mini-batches。在每个时间步(t-3、t-2、t-1和t),分别累积权重W(t-3)、计算BN(t-3)、标准化BN,然后更新W和ScaleShift。BN在每个mini-batch内部进行归一化,它的目的是通过规范化激活值来加速神经网络的训练过程。
- CBN(Cross Batch Normalization):假设跨过四个迭代。在每个时间步(t-3、t-2、t-1和t),分别累积权重W(t-3~t-6)、累积BN(t-3~t-6)、更新ScaleShift,然后更新W和ScaleShift。CBN考虑了多个batch之间的信息,通过累积多个batch的信息来改善BN的效果。
- CmBN(Cumulative mini-Batch Normalization):假设一个batch包含四个mini-batches。在每个时间步(t-3、t-2、t-1和t),分别累积权重W(t-3~t)、累积BN(t-3~t)、标准化BN,然后更新W和ScaleShift。CmBN结合了BN和CBN的特点,它在每个batch内部进行归一化,同时也累积了多个batch的信息。
1.3.SAT自对抗训练
SAT是一种数据增强技术,旨在通过神经网络自身进行的对抗式攻击来提高模型的鲁棒性和泛化能力。通过引入一些对抗性的扰动来增加模型的鲁棒性和泛化能力。例如,通过对输入图像添加噪声或变换来模拟真实世界中的不确定性,从而使模型学会忽略这些干扰因素,专注于真正重要的特征。
2.Backbone
2.1.CSPDarknet53
在yolov4网络架构图中可以看到,yolov4Backbone在v2的Darknet53基础上,借鉴了CSPNet。
2.2.Mish函数
作者在Backbone中使用了Mish函数,而其他地方还是使用Leaky函数,这是作者通过消融实验对比出来的结果。
2.3.Dropblock
Dropblock是基于Dropout改进的,Dropout是在训练过程中随机“丢弃”一部分神经元的输出,减少神经元之间的依赖性。而Dropblock认为即使随机丢弃一些神经元,卷积层仍然可以从相邻的神经元学习到相似的特征,所以干脆将这一区域的神经元一起丢弃。
3.Neck
3.1.SPP
yolov4中SPP结构
3.2.PAN
在 YOLOv4 中,PAN 结构采用了类似于 FPN 的思想,但是增加了自底向上的路径(FPN 是自顶向下地融合高层特征和低层特征来生成多尺度特征图),形成了双向特征融合的网络结构。这种结构使得模型不仅能够自顶向下地强调语义特征,还能够自底向上地强调定位特征,增强了特征的传播效率和信息流。
PAN是作者借鉴分割领域的PANet中的PAN,但也有不同,前者为add,后者为concat通道数增加。上文网络结构中里面包括两个PAN结构。
4.Head
4.1.CIOU_Loss
CIoU Loss(Complete Intersection over Union Loss)是一种用于目标检测任务中的边界框回归损失函数。它是在IoU(Intersection over Union)基础上发展而来的一种更加全面的距离度量,旨在解决IoU损失的一些不足之处,比如它不能很好地反映边界框中心点的位置偏差以及长宽比的差异。
IoU Loss
IoU Loss 是一种衡量预测边界框和真实边界框之间重叠程度的指标。IoU 的定义是两个边界框交集面积与并集面积的比率。IoU Loss 通常定义为 1 - IoU 的值,即:
GIoU Loss
GIoU Loss(Generalized Intersection over Union Loss)是在 IoU Loss 基础上改进的版本,它通过引入一个包含预测框和真实框最小闭包区域的概念,来解决 IoU Loss 在边界框不重叠时无法提供梯度的问题。GIoU Loss 定义为:
其中,Convex Hull 是指包含两个框的最小闭包区域。
DIoU Loss
DIoU Loss(Distance-IoU Loss)进一步改进了 GIou Loss,除了考虑边界框的面积重叠外,还加入了中心点之间的距离因素,这样可以更好地反映边界框的相对位置。DIoU Loss 定义为:
CIoU Loss
CIoU Loss 进一步扩展了 DIoU Loss,除了考虑中心点之间的距离外,还加入了对边界框长宽比的惩罚项,这有助于减小长宽比的偏差。CIoU Loss 的公式如下:
其中:
- 𝜌(𝑐,𝑐′)ρ(c,c′) 表示预测框和真实框中心点的角度差异。
- 𝛼α 是一个平衡因子,用来平衡中心点距离损失和长宽比损失。
CIoU Loss 的优势
- 更好的泛化能力:CIoU Loss 不仅关注边界框的面积重叠,还考虑了中心点位置偏差和长宽比偏差,因此可以更好地指导边界框回归的优化。
- 更快的收敛速度:由于包含了更多关于边界框几何形状的信息,CIoU Loss 可以帮助模型更快地收敛。
- 更稳定的训练过程:对于小目标检测,CIoU Loss 能够更稳定地指导边界框回归,尤其是在小目标的长宽比变化较大的情况下。
4.2.DIOU_nms
DIoU NMS (Distance-IoU Non-Maximum Suppression) 是一种用于目标检测后处理阶段的非极大值抑制 (Non-Maximum Suppression, NMS) 方法。传统的 NMS 方法通常使用 IoU (Intersection over Union) 来衡量预测边界框之间的重叠程度,并根据得分排序后去除重叠的边界框。DIoU NMS 在传统 NMS 的基础上进行了改进,通过考虑边界框中心点之间的距离来更精确地筛选出最优的边界框。
参考