基于YOLO(You Only Look Once)的目标检测算法
题目描述
YOLO(You Only Look Once)是一种单阶段目标检测算法,其核心思想是将目标检测任务转化为一个回归问题,直接在图像上预测边界框和类别概率。与两阶段方法(如R-CNN系列)不同,YOLO无需生成候选区域,因此速度极快,适合实时应用。本题要求理解YOLO的基本原理、网络设计思路以及损失函数的构建方法。
解题过程
-
问题建模:将检测转化为网格单元预测
- 将输入图像划分为 \(S \times S\) 的网格(例如 \(7 \times 7\))。每个网格单元负责预测固定数量的边界框(如 \(B=2\))及其置信度(confidence score)。
- 置信度定义为:\(\text{Pr(Object)} \times \text{IOU}_{\text{pred}}^{\text{truth}}\)。若网格中存在目标中心点,\(\text{Pr(Object)}=1\),否则为0。IOU(交并比)衡量预测框与真实框的重合程度。
- 每个边界框需预测5个值:中心坐标 \((x, y)\)、宽高 \((w, h)\)、置信度。同时,每个网格单元预测一个类别概率向量 \(C\)(如20类物体的概率)。
-
网络设计:骨干网络与预测层
- YOLO使用卷积神经网络(如类似GoogLeNet的骨干网络)提取特征,最后通过全连接层输出张量。
- 以YOLOv1为例:输入图像尺寸为 \(448 \times 448 \times 3\),输出张量维度为 \(S \times S \times (B \times 5 + C) = 7 \times 7 \times (2 \times 5 + 20) = 7 \times 7 \times 30\)。
- 张量的每个“格子”对应一个网格单元,包含2个边界框的坐标和置信度,以及20个类别的概率。
-
损失函数:多任务加权组合
- 损失函数需同时优化边界框坐标、置信度和分类概率:
\[ \begin{aligned} \text{Loss} = &\lambda_{\text{coord}} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{\text{obj}} \left[ (x_i - \hat{x}_i)^2 + (y_i - \hat{y}_i)^2 \right] \\ &+ \lambda_{\text{coord}} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{\text{obj}} \left[ (\sqrt{w_i} - \sqrt{\hat{w}_i})^2 + (\sqrt{h_i} - \sqrt{\hat{h}_i})^2 \right] \\ &+ \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{\text{obj}} \left( C_i - \hat{C}_i \right)^2 \\ &+ \lambda_{\text{noobj}} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{\text{noobj}} \left( C_i - \hat{C}_i \right)^2 \\ &+ \sum_{i=0}^{S^2} \mathbb{1}_{i}^{\text{obj}} \sum_{c \in \text{classes}} (p_i(c) - \hat{p}_i(c))^2 \end{aligned} \]
- 关键设计:
- \(\mathbb{1}_{ij}^{\text{obj}}\) 表示第 \(i\) 个网格的第 \(j\) 个边界框是否负责预测目标(仅当目标中心落在该网格内且该框与真实框IOU最大时取1)。
- 对宽高取平方根缓解大框误差敏感性问题。
- \(\lambda_{\text{coord}}=5\) 和 \(\lambda_{\text{noobj}}=0.5\) 用于平衡正负样本权重。
-
后处理:非极大值抑制(NMS)
- 预测后,每个网格可能生成多个重叠的边界框。使用NMS过滤冗余框:
- 按置信度排序所有边界框,保留最高分框。
- 计算其余框与保留框的IOU,删除IOU超过阈值(如0.5)的框。
- 重复直至所有框被处理。
- 最终输出为保留的边界框及其类别标签。
- 预测后,每个网格可能生成多个重叠的边界框。使用NMS过滤冗余框:
-
算法演进:YOLO的改进方向
- YOLOv2/v3:引入锚框(Anchor Boxes)优化边界框先验尺寸,使用多尺度特征图检测不同大小目标。
- YOLOv4/v5:结合CSPNet、PANet等结构增强特征提取,采用CIoU损失函数提升框回归精度。
- 核心优势始终是端到端训练、高速度和易于部署。