看懂YOLOv7混淆矩阵的含义,正确计算召回率、精确率、误检率、漏检率

1、准确率、精确率、召回率、误报率、漏报率概念及公式

阳性(正)样例 P 和 阴性(负)样例 N

  • 正样本预测为正样本的为True positive(TP)
  • 正样本预测为负样本的为False negative(FN)
  • 负样本预测为正样本的为False positive(FP)
  • 负样本预测为负样本的为True negative(TN)

所以有:
P = T P + F N N = F P + T N P = TP + FN \\ N = FP + TN P=TP+FNN=FP+TN

1.1 准确率 Accuracy

  • 反映模型对整体样本判断正确的能力,值越大越好
  • 但样本不平衡时,ACC 不能很好地评估模型性能
    A c c = T P + T F T P + F P + T N + F N Acc = \frac{TP + TF}{TP + FP + TN + FN} Acc=TP+FP+TN+FNTP+TF

1.2 精确率 Precision

  • 反映模型正确预测正样本精度的能力,值越大越好
  • 也称精度查准率阳性预测值(positive predictive value, PPV)
  • 即:衡量在所有预测为正样本的数据中,有多少是真正的正样本
    P r e c i s i o n ( P P V ) = T P T P + F P Precision(PPV) = \frac{TP}{TP + FP} Precision(PPV)=TP+FPTP

1.3 召回率 Recall

  • 反映模型正确预测正样本全度的能力,值越大越好
  • 也称真阳性率(true positive rate, TPR),灵敏度查全率
  • 即:衡量在所有真实的正样本中,有多少被预测为正样本
    R e c a l l ( T P R ) = T P T P + F N = T P P Recall(TPR) = \frac{TP}{TP + FN}=\frac{TP}{P} Recall(TPR)=TP+FNTP=PTP

1.4 F1-Score

  • 是对精确率和召回率的加权求和
    F 1 − S c o r e = 2 × P r e c i s i o n × R e c a l l P r e c i s i o n + R e c a l l F1-Score=\frac{2×Precision×Recall}{Precision+Recall} F1Score=Precision+Recall2×Precision×Recall

1.5 误检率 false rate

  • 反映模型正确预测正样本纯度的能力,值越小越好
  • 又称虚警率假阳性率(False Positive Rate)
  • 即:在所有真实的负样本中,有多少被预测为正样本
    F P R = F P T N + F P = F P N FPR=\frac{FP}{TN + FP}=\frac{FP}{N} FPR=TN+FPFP=NFP

1.6 漏检率 miss rate

  • 反应模型正确预测负样本纯度的能力,值越小越好
  • 又称错检率漏警率假阴性率(False Negative Rate)
  • 即:在所有真实的正样本中,有多少被预测为负样本
  • 漏检率 + 召回率 = 1
    F N R = F N T P + F N = F N P FNR=\frac{FN}{TP+FN}=\frac{FN}{P} FNR=TP+FNFN=PFN

2、YOLOv7混淆矩阵分析

  • 应该YOLO其他系列的也可以这样分析
  • 图中格子里面的数字表示比例,其余重要的含义在图中已表示

在这里插入图片描述

例如,通过计算可以得到:对角线的值就表示的召回率漏检率=1-Recall=0.4

类别 D 00 的召回率 = R e c a l l ( T P R ) = T P T P + F N = T P P = 0.60 0.60 + 0.01 + 0.39 = 0.6 类别 D 00 的漏检率 = F N R = F N T P + F N = F N P = 0.01 + 0.39 0.60 + 0.01 + 0.39 = 0.4 = 1 − R e c a l l 类别D_{00}的召回率=Recall(TPR) = \frac{TP}{TP + FN}=\frac{TP}{P}=\frac{0.60}{0.60+0.01+0.39}=0.6\\ 类别D_{00}的漏检率= FNR=\frac{FN}{TP+FN}=\frac{FN}{P}=\frac{0.01+0.39}{0.60+0.01+0.39}=0.4=1-Recall 类别D00的召回率=Recall(TPR)=TP+FNTP=PTP=0.60+0.01+0.390.60=0.6类别D00的漏检率=FNR=TP+FNFN=PFN=0.60+0.01+0.390.01+0.39=0.4=1Recall

以D00类别来看:

  • 除了对角线上的那个值以外,反映的是漏检率(漏检成了其他的类别)
  • 除了对角线上的那个值以外,反映的是误检率(误检成了其他的类别)

例如第1列第3行的值0.01表示:漏检D00且认为是D20的概率是0.01
第2列第1行的值0.01表示:误检D00且认为是D10的概率是0.01

猜你喜欢

转载自blog.csdn.net/LWD19981223/article/details/134674515