一、总体概述
YOLO V1 的推理阶段 (Inference Phase) 和 非极大值抑制 (Non-Maximum Suppression, NMS) 算法,以及解决核心问题:如何从 7×7×30 的输出中获得最终的边界框和类别概率。
二、主要内容分段总结
1. 推理阶段 - 置信度分数计算 (Inference Phase)
核心公式
在推理时,YOLO 将条件类别概率与各边界框的置信度预测相乘:
Pr(Classᵢ | Object) × Pr(Object) × IOU_pred^truth
= Pr(Classᵢ) × IOU_pred^truth
公式含义
| 组件 | 含义 | 说明 |
|---|---|---|
| Pr(Classᵢ | Object) | 条件类别概率 | 给定存在目标的前提下,属于第 i 类的概率 |
| Pr(Object) | 目标存在概率 | 该边界框是否包含目标 |
| IOU_pred^truth | 交并比 | 预测框与真实框的重叠程度 |
结果解读: 这个乘积给出了每个边界框的类别特定置信度分数,同时编码了:
- 该类别出现在框中的概率
- 预测框与目标的拟合程度
推理流程可视化
视频通过四幅图展示了完整的推理流程:
| 阶段 | 图示 | 说明 |
|---|---|---|
| 1. 边界框置信度 | 密集黑色边界框覆盖图像 | 网格中每个单元的边界框预测 |
| 2. 类别概率图 | 7×7 彩色网格 | 空间类别概率分布 |
| 3. 原始检测结果 | 多色密集重叠边界框 | NMS 前的候选检测 |
| 4. 最终输出 | 干净的标注边界框 | NMS 后的最终检测结果 |
2. 预测张量结构回顾
每个网格单元的输出向量 (30维)
| Box1 (5维) | Box2 (5维) | Class Probabilities (20维) |
- Box1: (x, y, w, h, confidence) — 第一个边界框
- Box2: (x, y, w, h, confidence) — 第二个边界框
- Class Probabilities: 20个类别的条件概率 (PASCAL VOC)
总输出: 7×7 网格 × 30维 = 49个网格单元,每个预测 2个边界框,共 98个边界框
3. 非极大值抑制 (NMS) 详解 (约2:00 - 8:12)
为什么需要 NMS?
YOLO V1 的 7×7 网格产生 98个边界框预测 (49个网格 × 2个框/网格)。多个网格单元可能对同一个目标产生重叠的边界框预测,需要 NMS 来去除冗余检测。
NMS 算法步骤
视频通过具体的"Dog"类别示例,详细展示了 NMS 的完整过程:
步骤1: 置信度阈值过滤
对于每个类别(如 Dog):
- 提取所有98个边界框的类别特定置信度分数
- 将分数 < 阈值(如 0.2)的边界框分数设为 0
- 按分数降序排序
示例:
| 边界框 | 原始分数 | 阈值过滤后 |
|---|---|---|
| bb7 | 0.5 | 0.5 (保留) |
| bb46 | 0.3 | 0.3 (保留) |
| bb40 | 0.2 | 0.2 (保留) |
| bb23 | 0.1 | 0 (过滤) |
| bb84 | 0.05 | 0 (过滤) |
步骤2: 迭代式 NMS 抑制
1. 选取分数最高的边界框作为 bbox_max(如 bb7, 分数 0.5)
2. 遍历其余边界框 bbox_cur:
- 计算 IoU(bbox_max, bbox_cur)
- 如果 IoU > 0.5,则将 bbox_cur 的分数设为 0
3. 选取下一个分数最高的边界框,重复步骤2
4. 直到所有边界框处理完毕
具体示例 (Dog 类别):
| 迭代 | bbox_max | bbox_cur | IoU | 操作 | 结果 |
|---|---|---|---|---|---|
| 第1轮 | bb7 (0.5) | bb46 (0.3) | > 0.5 | 抑制 | bb46 → 0 |
| 第1轮 | bb7 (0.5) | bb40 (0.2) | > 0.5 | 抑制 | bb40 → 0 |
| 第2轮 | (下一个非零框) | … | … | … | … |
可视化说明:
- 红色边界框 (bb7): 分数最高 (0.5),紧密贴合狗 → 保留
- 黄色边界框 (bb46): 分数较低 (0.3),与 bb7 重叠度高 → 抑制
- 蓝色边界框 (bb40): 分数更低 (0.2),也与 bb7 重叠 → 抑制
步骤3: 最终结果
经过 NMS 后,对于"Dog"类别,可能只保留一个最高置信度的边界框。对于整幅图像中的所有类别分别执行 NMS 后,最终得到干净的检测结果。
NMS 对每个类别独立执行:
- Dog 类别 → 保留最佳狗的检测框
- Bicycle 类别 → 保留最佳自行车的检测框
- Person 类别 → 保留最佳人的检测框
- …
三、NMS 关键参数
| 参数 | 值 | 说明 |
|---|---|---|
| 置信度阈值 (thresh1) | 0.2 | 低于此分数的边界框被直接过滤 |
| IoU 阈值 (thresh2) | 0.5 | 重叠度超过此值的边界框被抑制 |
| 总边界框数 | 98 | 7×7 网格 × 2 个框/网格 |
| 类别数 | 20 | PASCAL VOC 数据集 |
四、核心要点总结
-
类别特定置信度: 推理时将条件类别概率与边界框置信度相乘,得到最终的检测分数
-
98个候选框: YOLO V1 产生 98 个边界框预测 (7×7×2),需要后处理
-
两步过滤: 先用置信度阈值 (0.2) 过滤低分框,再用 NMS 去除重叠框
-
NMS 核心逻辑: 选取最高分框 → 计算与其他框的 IoU → 抑制 IoU > 0.5 的框 → 重复
-
逐类别执行: NMS 对每个类别独立运行,确保不同类别的检测互不干扰
-
从混乱到清晰: NMS 将 98 个密集重叠的候选框精简为少量精确的最终检测结果
1702



被折叠的 条评论
为什么被折叠?



