检测1的个数_目标检测性能指标MAP

本文详细介绍了目标检测中常用的性能指标,包括TP、FP、FN、TN的概念,以及precision和recall的计算。文章通过分析precision-recall曲线的含义和其面积的重要性,阐述了平均精度(AP)和平均精度均值(MAP)的计算方法,特别是如何处理曲线非单调的情况。同时,还探讨了在实际计算过程中,如何处理无法按置信度排序的数据,并给出了计算AP的步骤。
摘要由CSDN通过智能技术生成

考察目标检测性能的最常见指标MAP,本文主要整理来自pytorch-yolov4的map的参考文献

rafaelpadilla/Object-Detection-Metrics​github.com

一、TP,FP,FN,FN

  • TP:true positive,实际为正的,预测成正的个数
  • FN:false negative,实际为正的,预测成负的个数
  • FP:false positive,实际为负的,预测成正的个数
  • TN:true negative,实际为负的,预测成负的个数

这里正负表示是否预测成目标类别,所以可以有很多类,不只是两类

所以,对于一组测试图像的一个类别,确定IOU阈值与置信度阈值之后,会有确定的TP,FN,FP,TN

举例:

对于knief这一类:

TP:实际为knief,判断为knief

FP:实际不是knief,判断为knief

FN:实际为knief,判断不是knief

TN:实际不是knief,判断不是knief

马上会用到的两个指标:

TP+FP:测试结果图中knief个数

TP+FN:测试图中真实的knief个数(测试图标注的结果)


二、precision、recall

准确率

召回

准确率与召回可以表示在确定IOU阈值与置信度阈值之后,对于测试结果性能的评估。

但是不知道多少的IOU阈值与置信度阈值是最合适,所以考虑尽可能多的情况,得到确定的IOU阈值下,随着置信度阈值变化下,precision与recall的曲线,如下图。这个曲线的面积越大,性能越好。怎么理解这句话?

11a8d230114b55313c28b334fdcc9463.png

我们首先理解下precision与recall曲线的意义:

根据之前说过的目的,曲线的生成是变化置信度阈值,做法是:

1.将测试结果的bbox按照置信度阈值排序

2.对于某一个位置,只记录置信度在这之上的TP,FP,置信度比较大的正例才被记录,置信度小的直接归到反例

3.得到不同置信度阈值下的TP与FP,具体做法是,按照排序后的置信度阈值,逐个下移记录TP与FP的变化量,并记录。

现象:

随着置信度阈值的减小,precision会减小,recall会增加,一开始的precision比较大

对现象的说明:

1.对precision减小的解释

对于随着置信度的减小,sumcum(TP)/sumcum(TP+FP)减小。因为每增加一个框,precision分母始终是加1的,但是因为置信度减小,分子更有可能+0,而不是+1

2.对recall增加的解释

随着置信度的减小,recall的分母保持不变,因为标注的检测框数量是不变的。TP会慢慢增加,所以recall肯定是增加的

3.对开始的precision比较大的解释

置信度高的话,说明很有可能是判断正确的,所以很有可能排序前几个都是TP

对于曲线的面积越大,性能越好的理解:

对于两个曲线,如果recall最大值相同,面积大的,说明在平均意义下,相同recall的precision大,即相同置信度水平,TP的概率大

对于两个曲线,如果recall重合的部分precision相等,面积大的,说明recall最大值大,即FN小,即标注的检测框没被检测出来的比较少

综上面积越大,模型表现越好。


三、面积的替换指标AP

虽然求曲线的面积不是很麻烦,但是一般情况下,曲线不会像我们希望的一样,单调递减。有可能出现抖动,即Recall值较大时,Precision反而比Recall较小时的值更大。为了避免少数检测框对结果产生较大的影响,还需采取一定的平滑措施,用新指标AP代替面积。

AP的计算有两种方法

1.PASCAL VOC 2007的AP:

11点插值法

af991ce9988f8f116ae3120341a33cf2.png

2.PASCAL VOC 2012 的AP(更常用了):

考虑所有点

900a7b2d9653b795b310a5e40f399650.png

四、MAP

确定IOU阈值的情况下,每个类别可以根据precision-recall曲线得到一个ap值 ,所有类别的ap的平均就是map。

一般模型中的ap即map,ap50表示iou阈值为50%时的map,map表示iou阈值为0.5:0.95:0.05的均值

现象:

iou阈值增大,ap减小。

解释:

这是因为iou控制tp与fp的转换。iou阈值增大时,precision的分母相同的情况下,tp减小,所以precision分子减小,与此同时recall的分子也减小,所以precision-recall曲线整体的下移且左移 。


五、实现

因为我的测试结果数据是一个txt文件,不能按照置信度排序。所以按照测试结果的文本顺序,对于某一类,记录det数据,计算并记录【最大IOU,最大IOU对应的true框的顺序imagefile_num】。

然后创建tp,fp的list,对于置信度顺序下的每个检测框,如果对应的gt不是-1(IOU等于0),最大IOU大于阈值,且对应的框上面没出现过,标记为TP,否则标记为FP,进而得到precision的list。

遍历标注文件,得到这一类的gt的总个数,进而得到recall的list。

然后根据PASCAL VOC 2012年的版本计算AP。

伪代码

Image_file=reorder(image_file,descend by confidence)
for each class:
  for each bbox in image_file:
    record TP and FP
  tp_list=cunsum(TP)
  fp_list=cumsum(FP)
  satatistic num_gts for this class
  precision=tp_list./(tp_list+fp_list)#点除
  recall=tp_list./num_gts
  calculate ap 
calculate map

附:TP,FP计算流程图

7f1779ad5f1c1fd08c5e9da048f0e4f9.png

参考文献:

目标检测测评指标--mAP_Peanut 大本营-CSDN博客_map指标

rafaelpadilla/Object-Detection-Metrics

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值