Skip to content
Branch: master
Find file History
mingxingtan and saberkun 1. Update README for more checkpoints.
2. A simple fix for creating folders if needed.

PiperOrigin-RevId: 253510640
Latest commit 1e772d2 Jun 17, 2019


[1] Mingxing Tan and Quoc V. Le. EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks. ICML 2019. Arxiv link:

1. About EfficientNet Models

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.

We develop EfficientNets based on AutoML and Compound Scaling. In particular, we first use AutoML Mobile framework to develop a mobile-size baseline network, named as EfficientNet-B0; Then, we use the compound scaling method 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, our 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, our 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, our EfficientNet-B4 improves the top-1 accuracy from 76.3% of ResNet-50 to 82.6% (+6.3%), under similar FLOPS constraint.

2. Using Pretrained EfficientNet Checkpoints

We have provided a list of EfficientNet checkpoints for EfficientNet-B0, EfficientNet-B1, EfficientNet-B2, EfficientNet-B3, EfficientNet-B4, EfficientNet-B5. Notably, here we use the standard ResNet preprocessing rather than AutoAugment, but we have achieved similar ImageNet top-1 accuracy as the original paper:

B0 B1 B2 B3 B4 B5
ImageNet accuracy for released ckpts 76.8% 78.8% 79.8% 81.0% 82.6% 83.2%

A quick way to use these checkpoints is to run:

$ export MODEL=efficientnet-b0
$ wget${MODEL}.tar.gz
$ tar zxf ${MODEL}.tar.gz
$ wget -O panda.jpg
$ wget
$ python --model_name=$MODEL --ckpt_dir=$MODEL --example_img=panda.jpg --labels_map_file=labels_map.txt

Please refer to the following colab for more instructions on how to obtain and use those checkpoints.

  • eval_ckpt_example.ipynb: A colab example to load EfficientNet pretrained checkpoints files and use the restored model to classify images.

3. Using EfficientNet as Feature Extractor

    import efficientnet_builder
    features, endpoints = efficientnet_builder.build_model_base(images, 'efficient-b0')
  • Use features for classification finetuning.
  • Use endpoints['reduction_i'] for detection/segmentation, as the last intermediate feature with reduction level i. For example, if input image has resolution 224x224, then:
    • endpoints['reduction_1'] has resolution 112x112
    • endpoints['reduction_2'] has resolution 56x56
    • endpoints['reduction_3'] has resolution 28x28
    • endpoints['reduction_4'] has resolution 14x14
    • endpoints['reduction_5'] has resolution 7x7

4. Training EfficientNets on TPUs.

To train this model on Cloud TPU, you will need:

  • A GCE VM instance with an associated Cloud TPU resource
  • A GCS bucket to store your training checkpoints (the "model directory")
  • Install TensorFlow version >= 1.13 for both GCE VM and Cloud.

Then train the model:

$ export PYTHONPATH="$PYTHONPATH:/path/to/models"
$ python --tpu=TPU_NAME --data_dir=DATA_DIR --model_dir=MODEL_DIR

# TPU_NAME is the name of the TPU node, the same name that appears when you run gcloud compute tpus list, or ctpu ls.
# MODEL_DIR is a GCS location (a URL starting with gs:// where both the GCE VM and the associated Cloud TPU have write access
# DATA_DIR is a GCS location to which both the GCE VM and associated Cloud TPU have read access.

For more instructions, please refer to our tutorial:

You can’t perform that action at this time.