总结:

A、recall=sensitivity=TPR,即召回率=灵敏度=真正例率

B、FPR=1-specify,即假阳性率(误诊率)=1-特异度

C、PR曲线的横坐标为ROC曲线的纵坐标

D、正负例样本比例变化较大的情况下,PR曲线受影响较大,ROC曲线相对鲁棒,所以,ROC曲线能降低不同测试集带来的干扰,客观衡量模型性能;但关注模型在不均衡数据集下的结果时,PR曲线则能较好反应指标情况。

E、AP是PR曲线下面积,各个数据集计算AP方式有区别

F、IOU与DICE可以互推:IOU=DICE/(2-DICE)

 

详细内容介绍如下:

1.混淆矩阵

 

行索引为GT,列索引为预测

TP(True Positive):实际为正例,预测为正例的数量

TN(True Negative):实际为负例,预测为负例的数量

FP(False Positive):实际为负例,预测为正例的数量

FN(False Negative):实际为正例,预测为负例的数量

a.T和F代表预测是否正确(T代表预测正确,F代表预测错误)

b.P和N则代表预测的结果,P代表预测为正例,N代表预测为负例

c.T/F与P/N相结合起来,就是最终的GT,例如TP代表GT为正例,FP代表GT为负例。

d.正例和负例是人为确定的,一般设定关注的类别为正例

e.设定当前类为正例后,其余类均为负例

 

2.分类指标总结

 

Accuracy(准确率):预测对的数量占整体数量的比例

    acc=(TP+TN)/(TP+TN+FP+FN)

 

Recall(召回率/查全率/检出率):预测对的正例的数量占整体正例的比例,即正例的检出比例(正例比较重要时,容易关注这个指标,比如希望查出所有患癌症的病人)

    recall=TP/(TP+FN)

 

Precision(精确率/查准率):预测对的正例的数量占所有预测为正例的数量的比例,用于衡量预测的准不准

    precision=TP/(TP+FP)

 

F1-Score:是precision和recall的调和平均数,例如,模型A的recall高,precision低,模型B相反,那怎么综合比较模型A和B的性能呢,用这个

    F1-Score=2*(Precision*Recall)/(Precision+Recall)

 

Sensitivity(灵敏度):正例的召回率(或检出率)

    sensitivity=TP/(TP+FN)=Recall

 

Specify(特异度):负例的召回率(或检出率)

    specify=TN/(TN+FP)

 

PPV(Positive Predictive Value):阳性预测值,等同于精确率,预测为正例的人中,真的正例所占比例。

    PPV=TP/(TP+FP)=precision

 

NPV(Negative predictive value):阴性预测值,预测为负例的人中,真的负例所占比例,等同于负例的精确率

    NPV=TN/(TN+FN)

 

TPR(True Positive rate):真正例率,等同于正例的召回或灵敏度

    TPR=TP/(TP+FN)=recall=sensitivity

 

FPR(False Positive Rate):假正例率,即误诊率(没病检测出有病是误诊,有病检测出没病是漏诊),没病检测出有病占整体没病人数的比例。

    FPR=FP/(FP+TN)=1-specify (参考混淆矩阵)

 

FNR(False Negative Rate):假阴性率,即漏诊率,有病检测出没病占真正有病的比例:

    FNR=FN/(TP+FN)=1-sensitivity=1-recall

 

ROC曲线

    按照模型输出的正例预测概率排序,顺序为从高到低,之后将每个概率值作为阈值,得到多个混淆矩阵,对应多对TPR和FPR,将FPR的值作为X轴的值,TPR的值作为Y轴的值,以此作图,图中的点连成的曲线就是ROC曲线,体现的是随着检出率的增加,误诊率的增加情况,好模型的ROC曲线应该随着阈值变化,检出率持续增加,而误诊率几乎保持恒定为零,如下图。

 

 

AUC(area under curve):ROC曲线下的面积,认为曲线面积越大,模型效果越好(只凭ROC曲线难以判断具体哪个模型好)。AUC的特点是不会受正负样本比例的影响。

 

