目标检测中AP、MAP的计算

M A P ( 平 均 准 确 率 ) MAP(平均准确率) MAP()

首先推荐一下## https://github.com/rafaelpadilla/Object-Detection-Metrics

这个,这里面说的其实已经很明白了。

要真的理解mAP的计算,你要明白这几个概念

一是置信度、IOU阈值的概念

通过置信度和、IOU阈值,你才可以确定TP和FP

二 明白FN的概念

在检测,就是要明白GroundTruth总数的概念

三 Precision和Recall

知道了FN、TP、FP就能知道Precision和Recall
precisoin = TP / (TP+FP)
recall = TP / (TP+FN)

四 明白什么叫11点插值显示法


其实有个问题值得思考,为什么recall可以作为横坐标,recall只升不降吗?

抱歉,我,recall,真的只升不降,就是为所欲为

因为会根据置信度对检测框进行降序排序,所以recall只升不降,可以作为横坐标


你明白了并计算出每个预测框的Precision和Recall,就能画出准确度x召回率曲线
在这里插入图片描述

而11点插值显示法,就是将【0,1】这个区域平均分成10分,

从上图,我们可以看出所有检测框到最后画出的曲线在recall范围在【0-0.5】之间

接下来使用11点插值显示法,首先确定了11个点的横坐标分布是【0,0.1,0.2,0.3,…,1.0】

然后根据每个横轴标,和上图画出的准确度x召回率曲线,确定下图红点的纵坐标,然后做出下图

在这里插入图片描述

在这里插入图片描述

AP

在这里插入图片描述


一 树立Precision和Recall的概念

Precision

Precision就是在你所有预测为真的样本中,真正正确的占你所有预测为真的比例
(就是说,假设你预测100个样本为真,但是这里面可能只有80个是真的为真,还有20个是假的,但是这20个你预测为真了,所以你的Precision就是 80 /(80+20)=0.8)
在这里插入图片描述

注意:是你预测了100个样本,这100个样本可以是从原来总样本2000个里面选的

Recall

Recall就是说在你预测为真的样本中,真正正确的样本数,占,你真正正确的样本数和你错误预测为假之和的比例。

什么是预测真正正确的样本数和你错误预测为假之和?

假设你预测了200个样本,这200个样本中,你预测100个为真,100个为假,这100个你预测为真的样本中,真正为真的有80个,预测为真其实为假的有20个。而100个预测为假的里面,其实里面30个是真的,但是你预测为了假,这就是错误预测为假的个数。

ok!重点来了!!!

一个预测了200个样本,以预测为真,为假,各分了100个样本!
在预测为真的100个里面,真正真的有80个,
在预测为假的100个里面,真正真的,就是,错误预测为假的个数,就是30个

所以什么是预测真正正确的样本数和你错误预测为假之和?
就是80+30,就是在这200个里面所有真正为真的样本数!

在这里插入图片描述

为什么说Precision和Recall是冲突的

在这里插入图片描述
在这里插入图片描述

因为所有预测为假的,拿上面举例,就是100个,100 = FP+FN,所有预测为假的总数不变的情况下,FP多了,FN就少;FN多了,FP就少

检测指标:AP值的计算

二 树立置信度、IOU的概念

  • 置信度:所框区域是我们所需物体的概率
  • IOU:懂得都懂

在这里插入图片描述


  • True Positive (TP):IOU>=阈值的检测框
  • False Positive (FP):IOU<阈值的检测框
  • False Negative (FN):未被检测到的GT
  • True Negative(TN):忽略不计

检测指标的计算需要基于置信度,这里IOU阈值默认使用0.5,至于猫咪图片里面的IOU值,这里假设分别是0.76,0,0.91

如上图小喵喵所示:置信度分布是【0.7,0.8,0.9】


当置信度为0.85时

当置信度为0.85时,只有cat3是被检测到的,所以检测框就剩下了cat3里面的一个iou=0.91

  • True Positive (TP):IOU>=阈值的检测框
  • False Positive (FP):IOU<阈值的检测框
  • False Negative (FN):未被检测到的GT

这里iou阈值=0.5

TP = 1
FP = 0
漏检:
FN = 2(cat1、cat2里面绿框)


