Ch.15
目标检测(Object Detection):R-CNN 家族与 YOLO 的对决(寻找边界框)
目标检测一览
R-CNN 像 逐个打开 候选箱子验货;YOLO 像 各区域负责人同时汇报 的现场巡检。
在同一张照片里找 「狗在哪里?」 时,R-CNN 会先提出 很多可疑区域(候选框),再逐个确认。YOLO 把照片切成 网格,每个格子 同时 报告位置和类别。最后用 去重 NMS(Non-Maximum Suppression,打扫重叠框)整理结果,用 成绩单 mAP(mean Average Precision,综合分数)评估找得准不准。
R-CNN:先选候选再确认 · YOLO:每格一次搞定
先画很多 虚线候选框(「这里可能有东西」),确认后只留 一条实线框。
R-CNN · 2-stageR-CNN先画很多 虚线候选框(「这里可能有东西」),确认后只留 一条实线框。
YOLO把照片分成 网格,每个格子 一次 同时说出自己区域的 位置和类别。
一张照片怎样被处理
- 先放入一张 RGB 照片。和分类不同,目标是找出 多个物体分别在哪里。
- CNN 骨干网 把照片变成 特征图,后面的步骤读取这些特征来画框。
- R-CNN 会提出 很多可能含物体的候选区域。YOLO 把图像分成 S×S 网格。
- 在每个 候选区或网格格 里,同时预测 是什么(类别) 和 在哪里(框)。
- 用 去重(NMS) 去掉同一物体上重叠的框,再用 成绩单(mAP) 和 重叠度(IoU) 评估有多准确。
分类问「照片里有猫吗?」目标检测再进一步:「猫在哪个位置(X,Y)、多大(W,H)?」 —— 画出 边界框。它是自动驾驶、质检机器人、机器人视觉的核心。
本章介绍分裂该领域的两种思路:谨慎的两阶段 R-CNN(先找可疑区域再确认)与 闪电般的一阶段 YOLO(把图像切成格子一次扫完)。并比较设计差异与衡量框质量的易懂指标。
如何读公式(目标检测)
1. IoU — 核心公式
- 交: 重叠
- 并: 合并区域
2. 边界框坐标 — 照片上的框怎么写?
围绕物体的 矩形框 常用两种写法:
- 角点式: 左上、右下 (x_min, y_min, x_max, y_max) — 标 两个角
- 中心式: 中心 (cx, cy) 加 宽和高 (w, h) — 中心 + 大小
w, h 是框的 宽和高, 面积大约 w×h。
YOLO 常按图片或网格格大小缩到 0~1。(例: 宽为图片一半 → 0.5)
3. NMS(Non-Maximum Suppression)— 同一个人上5个框? 只留1个
检测器在同一人周围画 5个框 会很乱。NMS 是清理重叠框的 打扫 步骤。
1. 按 置信度从高到低 排队
2. 保留第一名 的框
3. 与第一名 重叠太多 的框(IoU超阈值) 删掉, 对剩余框重复
要点: 同一物体只留 最确信的那一个框。
4. mAP(mean Average Precision)— 检测器的成绩单
mAP 是看模型 找得多准 的 综合分数。
- 每类 算 PR 曲线下 AP
- 各类 AP 的平均 就是 mAP
- 预测框与真值 至少一半重叠(IoU ≥0.5) 才算 答对
分数越高 误检越少, 漏检也越少。
目标检测:R-CNN vs YOLO
1. 分类 vs 检测:从「是什么」到「在哪里的什么」
图像分类问「房间里有猫吗?」目标检测问「猫在哪里?」要给多个物体画框并说出名字,任务更丰富。
2. R-CNN 系(两阶段):谨慎的侦探
① 先提出很多「这里可能有东西」的候选区域 →
② 逐个细看:「是猫!框应该这么大!」准确但两阶段较慢。
3. YOLO(一阶段):一眼看穿的保安
YOLO 名副其实 —— 图像只看一次。切成 S×S 网格,每个格子同时喊「我这格有狗!」并画框,实时场景极快。
4. 质量工具:IoU · NMS · mAP
- IoU: 预测框与真值框重叠多少(0~1),核心是交集÷并集,完整式见公式导读。
- NMS(Non-Maximum Suppression): 同一只狗上框太多时,打扫后只留最确信的一个。
- mAP(mean Average Precision): 找得准不准、框画得好的总成绩单。
重要性
能在现实世界行动的 AI「眼睛」
自动驾驶要知道行人、车辆的精确位置才能刹车;机器人要知道抓哪里。检测给 AI 空间理解,不止整图一个标签。
要速度还是精度?按场景选
CCTV、自动驾驶用 YOLO(一阶段);医疗影像找微小病灶用 R-CNN(两阶段)。了解两者才能选对工具。
没有指标就说不出好坏
类名对了但框偏了也没用。IoU 和 mAP 是客观证据和改进方向。
通向分割的垫脚石
框只是粗略外接矩形。掌握检测后自然延伸到像素级 分割。
如何使用
第1步:准备数据与框坐标
标注每个物体位置,统一用 (x_min, y_min, x_max, y_max) 或 (cx, cy, w, h)。
第2步:按需求选网络
要实时选 YOLO 类网格模型;要小目标高精度选带 RPN 的 Faster R-CNN。
第3步:训练 — 匹配与损失
用 IoU 对齐预测与真值,同时减小分类误差和回归误差。
第4步:去重(NMS)与成绩单(mAP)
去掉低分框,用 NMS(Non-Maximum Suppression,打扫重叠框) 整理重复,用验证集 mAP(mean Average Precision,综合分数) 看模型好不好。
小结
一句话: 目标检测同时找每个物体的类别和框,分为仔细的 两阶段 R-CNN 与快速的 一阶段 YOLO。
要点: IoU 量重叠,NMS(去重) 整理重复框,mAP(总成绩) 衡量整体表现。
下一章: 从框到 分割 —— 像素级轮廓。
解题说明
先这样读题再动手
- 先分清考点: 分类 vs 检测 / R-CNN 两阶段 vs YOLO 一阶段 / IoU·NMS·mAP
- 计算题固定套路: YOLO 网格 S×S → 总格数 S² (例: S=7 → 7×7=49)
- IoU·并集: 并集 = A + B − 交集, 重叠 4×4 → 面积 16
示例 (概念型)
「目标检测的目标最接近?」
① 整图一个类
② 每个物体的框+类别
③ 只做像素分割
④ 只调学习率
答案 2
为什么? 检测要同时找 是什么 + 在哪里; 分类只给整图一个标签。
示例 (判断型)
「YOLO 总是只用两阶段」
答案 0 (错)
为什么? YOLO 在 S×S 网格上一阶段 一次预测框和类别。
示例 (计算型)
「YOLO 网格 S=7, 总格数?」 → 7×7=49
按题型示例 + 正解理由
示例 (情景型)
「推理后同一人周围重叠 5 个框, 先做?」
① NMS 去重
② 打乱标签
③ 骨干 0 层
④ 去掉 mAP
答案 1
为什么? 重叠重复框用 NMS 整理。
示例 (选择计算型)
「框 A·B 各面积 32, 交集 16, 并集面积?」
答案 48 (32+32-16)
为什么? 并集 = A + B − 交集 的固定模式。
示例 (网格型)
「YOLO 网格 S=9, 总格数?」
答案 81 (9×9)
为什么? S×S 网格是一边格数的平方。
示例 (综合推理型)
「CCTV 需要实时推理, 选哪种结构?」
① 只用 Selective Search
② 只用原版 R-CNN
③ YOLO 类一阶段
④ 停止增强
答案 3
为什么? 速度优先时先考虑 一阶段 YOLO。