def dice_core(y_true, y_pred):
"""
Computes the Sorensen-Dice metric, where P come from class 1,2,3,4,5
TP
Dice = 2 -------
T + P
Parameters
----------
y_true : keras.placeholder
Placeholder that contains the ground truth labels of the classes
y_pred : keras.placeholder
Placeholder that contains the class prediction
Returns
-------
scalar
Dice metric
"""
y_pred_decision = tf.floor((y_pred + K.epsilon()) / K.max(y_pred, axis=4, keepdims=True))
mask_true1 = y_true[:, :, :, :, 3:]
mask_true2 = y_true[:, :, :, :, 1:2]
mask_true = K.sum(K.concatenate([mask_true1, mask_true2], axis=4), axis=4)
mask_pred1 = y_pred_decision[:, :, :, :, 3:]
mask_pred2 = y_pred_decision[:, :, :, :, 1:2]
mask_pred = K.sum(K.concatenate([mask_pred1, mask_pred2], axis=4), axis=4)
y_sum = K.sum(mask_true * mask_pred)
return (2. * y_sum + K.epsilon()) / (K.sum(mask_true) + K.sum(mask_pred) + K.epsilon())
评论列表
文章目录