【语义分割专栏】先导篇:评价指标(PA,CPA,IoU,mIoU,FWIoU,F1)
本文介绍了语义分割任务中常用的评价指标,从混淆矩阵出发,如果去计算PA、CPA、IoU、mIoU、FWIoU、F1等语义分割任务中常用的指标。
目录
前言
混淆矩阵
计算混淆矩阵
评价指标
像素准确率(Pixel Accuracy,PA)
类别像素准确率(Class Pixel Accuracy,CPA)
类别平均像素准确率(Mean Pixel Accuracy,MPA)
交并比(Intersection over Union,IoU)
平均交并比(Mean Intersection over Union,mIoU)
频率加权交并比(Frequency Weighted Intersection over Union,FWIoU)
类别F1分数(Class F1 Score)
平均F1分数(Mean F1 Score,mF1)
全部代码
结语
参考内容
前言
本篇向大家介绍下语义分割任务中的常用的评价指标。该怎么评价语义分割模型的优劣以及好坏呢?以下就是些常用的评价指标。本篇文章收录于语义分割专栏,如果对语义分割领域感兴趣的,可以去看看专栏,会对经典的模型以及代码进行详细的讲解哦!其中会包含可复现的代码!
混淆矩阵
相信大家对这张图都不会陌生,这就是混淆矩阵。以上展示的是二分类的情况,后面给大家扩展到多分类的情况
那么到底啥是混淆矩阵呢?可能很多人都说不太出来。要知道混淆矩阵是一种用于评估分类模型性能的表格,它展示了模型预测结果与真实标签之间的对应关系。在多分类问题中,混淆矩阵可以帮助我们了解模型在各个类别上的表现,特别是哪些类别容易被混淆。这也是为什么叫混淆矩阵的原因。
混淆矩阵的行列分别代表以下内容:
行(垂直方向):代表真实类别(True Class)。每一行对应一个真实类别,表示实际属于该类别的样本。
列(水平方向):代表预测类别(Predicted Class)。每一列对应一个预测类别,表示模型预测为该类别的样本。
混淆矩阵中的元素表示相应真实类别和预测类别的样本数量。
如上图所示的,对于二分类问题,将类别1称为正例(Positive),类别2称为反例(Negative),分类器预测正确记作真(True),预测错误记作(False),由这4个基本术语相互组合,构成混淆矩阵的4个基础元素,为:
TP(True Positive):真正例,模型预测为正例,实际是正例(模型预测为类别1,实际是类别1)
FP(False Positive):假正例,模型预测为正例,实际是反例 (模型预测为类别1,实际是类别2)
FN(False Negative):假反例,模型预测为反例,实际是正例 (模型预测为类别2,实际是类别1)
TN(True Negative):真反例,模型预测为反例,实际是反例 (模型预测为类别2,实际是类别2)
所以到这,我们可以很明确从混淆矩阵中获取一些信息,其中对角线的为预测正确的类别数量,横着的为真实的,竖着的为预测的。
所以我们就可以计算一些指标:
准确率(Accuracy):准确率是所有正确预测的样本数占总样本数的比例
精确率(Precision):精确率是所有正确预测的正例占预测为正例的样本数的比例。
召回率(Recall):召回率是所有正确预测的正例占实际正例的样本数的比例。
我们再来看多分类的情况,假设我们有一个3类分类问题,混淆矩阵如下所示:
| | Predicted Class 0 | Predicted Class 1 | Predicted Class 2 |
|--------|--------------------|--------------------|--------------------|
| True 0 | 50 | 2 | 3 |
| Class | | | |
| True 1 | 5 | 60 | 10 |
| Class | | | |
| True 2 | 4 | 8 | 48 |
| Class | | | |
那么我们的**准确率的计算就是对角线的值的和除以全部的值的和****。
即 acc = (50+60+48)/(50+2+3+5+60+10+4+8+48)
精确率就是对角线的值除以该列的值的和,例如类1:
即 Precision = 60 /(2+60+8)
召回率就是对角线的值除以该行的值的和,例如类1:
即 Recall = 60 /(5+60+10)