PR曲线:是recall和precision点所连成的曲线,recall的值为x轴,precision的值为y轴。由于TPR=recall,所以PR曲线的横坐标为ROC曲线的纵坐标正负例样本比例变化较大的情况下,PR曲线受影响较大,ROC曲线相对鲁棒

    所以,在正负例样本不均衡情况下,ROC曲线更能客观衡量模型性能,降低不同测试集的干扰;如果就想看模型在不均衡数据集下的结果,PR曲线则能较好反应指标情况。

 

2. 目标检测指标总结

    介绍指标之前先介绍一下什么是IOU(后面会用到):

  IOU(Intersection over Union):交并比,取值范围为[0,1]

 

        IOU=|GT∩Predict|/|GT∪Predict|

              =intersection/(GT+Predict-intersection)

 

 目标检测的输出有:预测目标的位置坐标(bbox)、分类(classification)和置信度(confidence)

    TP,FP,FN定义如下:

        TP:iou>0.5,一个GT计算一次,即使多个预测框满足条件;

        FP:iou<=0.5,或在一个GT上多出来的iou>0.5检测框;

        FN:没有检测出来的GT;

 

    既然有TP、FP、FN,那么分类任务的指标在这里也是可以用的,除此之外,再介绍一下仅适用于目标检测任务的指标AP和mAP:

  AP(average precision):平均精确率,是PR曲线下的面积。

      对某一类别预测框的置信度进行排序,从大到小,以每个置信度为阈值,计算precision和recall,将点连成线,连线的每个峰值均向x轴和y轴做垂线(重复区域合并),这些曲线所包含的面积就是这个类别对应的AP(每个类别均有AP)

   mAP(mean average precision):对各个类别的AP取平均,即 MAP = 各类别的AP求和/类别数量

 

实际上,不同数据集对AP的计算方式不同,介绍如下:

    PASCAL Voc 2008的AP计算:

        (1)IOU阈值为0.5

        (2)一个GT只有一个正例,冗余检测框为负例

        (3)在平滑之后的pr曲线上进行计算,即将横轴均分十段(recall=0也是一个点,共11个点),AP为每个点对应的presion值的平均值(先求11个点的precision值的和,再除以11)

 

    PASCAL Voc 2010之后的AP计算:

      依然在平滑值的pr曲线上计算,这次是利用积分计算曲线下的面积,作为AP值

 

    COCO数据集的AP计算:

     与VOC 2008分10段不同,COCO采样了100个点,且IOU是从0.5到0.95,每隔0.05取值一次,作为阈值,COCO的AP是已经对不同阈值、不同类别取平均之后的结果,已经相当于mAP了,此外,COCO还有AP50、AP75、APS、APM、APL指标,分别代表:

  AP50代表iou阈值为0.5时,各个分类的AP均值

  AP75代表iou阈值为0.75时,各个分类的AP均值

  APS代表GT面积小于32x32的各分类的AP均值

  APM代表GT面积介于32x32到96x96之间的各分类的AP均值   

  APL代表GT面积大于96x96的各分类的AP均值

 

3. 语义分割指标总结

    由于语义分割是像素级别的分类,所以分类任务的指标也是可以用到语义分割任务上的,此处再介绍两个语义分割任务的常用指标IOU和DICE.

    IOU:计算方式上文已有提及,与目标检测计算两个矩形框的交并比不同,语义分割的iou计算的是像素级别的交并比。

 

DICE(dice similarity coefficient)公式:

        DICE = 2|GT∩Predict| / (|GT|+|Predict|)

  此外:

  IOU与DICE可以互推:

        IOU=DICE/(2-DICE)

 

参考文献

PR与F1-score的关系参考:https://www.cnblogs.com/dataanaly/p/12924002.html

AP绘制参考:https://blog.csdn.net/wzk4869/article/details/130778741

不同数据集的AP计算参考:https://zhuanlan.zhihu.com/p/360539304

 

 

posted on 2024-04-25 09:15  一点飞鸿  阅读(2173)  评论(0编辑  收藏  举报