目标检测中的一些评价标准(ACC,Precision,recall,AP,MAP,F1Score,ROC,AUC)

目标检测中的一些评价标准(ACC,Precision,recall,AP,MAP,F1Score,ROC,AUC)

介绍这些之前,应该了解一下最基本的TP,TN,FP,FN.
先看一下下面这些解释。
True positives: 简称为TP,即正样本被正确识别为正样本,飞机的图片被正确的识别成了飞机。
True negatives: 简称为TN,即负样本被正确识别为负样本,大雁的图片没有被识别出来,系统正确地认为它们是大雁。
False Positives: 简称为FP,即负样本被错误识别为正样本,大雁的图片被错误地识别成了飞机。
False negatives: 简称为FN,即正样本被错误识别为负样本,飞机的图片没有被识别出来,系统错误地认为它们是大雁。
我相信你早就已经看过无数遍这几个例子了,但是是不是真正用的时候还是会把它们搞混。(哈哈,反正我就是,可能是我太菜了!!!)下面我来讲一下我记这几个东西的技巧。
首先,T就代表我们的网络识别正确了,F就代表我们的网络学习错误了。
TP:就是我们熟知的正样本识别成正样本。(这个肯定不会有人不懂)
TN:就是网络正确识别出了负样本。
FP:就是网络错误的识别成了正样本。(言外之意就是人家本来是负样本,你却认成了正样本)
FN:就是网络错误的识别成了负样本。(同理)

接下来,我们来看具体的评价指标。

ACC

(TP+TN)/N。简单来说就是识别正确的数量占总数量的比例。因为实际中一般不会用到TN所以这个一般不用。

Precision

TP/(TP+FP)。查准率,实际的正样本数量占网络认为是正样本的数量的比例。查准率这个名字气的很好,就是看你网络的准确率。

Recall

TP/(TP+FN)。召回率,网络识别出来的真正的正样本占实际的正样本的比例。

F1score

2*(P*R/(P+R))其中P代表precis,R代表recall。目的是定位查准率与召回率的调和平均。

IOU

网络预测出来的bboxes与gt的交并比。

MAP

AP就是PR曲线下面的面积,map就是平均ap。
目标检测中的一些评价标准(ACC,Precision,recall,AP,MAP,F1Score,ROC,AUC)
看到这里我要插一句了,一般你直觉上map中占主导的应该是Precision但是实际中往往是recall更为重要。也就是说框越多一般来说map越高。

ROC

ROC的横轴是假正率(False positive rate, FPR),FPR = FP / [ FP + TN] ,代表所有负样本中错误预测为正样本的概率,假警报率。ROC的纵轴是真正率(True positive rate, TPR),TPR = TP / [ TP + FN] ,代表所有正样本中预测正确的概率,命中率。ROC曲线的对角线坐标对应于随即猜测,而坐标点(0,1)也即是左上角坐标对应理想模型。曲线越接近左上角代表检测模型的效果越好。

那么ROC曲线是怎么绘制的呢?有如下几个步骤:

根据每个测试样本属于正样本的概率值从大到小排序。
从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。
每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。当我们将threshold设置为1和0时,分别可以得到ROC曲线上的(0,0)和(1,1)两个点。将这些(FPR,TPR)对连接起来,就得到了ROC曲线。当threshold取值越多,ROC曲线越平滑。

AUC

即为ROC曲线下的面积。AUC越接近于1,分类器性能越好。AUC值是一个概率值,当你随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值。当然,AUC值越大,当前的分类算法越有可能将正样本排在负样本前面,即能够更好的分类。AUC的计算公式如下: