加权二进制交叉熵在keras语义分割中的应用

时间:2019-12-22 08:16:09

标签: keras deep-learning cross-entropy semantic-segmentation

我正在尝试在Keras中实现加权二进制交叉熵函数,以用于语义分割问题。

我的 y_true y_pred 的形状像(batch,h,w,1)。因此,对于每个像素,我都会生成一些权重,范围从1到4。通常的weight_map看起来像这样:

Weight Map for Semantic Segmentation

weights_map的形状为(h,w,1),即,为批次中的每个y计算weight_map。

现在我写的损失函数是这样:

from keras.losses import binary_crossentropy

def weighted_bce_loss(y_true, y_pred):

    loss = binary_crossentropy(y_true, y_pred)
    weights = weight_map(y_true)
    loss = loss * weights

    return loss

我相信我可以将每个像素的损失乘以权重图,然后进一步将平均值作为输出损失。权重为1的像素将保持不变,而对于具有更高值的像素,损耗将成倍增加。但是,这种损失函数似乎不起作用,因为即使经过几个时期,我也无法在一个简单的数据集上收敛。知道我要去哪里错了吗?

0 个答案:

没有答案