目标检测的数据集、评价指标

本篇博客主要整理基于深度学习的目标检测所用的一些评价指标。

先介绍评价指标,当然也适用于很多其他的任务;

然后再介绍数据集,见下一篇博客


一、评价指标

参考链接:

1、参考1

2、参考2

3、参考3

1、准确率、精确率、召回率

对于一个分类或者检测任务来讲,有准确率、精确率、召回率这几种评价指标。

假设有这样一个测试集,男生40和女生60人。请选出测试集中所有的男生。

然后模型选出了30个,其中20个男生,10个女生。

首先分析:男生40人中有20被分为是男生,另20人被分为是女生;女生60人中有50人被分为女生,另10人被分为男生。

扫描二维码关注公众号,回复: 2146124 查看本文章

true positive(TP):选出的30人正确识别为男生;即20人男生
false positive(FP):选出的30人中没有正确识别为男生;即10人女生
true negative(TN):正确识别为不是男生;即50人女生;
false negative(FN):没有正确识别为男生;即20人男生;

准确率(TP+TN)/(TP+FP+TN+FN):所有类别都正确分类的概率,即(20+50)/100=70%;

精确率(TP)/(TP+FP):选出的30个测试数据被正确分类的概率,即20/30=66.7%

召回率(TP)/(TP+FN):每个类被正确分类的概率(该例子中要选出男生,即男生正确分类的概率),即20/40=50%。

2、precision-recall曲线

上面中提高的precision和recall,当选择不同的阈值时会发生不同的变化。一个好的模型是precision和recall同时保持很高。

如下表(数据虚拟)

阈值 precision recall
10人 100% 25%
20人 100% 50%
30人 66.7% 50%
40人 62.5% 62.5%
50人 60% 75%
60人 58.3% 87.5%
70人 57.1% 100%
80人 50% 100%
90人 44.4% 100%
100人 40% 100%

所以一般都会用precision-recall曲线来表示模型的性能。

这里写图片描述

3、ROC曲线和AUC曲线

3.1 ROC曲线

比较的是TP率和FP率的关系。TP率实际上就是precision。

ROC曲线越接近左上角,即FP很低,TP很高,模型效果越好。

阈值 precision recall TP FP
10人 100% 25% 100% 0
20人 100% 50% 100% 0
30人 66.7% 50% 66.7% 33.3%
40人 62.5% 62.5% 62.5% 37.5%
50人 60% 75% 60% 40%
60人 58.3% 87.5% 58.3% 41.7%
70人 57.1% 100% 57.1% 42.9%
80人 50% 100% 50% 50%
90人 44.4% 100% 44.4% 55.6%
100人 40% 100% 40% 60%

这里写图片描述

3.2 AUC曲线

AUC,即Area Under Curve,为ROC曲线下的面积。面积不会大于1,一本来说,AUC越大,模型相对效果越好。

3.3 总结

为什么还要使用ROC和AUC呢?

因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。

下图是ROC曲线和Precision-Recall曲线5的对比:

这里写图片描述

在上图中,(a)和(c)为ROC曲线,(b)和(d)为Precision-Recall曲线。(a)和(b)展示的是分类其在原始测试集(正负样本分布平衡)的结果,(c)和(d)是将测试集中负样本的数量增加到原来的10倍后,分类器的结果。可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线则变化较大。

4、approximated average precision、interpolated average precision、AP和mAP

4.1 approximated average precision

相较于precision-recall曲线,我们有时候更想关注数字指标,即AAP;

积分公式如下,其中p是precision,r是recall,p(r)是一个以recall为参数的函数。

这里写图片描述

可以把积分公式换成离散型数值,即,对每个阈值分别求出precision和recall变化的乘积,然后把所有乘积加起来。

离散公式如下,其中,k是阈值,P是precision,这里写图片描述是recall的变化(从k-1到k的变化),

这里写图片描述

例如,上面例子中,

AAP=1*0.25+1*0.25+0.667*0+0.625*0.125+0.60*0.125
    +0.583*0.125+0.571*0.125+0.50*0+0.444*0+0.40*0
=0.797375

以上recall变化为0的就对AAP没有贡献。

4.2 interpolated average precision

相对于AAP的另一种评价指标。

这里写图片描述

取所有阈值中precision最高的与recall的变化相乘,再把乘积加起来。

在上述例子中,就是,

IAP = 1*0.25+1*0.25+1*0+1*0.125+1*0.125
    +1*0.125+1*0.125+1*0+1*0+1*0
=1

4.3 AP和mAP

平均精度(Average-Precision,AP)与 mean Average Precision(mAP)

AP就是Precision-recall 曲线下面的面积,通常来说一个越好的分类器,AP值越高。

mAP是多个类别AP的平均值。这个mean的意思是对每个类的AP再求平均,得到的就是mAP的值,mAP的大小一定在[0,1]区间,越大越好。该指标是目标检测算法中最重要的一个。

5、IOU

就是系统检测出的目标框与实际目标框之间的重合度。

即detection result与ground truth的交集比上他们的并集。

这个值越高,说明定位越准确。

这里写图片描述

6、非极大值抑制(NMS)

Non-Maximum Suppression就是需要根据score矩阵和region的坐标信息,从中找到置信度比较高的bounding box。对于有重叠在一起的预测框,只保留得分最高的那个。

  1. NMS计算出每一个bounding box的面积,然后根据score进行排序,把score最大的bounding box作为队列中首个要比较的对象;

  2. 计算其余bounding box与当前最大score与box的IoU,去除IoU大于设定的阈值的bounding box,保留小的IoU得预测框;

  3. 然后重复上面的过程,直至候选bounding box为空。

最终,检测了bounding box的过程中有两个阈值,一个就是IoU,另一个是在过程之后,从候选的bounding box中剔除score小于阈值的bounding box。需要注意的是:Non-Maximum Suppression一次处理一个类别,如果有N个类别,Non-Maximum Suppression就需要执行N次。

猜你喜欢

转载自blog.csdn.net/liuxiao214/article/details/80517156