骰子损失产生二进制输出,而二进制互熵产生概率输出映射

时间:2019-01-08 10:31:33

标签: python keras conv-neural-network image-segmentation loss-function

目前,我正在尝试各种损失函数和优化器来解决我的二进制图像分割问题。但是,我在Unet中使用的损失函数给出了不同的输出分割图。

我有一个高度不平衡的数据集,因此我正在尝试骰子损失,下面提供了自定义函数。

    def dice_coef(y_true, y_pred, smooth=1):
        """
        Dice = (2*|X & Y|)/ (|X|+ |Y|)
             =  2*sum(|A*B|)/(sum(A^2)+sum(B^2))
        ref: https://arxiv.org/pdf/1606.04797v1.pdf
        """
        intersection = K.sum(K.abs(y_true * y_pred), axis=-1)
        return (2. * intersection + smooth) / (K.sum(K.square(y_true), -1) + K.sum(K.square(y_pred), -1) + smooth)

    def dice_coef_loss(y_true, y_pred):
        return 1 - dice_coef(y_true, y_pred)
二进制交叉熵产生概率输出图,其中每个像素的颜色强度表示该像素为正或负类的机会。但是,当我使用骰子损失函数时,输出的不是概率图,而是像素被分类为0或1。

我的问题是:

1。这些不同的损失函数如何可能会产生截然不同的结果?

  1. 是否可以自定义骰子损失函数,以使输出分割图是类似于二进制交叉熵损失之一的概率图。

0 个答案:

没有答案