- 操作系统:ubuntu22.04
- IDE:Visual Studio Code
- 编程语言:C++11
这是一个目标检测(Object Detection)领域的核心评估指标问题,也是面试和论文中必考内容。我们从 mAP 是什么 → 如何计算 → P-R 曲线怎么看 三层递进,彻底讲透!
一、mAP 是什么?
✅ 全称:
- mAP = mean Average Precision
- 中文:平均精度均值
🧠 核心思想:
mAP 是对所有类别分别计算 AP(Average Precision),再取平均,用于综合衡量检测器的"精度"和"召回能力"。
- AP(Average Precision):单个类别的检测性能
- mAP:所有类别的平均性能(如 COCO 有 80 类 → mAP = 80 个 AP 的平均)
💡 mAP 越高,模型越好。COCO 榜单、YOLO 论文、工业落地都以 mAP 为核心指标。
二、如何计算 mAP?(以 COCO 为例)
计算 mAP 分为 4 步:
-
第 1 步:对每个类别,收集所有预测框
- 输入:模型对测试集的所有预测结果
- 对每个类别(如"人"):
- 提取所有预测为"人"的框,包括:
- 边界框坐标
- 置信度分数(confidence)
- 是否为 TP(True Positive)或 FP(False Positive)
- 提取所有预测为"人"的框,包括:
✅ TP / FP 判断规则(关键!):
- 将预测框与真实框(GT)匹配
- 若 IoU ≥ 阈值(如 0.5) 且类别正确 → TP
- 否则 → FP
- 每个 GT 最多匹配一个预测框(避免重复计数)
-
第 2 步:按置信度排序,计算 P-R 曲线
- 将该类别的所有预测框按置信度从高到低排序
- 依次累加 TP 和 FP,计算:
- Precision(精度) = TP / (TP + FP)
- Recall(召回率) = TP / (所有真实目标数)
📌 注意:随着阈值降低(更多低分框被纳入),Recall ↑,Precision ↓
- 第 3 步:计算 AP(Average Precision)
AP 就是 P-R 曲线下的面积(AUC),但有不同计算方式:
✅ 1. VOC2007 AP(11点插值法)
- 在 Recall = 0.0, 0.1, 0.2, ..., 1.0 处,取对应的最大 Precision
- AP = (1/11) × Σ max(Precision at r ≥ r_i)
📉 缺点:粗糙,忽略曲线细节
✅ 2. VOC2012 / COCO AP(所有点插值法)
- 对每个 Recall 值,取其右侧最大 Precision(保证曲线单调)
- AP = ∫₀¹ P® dr ≈ 所有 Recall 点的 Precision 平均(更精确)
📌 COCO 默认使用此方法
✅ 3. COCO 的 mAP@[.5:.95](更严格!)
- 不只用 IoU=0.5,而是用 IoU 从 0.5 到 0.95,步长 0.05(共 10 个阈值)
- 对每个 IoU 阈值计算 AP,再平均:
bash
AP@.5:.95 = (AP@0.5 + AP@0.55 + ... + AP@0.95) / 10
- 最终 mAP = 所有类别的 AP@.5:.95 的平均
💡 COCO 榜单的 mAP 通常指 mAP@.5:.95,比 VOC 的 mAP@0.5 更难、更真实!
-
第 4 步:计算 mAP
-
对每个类别计算 AP
-
mAP = (AP₁ + AP₂ + ... + APₙ) / n
三、P-R 曲线怎么看?
✅ P-R 曲线(Precision-Recall Curve):
- X 轴:Recall(召回率)→ 越高表示漏检越少
- Y 轴:Precision(精度)→ 越高表示误检越少
- 曲线越靠近右上角,模型越好
🖼️ 举个栗子:
模型 | P-R 曲线形状 | 解读 |
---|---|---|
理想模型 | 从 (0,1) 到 (1,1) 的水平线 | 所有预测都正确,无漏检无误检 |
高 Precision | 曲线靠上,但很快下降 | 误检少,但漏检多(保守) |
高 Recall | 曲线靠右,但 Precision 低 | 漏检少,但误检多(激进) |
好模型 | 整体在右上方,面积大 | 精度和召回平衡 |
📌 AP = P-R 曲线下的面积 → 面积越大,AP 越高!
四、mAP vs 其他指标
指标 | 含义 | 缺点 |
---|---|---|
Accuracy | (TP+TN)/(TP+FP+TN+FN) | 目标检测中背景区域巨大,Accuracy 无意义 |
F1-score | 2×(P×R)/(P+R) | 只反映单个阈值下的性能 |
mAP | 综合所有阈值、所有类别的 P-R 性能 | ✅ 最全面、最权威 |
五、面试加分回答(STAR 法则)
"在我们的交通标志检测项目中,初始模型 mAP@0.5 为 78%,但 mAP@.5:.95 仅 45%,说明模型在高 IoU 下定位不准。我们引入 DIoU Loss 和更精细的 Anchor,mAP@.5:.95 提升到 58%。通过分析 P-R
曲线,发现小标志的 Recall 低,于是增加 Mosaic 数据增强,最终 mAP@.5:.95 达到 63%。"
✅ 总结一句话:
mAP 是目标检测的"黄金标准",它通过 P-R 曲线下的面积(AP)衡量模型在不同置信度下的综合性能,再对所有类别取平均;COCO
的 mAP@.5:.95 更严格,要求模型在高定位精度下依然有效。
📌 附:常用 mAP 表示法
表示 | 含义 |
---|---|
mAP@0.5 | IoU 阈值=0.5 时的 mAP(VOC 标准) |
mAP@0.5:0.95 或 mAP@[.5:.95] | IoU 从 0.5 到 0.95 的平均 mAP(COCO 标准) |
mAP_s / mAP_m / mAP_l | 分别表示小/中/大目标的 mAP(COCO 提供) |