AP/mAP检测评估指标

理论部分的研究看这个链接
https://zhuanlan.zhihu.com/p/48992451
http://blog.sina.com.cn/s/blog_9db078090102whzw.html

PR曲线

自己用python实现了Precision和Recall的计算,并画PR曲线的代码附上:

import matplotlib.pyplot as plt
score = [0.91, 0.76, 0.65, 0.46, 0.45, 0.38, 0.24, 0.23, 0.23, 0.13, 0.12, 0.12, 0.11, 0.1, 0.09, 0.08, 0.07, 0.03, 0.03, 0.01]
gt = [1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0]
precision, recall =[], []  #不同threshold下的precision和recall值构成的列表
for i in range(1,21):
    TP = gt[:i].count(1)
    FP = gt[:i].count(0)
    FN = gt[i:].count(1)
    TN = gt[i:].count(0)
    precision.append(TP/(TP + FP))
    recall.append(TP/(TP + FN))
plt.figure(1)
plt.xlabel('recall')
plt.ylabel('precision')
plt.plot(recall,precision) #recall是横坐标,precision是纵坐标
plt.show()

得到的PR曲线如下:
在这里插入图片描述

AP值的计算

VOC07和VOC10有两种不同的评判方式,

VOC07标准

(下图绿色框)选择每个recall区间内对应的最高precision,最后求平均得到AP。
在这里插入图片描述求AP(VOC07版本)的代码:

count = [] #count记录recall区间的个数
AP = 0
for i in range(len(recall)):
    if i>=0 and recall[i]==recall[i-1]:
        continue
    count.append(i)
    AP += precision[i]
print(AP/len(count))

VOC10标准

(上图白色框),假设N个样本有M个正例,那么会得到M个recall值,对于每个recall值r,我们可以计算出对应(r’ > r)的最大precision,然后对这M个precision值取平均即可得到最后的AP值。

VOC07和VOC10的区别

  1. 主要在recall = 3 / 6下的precision,可以发现VOC07找的top-precision是在该recall区间段内的,但VOC10相当于是向后查找的,需确保该recall阈值以后的区间内,对应的是top-precision,可知4 / 7 > 3 / 6,因此使用4 / 7替换了3 / 6,其他recall阈值下的操作方式类似;
  2. VOC07是11点插值的AP方式,等于是卡了11个离散的点,划分10个区间来计算AP,但VOC10是是根据recall值变化的区间来计算的,在这个栗子里,recall只变化了6次,但如果recall变化很多次,如100次、1000次、9999次等,就可以认为是一种 “伪” 连续的方式计算了;

经过“去重”后的recall就没有重复了,这样得到的PR曲线如下,是单调递减的。
在这里插入图片描述

ROC和AUC

ROC和AUC是评价分类器的指标, ROC关注两个指标:
True Positive Rate ( TPR ) = TP / [ TP + FN] ,TPR代表能将正例分对的概率
False Positive Rate( FPR ) = FP / [ FP + TN] ,FPR代表将负例错分为正例的概率
还是用上面的数据,画出ROC曲线如下所示:
在这里插入图片描述
AUC是ROC曲线下的面积。


检测领域AP/mAP的计算

https://www.zhihu.com/question/53405779/answer/382974995
在实际问题中,Precision/Recall/漏检率/误检率的计算往往是用二分类的评价指标来做的,就是要先求TP/FP/TN/FN这四个参数,然后根据前面说的步骤求解。但是在检测领域,计算方式如下:

  1. Precision
    对于某个类别C,在某张图片上,Precision =在一张图片上类别C识别正确的个数(也就是IoU>0.5)/一张图片上类别C的总个数
    在这里插入图片描述2. AP
    AP=每张图片上的Precision求和/含有类别C的图片数目
    在这里插入图片描述3. mAP
    mAP=上一步计算的所有类别的AP和/总的类别数目。相当于所有类别的AP的平均值。
    在这里插入图片描述

更新:
分类任务的mAP计算,是

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值