本篇记录一个语义分割的常用损失函数,Dice Loss
Dice系数用于衡量两个样本之间的点的相似度,公式如下:
S
=
2
∣
X
∩
Y
∣
∣
X
∣
+
∣
Y
∣
S=\frac{2|X\cap Y|}{|X| + |Y|}
S=∣X∣+∣Y∣2∣X∩Y∣
其中,
X
∩
Y
X\cap Y
X∩Y表示XY样本之间的交集,||表示元素个数,分子的系数为2,因为分母的计算实际上把交集重复计算了两次。
Dice Loss实际上就是Dice系数的负数:
l
o
s
s
=
1
−
S
=
1
−
2
∣
X
∩
Y
∣
∣
X
∣
+
∣
Y
∣
loss=1-S=1-\frac{2|X\cap Y|}{|X| + |Y|}
loss=1−S=1−∣X∣+∣Y∣2∣X∩Y∣
Dice系数越大,Loss越小,表示两个样本越相似。
paddle中直接给出了一个api计算Dice Loss,可以计算二分类和多分类的Dice Loss:
pred = paddle.ones([b, h, w, n])
label = paddle.ones([b, h, w, 1])
paddle.nn.functional.dice_loss(pred, label)
其中,pred表示模型的多分类输入,shape=[b, h, w, n],n表示多分类的分数,label表示标签mask,shape=[b, h, w, 1]