分割网络评价指标:Dice与IOU的区别
1. Dice loss与IOU loss哪个用于网络模型的训练比较好?
答曰: 它俩都不太好。它俩都是一种metric learning的衡量方式,两者都存在训练过程不稳定的问题,在和很小的情况下会得到较大的梯度,会影响正常的反向传播。一般情况下,使用两者对应的损失函数的原因是分割的真实目的是最大化这两个度量指标,而交叉熵是一种代理形式,利用了其在反向传播中易于最大化优化的特点。
所以,正常情况下是使用交叉熵损失函数来训练网络模型,用Dice或IOU系数来衡量模型的性能。因为,交叉熵损失函数得到的交叉熵值关于logits的梯度计算形式类似:p-g(p是softmax的输出结果,g是ground truth),这样的关系式自然在求梯度的时候容易的多。而Dice系数的可微形式,loss值为2pg/(p^2 + g^2)或2pg/(p+g),其关于p的梯度形式显然是比较复杂的,且在极端情况下(p,g的值都非常小时)计算得到的梯度值可能会非常大,进而会导致训练不稳定。
[需要回顾一下网络模型训练过程中的反向传播过程,以及梯度值的计算 ]
Dice loss 训练中存在的问题,训练得到的误差曲线非常混乱,很难看出关于收敛的信息,虽然其可以检查在验证集上的误差来避开。 但依旧还是不常用。
2. Dice系数和IOU系数定义是什么?
答曰: 它俩都是计算集合相似度的度量函数。通常用来计算两个样本的相似度,取值范围是[0,1].
首先明确四个定义:
1. TP (True Positive): 预测结果是正值,实际也是正值,说明预测正确;
2.FP(False Positive):预测结果是正值,实际上该像素值是负值,说明模型把负值误判为正值,模型预测错误;
3.TN(True Negative) : 预测结果是负值,实际也是负值,说明模型预测正确;
4.FN (False Negative):预测结果是负值,实际上该像素值是正值,说明模型把正值误判为负值,模型预测错误。
Dice系数 和 IOU系数的计算以及两者的计算关系如下图所示:

其中,|X ∩Y|近似为预测图与真值之间的点乘,并将点乘的元素结果相加。对于二值图像,真值label中的像素值,只有0和1,点乘操作之后,会将预测结果中非预测对象部分(即两个图像的像素位置是一一对应的,预测结果图像中不是要预测的像素位置的像素值清零),对于激活的像素值,则根据对应的像素值的大小来惩罚低置信度的预测,较高的值会得到更好的Dice系数);|X|,|Y|,可以采用像素值相加和或像素值平方求和来计算。
这两个指标对应的loss就是直接用1-对应的系数公式即可。