Взвешенная двоичная кросс-энтропийная потеря кубика для задачи сегментации - PullRequest
0 голосов
/ 20 ноября 2018

Я использую взвешенную двоичную кросс-энтропийную потерю кубиков для проблемы сегментации с дисбалансом класса (в 80 раз больше черных пикселей, чем белых пикселей).

def weighted_bce_dice_loss(y_true, y_pred):
    y_true = K.cast(y_true, 'float32')
    y_pred = K.cast(y_pred, 'float32')
    averaged_mask = K.pool2d(
        y_true, pool_size=(50, 50), strides=(1, 1), padding='same', pool_mode='avg')
    weight = K.ones_like(averaged_mask)
    w0 = K.sum(weight)
    weight = 5. * K.exp(-5. * K.abs(averaged_mask - 0.5))
    w1 = K.sum(weight)
    weight *= (w0 / w1)
    loss = weighted_bce_loss(y_true, y_pred, weight) + dice_loss(y_true, y_pred)
    return loss

Коэффициент костей увеличился, а потери уменьшились, но в каждую эпоху я получаю черное изображение на выходе (все пиксели помечены черным)

enter image description here

Есть идеи, почему это происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...