其实用的评测标准就是mean IoU(Intersection over Union):

 

比如拿对鸟的分类看来,label长这样:

语义分割的模型度量标准

你的模型predict出这样

语义分割的模型度量标准

那么你的模型在鸟这个类别上的IoU或者说IU就是这两张图的交并比:

两张图的交集为,你和label都预测为鸟了的部分

两张图的并集为,你预测为鸟的部分加上label预测为鸟的部分减去你们都预测为鸟了的部分。

那么IU为,交集的像素总数 比上  并集的像素总数。

 

这只是以一张图举例,实际上如果你要验证你的模型在某数据集上对鸟类预测的表现

交集则为,将每张图的交集的像素总数相加

并集则为,将每张图的并集的像素总数相加

IU为,交/并

那么这里你只算出了你的模型在这个数据集中对鸟分类的IU,然后你还要算出对狗啊猫啊的表现

将所有类别的IU相加取平均得出mean IU,为评测语义分割模型的最终标准

 

 

 

另:在计算IU时会借助混淆矩阵confusion_matrix

如对于一个有5个类别的数据集,你对于一张3x3的图片的预测结果为

1 0 1

3 4 3

2 2 2

(数字表示你预测的该像素的类别号)

而label为

4 2 1

3 2 0

1 1 4

 

则要算mean IU,首先算出它们的混淆矩阵,为

0 0 1 0 0

0 1 0 0 1

0 2 0 0 1

1 0 0 1 0

0 0 1 0 0

第0行第2列的1,表示你将1个实际属于0类的像素预测成了2类

第1行第1列的1,表示你将1个实际属于1类的像素预测成了1类(恭喜你预测对了)

第1行第4列的1,表示你将1个实际属于1类的像素预测成了4类

第2行第1列的2,表示你将2个实际属于2类的像素预测成了1类

第2行第4列的1,表示你将1个实际属于2类的像素预测成了4类

......

对于类0,

省略..看下例..

IU=0/1+1-0=0

 

对于类1,

交集为你预测为类1,实际也为类1的像素总数(位于第1行和第1列上的值,1)

并集为你预测为类1的像素总数(对第1列求和,3)+实际为类1的像素总数(对第1行求和,2)-你们交集的像素总数(位于第1行和第1列上的值,1)

IU=1/(3+2-1)=0.25

 

对于类2,

IU=0/(3+2-0)=0

对于类3,

IU=1/(2+1-1)=0.5

对于类4,

IU=0/(1+2-0)=0

 

meanIU=(0+0.25+0+0.5+0)/5=0.15

(注:上例中,我假设数据集只有那一张图,实际的话混淆矩阵中是累加了数据集中所有图片的情况)

相关文章: