一句话定义
目标检测同时回答「有什么」与「在哪里」:模型输出边界框 + 类别 + 置信度,评测用 IoU 判定预测框与真值框的重合、用 AP/mAP 汇总不同置信度下的精度表现,两阶段方法(Faster R-CNN)先提候选区再精修,NMS 负责去掉同一物体的重复框。
为什么重要
检测是自动驾驶、安防、零售等场景的默认感知原语,也是理解分割、跟踪等更复杂任务的入口;IoU/mAP/NMS 这三件套是全视觉领域的通用语言——读不懂它们,任何检测报告与论文都无法核验。
直观类比
检测像在宴会上既叫出每位宾客名字又圈出其座位:IoU 衡量「你圈的座位和真人坐的位置重合多少」(全对重叠为 1);AP 是把你的报告按自信程度从高到低读出,统计「每叫对一个人时前面已浪费了几次点名」,画成曲线下的面积;NMS 则防止把同一人反复报三次名。
前置知识
kp-016(分类与置信度概念)。
核心概念
- 边界框(Bounding Box):目标外接矩形,常以 (x, y, w, h) 或 (x1, y1, x2, y2) 表示。
- IoU(交并比):预测框 A 与真值框 B 的交集面积 / 并集面积,0 到 1。
- TP/FP/FN:与某真值 IoU≥阈值且类别正确的首个预测为 TP,其余为 FP;漏检为 FN。
- PR 曲线与 AP:按置信度降序扫过全部预测画查准-查全曲线,曲线下面积为 AP。
- mAP:对所有类别取 AP 平均;COCO 口径再对 IoU 阈值 0.50–0.95(步长 0.05)取平均。
- NMS(非极大值抑制):同类别内按置信度排序,保留最高分框并删除与其 IoU 超阈值的其余框。
- 两阶段 vs 单阶段:先提候选再分类回归(Faster R-CNN)与直接网格回归(YOLO,见 kp-018)。
原理与机制
Faster R-CNN 的骨架是「骨干特征 → RPN 在每个位置、每个锚框上预测「是否为前景 + 框修正量」→ 按分数取候选 → ROI Align 池化 → 分类头 + 回归头」。回归量采用相对锚框的归一化偏移,使回归任务与目标尺度解耦。评测机制:全部预测按置信度降序排列,逐个与未匹配真值求 IoU,达到阈值且该真值未被占用的记 TP;每加入一个预测更新一次查准/查全,得到阶梯形 PR 曲线,COCO 用全部点积分,VOC 旧口径用 11 点插值。NMS 是几乎一切检测器共用的后处理,其阈值(0.4–0.6)控制「贴得近的两个物体是否被误删」。
公式与模型
IoU = |A ∩ B| / |A ∪ B|
Precision = TP / (TP + FP) Recall = TP / (TP + FN)
AP = ∫₀¹ P(R) dR mAP = (1/C) Σ_c AP_c
COCO mAP@[.5:.95] = 均值_{t=0.50,0.55,…,0.95} mAP@tNMS 伪代码:
按置信度降序排列同类框
取最高分框 d,加入结果集;删除与 d 的 IoU > Nt 的其余框
重复直到列表为空图示
实例与案例
货架识别:一帧内数百个 SKU,两阶段检测器的高查准率适合做盘点,单阶段适合实时巡检。指标陷阱实例:某模型 mAP@0.5 为 52%,但 mAP@0.75 掉到 30%——说明定位粗但「找到」没问题,若下游要精确定位(如机械臂抓取),必须按高 IoU 阈值选模型。NMS 阈值案例:密集人群用默认 0.5 会把相邻两人框合并删除,需换 Soft-NMS 或提高阈值并接受重复框。
def iou(a, b):
x1, y1 = max(a[0], b[0]), max(a[1], b[1])
x2, y2 = min(a[2], b[2]), min(a[3], b[3])
inter = max(0, x2 - x1) * max(0, y2 - y1)
areaA = (a[2]-a[0]) * (a[3]-a[1]); areaB = (b[2]-b[0]) * (b[3]-b[1])
return inter / (areaA + areaB - inter + 1e-9)常见误区
- 只看一个 IoU 阈值的 mAP:不同阈值回答「找到没有」与「框得准不准」两个问题,报告必须写明口径。
- 认为 NMS 越激进越好:删除过多近距真框直接压低召回;密集场景需 Soft-NMS/类感知 NMS。
- 混淆 mAP 与「准确率」:AP 是按置信度排序积分的排序指标,不存在「单个阈值下的准确率」这种等价物。
- TP 判定顺序错误:同一真值只允许第一个达标预测记 TP,重复达标预测是 FP;评测实现必须按置信度排序后贪婪匹配。
与其他知识点的关系
kp-018 的 YOLO 把两阶段合并为单阶段但评测完全沿用本站;kp-019 分割把 IoU 推广到像素级掩码;kp-024 多目标跟踪的匹配代价就是框间 IoU。
自测题
- 两框完全相同,IoU 是多少?一框完全包含另一框呢?
答案要点:相同为 1;包含时 IoU = 小框面积 / 大框面积,小于 1。
- mAP@0.5 与 mAP@[.5:.95] 有何区别?
答案要点:前者只要求定位到 IoU 0.5;后者对 10 个阈值取平均,对定位精度要求更严,数值通常显著更低。
- 为什么检测框回归常用「相对锚框的偏移」而不是直接回归绝对坐标?
答案要点:绝对坐标跨尺度方差巨大,相对偏移使回归目标分布稳定,损失均衡且收敛更快。
延伸阅读
- Ren 2015《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》
- kp-018 看两阶段如何被压缩成一次前向