ap 目标检测算法map_目标检测的指标AP与mAP

最近在处理实验数据的时候,想到了之前学习的分类混淆矩阵当时没有完全弄懂,刚好借着这个机会给深入的学习一下,做好相应的笔记

一、检测指标

在目标检测任务中,通过不同的IoU阈值来进行检测器的整体的性能评估,对于MS COCO目标检测,有如下检测指标

对于MS COCO关键点检测,官方给出的评价指标为OKS(object keypoints similarity),其评价指标和检测的IoU也很类似,在不同的阈值下来实现整体的性能评估

二、precious(准确率)和recall(回归率)

以上的检测衡量指标中,都看到了AP和AR,分别代表Average Precious和Average Recall

(用来评估预测出来的正确率)

(用来评估预测出来了多少正确的样本)

对应关系如图所示,Precious表示预测为正确结果中,由多少是对的,即反映预测准确的参数;但是只是预测准确率很高,但是很多没有预测出来那也是不行的(有100个样本,预测了1个正例,99个反例,而且这个1个正例预测是正确的,那么准确率是100%,单纯的这样来衡量是没有道理的,因为还有99个直接给否定了),所以Recall这个指标就是为了衡量这个问题,一共的正例的样本,成功预测出来多少个,当这两个指标都很高的时候,那么说明这个结果才是好的。

top1错误率

top1就是你预测的label取最后概率向量里面最大的那一个作为预测结果,你的预测结果中概率最大的那个类必须是正确类别才算预测正确。而top5就是最后概率向量最大的前五名中出现了正确概率即为预测正确。

top5错误率

ILSRVRC(ImageNet 图像分类大赛) 比赛设置如下:1000类图像分类问题,训练数据集126万张图像,验证集5万张,测试集10万张(标注未公布)。评价标准采用 top-5 错误率——即对一张图像预测5个类别,只要有一个和人工标注类别相同就算对,否则算错。

三、AP的概念

第二章介绍了Precious和Recall的概念,那么AP的概念也就比较简单了随机样本的准确率和回归率计算

1、PR图

由上表以Recall值为横轴,Precision值为纵轴,我们就可以得到PR曲线。我们会发现,Precision与Recall的值呈现负相关,在局部区域会上下波动。

2、AP(Average Precision)

AP为平均精度,使用积分的方式来计算PR曲线与坐标轴围成的面积

但是在实际应用中,我们不是去对其进行计算,而是对其平滑操作来简化计算,对PR曲线上的每个点,Precision的值取该点右侧最大的Precision的值,结果如下图所示:

计算出AP之后,对所有的类别的AP求平均就可以得出整个数据集上的mAP

三、目标检测中的mAP

不同的数据集给出不同的mAP的计算方法

检测出来的bbox包含score和bbox,按照score降序排序,所以每添加一个样本,就代表阈值降低一点(真实情况下score降低,iou不一定降低)。这样就是可以有很多种阈值,每个阈值情况下计算一个Precious和Recall。使用区域选择算法得到候选区域

对候选区域,计算每一个候选区域和标定框(groud truth)的iou

设定一个iou阈值,大于这个的标为正样本,小于的标为负样本,由此得到一个类似于分类时的测试集。

将给定的测试集(正负样本),通过分类器,算出每一个图片是正样本的score

设定一个score阈值,大于等于此值的视作正样本,小于的作为正样本

根据上一步的结果可以算出准确率和召回率

调节score阈值,算出召回率从0到1时的准确率,通过计算所有类的AP就可以计算mAP了。

1、Interplolated AP(Pascal Voc 2008 的AP计算方式)

Pascal VOC 2008中设置IoU的阈值为0.5,如果一个目标被重复检测,则置信度最高的为正样本,另一个为负样本。在平滑处理的PR曲线上,取横轴0-1的10等分点(包括断点共11个点)的Precision的值,计算其平均值为最终AP的值。

2、MS COCO mAP

对于coco数据集来说,使用的也是Interplolated AP的计算方式。与Voc 2008不同的是,为了提高精度,在PR曲线上采样了100个点进行计算。而且Iou的阈值从 0.5 - 0.95 的区间上每隔0.05计算一次mAP的值,取所有结果的平均值作为最终的结果。除了AP,还有

,

等值,分别代表了如下含义

:IoU阈值为0.5时的AP测量值

:IoU阈值为0.75时的测量值

: 像素面积小于

的目标框的AP测量值(小尺度)

: 像素面积在

-

之间目标框的测量值(中等尺度)

: 像素面积大于

的目标框的AP测量值(大尺度)

通常来说AP是在单个类别下的,mAP是AP值在所有类别下的均值。在这里,在coco的语境下AP便是mAP,这里的AP已经计算了所有类别下的平均值,这里的AP便是mAP。

你可能感兴趣的:(ap,目标检测算法map)