概念
AP计算 PR曲线
的与坐标轴围成的图形的面积
mAP 所有类别的AP的均值
参考链接https://www.bilibili.com/video/BV1ez4y1X7g2?from=search&seid=13320469311104224558
sklearn中计算AP的函数sklearn.metrics.average_precision_score(y_true, y_score, average=‘macro’, sample_weight=None)
y_true
:标签
y_score
:预测值
这个函数不能直接在目标检测中计算ap,因为这个不能体现ground truth
的数量
计算过程
对于某个类别, 比如狗。
- 有非常多张图像上检测到了有狗,每张图片上不止一个。
- 所有图片上狗的总数为T,即Ground Truth的数目。
- 这些图形输入到网络,检测得到的预测框bounding box,可能与ground truth 有交集,也可能没有交集。
- bounding box与ground truth 的 IOU>0.5的认为是正样本,小于0.5的认为是负样本。
- 每个bounding box都有一个置信度,即属于狗的概率(?)
计算步骤
- 按置信度对所有的bounding box排序
- 按置信度取阈值,大于等于阈值的为True, 置信度小于阈值的为False
- 计算不同阈值下的
TP、FP、FN
。 P r e c i s s i o n = T P T P + F P 。Precission = \frac{TP} {TP+FP} 。Precission=TP+FPTP , R e c a l l = T P T P + F N Recall = \frac{TP} {TP+FN} Recall=TP+FNTP。同一Recall值下,取最大的Precission。 - 计算PR曲线与坐标轴围成的面积,即为AP
- 如果有多个类别,计算AP的均值,即为mAP。
示例如下
图片来自https://www.bilibili.com/video/BV1ez4y1X7g2?from=search&seid=13320469311104224558
总共输入了三张图片,有7个目标框。绿色的是ground truth,红色的是预测的bounding box.
按置信度排序。
置信度取0.98时precision和recall
最终结果如下
绘制PR曲线即计算AP