(个人理解,如果写的有问题可以留言交流)
转载请标明出处!!!!!谢谢!
参考链接(内含代码):https://github.com/rafaelpadilla/Object-Detection-Metrics
人家写的比我好,我只是用中文把理论小总结一下,懒得看英文的可以看一下我的。
1.基础定义
a.交并比
真实框:绿色的;检测框:红色的。
b.True Positive(TP), False Positive(FP), False Negative(FN) and True Negative(TN)
TP:检测框中正确的,(且IOU大于阈值的)(针对map的计算而言需要考虑IOU)
FP:检测框中错误的,(IOU小于阈值的)
FN:真实正确的框,没有被检测到的
TN:正确的没有检测到的框,未被检测到的负类。在目标检测中,有许多可能的边界框不应该在图像内被检测到,这些框就是TN。
c.准确率(precision)和召回率(recall)
准确率:
TP+FP就是所有的检测框
召回率:
TP+FN就是所有的真实框
2.MAP计算过程
举例说明:7张图,15个真实框(绿色),24个检测到的框(红色),每个框有它的置信度,并给它从A开始定义
a.交并比,设置阈值,分出TP、FP
计算人工框和测出框的交并比,这里阈值(score threshold)设定为30%,大于30%的为TP,其他为FP。
注:不是由confidences而来的!
这里有同一个真实框,对应好几个测试框的情况,此时选取IOU大的,其他删除。
c.算出准确率和召回率
准确率(Precision)=TP/TP+FP
召回率(recall)=TP/TP+TN=TP/所有真实框=TP/15
由自信度从大到小排,个人理解,原因是自信度越大是TP的概率就高。
Acc TP:累计的TP Acc FP:累计的FP
d.给出Precision x Recall 曲线图
显然随着我们选定的样本越来也多,recall一定会越来越高,而precision整体上会呈下降趋势。把recall当成横坐标,precision当成纵坐标,即可得到常用的precision-recall曲线。
e.计算单标签图像分类的AP(average precision)
原因:个人认为人们觉得只有准确率和召回率没有说服力,所以有了AP。
1.VOC2010前,我们选区Recall>=0,0.1,0.2,...,0.9,1的11处Percision的最大值:1,0.6666,0.4285,0.4285,0.4285,0,0,0,0,0,0。此时AP=2.9521/11=0.2684
2.VOC2010及以后的方法,对于Recall>=0,0.0666,0.1333,0.2,0.2666,0.3333,0.4,0.4666,仍然选取Percision对应点的最大值:1,1,0.6666,0.4285,0.4285,0.4285,0.4285,0.3043,然后求对应曲线的面积。
蓝色线:实际Precision 红色线:我们所选取的最大值
此时AP为红色曲线的面积,可以堪称以下四个面积的和
f.计算MAP(mean average precision)
使用情况:多标签图像分类(Multi-label Image Classification)
mAP:每一个类别都计算出AP,然后再计算AP的平均值就是mAP
g.问题
我也有一些小问题没有搞明白,希望如果有大神看到,能帮我在评论去解释一下~谢谢~
1.看到好多关于MAP的帖子里,recall都能到1,甚至有的帖子中写道recall肯定能到1,我不太理解,我们最实验最多就是0.8、0.9多,再好也不会到1的呀。
2.标签上的分数,也就是confidences,怎么来的呀?
欢迎评论区交流~~~~谢谢~~~~~