一、YOLOv1 核心思想

1. 核心思想

YOLOv1(You Only Look Once version 1)将目标检测任务视为一个端到端的回归问题。其核心思想是:将输入图像划分为 S×S 个网格单元(grid cell),如果某个目标的中心点落在某个网格内,则该网格负责预测该目标。

在 YOLOv1 中,图像被划分为 7×7 = 49 个网格,每个网格负责检测其区域内的目标。

在这里插入图片描述

2. 示例说明

以上图为例,YOLOv1 将输入图片划分为 7×7 的网格,每个网格允许预测 2 个边界框(bounding box),这些边界框的尺寸可以超出当前网格的边界范围。

对于每个边界框,YOLOv1 预测 5 个参数

  • 中心点坐标x, y(相对于网格边界的偏移量)
  • 宽度与高度w, h(相对于整张图像的尺寸比例)
  • 置信度(Confidence):反映该框内包含目标的信心程度以及定位的准确度

在这里插入图片描述

3. 网络结构与流程图解析

网络结构组成

YOLOv1 的网络结构主要由以下部分组成:

  • 24 个卷积层:用于提取图像特征
  • 2 个全连接层:用于输出最终的预测结果

输入与输出

项目 规格
输入 448 × 448 × 3(彩色图像)
输出 7 × 7 × 30(张量)

输出张量含义

  • 7 × 7:表示将输入图片划分成 7×7 个网格,每个网格负责检测其区域内的目标。
  • 30:表示每个网格的预测信息,包含:
    • 20 个类别概率(以 PASCAL VOC 数据集为例,共 20 个类别)
    • 2 个边界框信息(每个边界框包含 x, y, w, h, confidence,共 5 个参数 × 2 = 10 个值)

坐标归一化说明

  • 中心点坐标 x, y:相对于所在网格的边界进行归一化,取值范围 [0, 1]。
  • 宽度 w 和高度 h:相对于整张图像的宽度和高度进行归一化,取值范围 [0, 1]。

在这里插入图片描述

二、YOLOv1 损失函数详解

YOLOv1 的损失函数由三部分组成:位置误差置信度误差类别概率误差

1. 位置误差(Localization Loss)

位置误差用于衡量预测边界框与真实边界框在位置和尺寸上的偏差。

计算公式要点

  • 表示网格数量(YOLOv1 中为 7² = 49)
  • B 表示每个网格预测的边界框数量(YOLOv1 中为 2)
  • 𝟙_{ij}^{obj} 表示:若第 i 个网格的第 j 个边界框负责预测目标,则值为 1,否则为 0
  • 坐标 x, y 和尺寸 w, h 的误差分别计算,并可根据需求设置不同的权重系数

权重说明:如果认为位置误差更重要,可以将对应的权重系数设置得更大;反之亦然。

2. 置信度误差(Confidence Loss)

置信度表示边界框内包含目标的概率以及定位的准确度,计算公式为:

Confidence = Pr(Object) × IoU

其中:

  • Pr(Object):边界框内存在目标的概率(存在为 1,不存在为 0)
  • IoU:预测框与真实框的交并比(Intersection over Union)

损失计算

  • 对于负责预测目标的边界框(𝟙_{ij}^{obj} = 1):计算预测置信度与真实置信度(即 IoU)之间的误差
  • 对于不负责预测目标的边界框(𝟙_{ij}^{noobj} = 1):同样计算误差,但通常给予较小的权重,以平衡正负样本

3. 类别概率损失(Classification Loss)

类别概率损失用于衡量预测的类别分布与真实标签之间的差异。

计算公式要点

  • 𝟙_{i}^{obj} 表示:若第 i 个网格包含目标,则值为 1,否则为 0
  • p_i(c) - \hat{p}_i(c):预测类别概率与真实标签(One-Hot 向量)之间的差值

示例:若模型输出 20 个类别的概率值,真实标签为"狗"(对应索引位置为 1,其余为 0),则只计算"狗"这一类别上的误差平方。

三、NMS 非极大值抑制

1. 概念

在目标检测过程中,模型通常会生成大量候选框(YOLOv1 中每个网格生成 2 个,总共 98 个候选框)。这些候选框之间可能存在重叠或包含关系,导致同一个目标被多次检测。

非极大值抑制(NMS,Non-Maximum Suppression) 的作用就是筛选出最佳的目标框,去除冗余的重复检测。

在这里插入图片描述

如上图所示,同一个人脸被多个候选框检测到,导致框与框之间严重重叠。NMS 会保留置信度最高的框,抑制其他重叠度较高的框。

2. 执行步骤

  1. 排序:根据置信度得分对所有候选框进行降序排列。
  2. 选取最高分框:选择得分最高的候选框,将其加入最终保留列表。
  3. 计算重叠度:计算当前选中框与其他所有候选框的 IoU(交并比)
  4. 抑制冗余框:若 IoU 超过设定的阈值(如 0.5),则将该候选框移除。
  5. 迭代处理:重复步骤 2~4,直到所有候选框都被处理完毕。

四、YOLOv1 优缺点分析

1. 优点

优点 说明
检测速度快 YOLOv1 专为实时目标检测设计,推理速度可达每秒数十至上百帧,远超同期算法(如 R-CNN)
端到端训练 将目标检测视为单一的回归问题,直接在全局上预测类别和位置,无需复杂的候选区域生成和后处理
多尺度预测 训练和测试阶段均对不同尺度的图像进行处理,通过网格划分和多边界框设计,适应不同尺寸的目标
网络结构简单 由 24 个卷积层和 2 个全连接层组成,结构清晰,易于实现和部署

2. 缺点

缺点 说明
小目标检测效果差 输入图像为 448×448,输出特征图仅为 7×7,下采样倍率较大,容易丢失小目标的特征信息,导致漏检或误检
网格限制 每个网格只能预测 2 个边界框且只能识别 1 个类别,在处理密集目标或多类别重叠场景时能力不足
定位精度有限 对于细长形目标或边界框与网格不对齐的情况,定位准确度不如基于锚点(Anchor)的方法
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