Skip to content
Transfer Learning with EfficientNet in Keras
Branch: master
Clone or download
Latest commit 11e1056 Jun 9, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
efficientnet fix model._name in tf Jun 8, 2019
examples
misc
.gitignore new dev Jun 2, 2019
Keras_efficientnet_transfer_learning.ipynb Update fine tuning Jun 9, 2019
MANIFEST.in Add setup.py May 31, 2019
README.md Release v0.0.3 Jun 4, 2019
__init__.py
setup.py

README.md

EfficientNet-Keras

This repository contains Keras reimplementation of EfficientNet, the new convolutional neural network architecture from EfficientNet (TensorFlow implementation).

Table of content

  1. About EfficientNets
  2. Examples
  3. Models
  4. Installation

About EfficientNet Models

If you're new to EfficientNets, here is an explanation straight from the official TensorFlow implementation:

EfficientNets are a family of image classification models, which achieve state-of-the-art accuracy, yet being an order-of-magnitude smaller and faster than previous models. EfficientNets are based on AutoML and Compound Scaling. In particular, AutoML Mobile framework have been used to develop a mobile-size baseline network, named as EfficientNet-B0; Then, the compound scaling method is used to scale up this baseline 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 state-of-the-art 84.4% top-1 / 97.1% top-5 accuracy on ImageNet with 66M parameters and 37B FLOPS, being 8.4x smaller and 6.1x faster on CPU inference than previous best 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 with 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 constraint.

Examples

  • Two lines to create model:
from efficientnet import EfficientNetB0

model = EfficientNetB0(weights='imagenet')
from efficientnet import load_model

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

Models

Available architectures and pretrained weights (converted from original repo):

Architecture @top1* @top5* Weights
EfficientNetB0 0.7668 0.9312 +
EfficientNetB1 0.7863 0.9418 +
EfficientNetB2 0.7968 0.9475 +
EfficientNetB3 0.8083 0.9531 +
EfficientNetB4 - - -
EfficientNetB5 - - -
EfficientNetB6 - - -
EfficientNetB7 - - -

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

Weights for B4-B7 are not released yet (issue).

Installation

Requirements:

  • keras >= 2.2.0 (tensorflow)
  • scikit-image

Source:

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

PyPI:

$ pip install -U efficientnet
You can’t perform that action at this time.