[LAB 09 · 检测几何:框、匹配、NMS 与 AP](/course/notebooks/90d213b4e1e04c7e889ee6fc042b2358.html) # 4 · AP 必须说明积分协议 [独立阅读](/course/notebook-blocks/03a49740c8684af3bd417c1030853845.html) 并入相关学习路径 固定框匹配、PR/AP、NMS误删相邻对象反例 ## 4 · AP 必须说明积分协议 本例使用 **all-points interpolated AP / precision envelope**:先累加 TP 和 FP,得到每个排名位置的 precision、recall;从右向左取 precision 的累计最大值,形成单调不增的上包络;只在 recall 实际增长的区间计算面积。 $ p_{\rm interp}(r)=\max_{\tilde r\ge r}p(\tilde r),\qquad \mathrm{AP}=\sum_k (r_k-r_{k-1})p_{\rm interp}(r_k). $ 实现在前后补上边界点,最后补 `(recall=1, precision=0)`,保证没有达到的召回区间贡献零。**不对原始四个 precision 求算术平均,也不使用梯形积分。** AP50 的 precision 为 `[1,1/2,2/3,1/2]`,recall 为 `[1/2,1/2,1,1]`。重复 recall 不增加面积;后半区间使用精度上包络 `2/3`,得到 $ \mathrm{AP50}=\tfrac12\times1+\tfrac12\times\tfrac23=\tfrac56. $ AP75 只召回 GT1,最大 recall 为 1/2。未召回的后半区间精度为零,故 AP75=`1/2×1+1/2×0=1/2`。 最后的可视化代码格会显示两个评价阈值下的 PR 上包络。 这里的 AP50/AP75 表示同一 all-points 协议在不同 IoU 阈值的结果。它**不等于 COCO 的 101 个 recall 采样点 AP 实现**,也不是 `0.50:0.05:0.95` 多阈值 mAP。对真实数据集,应按指定协议汇总同类预测,并在各图像内部匹配,再构建整体 PR 曲线;不能直接把单张图像 AP 的平均值当作数据集 AP。本教学实现没有 crowd、ignore、面积分组或 maxDets。