物体定位Object Detection中评价标准mAP的简单介绍

首先再回顾一下基础的评价标准三件套(假设一共一百学生,男女各半,检测的时候男生全部检测正确,女生有25人分为男生):

1. 准确率 accuracy:分类对的样本除以总样本个数,这个一般是针对于整个分类任务说的,这里一共分对了男生50人加女生25人也就是分对了75人,acc=0.75

2. 召回率recall,这个是针对某一类来说的,也就是一般说男生的recall,女生的recall,通俗来讲,recall总是偏心于自己这一类,就像孙子的奶奶一样,我孙子好了就行,其他人爱咋咋的,也就是他只管自己负责的这一类有多少被检测出来了,而不管其他类有多少误分成我这一类,比如本例中男生的recall是1,因为男生全部被检测出来了,所以男生的recall就高,女生只有一半被检测出来了,所以她的recall就是0.5

3.精确率precision(蛇皮翻译,和准确率有个naizi区别),这个也是针对某一类来说的,这个相对于recall这个亲奶奶,就是后奶奶了,就会鸡蛋里挑骨头,好不容易有一些分成本类的,她还要挑挑捡捡,看是不是真的本类,也就是代表了被检出的某一类中,真正是该类的样本占的概率,本例中男生的precision是50/75=0.666,女生的precision就是25/25=1啦

顺便再多说一点吧,f1 score这个评价标准,简单的就是recall和precision的平均值,扩展的f1 scaore就是在两者中加一个系数a,来设置recall 和precision的重要性

那么物体定位中的map怎么计算的呢?

物体定位的map的概念是从多分类评价标准中自然引进的,因此弄懂物体定位的map也就可以拆分成两个问题:

1. 什么是map :map全称为 mean average precision,需要计算出每一类的ap,然后计算所有类别ap的平均值即可,至于如何计算ap,这篇博客http://blog.csdn.net/hust_lmj/article/details/79052559 讲的挺好的,所以为什么要用ap这种评价方式呢?我们考虑,对于一个数据集,一个模型怎么才是好的?我们希望这个模型能找到一个得分阈值,让大于这个得分阈值的都被判断为正样本,小于这个得分阈值的都被判断成负样本,这时候racall和precision都是1,但是这种理想情况往往是不存在的,大多数分类器随着阈值的降低,recall会上升,而precision会下降,我们要同时评判这两个指标去评价一个模型,有没有什么好办法呢?能想到的就是让所有模型的一个指标保持相同,然后去比较另一个指标,了解precision和recall的含义和计算方式后,我们发现固定下recall是比较容易做到的,我们可以让所有模型的recall相同,然后比较他们的precision,对于不同的模型,他们的得分标准可能并不相同,因此为所有的模型设置一个固定的阈值是不合理的,一个可行的做法就是每个模型把样本得分降序排序,然后按照正样本的得分设置一个个得分阈值,这样就能保证所有模型都能得到一系列相同的recall值,我们再分别计算这些recall值下的precision进行比较,分析不同模型的性能,那么有这么多的recall选哪一个作为大家比较的基准点呢?一个比较稳妥的做法就是比较所有recall点下的precision,并取均值。也就是算r-c曲线下的面积。在VOC2010后,要求r-c曲线单调递减,也就是如果前面的precision小于后面的那么就把该位置的precision设置成后面值中最大的,为什么这么做呢?感觉是因为后面的recall本身就比前面的大,现在连precision也比前面的大了,说明后面的阈值用来分类样本肯定比前面的要好,这时候前面的低recall的情况下至少能达到后面高recall的性能,所以做上面的处理。计算ap的时候,直接计算线下面积就行了。

2.如何把物体定位的输出映射到多分类问题上:

我们知道定位网络每张图片输出的是N(anchor的数目)个框的坐标和这N个框的所有类别的分,那么接下来就分析如何计算其中一类的ap;

(1)先选出这N个框中某一类得分超过一个小阈值(如0.01,虽然小,但是对于绝大多数框,仍然不会大于这个值,所以选出来后仍是比较少的框)的M个框。

(2)对这M个框按照得分进行降序排序,查询每个框的所在图片上是否有同类的gt和这个框的IOU大于阈值,如果有,那么该框的标签就是true positive,并且该gt框要标记为已经被使用,不能再用作与其他的框进行匹配。如果没有就是false positive,并把相应的标志位置1,像通用的求ap的方法一样,不断把把输出框的得分从高到低设置为阈值,这样就能根据ture positive 和gt的框总数计算计算一系列recall值,根据true positive 和fasle positive计算precision值。然后就能根据上面所讲的规则计算线下面积,也就是ap了,普通的分类问题的在判断是true positive还是false positive的时候直接把每个样本与他的标签作比较,而分类问题中一张图片有多个物体,判断每个输出框是true positive 还是false positive的时候,需要看有没有真正相同类别的标签框与该输出框的IOU大于一个阈值,这个阈值一般是0.5,如果大于了就按识别对了,否则就按识别错了,这样的评价标准感觉有一点点问题,就是在评价模型好坏的时候,只要超过了阈值,重叠面积再大也不会对评价标准造成多大影响,当然这不影响训练,训练是只要不是完全重合,就会有回归误差,这可能也是coco会综合考虑在各个iou阈值情况下的map的原因吧。

 

 

 

你可能感兴趣的:(物体定位,Object,detection)