chiayewken / keras-efficientnets

Keras Implementation of EfficientNets

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

What's new in this fork?

  • tf.keras API throughout -> Easily convert Model to TPUKerasModel to train even faster on TPUs
  • Uses original preprocessing pipeline to more closely reproduce original results
  • Run preprocessing on GPU for more efficiency
  • Demo Colab Notebook showing how to apply EfficientNet to CIFAR10
  • Comparison of zero-shot transfer learning between EfficientNet and ResNet50
  • Finetuning comparison coming soon!

EfficientNets in Keras

Keras implementation of EfficientNets from the paper EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks.

Contains code to build the EfficientNets B0-B7 from the paper, and includes weights for configurations B0-B3. B4-B7 weights will be ported when made available from the Tensorflow repository.

Supports building any other configuration model of efficient nets as well, other than the B0-B7 variants.

Efficient Nets and Compound Coefficient Scaling

The core idea about Efficient Nets is the use of compound scaling - using a weighted scale of three inter-connected hyper parameters of the model - Resolution of the input, Depth of the Network and Width of the Network.

When phi, the compound coefficient, is initially set to 1, we get the base configuration - in this case EfficientNetB0. We then use this configuration in a grid search to find the coefficients alpha, beta and gamma which optimize the following objective under the constraint:

Once these coefficients for alpha, beta and gamma are found, then simply scale phi, the compound coeffieints by different amounts to get a family of models with more capacity and possibly better performance.


In doing so, and using Neural Architecture Search to get the base configuration as well as great coefficients for the above, the paper generates EfficientNets, which outperform much larger and much deeper models while using less resources during both training and evaluation.


# Installation & Usage
See [Colab Notebook](https://github.com/chiayewken/keras-efficientnets/blob/master/Keras_EfficientNet_Demo.ipynb)

About

Keras Implementation of EfficientNets

License:MIT License


Languages

Language:Jupyter Notebook 56.6%Language:Python 43.4%