其实用的评测标准就是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
(注:上例中,我假设数据集只有那一张图,实际的话混淆矩阵中是累加了数据集中所有图片的情况)