目标检测指标评估_mAP(mean Average Precision平均精度均值)计算方法

理解 mAP,最关键的是先理解 PR 曲线(Precision-Recall Curve,精确率-召回率曲线)。PR 曲线描述:当我们不断调整目标检测模型的置信度阈值时,模型的精确率和召回率如何变化;AP 则是对这条曲线进行综合计算得到的指标,mAP 再对多个类别的 AP 求平均。

一、先从一个船舶检测例子理解

1. 先理解 Precision、Recall 和 IoU

IoU:预测框与真实框有多重合?

IoU(Intersection over Union,交并比)衡量预测框和真实标注框的重叠程度。

IoU=预测框与真实框的交集面积预测框与真实框的并集面积 IoU=\frac{\text{预测框与真实框的交集面积}} {\text{预测框与真实框的并集面积}} IoU=预测框与真实框的并集面积预测框与真实框的交集面积

高 IoU: 预测框和真实框高度重合,位置较准确。

低 IoU: 预测框偏移较大,与真实目标的重叠程度较低。

例如,某个预测框与真实框的交集面积为 80,两个框的并集面积为 100,则:

IoU=80100=0.8 IoU=\frac{80}{100}=0.8 IoU=10080=0.8

在常见的 mAP@0.5 评估中,如果预测类别正确,且 IoU 达到 0.5 或以上,这个预测才可能被判为正确检测(TP)。具体还要考虑同一个目标是否已经被其他预测匹配。

Precision:预测出来的目标有多少是真的?

Precision=TPTP+FP Precision=\frac{TP}{TP+FP} Precision=TP+FPTP

  • TP:正确检测到的目标。
  • FP:误检,即模型预测有目标,但没有正确匹配到真实目标。

例如,模型预测了 10 艘船,其中 8 个预测符合评估规则,则 Precision 为 80%。

Recall:真实存在的目标有多少被找到了?

Recall=TPTP+FN Recall=\frac{TP}{TP+FN} Recall=TP+FNTP

  • FN:漏检,即真实存在的目标没有被正确检测出来。

例如,图像中有 20 艘真实船舶,模型只检测出 15 艘,则 Recall 为 75%。

Precision 和 Recall 存在权衡:降低检测置信度阈值,通常能找出更多目标,但也可能引入更多误检。

假设一组评测图片中一共有 10 艘真实船舶

模型预测了很多候选框,每个框都有一个置信度,表示模型认为它是船舶的程度。

例如:

  • 置信度为 0.95:模型认为这个框有 95% 的把握是船舶。
  • 置信度为 0.60:模型认为这个框有 60% 的把握是船舶。

这里的置信度不是经过校准后必然准确的概率,而是模型输出的检测分数。

我们可以设置不同的置信度阈值,只保留分数达到阈值的预测框,然后计算 Precision 和 Recall。

Precision=TPTP+FP Precision=\frac{TP}{TP+FP} Precision=TP+FPTP

Recall=TPTP+FN Recall=\frac{TP}{TP+FN} Recall=TP+FNTP

其中:

  • TP:正确检测到的船舶数量(True Positive)。
  • FP:误检出来的目标数量 (False Positive)。
  • FN:没有检测到的真实船舶数量 (False Negative)。

举个例子,阈值设为 0.7 时,模型保留 5 个预测框,其中 4 个正确匹配真实船舶,那么:

Precision=45=0.8 Precision=\frac{4}{5}=0.8 Precision=54=0.8

如果这 4 个正确检测覆盖了 10 艘真实船舶中的 4 艘,那么:

Recall=410=0.4 Recall=\frac{4}{10}=0.4 Recall=104=0.4

因此,这个阈值对应 PR 曲线上的一个点:(Recall,Precision)=(0.4,0.8)(Recall, Precision)=(0.4,0.8)(Recall,Precision)=(0.4,0.8)。

二、PR 曲线示例图

下面这张图是一个示意性的船舶检测 PR 曲线。横轴是 Recall,纵轴是 Precision。

示意图用于辅助理解曲线形状;下面的数值例子和计算以明确给出的数据为准。

也可以查看这张由示例数据绘制的曲线:

PR 曲线示例图

