支持通配符SSL证书、多域名证书、IP证书。适配ACME接口, 支持Zerossl、Let's Encrypt和Google等渠道
2026-05-29 18:01:12 目标检测 AP mAP 评估指标
搞目标检测评估,绕不开 mAP,但 mAP 又建立在每个类的 AP 上,AP 又是从 PR 曲线来的。所以干脆从头理一遍。
AP,全称 Average Precision,平均精度。
最直接的理解就是 PR 曲线下面的面积。PR 曲线以 recall 为横轴,precision 为纵轴,那条线怎么画出来的后面会讲。数学形式上就是那个积分:
$$AP = \int_{0}^{1} P(r) , dr$$
P(r) 表示召回率等于 r 时的精度。但实际计算不可能真去积分,都是离散求和。
常用的有两种:11 点插值和 101 点插值。11 点就是在 recall = 0, 0.1, 0.2, ..., 1.0 这 11 个位置上取值,101 点就是步长 0.01。
注意,直接拿原始 precision 值算会出问题——PR 曲线经常上蹿下跳,所以需要做插值平滑。插值逻辑很简单:对于某个 recall 阈值 r,找出所有 recall ≥ r 的位置,取这些位置对应的最大 precision,作为 r 点的插值精度。
这样曲线就变成了单调下降的,面积才好算。
$$AP = \frac{1}{N} \sum_{r \in R} P_{\text{interp}}(r)$$
R 就是你那些离散的 recall 点,N 是点的个数。实际代码里这一步一般都封装好了,但自己写一遍能避开不少坑。
到多类别检测的时候,每个类单独算一个 AP,然后取平均就是 mAP:
$$mAP = \frac{1}{C} \sum_{i=1}^{C} AP_i$$
C 是类别数。
IoU 阈值这事经常被一笔带过,其实挺关键的。
AP50 就是 IoU 阈值设为 0.5,框和真值重叠超过 50% 就算匹配上了,定位要求比较松。AP75 阈值 0.75,严了不少。所以看 AP50 高但 AP75 低,大概率是框回归得不够准。AP50 适合对位置没那么敏感的任务,AP75 用在需要精确定位的场景。
拿个小例子走一遍计算流程,会更清楚。
假设某个类别有 3 个真值框,模型预测出 4 个框,按置信度从高到低排好,和真值逐一比对后的匹配情况大概是:
这里匹配的判定取决于你设定的 IoU 阈值,比如设为 0.5。还要注意一个真值框只能被匹配一次,后面再撞上同一个真值就算 FP 了。
计算过程大致五步:
刚开始看可能觉得绕——什么 11 点插值、all-point 插值,其实动手算一次就能绕过那个弯。
线上评测基本直接调 COCO 的 eval 脚本,看不到内部这些步骤,但知道原理在 debug 时很有用,比如发现 mAP 掉点,你可以马上拆开看是 recall 起不来还是 precision 崩了,问题定位会快得多。
最后想提一句,AP 是个综合指标,单个数字概括能力挺强,但别只盯这一个。把 AP50、AP75,以及不同尺度下的 AP 都摊开看,往往能更准地摸到模型的毛病。