在计算机视觉领域,目标检测是一项基础性任务,其应用范围从自动驾驶到医学成像,囊括甚广。该领域长期存在的挑战是速度与精度之间的权衡。高精度模型通常在实时场景下运行过慢,而速度更快的模型有时又缺乏关键任务所需的准确性。

但如果两者兼得呢?如果你可以不依赖庞大昂贵的云基础设施,而是在实验室或家庭办公室的一台消费级 GPU 上训练一个最先进的检测器呢?

这正是 YOLOv4: 目标检测的最佳速度与精度 所带来的承诺。由 Alexey BochkovskiyChien-Yao WangHong-Yuan Mark Liao 于 2020 年发表,这项工作并非建立在某个单一的突破性算法之上,而是工程与实证科学的集大成之作。作者们严谨评估并融合了数十项深度学习的研究成果,打造出一个既精准极速的检测器——让高性能目标检测走向大众化。

如论文中的性能图所示:

图 1 展示了一张性能对比图,比较 YOLOv4 与 EfficientDet、YOLOv3 等其他目标检测器的表现。YOLOv4 在极高的 FPS (在 V100 上约 65) 下实现了高 AP 分数 (约 43.5%) ,展示了其在速度与精度上的卓越平衡。

YOLOv4 占据了领先地位,超越了前代 YOLOv3,并在保持实时速度的同时,与 EfficientDet 等竞争模型旗鼓相当甚至更优。

本文将深入探讨 YOLOv4 的架构、训练策略与实验,使其成为目标检测领域的里程碑之作。


背景: 目标检测器的结构剖析

在剖析 YOLOv4 之前,让我们先建立共识。现代目标检测器,无论是一阶段还是二阶段,都有类似的结构:

图 2 展示了目标检测器的一般架构,由输入 (Input) 、用于特征提取的骨干网络 (Backbone) 、用于特征聚合的颈部 (Neck) 以及负责预测的头部 (Head) 组成。

  1. 输入 (Input): 送入网络的图像。可以是单张图像、局部图像块,或通过图像金字塔实现的多尺度图像。

  2. 骨干网络 (Backbone): 通常是一个在 ImageNet 上预训练的深度 CNN,用于从输入中提取丰富的特征映射。例如: ResNet、VGG、DenseNet,以及 YOLO 所用的 Darknet。

  3. 颈部 (Neck): 聚合来自不同骨干网络层的特征映射,生成适用于多尺度目标检测的鲁棒特征。常见方法有特征金字塔网络 (FPN) 和路径聚合网络 (PAN) 。

  4. 头部 (Head): 预测层,根据聚合的特征输出类别和边界框。

    • **一阶段检测器 **(密集预测) : 直接从特征图一步完成预测 (如 YOLO、SSD) ,速度快但精度可能稍逊。
    • **二阶段检测器 **(稀疏预测) : 先生成候选区域,再在其中分类/检测 (如 Faster R-CNN) ,精度更高但速度较慢。

YOLOv4 是一个一阶段检测器——这是实现其实时性能的关键。作者的主要目标是优化架构,使其能在标准 GPU 上高效并行计算,确保其实用性和普及性。


核心理念: 免费包 (Bag of Freebies) 与特价包 (Bag of Specials)

YOLOv4 独到之处在于将可能的改进分成两类:

  • 免费包 (Bag of Freebies, BoF): 在不增加推理成本的情况下提升精度的技术,通常在训练阶段使用。例如: 数据增强、更优的损失函数。

  • 特价包 (Bag of Specials, BoS): 增加极少推理成本却能提升精度的模块或后处理步骤。例如: 注意力机制、感受野增强。

论文系统性地探索了多种 BoF 与 BoS 技术,并寻找出构造高性能检测器的最佳组合。


构建 YOLOv4 架构

基于这一理念,作者为 YOLOv4 各部分精挑细选组件。

Backbone: CSPDarknet53

强大的检测骨干网络需要:

  • 大感受野以捕捉目标上下文信息。
  • 高容量模型以表达复杂特征。

比较结果表明,CSPDarknet53 是最佳选择:

表 1 比较了三种骨干模型。CSPDarknet53 拥有比 CSPResNeXt50 更大的感受野 (725x725) 和更多的参数 (27.6M) ,虽 CSPResNeXt50 在纯分类任务上略优,但 CSPDarknet53 在目标检测中的特征提取能力更强。

虽然 CSPResNeXt50 在分类任务上略优,但拥有 29 个卷积层更大感受野的 CSPDarknet53 在目标检测上表现更好。CSP (跨阶段局部连接) 结构提升了梯度流与效率。

Neck: SPP + PAN

两个模块增强了骨干网络的特征:

  1. SPP (空间金字塔池化) : 在多个尺度进行池化并拼接,极大增加感受野而不影响速度。
  2. PAN (路径聚合网络) : 增强高层与低层特征的融合。YOLOv4 对 PAN 做了优化,以进一步改善多尺度特征融合。

Head: YOLOv3 风格的锚点预测

YOLOv4 延续了 YOLOv3 基于锚点的预测结构,保持了快速且可靠的边界框预测优势。


黄金组合: YOLOv4 的 BoF 与 BoS

免费包 (Bag of Freebies, BoF)

