mmlab中mmseg中的评价指标
config文件中验证阶段可以在tensorboard中显示的评价指标有:mDice,mIoU,mFscore
test.py 的参数设置中 --eval 可以设置测试阶段时计算的评价指标:mDice,mIoU,mFscore
结果文件中在测试集上各指标的数值大小
test.py的debug过程
1 获得所有图片的交集像素和并集像素的统计直方图
1.1 每张图片的结果 result
1.2每个图像结果计算交并像素统计直方图
1.2.1 统计直方图的获得过程
maks模板:将数据预处理时可能用到padding时使用的255像素去除掉(gt中只有0和1像素:二分类语义分割)
最终的所有图像的结果数据:四列(pred和gt交集中 像素0和像素1的像素个数,pred和gt并集中0和1的像素个数,pred中0和1的像素个数,gt_label中0和1的像素个数)
2 根据所有测试集图像上的交集像素和并集像素统计直方图,计算各评估指标
此处固定了评价指标为mIoU,mDice,mFscore的子集
改变预测结果的数据维度:171->tuple 4x171
各评估指标Acc,IoU,Fscore的公式
两列为不同类别的分别的评价指标:在结果文件中显示为IoU.MA和IoU.background
aAcc=
交集中
0
和
1
的像素个数
g
t
中
0
+
1
像素个数
\frac{交集中0和1的像素个数} {gt中0+1像素个数}
gt中0+1像素个数交集中0和1的像素个数
IoU.background =
交集中
0
的像素个数
并集中
0
的像素个数
\frac{交集中0的像素个数}{并集中0的像素个数}
并集中0的像素个数交集中0的像素个数
IoU.MA =
交集中
1
的像素个数
并集中
1
的像素个数
\frac{交集中1的像素个数}{并集中1的像素个数}
并集中1的像素个数交集中1的像素个数
Acc.background =
交集中
0
的像素个数
g
t
中
0
的像素个数
\frac{交集中0的像素个数}{gt中0的像素个数}
gt中0的像素个数交集中0的像素个数
Acc.MA =
交集中
1
的像素个数
g
t
中
1
的像素个数
\frac{交集中1的像素个数}{gt中1的像素个数}
gt中1的像素个数交集中1的像素个数
Dice.background =
2
∗
交集中
0
的像素个数
(
p
r
e
d
中
0
的像素个数
+
g
t
l
a
b
e
l
中
0
的像素个数)
\frac{2*交集中0的像素个数}{(pred中0的像素个数+gt_label中0的像素个数)}
(pred中0的像素个数+gtlabel中0的像素个数)2∗交集中0的像素个数
Dice.MA =
2
∗
交集中
1
的像素个数
(
p
r
e
d
中
1
的像素个数
+
g
t
中
1
的像素个数)
\frac{2*交集中1的像素个数}{(pred中1的像素个数+gt中1的像素个数)}
(pred中1的像素个数+gt中1的像素个数)2∗交集中1的像素个数
Precision.MA =
交集中
1
的像素个数
p
r
e
d
中
1
的像素个数
\frac{交集中1的像素个数}{pred中1的像素个数}
pred中1的像素个数交集中1的像素个数
Recall.MA =
交集中
1
的像素个数
g
t
中
1
的像素个数
\frac{交集中1的像素个数}{gt中1的像素个数}
gt中1的像素个数交集中1的像素个数
Fscore = precision和recall的调和平均
说明:
- 交集意味着预测正确
- 从公式中可以看出,Acc.MA = Recall.MA 即类别精确率=类别召回率
对IoU.background 和IoU.MA 等类别评价指标做np.nanmean(),并做四舍五入,并保留两位小数(这个打印到终端上)