Im doing a multi task learning for road and center line extraction (2 classes) I used IOU and dice_coef as a metrics :

def dice_coef(actual, predicted, eps=1e-3):

    y_true_f = K.flatten(actual)
    y_pred_f = K.flatten(predicted)
    intersection = K.sum(y_true_f * y_pred_f)
    return (2. * intersection + eps) / (K.sum(y_true_f) + K.sum(y_pred_f) + eps)

def iou(actual, predicted):

    actual = K.flatten(actual)
    predicted = K.flatten(predicted)
    intersection = K.sum(actual * predicted)
    union = K.sum(actual) + K.sum(predicted) - intersection
    print(intersection, type(intersection))
    print(union, type(union))
    return 1. * intersection / union

I used Radam as an optimizer and weighted binary cross entropy as loss function, the IOU and Dice_coef for the second class(centerline) was more than 1, but for the first class (road)was within the normal range as shown here metrics, the accuracy was within the normal range also for both classes.
I Found this discussion here and they mentioned that, should used an image dice not a batch dice, when i followed the same implementation of the image dice for IOU and dice_coef, nothing has changed still the metrics exceed 100%, my batch size =2, image size(224,224,3), my y_ture is between (0,1). but even with this strange result Ive got a good predictions for both classes CLand road

I should mentioned that I used the same first implementation for the IOU and dice_coef. for single task and it worked perfectly. I dont know why Ive got this strange results, even when I used different implementation for the mentioned metrics.

Please any kind of help will be appreciated.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.