1. mAP 基础概念:从 Precision/Recall 到 AP 再到 mAP
做目标检测,绕不开一个指标——mAP。很多初学者一上来就被它吓住,觉得公式又多又绕。其实没那么复杂。我刚开始接触检测时也懵过,后来发现只要把 Precision、Recall、IoU 这几个基础概念吃透,mAP 就是个顺理成章的结果。
今天咱们就把这层窗户纸捅破。
1.1 先搞清楚 Precision 和 Recall
这两个词,说白了就是「查得准不准」和「查得全不全」。
- Precision(精确率):你预测出来的框里,有多少是真正对的?
- Recall(召回率):所有真实的目标里,你找出来了多少?
举个例子。一张图里有 5 只猫。你的模型输出了 10 个框,其中 4 个框对了(真的框住了猫),6 个框错了(框到了狗或者背景)。那么:
- Precision = 4 / 10 = 0.4
- Recall = 4 / 5 = 0.8
嗯,这里要注意:Precision 和 Recall 是一对冤家。你想想看,如果模型只输出最有把握的那 1 个框,Precision 可能很高(比如 1.0),但 Recall 会很低(0.2)。反过来,如果模型见啥都框,Recall 能接近 1.0,但 Precision 会惨不忍睹。
1.2 IoU:框与框之间的「重叠度」
判断一个预测框「对不对」,不能光看它有没有框住目标,还得看它框得准不准。这就轮到 IoU 登场了。
IoU(Intersection over Union,交并比)的计算方式很简单:
IoU = 预测框与真实框的交集面积 / 预测框与真实框的并集面积
说白了就是两个框重叠的部分除以它们合起来的总面积。IoU 的取值范围是 [0, 1],越接近 1 说明框得越准。
我习惯把 IoU 分成几个档次:
| IoU 范围 | 含义 | 常见用途 |
|---|---|---|
| 0.9 ~ 1.0 | 几乎完美重合 | 精标注、微调验证 |
| 0.7 ~ 0.9 | 框得很准 | 严格评估(如自动驾驶) |
| 0.5 ~ 0.7 | 基本框住 | 通用检测评估(PASCAL VOC 标准) |
| 0.3 ~ 0.5 | 勉强沾边 | 宽松场景、大目标检测 |
| < 0.3 | 基本算错 | 通常视为误检 |
1.3 从 Precision-Recall 曲线到 AP
有了 Precision 和 Recall,我们就能画出一条 PR 曲线。但光看曲线还不够直观,我们需要一个数值来量化模型的整体表现——这就是 AP(Average Precision,平均精度)。
AP 的计算思路是:在 Recall 从 0 到 1 的区间上,对 Precision 求平均。具体做法有两种主流方式:
- VOC 2007 方式:在 Recall 的 11 个等分点(0, 0.1, 0.2, ..., 1.0)上取 Precision 的最大值,然后求平均。
- VOC 2010+ / COCO 方式:对所有 Recall 变化点对应的 Precision 做积分(实际是梯形法求面积),精度更高。
我个人更推荐用 COCO 的方式,因为它对模型性能的刻画更细腻。不过很多老项目还在用 VOC 2007 的方式,迁移时要注意区分。
1.4 mAP:多类别的平均 AP
AP 是针对单个类别算的。比如你的模型要检测猫、狗、车三个类别,那每个类别都会有一个 AP 值。mAP(mean Average Precision)就是把这些 AP 值取个平均。
公式很简单:
mAP = (AP_猫 + AP_狗 + AP_车) / 3
但这里有个坑——不同数据集对 mAP 的定义细节不一样:
| 数据集 | IoU 阈值 | AP 计算方式 | mAP 含义 |
|---|---|---|---|
| PASCAL VOC | 0.5 | 11 点插值或面积积分 | 所有类别的 AP 均值 |
| MS COCO | 0.5:0.95(步长 0.05) | 101 点插值 | 10 个 IoU 阈值下的 mAP 再平均 |
| OpenImages | 0.5 | 面积积分 | 所有类别的 AP 均值 |
你想想看,COCO 的 mAP 要求 IoU 从 0.5 到 0.95 都表现好,这比 VOC 只要求 0.5 要严格得多。所以同一个模型在 COCO 上的 mAP 通常比 VOC 上低不少,这不代表模型变差了,只是评估标准变了。
1.5 知识体系总览
下面这张图把 mAP 的整个知识链条串起来了。从最底层的 IoU 和置信度阈值,到 Precision/Recall 的计算,再到 PR 曲线和 AP,最后汇聚成 mAP。建议你保存下来,后面几章会反复用到这些概念。
1.6 本章小结
到这里,mAP 的基础概念就讲完了。咱们捋一下核心脉络:
- IoU 是判断预测框准不准的尺子,阈值选多少直接影响评估结果。
- Precision 和 Recall 是一对 trade-off,通过置信度阈值来调节。
- PR 曲线 把这对 trade-off 可视化,曲线下的面积就是 AP。
- 把所有类别的 AP 取平均,得到 mAP——目标检测领域最通用的评估指标。
这些概念看起来多,其实核心就一条线:从框的匹配(IoU)到单类表现(AP),再到全局表现(mAP)。后面几章我们会在这个基础上,深入 mAP 的代码实现、调优技巧,以及如何用它来指导模型改进。