目标检测的评价指标

文章来源:https://www.cnblogs.com/eilearn/p/9071440.html

准确率(Accuracy)

准确(分类率)=正确预测的正反例数/总数。
准确率一般用来评估模型全局准确程度,不能包含太多信息,无法全面评价一个模型。

混淆矩阵(Confusion Matrix)

混淆矩阵中横轴是模型预测的类别数量统计,纵轴是数据真实标签的数据量统计
对角线表示模型预测和数据标签一致的数目,所以对角线之和除以测试集总数就是准确率
对角线上的数字越大越好,在可视化结果中颜色越深,说明模型在该类的预测准确率越高。
如果按行来看,每行不在对角线位置的就是错误预测的类别,总的来说,希望对角线越高越好,非对角线越低越好。

精确率(Precision)与召回率(Recall)

True positive:正样本被正确识别为正样本。
True negative:负样本被正确识别为负样本。
False positive:假的正样本,负样本被识别为正样本。
False Negative:假的负样本,正样本被识别为负样本。
Precision就是在识别出来的图片中,True positive所占的比率
Precision=tp/tp+fp=tp/n
也就是所有检测出目标中真目标比率
Recall是测试集中所有正样本例中,被正确识别为正样本的比例。
Recall=tp/tp+fn
Precision-recall曲线:改变识别阈值,使得系统依次能够识别前k张图片,阈值的变化同时会导致Precision与Recall值发生变化,从而得到曲线
如果一个分类器的性能比较好,那么:在Recall值增长的同时,Precision的值保持在一个很高的水平。而性能比较差的分类器可能会损失很多Precision值才能换来Recall值得提高。
通常情况下,文章中都会使用Precision-recall曲线,来显示分类器在precision与recall之间的权衡。

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

AP就是Precision-recall曲线下面的面积,通常来说一个越好的分类器,AP值越高。
mAP是多个类别AP的平均值。Mean就是每个类的AP在求平均,得到的就是mAP,mAP的大小一定在[0,1]区间,越大越好。该指标是目标检测算法中最重要的一个。
在正样本非常少的情况下,RP表现的效果会更好。
目标检测的评价指标_第1张图片

IOU

IOU可以理解为系统预测出来的框与原来图片中标记的框的重合程度。计算方法就是检测结果Detection Result与 Ground Truth 的交集比上它们的并集,即为检测的准确率。
在这里插入图片描述

ROC(Receiver Operating Characteristic)曲线与AUC(Area Under Curve)

ROC曲线:
横坐标:**假正率(False positive rate, FPR),FPR = FP / [ FP + TN],**代表所有负样本中错误预测为正样本的概率,假警报率。
纵坐标:**真正率(True positive rate, TPR),TPR = TP / [ TP + FN] ,**代表所有正样本中预测正确的概率,命中率。
对角线对应于随机猜测模型,而(0,1)对应于所有整理排在所有反例之前的理想模型。曲线越接近左上角,分类器的性能越好。
目标检测的评价指标_第2张图片
ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。
ROC曲线绘制:
  (1)根据每个测试样本属于正样本的概率值从大到小排序;
  (2)从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本;
  (3)每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。
  当我们将threshold设置为1和0时,分别可以得到ROC曲线上的(0,0)和(1,1)两个点。将这些(FPR,TPR)对连接起来,就得到了ROC曲线。当threshold取值越多,ROC曲线越平滑。
AUC(Area Under Curve)即为ROC曲线下的面积。AUC越接近于1,分类器性能越好
物理意义:首先AUC值是一个概率值,当你随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值。当然,AUC值越大,当前的分类算法越有可能将正样本排在负样本前面,即能够更好的分类
计算公式:就是求曲线下矩形面积。
在这里插入图片描述

PR曲线和ROC曲线比较

ROC曲线特点:
 (1)优点:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。因为TPR聚焦于正例,FPR聚焦于与负例,使其成为一个比较均衡的评估方法。
  在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。
 (2)缺点:提到ROC曲线的优点是不会随着类别分布的改变而改变,这在某种程度上也是其缺点。因为负例N增加了很多,而曲线却没变,这等于产生了大量FP。像信息检索中如果主要关心正例的预测准确性的话,这就不对了。在类别不平衡的背景下,负例的数目众多致使FPR的增长不明显,导致ROC曲线呈现一个过分乐观的效果估计。ROC曲线的横轴采用FPR,根据FPR ,当负例N的数量远超正例P时,FP的大幅增长只能换来FPR的微小改变。结果是虽然大量负例被错判成正例,在ROC曲线上却无法直观地看出来。(也可以只分析ROC曲线左边一小段)。
 
PR曲线:
 PR曲线使用了Precision,因此PR曲线的两个指标都聚焦于正例。类别不平衡问题中由于主要关心正例,所以在此情况下PR曲线被广泛认为优于ROC曲线。
 
使用场景:
1、ROC曲线由于兼顾正例与负例,所以适用于评估分类器的整体性能,相比而言PR曲线完全聚焦于正例。
2、如果有多份数据且存在不同的类别分布,比如信用卡欺诈问题中每个月正例和负例的比例可能都不相同,这时候如果只想单纯地比较分类器的性能且剔除类别分布改变的影响,则ROC曲线比较适合,因为类别分布改变可能使得PR曲线发生变化时好时坏,这种时候难以进行模型比较;反之,如果想测试不同类别分布下对分类器的性能的影响,则PR曲线比较适合。
3、如果想要评估在相同的类别分布下正例的预测情况,则宜选PR曲线。
4、类别不平衡问题中,ROC曲线通常会给出一个乐观的效果估计,所以大部分时候还是PR曲线更好
5、最后可以根据具体的应用,在曲线上找到最优的点,得到相对应的precision,recall,f1 score等指标,去调整模型的阈值,从而得到一个符合具体应用的模型。

非极大值抑制(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次。

例如:
目标检测的评价指标_第3张图片
就像上面的图片一样,定位一个车辆,最后算法就找出了一堆的方框,我们需要判别哪些矩形框是没用的。非极大值抑制的方法是:先假设有6个矩形框,根据分类器的类别分类概率做排序,假设从小到大属于车辆的概率 分别为A、B、C、D、E、F。
(1)从最大概率矩形框F开始,分别判断A~E与F的重叠度IOU是否大于某个设定的阈值;
(2)假设B、D与F的重叠度超过阈值,那么就扔掉B、D;并标记第一个矩形框F,是我们保留下来的。
(3)从剩下的矩形框A、C、E中,选择概率最大的E,然后判断E与A、C的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框。
就这样一直重复,找到所有被保留下来的矩形框。
例子来源:https://www.cnblogs.com/makefile/p/nms.html

你可能感兴趣的:(深度学习,目标检测评价指标)