我正在使用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
答案 0 :(得分:0)
确保您标准化了 the images
和 the masks
标准化图像和蒙版意味着它们的像素值介于 0
和 1
之间
我遇到了同样的问题,原因是我没有对掩码进行标准化