目标检测中如何计算AP和mAP以及绘制P-R曲线以及SSD中如何修改代码来输出AP和绘制P-R曲线

本文详细介绍了目标检测中计算平均精度(AP)的理论知识,包括VOC的11Point方法,并展示了如何修改SSD(Caffe版本)代码以输出AP和绘制P-R曲线。通过修改bbox_util.cpp、bbox_util.hpp、solver.cpp、caffe.proto以及score_ssd_pascal.py文件,实现显示每类的AP值和P-R曲线的绘制。此外,还提供了相关资源链接以供进一步学习。
摘要由CSDN通过智能技术生成

0. 写作目的

好记性不如烂笔头。

1. 计算AP(Average Precision)的理论知识

对于每一类目标检测给出的置信度(Confidence),首先按照Confidence降序排列,然后将交并比(IOU)>0.5的当做正确预测的结果,否则为错误预测的结果。然后依据预测结果的正确与否计算TP(True Positive), FP(False Positive), FN(False Negative),TN(True Negative),依据TP, FP, FN, TN来计算召回率(Recall, 查全率)和精确度(Precision, 查准率)。

                                                                  \large Precision= \frac{TP}{TP+FP }

                                                                      \large Recall= \frac{TP}{TP+FN}

我们平时所说的Accuracy的计算公式为:

                                                               \large Acc==\frac{TP + TN}{TP+TN+FP+FN}

然后依据Confidence排序后的顺序依次计算出Precision和Recall,理论上AP的计算为,由Precision和Recall构成的折线图的面积,但在实际计算时,主要有三种计算方法。

三种AP的计算方法:

1) VOC2007的11Point方法(MAXIntegral方法)

2) VOC2012 Integral方法(Natural Integral方法)

3)coco的计算方法

这三种计算AP的方法只是在积分上有不同,计算方法是类似的。11Point方法是在MaxIntegral方法中找到11个最大的Precision,然后结合Recall = [0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0],绘制出P-R曲线,并通过如下公式计算出AP:

                                                          \large \bg_black \large AP_{11point}=\frac{1}{11}\ast \left (\sum x \right ) \left ( x\in MaxPrecision \right )

对于MaxIntegral的方法是:计算所有的MaxPrecision的值,然后进行相加求平均值。

对于Integral的方法是:直接对曲线下的值进行积分(当然实际计算是也是采用相加来积分的,不仅仅是11点,针对每一个precision下降的点都加入计算,计算方法与11点的类似,只是分母不再是11了)。

  • 10
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值