骰子系数大于1

时间:2019-11-26 15:45:33

标签: tensorflow keras unity3d-unet

我正在使用UNET从图像中分割人员。 我正在使用COCO数据集来做同样的事情。 以下是我用于使用张量流训练模型的损失的定义。

smooth = 1.

def dice_coef(y_true, y_pred):
    y_true_f = K.flatten(y_true)
    y_pred_f = K.flatten(y_pred)
    intersection = K.sum(y_true_f * y_pred_f)
    return (2. * intersection + smooth) / (K.sum(y_true_f) + K.sum(y_pred_f) + smooth)


def dice_coef_loss(y_true, y_pred):
    return -dice_coef(y_true, y_pred)

def iou(y_true, y_pred, smooth=1.):
    intersection = K.sum(K.abs(y_true * y_pred), axis=-1)
    union = K.sum(y_true,-1) + K.sum(y_pred,-1) - intersection
    iou = (intersection + smooth) / ( union + smooth)
    return iou

我发现实现了骰子和骰子损失here

model.compile(optimizer=Adam(lr=lr), loss=dice_coef_loss,
                                metrics=[dice_coef, iou])

批量大小为8,学习率为1e-4,我在第一个时代就获得了以下结果

以下是日志结果: 请向我解释为什么骰子系数大于1。

Epoch 1/100

2687/8014 [=========> .......................]-预计到达时间:3:04:59-损失:- 1.0958-dice_coef:1.0957-iou:0.5446

1 个答案:

答案 0 :(得分:0)

确保您标准化了 the imagesthe masks

标准化图像和蒙版意味着它们的像素值介于 01 之间

我遇到了同样的问题,原因是我没有对掩码进行标准化