Package: efficientnet
EfficientNet Keras (and TensorFlow Keras)This repository contains a Keras (and TensorFlow Keras) reimplementation ofEfficientNet, a lightweight convolutional neural network architecture achieving thestate-of-the-art accuracy with an order of magnitude fewer parameters and FLOPS, on both ImageNet and
five other commonly used transfer learning datasets.The codebase is heavily inspired by theTensorFlow implementation.Important!There was a huge library update24 of July 2019. Now efficintnet works with both frameworks:kerasandtensorflow.keras.
If you have models, trained before that date, to load them, please, use efficientnet of 0.0.4 version (PyPI). You can roll back usingpip install -U efficientnet==0.0.4.Table of ContentsAbout EfficientNet ModelsExamplesModelsInstallationFrequently Asked QuestionsAcknowledgementsAbout EfficientNet ModelsEfficientNets rely on AutoML and compound scaling to achieve superior performance without compromising resource efficiency. TheAutoML Mobile frameworkhas helped develop a mobile-size baseline network,EfficientNet-B0, which is then improved by the compound scaling method  to obtain EfficientNet-B1 to B7.EfficientNets achieve state-of-the-art accuracy on ImageNet with an order of magnitude better efficiency:In high-accuracy regime, EfficientNet-B7 achieves the state-of-the-art 84.4% top-1 / 97.1% top-5 accuracy on ImageNet with 66M parameters and 37B FLOPS. At the same time, the model is 8.4x smaller and 6.1x faster on CPU inference than the former leader,Gpipe.In middle-accuracy regime, EfficientNet-B1 is 7.6x smaller and 5.7x faster on CPU inference thanResNet-152, with similar ImageNet accuracy.Compared to the widely usedResNet-50, EfficientNet-B4 improves the top-1 accuracy from 76.3% of ResNet-50 to 82.6% (+6.3%), under similar FLOPS constraints.ExamplesInitializing the model:# models can be build with Keras or Tensorflow frameworks# use keras and tfkeras modules respectively# efficientnet.keras / efficientnet.tfkerasimportefficientnet.kerasasefnmodel=efn.EfficientNetB0(weights='imagenet')# or weights='noisy-student'Loading the pre-trained weights:# model use some custom objects, so before loading saved model# import module your network was build with# e.g. import efficientnet.keras / import efficientnet.tfkerasimportefficientnet.tfkerasfromtensorflow.keras.modelsimportload_modelmodel=load_model('path/to/model.h5')See the complete example of loading the model and making an inference in the Jupyter notebookhere.ModelsThe performance of each model variant using the pre-trained weights converted from checkpoints provided by the authors is as follows:Architecture@top1* Imagenet@top1* Noisy-StudentEfficientNetB00.7720.788EfficientNetB10.7910.815EfficientNetB20.8020.824EfficientNetB30.8160.841EfficientNetB40.8300.853EfficientNetB50.8370.861EfficientNetB60.8410.864EfficientNetB70.8440.869*- topK accuracy score for converted models (imagenetvalset)InstallationRequirementsKeras >= 2.2.0/TensorFlow >= 1.12.0keras_applications >= 1.0.7scikit-imageInstalling from the source$pipinstall-Ugit+https://github.com/qubvel/efficientnetInstalling from PyPIPyPI stable release$pipinstall-UefficientnetPyPI latest release (with keras and tf.keras support)$pipinstall-U--preefficientnetFrequently Asked QuestionsHow can I convert the original TensorFlow checkpoints to Keras HDF5?Pick the target directory (likedist) and run theconverter scriptfrom the repo directory as follows:$./scripts/convert_efficientnet.sh--target_dirdistYou can also optionally create the virtual environment with all the dependencies installed by adding--make_venv=trueand operate in a self-destructing temporary location instead of the target directory by setting--tmp_working_dir=true.AcknowledgementsI would like to thanks community members who actively contribute to this repository:Sasha Illarionov (@sdll) for preparing automated script for weights conversionBjörn Barz (@Callidior) for model code adaptation for keras and tensorflow.keras frameworks