1.dice系数和dice损失
(1)Dice系数:DiceCofficient
用于计算两个样本的相似度(取值范围0~1)

|X|表示标签中像素的个数,|Y|表示预测的图片中像素的个数
(2)Dice损失:DiceLoss
DiceLoss和DiceCofficient之间的关系:DiceLoss=1-DiceCofficient
所以:

2.实际的例子

3. 代码实现:
在实现的时候,往往会加上一个smooth,防止分母为0的情况出现。所以公式变成:

一般smooth=1
- def dice_coeff(pred, target):
- smooth = 1.
- num = pred.size(0)
- m1 = pred.view(num, -1) # Flatten
- m2 = target.view(num, -1) # Flatten
- intersection = (m1 * m2).sum()
-
- return (2. * intersection + smooth) / (m1.sum() + m2.sum() + smooth)
- def dice_loss(pred, target):
- smooth = 1.
- num = pred.size(0)
- m1 = pred.view(num, -1) # Flatten
- m2 = target.view(num, -1) # Flatten
- intersection = (m1 * m2).sum()
-
- return 1-(2. * intersection + smooth) / (m1.sum() + m2.sum() + smooth)
4.iou
一个是预测图片,一个是label,预测成功的部分称之为True Positive


分子是预测正确的像素数量
分母是label中所有像素的数量+预测结果中所有像素的数量-重叠部分的像素数量
重叠的越多,IoU越接近1,预测效果越好:



可以看出dice就是在iou的基础上,分子和分母都增加了一个TP

把dice看作自变量,IOU看作因变量,一般使用dice系数可以得到一个更高的指标分数
