目标检测长期以来一直是计算机视觉中的一项基石任务。我们需要的模型不仅能告诉我们图像中有什么,还要告诉我们它在哪里。多年来,技术的进步意味着一种权衡: 你可以选择一个高精度的模型,或者一个速度足够快能用于实时应用的模型——但很少能两者兼得。而且,即使是最好的检测器也受限于一个很小的词汇量,它们所训练的数据集只有几十个,最多几百个物体类别。

如果我们能打破这种权衡呢?构建一个在速度和准确性上都达到顶尖水平的检测器?并且突破典型检测数据集的有限词汇量,能够识别数千种不同的物体呢?

这就是 Joseph Redmon 和 Ali Farhadi 在论文 《YOLO9000: Better, Faster, Stronger》 中所要解决的宏伟目标。这项工作不仅介绍了一个模型,而是两个:

  • YOLOv2: 对原始 YOLO 的一个显著改进版本,为实时检测设立了新标准。
  • YOLO9000: 一个开创性的框架,利用海量分类数据集来检测超过 9000 个物体类别

让我们来解析一下作者是如何让他们的检测器变得更好、更快,并最终更强的。

一组图像拼贴,展示了 YOLO9000 检测各种各样的物体,包括鲸鱼、猎豹、狗、鲨鱼、食物和人,所有物体都用彩色边界框标记。


起点: 为什么 YOLO 需要升级

最初的 YOLO (You Only Look Once) 是一项突破: 它将目标检测构建为一个单一的回归问题——直接从图像像素到边界框坐标和类别概率——这使得它速度极快。但与像 Faster R-CNN 这样的两阶段检测器相比,YOLO 存在更多的定位误差 (边界框不够紧密) 和更低的召回率 (会漏掉更多物体) 。

通往 YOLO9000 的旅程始于系统性地解决这些弱点,以创建一个更优的基线模型: YOLOv2。其方法并非推倒重来,而是叠加了一系列成熟与新颖的技术,以在不牺牲速度的前提下提升性能。


更好: 从 YOLO 到 YOLOv2 的演进之路

Redmon 和 Farhadi 提供了一份清晰的路线图,展示了将原始 YOLO 逐步改进为 YOLOv2 的过程。每一步都为平均精度均值 (mAP) ——检测准确性的标准度量——带来了可观的提升。

一张表格,展示了从 YOLO 到 YOLOv2 的渐进式改进以及在 VOC 2007 数据集上 mAP 的相应提升。

1. 批量归一化 (Batch Normalization)

在所有卷积层后添加批量归一化,使 mAP 提升了超过 2%。批量归一化可以稳定训练过程、加速收敛,并起到正则化的作用——这使得研究者可以移除 YOLO 之前用于防止过拟合的 dropout 层。

2. 高分辨率分类器

大多数检测器都始于一个在 ImageNet 上用 224×224 图像预训练的主干网络。原始 YOLO 直接从 224px 预训练跳到 448×448 检测训练,这迫使网络必须同时学习检测任务并适应更高的分辨率。

YOLOv2 增加了一个中间步骤: 在进行检测训练之前,先在 448×448 的 ImageNet 图像上对分类器进行 10 个周期的微调。这让滤波器有时间适应更高分辨率的输入,带来了近 4% 的 mAP 提升。

3. 使用锚框的卷积预测

借鉴 Faster R-CNN,YOLOv2 用一种全卷积的方法取代了全连接的边界框预测器,该方法预测的是相对于预定义锚框的偏移量。这一改变将定位问题重构为调整锚框以适应物体——这是一个比直接坐标回归更简单的学习任务。

最初 mAP 略有下降,但召回率从 81% 跃升至 88%——意味着检测器找到了更多的物体,即便定位还不够完美。

4. 维度聚类: 更智能的锚框

手动挑选的锚框并非最优。YOLOv2 对训练集中的边界框维度进行 k-means 聚类,并使用一种基于 IOU 的自定义距离度量:

\[ d(\text{box}, \text{centroid}) = 1 - \text{IOU}(\text{box}, \text{centroid}) \]

平均 IOU 与聚类数量的关系图,以及 VOC 和 COCO 数据集聚类中心的可视化。

使用 \(k = 5\) 在复杂度和召回率之间取得了很好的平衡。

一张表格,比较了不同边界框生成方法的平均 IOU。

仅使用 5 个聚类先验框,YOLOv2 就取得了比 Faster R-CNN 中使用的 9 个手动挑选锚框更高的平均 IOU。

5. 直接位置预测

Faster R-CNN 中的锚框使用无约束的偏移量,这会导致不稳定性——边界框可能会偏离其所在的网格单元很远。

YOLOv2 通过将中心坐标参数化为相对于单元格的位置来约束预测,并使用 sigmoid 函数将值限制在 0 与 1 之间。这使得训练更加稳定,网络也更容易学习。

一张图解,说明了 YOLOv2 相对于带有维度先验的网格单元的边界框坐标预测。

将维度聚类与直接位置预测相结合,mAP 提升了近 5%。

6. 小物体的细粒度特征

