yingkaisha / keras-unet-collection

The Tensorflow, Keras implementation of U-net, V-net, U-net++, UNET 3+, Attention U-net, R2U-net, ResUnet-a, U^2-Net, TransUNET, and Swin-UNET with optional ImageNet-trained backbones.
MIT License
663 stars 184 forks source link

How to use the exemple given using Unet3p on Oxford Pet dataset with a dataset containing gray images #61

Open hubsilon opened 2 years ago

hubsilon commented 2 years ago

Dear all,

I hope you're going well.

I would like to use the given exemple using Unet3p on Oxford Pet dataset with a dataset containing gray images as input (masks have 3 labels, namely 1 2 3).

I tried without changing anything, as if the gray image were rgb images, Here is the error: ValueError: Dimensions must be equal, but are 1048576 and 1572864 for '{{node hybrid_loss/mul}} = Mul[T=DT_FLOAT](hybrid_loss/Reshape, hybrid_loss/Reshape_1)' with input shapes: [1048576], [1572864].

The error lies in the line:

train on batch

    loss_ = unet3plus.train_on_batch([train_input,], 
                                     [train_target, train_target, train_target, train_target, train_target,])

Then I tried by changing the input_size from (128, 128, 3) to (128, 128, 1) and changing as well channel=3 to channel=1 but it did not work as well. Same Error, same line.

I would appreciate your help on this matter and/or the best way to use this script on gray images.

best regards

murdav commented 1 year ago

Try to have a look at this example (lines 8-10): https://github.com/yingkaisha/keras-vision-transformer/blob/main/examples/Swin_UNET_oxford_iiit.ipynb

I think you have used n_labels equals for input and output layers. If so, you need to have hot-encoded mask.