dice和iou

1.dice系数和dice损失

(1)Dice系数:DiceCofficient

用于计算两个样本的相似度(取值范围0~1)

 |X|表示标签中像素的个数,|Y|表示预测的图片中像素的个数

(2)Dice损失:DiceLoss

DiceLoss和DiceCofficient之间的关系:DiceLoss=1-DiceCofficient 

所以:

 2.实际的例子

dice和iou_第1张图片

3. 代码实现:

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

dice和iou_第2张图片

 一般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

dice和iou_第3张图片

 分子是预测正确的像素数量

分母是label中所有像素的数量+预测结果中所有像素的数量-重叠部分的像素数量

重叠的越多,IoU越接近1,预测效果越好:

dice和iou_第4张图片

dice和iou_第5张图片

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

 

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

dice和iou_第6张图片

 

你可能感兴趣的:(深度学习,深度学习)