Skip to main content

EfficientNet model re-implementation. Keras and TensorFlow Keras.

Project description

EfficientNet Keras (and TensorFlow Keras)

PyPI version Downloads

This repository contains a Keras (and TensorFlow Keras) reimplementation of EfficientNet, a lightweight convolutional neural network architecture achieving the state-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 the TensorFlow implementation.

Important!

There was a huge library update 24 of July 2019. Now efficintnet works with both frameworks: keras and tensorflow.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 using pip install -U efficientnet==0.0.4.

Table of Contents

  1. About EfficientNet Models
  2. Examples
  3. Models
  4. Installation
  5. Frequently Asked Questions
  6. Acknowledgements

About EfficientNet Models

EfficientNets rely on AutoML and compound scaling to achieve superior performance without compromising resource efficiency. The AutoML Mobile framework has 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 than ResNet-152, with similar ImageNet accuracy.

  • Compared to the widely used ResNet-50, EfficientNet-B4 improves the top-1 accuracy from 76.3% of ResNet-50 to 82.6% (+6.3%), under similar FLOPS constraints.

Examples

  • Initializing the model:
# models can be build with Keras or Tensorflow frameworks
# use keras and tfkeras modules respectively
# efficientnet.keras / efficientnet.tfkeras
import efficientnet.keras as efn 

model = 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.tfkeras
import efficientnet.tfkeras
from tensorflow.keras.models import load_model

model = load_model('path/to/model.h5')

See the complete example of loading the model and making an inference in the Jupyter notebook here.

Models

The 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-Student
EfficientNetB0 0.772 0.788
EfficientNetB1 0.791 0.815
EfficientNetB2 0.802 0.824
EfficientNetB3 0.816 0.841
EfficientNetB4 0.830 0.853
EfficientNetB5 0.837 0.861
EfficientNetB6 0.841 0.864
EfficientNetB7 0.844 0.869

* - topK accuracy score for converted models (imagenet val set)

Installation

Requirements

  • Keras >= 2.2.0 / TensorFlow >= 1.12.0
  • keras_applications >= 1.0.7
  • scikit-image

Installing from the source

$ pip install -U git+https://github.com/qubvel/efficientnet

Installing from PyPI

PyPI stable release

$ pip install -U efficientnet

PyPI latest release (with keras and tf.keras support)

$ pip install -U --pre efficientnet

Frequently Asked Questions

  • How can I convert the original TensorFlow checkpoints to Keras HDF5?

Pick the target directory (like dist) and run the converter script from the repo directory as follows:

$ ./scripts/convert_efficientnet.sh --target_dir dist

You can also optionally create the virtual environment with all the dependencies installed by adding --make_venv=true and operate in a self-destructing temporary location instead of the target directory by setting --tmp_working_dir=true.

Acknowledgements

I would like to thanks community members who actively contribute to this repository:

  1. Sasha Illarionov (@sdll) for preparing automated script for weights conversion
  2. Björn Barz (@Callidior) for model code adaptation for keras and tensorflow.keras frameworks

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

efficientnet-1.1.1.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

efficientnet-1.1.1-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file efficientnet-1.1.1.tar.gz.

File metadata

  • Download URL: efficientnet-1.1.1.tar.gz
  • Upload date:
  • Size: 16.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.6.12

File hashes

Hashes for efficientnet-1.1.1.tar.gz
Algorithm Hash digest
SHA256 a92e7715453f6043942d9c8d995464e8d319494f08d1d458600abbd5c43544bb
MD5 dbab59272ed84a46ab608e15bb897a97
BLAKE2b-256 bc0f811c73e9e579361b202b1e8205fff114ee7f9a738489247207c9141266f3

See more details on using hashes here.

File details

Details for the file efficientnet-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: efficientnet-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 18.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.6.12

File hashes

Hashes for efficientnet-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6967fcdaab2074f96228f684dad0628febe622a59181b4a28aaca1251f1b8784
MD5 ef20159b40c5c5944c0a267d05e0ed3c
BLAKE2b-256 539784f88e581d6ac86dcf1ab347c497c4c568c38784e3a2bd659b96912ab793

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page