Seoul
Artificial
Intelligence

Group of professionals from different fields meets twice per month in the heart of Seoul to discuss about AI or implement various AI applications.

meetup.com
seoulai.slack.com
twitter.com
blog.seoulai.com

Organizers
Martin Kersner
Cinyoung Hur
Adel Sohbi

Announcement
Call for presenters!

Content
Presentations from 2017

Kaggle - How to use pretrained Keras models?

Martin Kersner, 2018 Jan 23

Training deep learning models from scratch is never a good way of aproaching new problem. Moreover, if you want to obtain reasonable baseline results fast. One of the solutions is to use pretrained models, which are available for every major deep learning framework (e.g. Tensorflow, Keras) and finetune them for your particular task or train separate model on outputs from pretrained model.

Kaggle offers kernels for competing in challeges without need to install anything on your computer. However, preinstalled packages does not contain models with pretrained weights. beluga came up with a simple solution how to include pretrained models to any Kaggle kernel. Five Keras pretrained models were uploaded to Kaggle as a dataset. Following table shows accuracy on ImageNet challenge for each available pretrained model.

Model Top-1 Accuracy Top-5 Accuracy
Xception 0.790 0.945
VGG16 0.715 0.901
VGG19 0.727 0.910
ResNet50 0.759 0.929
InceptionV3 0.788 0.944

If you decide to use Keras pretrained model in Kaggle, first, you have to include Keras Pretrained Models “dataset” using Add Data Source button in Input Files field at the top of Kaggle kernel page and then use necessary boiler plate code. Keras searches for models in ~/.keras/models directory, which isn’t present after startup of kernel, so we have to create it.

# mkdir -p ~/.keras/models
cache_dir = Path.home() / '.keras'
if not cache_dir.exists():
    os.makedirs(cache_dir)
models_dir = cache_dir / 'models'
if not models_dir.exists():
    os.makedirs(models_dir)

Next, we have to copy pretrained models to ~/.keras/models. If you want to use for example Xception, run code below.

!cp ../input/keras-pretrained-models/xception* ~/.keras/models/

And that’s all! Now, we can import xception, build model and predict.

from keras.applications import xception
xception_model = xception.Xception(weights='imagenet',
                                        include_top=False,
                                        pooling='avg')
#xception_model.predict(X_train, batch_size=32, verbose=1)