YOLOv2 的 13×13 最终特征图对大物体效果很好,但对小物体来说过于粗糙。一个“passthrough”层引入了来自早期层的 26×26 特征,经过重塑后与最终特征拼接,为小物体提供了更好的定位 (+1% mAP) 。

7. 多尺度训练

由于是全卷积结构,YOLOv2 可以处理任意尺寸的图像。在训练期间,每 10 个批次,输入维度会在 320×320608×608 (32 的倍数) 之间随机切换。

这迫使网络具备尺度鲁棒性,并允许在推理时灵活权衡: 同一个训练好的模型既可以用较小输入获得高速,也可以用较大输入获得最高准确率。


更快: Darknet-19 主干网络

检测速度在很大程度上取决于主干网络。许多检测器使用的 VGG-16,在 224×224 分辨率下每次前向传播需要超过 300 亿 次浮点运算 (FLOPs) 。

YOLOv2 引入了 Darknet-19:

  • 19 个卷积层,5 个最大池化层
  • 主要使用 3×3 滤波器 (VGG 风格) ,并用 1×1 滤波器进行压缩 (Network-in-Network 风格)
  • 采用批量归一化以提高稳定性
  • 在分类前使用全局平均池化

其计算量仅 55.8 亿 FLOPs,却能在 448×448 分辨率下于 ImageNet 上取得 76.5% 的 top-1 准确率。

Darknet-19 网络的架构表。

这种精简的架构是 YOLOv2 保持实时速度的核心原因。


YOLOv2 成果: 速度 + 准确性

YOLOv2 比以往的检测器更快、更准确。

一张散点图,比较了不同目标检测模型的 FPS 与 mAP,YOLOv2 位于右上角 (最快且最准确) 。

在高分辨率下,YOLOv2 在准确性上超过了 Faster R-CNN + ResNet 和 SSD512,同时运行速度显著更快。在低分辨率下,它的速度超过 90 FPS,mAP 与 Fast R-CNN 相当。

PASCAL VOC 2012 上的结果比较了 YOLOv2 与其他框架——准确率与 SOTA 相当,但速度快得多。


更强: 飞跃至 YOLO9000

像 COCO 这样的检测数据集大约有 80 个类别,而像 ImageNet 这样的分类数据集有数万个。绘制边界框的成本远高于提供类别标签。

YOLO9000 弥合了这一差距: 它在检测数据 (COCO) 和海量分类数据 (ImageNet) 上进行联合训练,从检测图像中学习定位能力,并从分类图像中扩展其类别词汇。

挑战: 合并数据集

对所有类别使用 softmax 假设它们互斥——这在合并 COCO 的“狗”与 ImageNet 的“诺福克梗”或“西伯利亚哈士奇”时会造成问题。

解决方案: WordTree

作者利用 WordNet 的语言层次结构,构建了一个名为 WordTree 的精简视觉概念树。

  • 在每个节点预测子节点的条件概率。
  • 要得到“诺福克梗”的概率,需沿着从根节点开始的路径相乘:
\[ P("Norfolk terrier") = P("Norfolk terrier" | "terrier") \times P("terrier" | "hunting dog") \times \dots \times P("animal" | "physical\ object") \]

扁平的 1k 类 softmax 与分层 WordTree softmax 的对比。

合并 COCO + ImageNet

将每个数据集的标签映射到 WordTree 的节点,从而将它们统一起来。

一张图解,展示了 COCO 和 ImageNet 的标签空间如何合并到统一的 WordTree 层级结构中。

联合训练

  • 检测图像: 反向传播完整的 YOLOv2 检测损失 (定位 + 物体性 + 分类) 。
  • 分类图像: 找到对该标签预测概率最高的边界框,沿其在 WordTree 中的路径反向传播分类损失,并施加适度的物体性损失 (假设 IOU 匹配度约为 0.3) 。

最终的 YOLO9000 模型在 COCO 与 ImageNet 前 9000 个类别的组合上训练,可检测 9418 个类别


YOLO9000 实战

在 ImageNet 检测任务上的评估结果:

  • 在 200 个类别中,只有 44 个与 COCO 检测数据重叠。
  • 其余 156 个类别,YOLO9000 从未见过任何边界框标签——仅有分类数据。

结果:

  • 总体 mAP 为 19.7
  • 对于没有任何检测监督的类别,mAP 为 16.0

它在新的动物物种上表现优异 (与 COCO 中的动物共享物体性) ,但在 COCO 标注框缺失的衣物/装备类别上表现不佳。


结论: 检测的新范式

YOLO9000: 更好、更快、更强 名副其实:

  • 更好: 系统性改进造就了比以往顶尖模型更准确的 YOLOv2。
  • 更快: Darknet-19 和单阶段架构带来了无与伦比的速度/准确性平衡。
  • 更强: 基于 WordTree 的联合训练将检测范围扩展到超过 9000 个类别——实现了跨越式提升。

这项工作不仅仅是一次算法更新——它证明了将异构数据集合并为统一的通用视觉系统是可行的。联合训练的理念与分层标签统一的方法,为新一代大规模检测器的发展指明了方向,这类检测器能够从不同数据源学习,从而更全面地建模视觉世界。