关键技术:

  • Mosaic 数据增强: YOLOv4 新引入,将四张图像拼接成一张,使目标呈现在不同背景中。

图 3 展示 Mosaic 数据增强的示例,将四张不同图片拼接成一张训练图像,形成类似拼贴画的效果。

该方法增加每批数据中目标的多样性,降低对大批量的依赖,并提升模型鲁棒性。

  • 自对抗训练 (Self-Adversarial Training, SAT) : 两阶段方法,先让网络“攻击”输入图像以隐藏目标,再训练其在被修改的图像中检测目标。

  • CIoU 损失: 一种考虑重叠度、中心距离与长宽比的边界框回归损失,比 MSE/IoU 有更快收敛与更准定位。

  • 跨小批量归一化 (Cross mini-Batch Normalization, CmBN) : 在一个批次内跨小批量聚合归一化统计,提高小批量训练的稳定性。

图 4 对比了 BN、CBN 及提出的 CmBN。CmBN 在更新权重前,会累积该批次内所有小批量 (从 t-3 到 t) 的统计信息。

特价包 (Bag of Specials, BoS)

关键技术:

  • Mish 激活函数: 平滑、非单调的激活函数 (\(y = x \cdot \tanh(\text{softplus}(x))\)) ,改善梯度流,提升精度。

  • 改进版 SAM 与 PAN:

    • SAM 从双池化路径简化为单卷积路径。
    • PAN 将特征融合由相加改为拼接,以保留更多细节。

图 5 展示了原始 SAM 的双池化路径和 YOLOv4 使用的简化版本。图 6 展示了原始 PAN 使用相加融合特征,而修改版使用拼接融合。

  • DIoU-NMS: 在非极大值抑制中同时考虑 IoU 与中心距离,有助于处理遮挡目标的检测。

实验: 验证每个设计选择

作者进行了大量消融实验,以分析各项技术在分类 (ImageNet) 与检测 (MS COCO) 任务上的影响。

分类器训练

验证结果显示,CutMixMosaic标签平滑 (Label Smoothing)Mish 会持续提升骨干网络分类精度。

图 7 展示了不同数据增强方式的视觉效果,包括标准变换、MixUp、CutMix、Mosaic 与模糊处理。

表 2 显示各种 BoF 与 Mish 对 CSPResNeXt-50 准确率的影响。CutMix、Mosaic、标签平滑与 Mish 的组合达到最高 Top-1 准确率 79.8%。 表 3 展示了针对 CSPDarknet-53 骨干的类似实验,证实该组合同样提升其性能。

检测器训练

BoF 的影响:
Mosaic 数据增强与 CIoU 损失带来明显 AP 提升。

表 4 列出了 BoF 的消融实验。最后一行显示,结合消除网格敏感性 (S) 、Mosaic (M) 、最优锚点 (OA) 及 CIoU 损失,可获得 42.4% 的高 AP。

BoS 的影响:
在 PAN-SPP 中加入改进版 SAM 模块表现最佳。

表 5 是 BoS 的消融研究,显示在 CSPResNeXt50-PANet-SPP 架构中加入改进版 SAM 有最佳精度表现。

最终骨干选择与批次大小适应性

有趣的是,最佳分类骨干并非最佳检测骨干。使用 BoF 与 Mish 训练的 CSPDarknet53 在检测上表现最佳:

表 6 比较了不同预训练骨干下检测器的性能。使用 BoF 和 Mish 训练的 CSPDarknet53 骨干获得最高 AP (43.0%) 。

BoF/BoS 还使网络对批次大小变化不敏感:

表 7 显示在应用 BoF 与 BoS 的情况下,小批量尺寸为 4 和 8 时的性能几乎一致,证明其在单块 GPU 上的训练效率。


最终结果: 称霸全场

经过精细调优,YOLOv4 在多种 GPU 上都展现了出色的速度-精度平衡:

图 8 展示了 YOLOv4 在不同 GPU 架构 (Maxwell、Pascal、Volta) 下与众多检测器的速度与精度对比图。

结果:

  • **43.5% AP **(65.7% AP50) @ MS COCO
  • 约 65 FPS @ Tesla V100
  • 相比 YOLOv3,AP 提升约 10%FPS 提升约 12%

表 8 展示了 YOLOv4 在 Maxwell GPU 上的性能,相较 YOLOv3、SSD 等实时检测器优势明显。 表 9 展示了 YOLOv4 在 Pascal GPU 上的表现,再度凸显其速度-精度优势。 表 10 展示了 YOLOv4 在 Volta GPU 上运行达 62 FPS,AP 为 43.5%,速度和准确性均优于同速的 EfficientDet 等竞争模型。


结论: 实时检测的新基准

YOLOv4 不只是小幅升级,更是对顶级模型构建方式的一种革新。作者没有执着于单一创新组件,而是展示了系统集成与实证验证的威力,造就了一个:

  • 快速与精准兼具: 刷新了实时检测的新标准,推动帕累托前沿发展。
  • 易于使用: 可在一块 8–16GB VRAM 的消费级 GPU 上训练。
  • 体系完整: 为将 BoF 与 BoS 融入目标检测器提供了成熟范例。

通过将社区的最佳成果与自身创新相结合,YOLOv4 团队不仅打造了更好的检测器,也形成了一套更优的方法论来构建检测器。