Precision = TP/(TP+FP) =1/1
Recall =TP/(TP+FN) =1/3


当置信度为0.75时

当置信度为0.75时,cat3,cat2算是是被检测到的,所以检测框剩下了cat3、cat2里面的iou=0.91,iou=0

  • True Positive (TP):IOU>=阈值的检测框
  • False Positive (FP):IOU<阈值的检测框
  • False Negative (FN):未被检测到的GT

这里iou阈值=0.5

TP = 1
FP = 1

漏检:
FN = 2(cat1、cat2里面绿框)


Precision = TP/(TP+FP) =1/2
Recall =TP/(TP+FN) =1/3


当置信度是0.5时

当置信度为0.5时,所有猫图都算是被检测到的,cat3、cat2、cat1里面的iou=0.91,iou=0,iou=0.76

  • True Positive (TP):IOU>=阈值的检测框
  • False Positive (FP):IOU<阈值的检测框
  • False Negative (FN):未被检测到的GT

这里iou阈值=0.5

TP = 2
FP = 1

漏检:
FN = 1(cat2里面绿框)


Precision = TP/(TP+FP) =2/3
Recall =TP/(TP+FN) =2/3


其实从上面就可以看出每一次置信度或者IOU的阈值改变都会造成TP和FP的重新计算,即recall和precision的重新计算


通过recall和precision计算AP

计算不同recall值下,precision值的变化

注意,注意,什么叫每一次的recall和precision呢?

就是下面每个点的recall值是怎么确定的呢?
我也不知道,哈哈哈哈!
在这里插入图片描述

在这里插入图片描述


https://github.com/rafaelpadilla/Object-Detection-Metrics


为了计算precision和recall,需要
True Positives(真正例):预测为真,其实为真
False Negatives(假负例):预测为假,其实为真,漏检了

False Positives(假正例):预测为真,其实为假
True Negatives(真负例):预测为假,其实为假。


TP + FN = 所有真的

TP/(TP+FN) = 在所有真的里面,预测为真的的比例


TP+FP = 所有预测为真的

TP/(TP+FP)
在所有预测为真的里面,真的比例


如果IoU> 0.5,则认为它是True Positive,否则认为是False Positive


对于每一个图片,ground truth数据会给出该图片中各个类别的实际物体数量,计算每个Positive预测框与ground truth的IoU值,并取最大的IoU值,认为该预测框检测到了那个IoU最大的ground truth。然后根据IoU阈值,我们可以计算出一张图片中各个类别的正确检测值(True Positives, TP)数量以及错误检测值数量(False Positives, FP)。

注意类别的概念

据此,可以计算出各个类别的precision

在这里插入图片描述


正确的预测值数量(True Positives),和很容易计算出漏检的物体数(False Negatives, FN)
此可以计算出Recall(分母可以用ground truth总数)

在这里插入图片描述


在目标检测中,mAP的定义首先出现在PASCAL Visual Objects Classes(VOC)竞赛中


感觉下面说了一堆垃圾话,看也看不懂

在这里插入图片描述

绿 色 的 真 实 框 , 红 色 的 是 预 测 框 绿色的真实框,红色的是预测框 绿

有7个图像,其中15个ground truth objects由绿色边界框表示,24个检测到的对象由红色边界框表示。每个检测到的对象由字母(A,B,…, Y)标识,且具有confidence

在这里插入图片描述

然后按置信度对BBOX排序

在这里插入图片描述

再对每一个BBOX都计算对应的precision和recall值

实例:

  • 对BBOXR,precision = 1/1 =1,recall = 1/15=0.0666
  • 对BBOXY,precision = 1/2=0.5,recall = 1/15=0.0666
  • 对BBOXJ,precision = 2/3 =-0.666s,recall =2/15=0.1333

在这里插入图片描述


2012年以后,用面积来逼近AP值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


目标检测中TP、FP、FN、TN的定义

  • True Positive (TP):IOU>=阈值的检测框
  • False Positive (FP):IOU<阈值的检测框
  • False Negative (FN):未被检测到的GT
  • True Negative(TN):忽略不计

在这里插入图片描述

在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/qq_41375318/article/details/112755139