语义分割中最经常使用的有3个指标。为了便于解释,首先须要介绍混淆矩阵,以下所示:函数
混淆矩阵spa |
真实值blog |
||
Positiveci |
Negativeit |
||
预测值io
|
Positivetable |
True Positive(TP)真阳性nio |
False Positive(FP)假阳性im |
Negativecall |
False Negative(FN)假阴性 |
True Negative(TN)真阴性 |
首先假定数据集中有k+1类(0...k),0一般表示背景。
使用Pii表示本来为i类同时预测为i类,即真阳性(TP)和真阴性(TN)。
Pij表示本来为i类被预测为j类,即假阳性(FP)和假阴性(FN)。
若是第i类为正类,当i!=j时,那么Pii表示TP,Pjj表示TN,Pij表示FP,Pji表示FN。
1) Pixel Accuracy,像素精度是标记正确的像素占总像素的百分比。公式以下:
2) Recall,召回率是预测值为1且真实值也为1的样本在真实值为1的全部样本中所占的比例。公式以下:
3) Mean IoU(mean intersection over union),均交并比在语义分割中做为标准度量一直被人使用。IoU公式以下:
Mean IoU是在全部类别的IoU上取平均值。其公式以下:
在经典的论文《Fully Convolutional Networks for Semantic Segmentation》也有相关的指标定义,可是大致上与上述定义相同。
对一张须要预测的图来说,图中有背景(0)和2类标签(1、2),共计46 + 34 + 20 = 100个像素点数。以下图所示:
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 2 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 2 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 2 |
0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 2 | 2 |
0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 2 | 2 |
0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 2 | 2 |
0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 2 | 2 |
0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 2 | 2 |
0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 2 | 2 |
0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 2 | 2 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 2 |
0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 2 | 2 |
1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 2 | 2 |
0 | 1 | 1 | 1 | 1 | 1 | 0 | 2 | 2 | 2 |
0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 2 | 2 |
0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 2 | 2 |
1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 2 |
1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 2 |
如上所示,第一幅图为GT所标注出来的真实类别状况,第二幅图为预测的类别状况。
则首先计算混淆函数:
混淆矩阵 |
真实值(4六、3四、20) |
|||
类别0 |
类别1 |
类别2 |
||
预测值 |
类别0 |
40 |
4 |
6 |
类别1 |
5 |
30 |
0 |
|
类别2 |
1 |
0 |
14 |
求法:
对角线上的值 / 对角线所在行、列其它值之和 + 对角线值
则:
类别0的IoU:40 /(40 + 4 + 6 + 5 + 1) = 0.714
类别1的IoU:30 /(5 + 30 + 0 + 4 + 0) = 0.769
类别1的IoU:14 /(1 + 0 + 14 + 6 + 0) = 0.667
Mean IoU:(1 / 3)*(0.714 + 0.769 + 0.667 ) = 0.717