一、YOLOv4 整体定位

1. 核心背景与设计思路

YOLOv4 虽更换了作者,但始终延续 YOLO 系列“单阶段检测 + 回归思想”的核心框架。其核心设计思路是吸收当时主流目标检测框架的优势,实现模型速度与检测精度的极致平衡。

2. 性能表现

从性能对比来看,在实时检测(FPS>30)场景下,YOLOv4 的 AP(检测精度)远超同期的 YOLOv3、EfficientDet 等模型,真正实现了“又快又准”的检测效果。

二、YOLOv4 核心优化:Bag of Freebies(BOF)

BOF(免费训练优化)的核心定义的是:不增加模型复杂度、不提升推理计算量,仅通过训练阶段的优化(如数据预处理、损失函数改进等)提升检测精度,即“仅增加训练成本,不影响推理速度”。

1. 数据增强:从基础到进阶

(1)基础数据增强

包含亮度、对比度、色调调整,以及随机缩放、剪切、翻转、旋转等操作,是 CNN 模型训练中的常规数据增强手段,用于丰富训练样本多样性。

(2)Mosaic 马赛克增强

灵感源自 CutMix 方法,具体做法是将 4 张不同图像拼接成 1 张训练图像。其核心优势的是:大幅丰富小目标出现的场景,提升模型对小目标的鲁棒性;同时单张图像包含更多语义信息,有效降低模型对大 batch size 的依赖。

(3)Random Erase 与 Hide and Seek

Random Erase:用随机值或训练集平均像素值替换图像局部区域,强制模型学习全局特征,而非过度依赖局部纹理信息。

Hide and Seek:按一定概率随机隐藏图像中的局部补丁,与 Random Erase 原理相近,可进一步提升模型的抗干扰能力,避免过拟合。

(4)SAT(Self-adversarial-training 对抗训练)

核心原理是在训练过程中为图像引入微小噪声,人为增加训练难度,让模型在对抗干扰的过程中学习。最终可提升模型对噪声、光照变化的鲁棒性,有效防止模型过拟合。

2. 网络正则化:DropBlock

DropBlock 是谷歌 2018 年提出的 CNN 专用正则化方法,核心目的是解决模型过拟合问题,其效果优于传统 Dropout,具体对比如下:

传统 Dropout:随机屏蔽独立的特征点,在 CNN 中效果有限——相邻特征点仍可传递信息,无法彻底避免冗余特征的影响。

DropBlock:随机屏蔽连续的特征区域,强制模型学习更鲁棒的全局特征,减少特征冗余连接,正则化效果更显著。

3. 标签平滑(Label Smoothing)

核心目的:防止模型对预测结果“过度自信”,从而避免过拟合。

核心原理:将“硬标签”(如 [0,1])软化为“软标签”,例如设置平滑系数为 0.1 时,标签可调整为 [0.05, 0.95]。

实际效果:降低模型对错误标签的敏感度,提升模型的泛化能力,让模型在未见过的测试样本上表现更稳定。

4. 损失函数的演进:从 IoU 到 CIoU

(1)基础 IoU 损失

计算方式:IoU(交并比)= 预测框与真实框的交集面积 / 并集面积,损失值常用 1 - IoU 表示。

存在缺陷:当预测框与真实框无交集时,IoU 值为 0,无法计算梯度,导致模型无法正常学习;同时,相同 IoU 值无法区分框的实际位置关系(如一个框在真实框左上角、一个在右下角,IoU 相同但回归难度差异较大)。

(2)GIoU 损失(Generalized IoU)

公式:\mathcal{L}_{GIoU} = 1 - IoU + \frac{|C - (A \cup B)|}{|C|},其中 C 是包含预测框(A)和真实框(B)的最小封闭形状。

核心改进:解决了 IoU 损失在预测框与真实框无交集时无法计算梯度的问题,能引导预测框向真实框方向靠近。

仍有缺陷:当两个框存在包含关系(如预测框完全在真实框内部)时,GIoU 会退化为 IoU,无法区分两者的位置差异,影响回归精度。

(3)DIoU 损失(Distance IoU)

公式:\mathcal{L}_{DIoU} = 1 - IoU + \frac{\rho^2(\mathbf{b}, \mathbf{b}^{gt})}{c^2}

参数说明:分子是预测框与真实框中心点的欧式距离的平方;分母是覆盖两个框的最小矩形对角线长度的平方。