怎么理解这条曲线?

  • 左上角越好:Precision 和 Recall 都高,误检少,同时漏检也少。
  • 向右移动:Recall 增大,通常意味着降低置信度阈值,找出更多真实目标。
  • 向下移动:Precision 降低,说明加入的低置信度预测中,可能有更多误检。
  • 曲线越靠近右上角,通常检测性能越好。

注意:PR 曲线并不一定严格单调下降,因为真实检测结果中的预测分数、误检和漏检的排列会影响曲线形状。

三、AP 怎么计算?为什么说它是曲线下面积?

AP 是 Average Precision。直观上,它衡量整个 PR 曲线的综合表现,而不是只看一个阈值下的 Precision。

AP≈∫01P(R),dR AP \approx \int_0^1 P(R)\\,dR AP≈∫01P(R),dR

其中:

  • RRR 是 Recall。
  • P(R)P(R)P(R) 是对应 Recall 下的 Precision。

可以把 AP 理解成:沿着横轴 Recall 从 0 走到 1,把曲线下方的面积累积起来。

为了简单说明,我们用一组离散数据计算。假设某船舶类别得到如下 PR 点:

Recall Precision
0.0 1.00
0.2 0.95
0.4 0.90
0.6 0.80
0.8 0.60
1.0 0.30

如果用梯形法近似计算曲线面积:

AP≈∑iPi+P_i+12(R_i+1−Ri) AP\approx\sum_i \frac{P_i+P\{i+1}}{2}(R\{i+1}-R_i) AP≈i∑2Pi+P_i+1(R_i+1−Ri)

逐段计算:

AP≈0.195+0.185+0.170 +0.140+0.090 =0.780 \begin{aligned} AP \approx {}& 0.195+0.185+0.170\\\ &+0.140+0.090\\\ ={}&0.780 \end{aligned} AP≈ =0.195+0.185+0.170+0.140+0.0900.780

因此,这个示例的梯形面积约为 0.78,即 78%。

需要强调:这只是为了教学而使用的梯形积分示例。实际目标检测评估中,AP 的具体计算方式取决于评测协议。例如,VOC 的不同版本和 COCO 都可能使用不同的插值与积分规则,所以不能仅凭几个采样点就认定真实模型的 AP。

四、mAP 怎么计算?

如果只检测一个类别,例如只有 ship,那么在相同评测协议下,mAP 就等于这个类别的 AP。

如果检测多个类别,则先分别计算每个类别的 AP,再取平均:

mAP=1C∑c=1CAPc mAP=\frac{1}{C}\sum\{c=1}^{C} AP_c mAP=C1∑_c=1CAPc

假设某模型的结果如下:

类别 AP
货船 0.90
快艇 0.80
油轮 0.70

则:

mAP=0.90+0.80+0.703=0.80 mAP=\frac{0.90+0.80+0.70}{3}=0.80 mAP=30.90+0.80+0.70=0.80

也就是 mAP 为 80%。

另外,目标检测中的 AP 和 mAP 通常还要指定 IoU 阈值。比如:

  • mAP@0.5:IoU 阈值为 0.5 时,各类别 AP 的平均值。
  • mAP@0.5:0.95:分别在 0.50、0.55、......、0.95 的 IoU 阈值下计算 mAP,再对这些结果求平均。

所以,在面试中听到"mAP 提升了 8 个百分点",一定要追问:究竟是哪种 mAP?从多少提升到多少?评测集是否固定? 只有把这些条件说清楚,才能判断这个提升是否可信。

相关推荐
Shulex1 小时前
备战黑五:如何用 AI 智能客服守住独立站转化率与退换货成本?
人工智能·智能客服·跨境电商
Navicat中国1 小时前
如何将 Navicat 的 AI 助手连接到本地 LLM
数据库·人工智能·navicat·本地llm
网易易盾1 小时前
广告合规系统如何选?检出能力、接入成本与运营闭环评估
大数据·人工智能
深圳市益普科技有限公司1 小时前
Micro-LED量产线MES,中试线转量产要不要重做一遍
人工智能
北极星电力网1 小时前
实录 | 北极星第三届源网荷储一体化暨绿电直连高质量发展交流会落幕
大数据·人工智能
愤怒的代码1 小时前
读懂大模型的"记忆":KV Cache 到底是什么?
人工智能·llm·agent
Joecien1 小时前
qwen-mt-uni 多模态翻译实战:从接入到四类输入的完整步骤
人工智能·自然语言处理·机器翻译