YOLOv1#

以下是关于 YOLOv1 的详细阐述,结合其核心原理、网络设计及局限性等关键点进行结构化分析:

相反,我们将对象检测定义为

网络架构设计#

../../_images/yolov1-a.png

图 17 YOLOv1 将检测建模为 S×S×(B5+C) 张量的回归问题。此张量对图像中所有对象的边界框和类概率进行编码。其中 S=7(网格大小),B=2 为边界框个数,C=20(VOC数据集类别数)。#

YOLOv1 将输入图像划分为 S×S 网格。如果对象的中心落入网格单元中,则该网格单元负责检测该对象。每个网格单元预测一个边界框和与该边界框关联的类别概率,请参见 图 17

../../_images/yolov1-net.png

图 18 检测网络有 24 个卷积层(提取特征),后跟 2 个全连接层(预测输出概率和坐标)。该网络使用跨步(strided)卷积层来对特征空间进行下采样,而不是最大池化层。交替使用 1×1 卷积层可减少前一层的特征空间。在 ImageNet 分类任务上以一半的分辨率(224×224 输入图像)对卷积层进行预训练,然后将分辨率提高一倍进行检测。#

网络的最终输出是 S×S 的预测网格。每个网格单元格预测 C 个条件类概率和 4 个边界框坐标。

最后一层预测类概率和边界框坐标。通过图像宽度和高度对边界框的宽度和高度进行标准化,使它们介于 01 之间。将边界框 xy 坐标参数化为特定网格单元位置的偏移量,以便它们也以 01 为边界。使用 logistic 激活函数将这些约束反映在最后一层。所有其他层使用以下 Leaky ReLU 激活。

损失函数设计#

以下是YOLOv1损失函数设计的详细解析,结合其核心原理与实现逻辑整理:

YOLOv1的损失函数由三部分构成,旨在平衡目标定位、置信度预测和分类精度:

  1. 坐标定位误差(Localization Loss)
    优化边界框中心点坐标 (x,y) 和宽高 (w,h) 的预测误差。

  2. 置信度误差(Confidence Loss)
    区分预测框是否包含物体,同时衡量预测框与真实框的交并比(IoU)。

  3. 分类误差(Classification Loss)
    预测网格内物体的类别概率分布。

坐标定位误差#

  • 中心点坐标误差:
    $λcoordi=0S2j=0B1ijobj[(xix^i)2+(yiy^i)2]$

  • 宽高误差(平方根处理):
    $λcoordi=0S2j=0B1ijobj[(wiw^i)2+(hih^i)2]$

    • 关键设计:对宽高取平方根,缓解大目标与小目标的尺度敏感性问题(相同绝对误差对小目标影响更大)。

    • 权重:λcoord=5,增强定位精度的重要性。

  1. 置信度误差

  • 含物体的置信度误差:
    $i=0S2j=0B1ijobj(CiC^i)2$

  • 不含物体的置信度误差:
    $λnoobji=0S2j=0B1ijnoobj(CiC^i)2$

    • 权重平衡:λnoobj=0.5,抑制无物体网格的梯度影响(避免负样本主导训练)。

  1. 分类误差

  • 公式:
    $i=0S21iobjcclasses(pi(c)p^i(c))2$

    • 仅对有物体的网格计算,预测20类(VOC数据集)的概率分布。

    • 局限性:采用均方误差而非交叉熵,分类效果弱于现代方法。

后续改进方向 YOLOv2及后续版本针对上述问题优化:

  • 引入锚框(Anchor Boxes)提升定位精度。

  • 分类损失改用交叉熵。

  • 多尺度预测解决小目标检测问题。

训练策略#

  1. 预训练与微调:

    • 在 ImageNet 上预训练前 20 层(输入 224×224),后 4 层卷积和全连接层随机初始化;

    • 微调阶段将输入分辨率提升至 448×448,增强细节感知。

  2. 数据增强:采用随机缩放、平移和调整曝光度,提升模型泛化能力。

局限性#

YOLOv1 对边界框预测施加了很强的空间限制,因为每个网格单元格只预测一个框。此空间约束限制了模型可以预测的附近对象的数量。如果两个对象落入同一个单元格,模型只能预测其中一个。模型难以处理成群出现的小物体,例如鸟群。由于模型学习从数据中预测边界框,因此它很难推广到具有新的或不寻常的纵横比或配置的对象。模型还使用相对粗略的特征来预测边界框,因为架构从输入图像中有多个下采样层。最后,当我们训练近似检测性能的损失函数时,我们的损失函数在小边界框和大边界框中处理错误的方式相同。大盒子中的小错误通常是良性的,但小盒子中的小错误对 IOU 的影响要大得多。我们的主要错误来源是不正确的局部化。