JihongJu / keras-fcn

A playable implementation of Fully Convolutional Networks with Keras.
MIT License
202 stars 85 forks source link

ValueError: Unknown layer: BilinearUpSampling2D #19

Open mahemon opened 7 years ago

mahemon commented 7 years ago

Dear @JihongJu thank you very much for sharing your code work. The train.py is running smoothly. After that, I want to run the infer.py, then the following line raise an error like this "ValueError: Unknown layer: BilinearUpSampling2D"

model = load_model('output/fcn_vgg16_weights.h5', custom_objects={'CroppingLike2D': CroppingLike2D,

'mean_categorical_crossentropy': mean_categorical_crossentropy})

        'flatten_categorical_crossentropy': flatten_categorical_crossentropy(classes=21)})

I have tried to find out a solution but I can't make it right. could you please suggest me a way to solve this error. One more thing, Do I need to write a new python file for call the score.py files method or somethings else?

Thanks in advanced

JihongJu commented 7 years ago

Hi @LetsExplore11, that is because BilinearUpSampling2D is a custom layer. You need to pass it as an argument to the load_model. I've updated the infer.py script on master and now it should work.

mahemon commented 7 years ago

Hi @JihongJu Thank you. I am completely new in keras. So I have some common questions.

  1. Do I call the methods of score.py from infer.py to calculate the mean_IU? Would you please give me an example how to call the mean_IU method
  2. Do I need to write another file to run test files?
JihongJu commented 7 years ago

@LetsExplore11 I haven't tested the metrics in score.py and they were implemented with numpy, meaning that they cannot be compiled with the keras model as one of the monitoring metrics. But you can use the infer script to predict segmentation for each of the images once you have a trained model and call, for example, mean_IU by feeding the prediction and the label as numpy arrays.

mahemon commented 7 years ago

Hi @JihongJu Thanks for your quick reply. As I am new in keras, So I do not fully understand your explanation. I beg a pardon for this reason. Could you please suggest me some way to make a way.

JihongJu commented 7 years ago

@LetsExplore11 Ok. The current mean_IU has nothing to do with keras. It is a function manipulating numpy arrays. You can use a trained model to predict the segmentation. Once you have the segmentation, you can use the mean_IU function to compute mean IU. Maybe you can refer to the keras documentation for how to predict with a trained model.