前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

作者头像
全栈程序员站长
发布2022-09-07 11:19:26
3.6K0
发布2022-09-07 11:19:26
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

基本概念

深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]
深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

P-R曲线中,P为图中precision,即精准度,R为图中recall,即召回率。

Example

下面通过具体例子说明。

首先用训练好的模型得到所有测试样本的confidence score,每一类(如car)的confidence score保存到一个文件中(如comp1_cls_test_car.txt)。假设共有20个测试样本,每个的id,confidence score和ground truth label如下:​​

ground truth label通过预测的bbox与ground truth的iou确定为正样本或负样本。

深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]
深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

接下来对confidence score排序,得到:

深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]
深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

P-R曲线:

我们得到top-5的结果,前score最高的前5个样本,预测label为1,即:

深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]
深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

此例中采用top-5评估,也可采用其他评估,如AP50,即当预测框与真实框的IoU值大于这个阈值时,该预测框才被认定为真阳性(True Positive, TP),反之就是假阳性(False Positive,FP)。

在这个例子中,true positives就是指第4和第2张图片,false positives就是指第13,19,6张图片。是相对于方框内的元素而言,在这个例子中,confidence score排在top-5之外的元素为false negatives和true negatives,即:

深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]
深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

其中,false negatives是指第9,16,7,20张图片,true negatives是指第1,18,5,15,10,17,12,14,8,11,3张图片。

那么,这个例子中Precision=2/5=40%,意思是对于car这一类别,我们选定了5个样本,其中正确的有2个,即准确率为40%;Recall=2/6=30%,意思是在所有测试样本中,共有6个car,但是因为我们只召回了2个,所以召回率为30%。此时为下图中第5个样本点。同理图中第一个样本点:P=1,R=1/6,第二个样本点,考虑前两个样本,P=1,R=2/6=1/3。。。

这个例子的precision-recall曲线如下:

深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]
深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

实际多类别分类任务中,我们通常不满足只通过top-5来衡量一个模型的好坏,而是需要知道从top-1到top-N(N是所有测试样本个数,本文中为20)对应的precision和recall。显然随着我们选定的样本越来也多,recall一定会越来越高,而precision整体上会呈下降趋势。把recall当成横坐标,precision当成纵坐标,即可得到常用的precision-recall曲线。

AP计算:

接下来说说AP的计算,此处参考的是PASCAL VOC CHALLENGE的2010年之前计算方法。首先设定一组阈值,[0, 0.1, 0.2, …, 1]。然后对于recall大于每一个阈值(比如recall>0.3),我们都会得到一个对应的最大precision。这样,我们就计算出了11个precision。AP即为这11个precision的平均值。这种方法英文叫做11-point interpolated average precision。​

当然PASCAL VOC CHALLENGE自2010年后就换了另一种计算方法。新的计算方法假设这N个样本中有M个正例,那么我们会得到M个recall值(1/M, 2/M, …, M/M),对于每个recall值r,我们可以计算出对应(r’ >= r)的最大precision,然后对这M个precision值取平均即得到最后的AP值。计算方法如下:​

深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]
深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

相应的Precision-Recall曲线(这条曲线是单调递减的)如下:​

深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]
深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

AP衡量的是学出来的模型在每个类别上的好坏,mAP衡量的是学出的模型在所有类别上的好坏,得到AP后mAP的计算就变得很简单了,就是取所有AP的平均值。

参考:https://blog.csdn.net/zdh2010xyz/article/details/54293298

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/148106.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本概念
  • Example
  • P-R曲线:
    • AP计算:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档