目标检测以及分类任务中的评价指标(roc,auc,map等)

我们在分类任务中经常用ROC曲线与AUC来衡量分类器的好坏。在理解之前,我首先介绍一下混淆矩阵。

混淆矩阵
在二分类问题上,真实类别分为:F:反例;T:正例;预测类别:P:正例;N:反例。
真正例TP(true postive):样本真实类别为1,学习模型预测的类别也为1
假正例FP(false postive):样本真实类别为0,学习模型预测的类别为1
真反例TN(true negative):样本真实类别为0,学习模型预测的类别也为0
假反例FN(false negative):样本真实类别为1,学习模型预测的类别也为0

目标检测以及分类任务中的评价指标(roc,auc,map等)_第1张图片

TPR,FPR
在这里插入图片描述
TPR:正样本中预测为正的比例
FPR:假样本中预测为正的比例
随着阈值的降低,FN,TN的值会趋向0,TPR,FPR趋向1。ROC曲线就是TPR与FPR随着阈值变化绘制成的曲线,当FPR值越小,TPR越大(即AUC面积越大),就说明分类器的性能越好。
目标检测以及分类任务中的评价指标(roc,auc,map等)_第2张图片

Recall,Precision
如果 FN 太多,我们就说这种方法的 recall 很低,自然风险控制能力就很差(放走了携带病毒的人)在这里插入图片描述

如果 FP 太多,我们就说这种方法的 precision 很低,自然这个方法就很浪费(把大量健康人当做携带者处理,成本激增)在这里插入图片描述
当阈值最大时,FP为0,precision=1,因为阈值很大,所以正例反例都会被预测为反例,因此FN很大,recall接近0。随着阈值降低,FP值变大,FN降低,所以recall接近1,precision降低。
目标检测以及分类任务中的评价指标(roc,auc,map等)_第3张图片

目标检测mmap
评价目标检测结果要考虑几个问题:位置偏差,类别平衡。
我们知道,不同的应用场景对IOU的要求不同,所以如何在不同IOU综合衡量模型性能是评价指标的关键。另外类别平衡也不能忽视,样本极度不平衡时,我们需要综合考虑样本间的准确率,因此,在相同IOU下对各个样本AP求平均也很必要。

现在我们来看看,给定了一个IOU阈值、并给定了一个类别,如何具体地计算检测的性能。首先,我们要先对所有的检测结果排序,得分越高的排序越靠前,然后依次判断检测是否成功。将排序后的所有结果定义为DTs,所有同类别的真实目标定义为GTs。先依序遍历一遍DTs中的所有DT,每个DT和全部GT都计算一个IOU,如果最大的IOU超过了给定的阈值,那么视为检测成功,算作TP(True Positive),并且最大IOU对应的GT被视为匹配成功;如果该DT与所有GT的IOU都没超过阈值,自然就是FP(False Positive);同时,每当一个GT被检测成功后,都会从GTs中“被取走”,以免后续的检测结果重复匹配。因此如果有多个检测结果都与同一个GT匹配,那么分数最高的那个会被算为TP,其余均为FP。遍历完成后,我们就知道了所有DTs中,哪些是TP,哪些是FP,而由于被匹配过的GT都会“被取走”,因此GTs中剩下的就是没有被匹配上的FN(False Negative)。以下是为了方便理解的代码(Python),这段代码仅用于理解,效率较低。真实代码请参考MS COCO的官方源码。

目标检测以及分类任务中的评价指标(roc,auc,map等)_第4张图片
我们再重新过一遍计算方法:给定一组IOU阈值,在每个IOU阈值下面,求所有类别的AP,并将其平均起来,作为这个IOU阈值下的检测性能,称为mAP(比如[email protected]就表示IOU阈值为0.5时的mAP);最后,将所有IOU阈值下的mAP进行平均,就得到了最终的性能评价指标:mmAP。

你可能感兴趣的:(深度学习,机器学习,深度学习,人工智能)