raghakot / keras-resnet

Residual networks implementation using Keras-1.0 functional API
Other
1.39k stars 615 forks source link

Incorporate into keras models repository #20

Open ahundt opened 7 years ago

ahundt commented 7 years ago

Would you be interested to get this into the keras models repository? https://github.com/fchollet/deep-learning-models

I might be able to help with modifying the class to match the others appropriately.

raghakot commented 7 years ago

Doesn't that require pre-trained weights? I can work on porting over resnet50 weights. Not sure about others. Do you know if Kaiming He has pretrained weights for all resnet configurations? If yes, we could try and port those over.

ahundt commented 7 years ago

there are a bunch of pretrained weights floating around. I'm sure just one set of weights would be enough for them to accept the request for the first version. I mean, your functions let you generate arbitrary sized resnets so one certainly wouldn't be expected to make them all. :-)

raghakot commented 7 years ago

Ok. I'll give it a shot. Do you know of any projects for converting caffe models? I see a bunch of them floating around. Not sure which one to use.

ahundt commented 7 years ago

What may be the easiest option is to simply convert the ones from the tensorflow slim models repository. They have a resnet implementation and links to their pre-trained models which they already converted into tensorflow.... nvm that is resnet v1, they don't have resnet v2 up...

pretrained resnet v2 (w/pre activations) weights in torch t7 format Well here are the resnet v2 models torch weights that are trained by a grad student under the supervision of the original author (as you may know he moved from microsoft research to facebook): https://github.com/facebook/fb.resnet.torch/tree/master/pretrained

Actually, it looks pretty simple to move the weights from tensorflow to h5f, and it seems https://github.com/Moodstocks/inception-v3.torch/blob/master/dump_filters.py

Those are in torch format, and I'd bet the deepmind implementation of conversion is very likely to work: https://github.com/deepmind/torch-hdf5

From there I believe keras can load hdf5 by name.

raghakot commented 7 years ago

Cool. I will try to get to this in after december. In the mean time, if any of you guys have time, feel free to take a stab at this. It would be cool to convert all the torch models.

ahundt commented 7 years ago

looks like based on the description some of the weights were already transferred in here: https://github.com/fchollet/deep-learning-models so it might be worth asking if there is code that was used to do the conversion that could be reused

jrao1 commented 7 years ago

I have an old script which can convert t7 file to keras model, maybe I can try to get it work again. The problem is there's no easy way to map between the layers created from touchfile and an existing keras model, so some adhoc logic is needed so that we can know which weight is for which layer in the existing model.

Also if I remember correctly I had a hard time reproducing the image preprocessing logic from touch.

ahundt commented 7 years ago

I believe the most appropriate place for this now might be keras-contrib: https://github.com/farizrahman4u/keras-contrib

ahundt commented 7 years ago

I've taken first steps towards this at https://github.com/farizrahman4u/keras-contrib/pull/148

raghakot commented 7 years ago

Thanks, @ahundt. I have been super busy at work lately.

CMCDragonkai commented 6 years ago

@ahundt Did you ever find the pretrained weights for some of the architectures you have for keras-contrib?

ahundt commented 6 years ago

no, I haven't been using ResNets directly recently