核心改进:直接优化预测框与真实框的中心点距离,彻底解决了 GIoU 在包含关系下的退化问题,同时加快了模型的收敛速度。

(4)CIoU 损失(Complete IoU)

公式:\mathcal{L}_{CIoU} = 1 - IoU + \frac{\rho^2(\mathbf{b}, \mathbf{b}^{gt})}{c^2} + \alpha v

参数说明:v = \frac{4}{\pi^2}(\arctan \frac{w^{gt}}{h^{gt}} - \arctan \frac{w}{h})^2,用于衡量预测框与真实框的长宽比差异;\alpha = \frac{v}{(1 - IoU) + v} 是权重参数,用于平衡各项损失。

核心改进:同时考虑了重叠面积(IoU)、中心点距离、长宽比三个几何因素,回归精度更优,是 YOLOv4 最终采用的损失函数。

三、后处理优化:NMS 的改进

NMS(非极大值抑制)是目标检测后处理的核心步骤,用于过滤冗余预测框,YOLOv4 对传统 NMS 进行了两项关键改进:

1. DIoU-NMS

传统 NMS 仅根据 IoU 值过滤冗余框,容易误删重叠的相邻目标(如密集场景中的目标)。

DIoU-NMS 改进点:同时考虑 IoU 值和中心点距离,公式为:

s_i = \begin{cases} s_i, & IoU - \mathcal{R}_{DIoU}(\mathcal{M}, B_i) < \varepsilon \\ 0, & IoU - \mathcal{R}_{DIoU}(\mathcal{M}, B_i) \ge \varepsilon \end{cases}

实际效果:对密集目标检测更友好,有效减少相邻目标的误删,提升检测准确率。

2. Soft-NMS

核心思想:摒弃传统 NMS“直接删除重叠框”的方式,采用“置信度衰减”策略,即按重叠程度降低冗余框的置信度,而非直接置零。

公式:s_i = s_i e^{-\frac{IoU(\mathcal{M},b_i)^2}{\sigma}}, \forall b_i \notin \mathcal{D}

实际效果:有效解决传统 NMS 中相邻目标被误删的问题,显著提升密集场景下的目标检测率。

四、网络结构优化:Bag of Specials(BOS)

BOS(轻量推理优化)的定义是:少量增加模型推理代价,但能显著提升检测精度的优化方法,YOLOv4 引入了多项此类改进,核心如下:

1. SPP-Net(空间金字塔池化)

核心作用:解决 CNN 模型固定输入尺寸的限制,通过金字塔池化层将不同尺寸的特征图转化为固定长度的特征向量。

核心优势:无需固定输入图像尺寸,可处理任意大小的图像;同时能扩大模型感受野,提升对多尺度目标的检测鲁棒性。

2. CSPNet(跨阶段局部网络)

核心思想:将输入特征图按通道(channel)拆分为两部分,一部分通过残差网络进行特征提取,另一部分直接拼接(concat)到输出端,实现特征的高效传递。

解决的核心问题:增强 CNN 模型的特征学习能力;降低内存占用和计算瓶颈;在实现模型轻量化的同时,保持检测精度,是 YOLOv4 主干网络 CSPDarknet53 的核心组成部分。

3. 注意力机制:CBAM 与 SAM

CBAM(卷积块注意力模块):结合通道注意力和空间注意力,可灵活嵌入任何 CNN 网络,能自适应强化关键特征、抑制无用特征。

SAM(空间注意力模块):YOLOv4 实际采用的注意力模块,聚焦于空间维度,能精准强化图像中的关键区域(如目标区域),提升特征提取的针对性。

4. PAN(路径聚合网络)

背景:传统 FPN(特征金字塔网络)仅通过自顶向下的路径传递高层特征,底层细节特征(对小目标检测至关重要)的传递效率较低。

核心改进:引入自底向上的捷径路径,让底层细节特征能够快速传递到顶层特征图中,实现高低层特征的高效融合。

核心优势:大幅提升底层细节信息的利用率,对小目标检测性能的提升尤为显著。

五、YOLOv4 完整优化总结

优化类别

具体方法

核心效果

BOF(免费训练优化)

Mosaic增强、Random Erase、DropBlock、标签平滑、CIoU损失

不影响推理速度,显著提升检测精度,降低过拟合风险

BOS(轻量推理优化)

CSPDarknet53、SPP、PAN、SAM注意力、DIoU-NMS、Soft-NMS

少量增加推理代价,大幅提升模型检测性能,优化多尺度、密集目标检测效果

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