efficientnet


Nameefficientnet JSON
Version 1.1.1 PyPI version JSON
download
home_pagehttps://github.com/qubvel/efficientnet
SummaryEfficientNet model re-implementation. Keras and TensorFlow Keras.
upload_time2020-09-15 16:26:01
maintainer
docs_urlNone
authorPavel Yakubovskiy
requires_python>=3.0.0
licenseApache License 2.0
keywords
VCS
bugtrack_url
requirements keras_applications scikit-image
Travis-CI
coveralls test coverage No coveralls.
            
# EfficientNet Keras (and TensorFlow Keras)

[![PyPI version](https://badge.fury.io/py/efficientnet.svg)](https://badge.fury.io/py/efficientnet) [![Downloads](https://pepy.tech/badge/efficientnet/month)](https://pepy.tech/project/efficientnet/month)

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](https://arxiv.org/abs/1905.11946), on both ImageNet and
five other commonly used transfer learning datasets.

The codebase is heavily inspired by the [TensorFlow implementation](https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet).

## 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](#about-efficientnet-models)
 2. [Examples](#examples)
 3. [Models](#models)
 4. [Installation](#installation)
 5. [Frequently Asked Questions](#frequently-asked-questions)
 6. [Acknowledgements](#acknowledgements)

## About EfficientNet Models

EfficientNets rely on AutoML and compound scaling to achieve superior performance without compromising resource efficiency. The [AutoML Mobile framework](https://ai.googleblog.com/2018/08/mnasnet-towards-automating-design-of.html) 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.

<table border="0">
<tr>
    <td>
    <img src="https://raw.githubusercontent.com/tensorflow/tpu/master/models/official/efficientnet/g3doc/params.png" width="100%" />
    </td>
    <td>
    <img src="https://raw.githubusercontent.com/tensorflow/tpu/master/models/official/efficientnet/g3doc/flops.png", width="90%" />
    </td>
</tr>
</table>

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](https://arxiv.org/abs/1811.06965).

* In middle-accuracy regime, EfficientNet-B1 is 7.6x smaller and 5.7x faster on CPU inference than [ResNet-152](https://arxiv.org/abs/1512.03385), with similar ImageNet accuracy.

* Compared to the widely used [ResNet-50](https://arxiv.org/abs/1512.03385), 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*:

```python
# 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*:

```python
# 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](https://github.com/qubvel/efficientnet/blob/master/examples/inference_example.ipynb).

## 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

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

### Installing from PyPI

PyPI stable release

```bash
$ pip install -U efficientnet
```

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

```bash
$ 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](./scripts) from the repo directory as follows:

```bash
$ ./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](https://github.com/sdll)) for preparing automated script for weights conversion
2) Björn Barz ([@Callidior](https://github.com/Callidior)) for model code adaptation for keras and tensorflow.keras frameworks 



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/qubvel/efficientnet",
    "name": "efficientnet",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.0.0",
    "maintainer_email": "",
    "keywords": "",
    "author": "Pavel Yakubovskiy",
    "author_email": "qubvel@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/bc/0f/811c73e9e579361b202b1e8205fff114ee7f9a738489247207c9141266f3/efficientnet-1.1.1.tar.gz",
    "platform": "",
    "description": "\n# EfficientNet Keras (and TensorFlow Keras)\n\n[![PyPI version](https://badge.fury.io/py/efficientnet.svg)](https://badge.fury.io/py/efficientnet) [![Downloads](https://pepy.tech/badge/efficientnet/month)](https://pepy.tech/project/efficientnet/month)\n\nThis 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](https://arxiv.org/abs/1905.11946), on both ImageNet and\nfive other commonly used transfer learning datasets.\n\nThe codebase is heavily inspired by the [TensorFlow implementation](https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet).\n\n## Important!\nThere was a huge library update **24 of July 2019**. Now efficintnet works with both frameworks: `keras` and `tensorflow.keras`.\nIf 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`.\n\n## Table of Contents\n\n 1. [About EfficientNet Models](#about-efficientnet-models)\n 2. [Examples](#examples)\n 3. [Models](#models)\n 4. [Installation](#installation)\n 5. [Frequently Asked Questions](#frequently-asked-questions)\n 6. [Acknowledgements](#acknowledgements)\n\n## About EfficientNet Models\n\nEfficientNets rely on AutoML and compound scaling to achieve superior performance without compromising resource efficiency. The [AutoML Mobile framework](https://ai.googleblog.com/2018/08/mnasnet-towards-automating-design-of.html) 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.\n\n<table border=\"0\">\n<tr>\n    <td>\n    <img src=\"https://raw.githubusercontent.com/tensorflow/tpu/master/models/official/efficientnet/g3doc/params.png\" width=\"100%\" />\n    </td>\n    <td>\n    <img src=\"https://raw.githubusercontent.com/tensorflow/tpu/master/models/official/efficientnet/g3doc/flops.png\", width=\"90%\" />\n    </td>\n</tr>\n</table>\n\nEfficientNets achieve state-of-the-art accuracy on ImageNet with an order of magnitude better efficiency:\n\n* 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](https://arxiv.org/abs/1811.06965).\n\n* In middle-accuracy regime, EfficientNet-B1 is 7.6x smaller and 5.7x faster on CPU inference than [ResNet-152](https://arxiv.org/abs/1512.03385), with similar ImageNet accuracy.\n\n* Compared to the widely used [ResNet-50](https://arxiv.org/abs/1512.03385), EfficientNet-B4 improves the top-1 accuracy from 76.3% of ResNet-50 to 82.6% (+6.3%), under similar FLOPS constraints.\n\n## Examples\n\n* *Initializing the model*:\n\n```python\n# models can be build with Keras or Tensorflow frameworks\n# use keras and tfkeras modules respectively\n# efficientnet.keras / efficientnet.tfkeras\nimport efficientnet.keras as efn \n\nmodel = efn.EfficientNetB0(weights='imagenet')  # or weights='noisy-student'\n\n```\n\n* *Loading the pre-trained weights*:\n\n```python\n# model use some custom objects, so before loading saved model\n# import module your network was build with\n# e.g. import efficientnet.keras / import efficientnet.tfkeras\nimport efficientnet.tfkeras\nfrom tensorflow.keras.models import load_model\n\nmodel = load_model('path/to/model.h5')\n```\n\nSee the complete example of loading the model and making an inference in the Jupyter notebook [here](https://github.com/qubvel/efficientnet/blob/master/examples/inference_example.ipynb).\n\n## Models\n\nThe performance of each model variant using the pre-trained weights converted from checkpoints provided by the authors is as follows:\n\n| Architecture   | @top1* Imagenet| @top1* Noisy-Student| \n| -------------- | :----: |:---:|\n| EfficientNetB0 | 0.772  |0.788|\n| EfficientNetB1 | 0.791  |0.815|\n| EfficientNetB2 | 0.802  |0.824|\n| EfficientNetB3 | 0.816  |0.841|\n| EfficientNetB4 | 0.830  |0.853|\n| EfficientNetB5 | 0.837  |0.861|\n| EfficientNetB6 | 0.841  |0.864|\n| EfficientNetB7 | 0.844  |0.869|\n\n**\\*** - topK accuracy score for converted models (imagenet `val` set)\n\n## Installation\n\n### Requirements\n\n* `Keras >= 2.2.0` / `TensorFlow >= 1.12.0`\n* `keras_applications >= 1.0.7`\n* `scikit-image`\n\n### Installing from the source\n\n```bash\n$ pip install -U git+https://github.com/qubvel/efficientnet\n```\n\n### Installing from PyPI\n\nPyPI stable release\n\n```bash\n$ pip install -U efficientnet\n```\n\nPyPI latest release (with keras and tf.keras support)\n\n```bash\n$ pip install -U --pre efficientnet\n```\n\n## Frequently Asked Questions\n\n* **How can I convert the original TensorFlow checkpoints to Keras HDF5?**\n\nPick the target directory (like `dist`) and run the [converter script](./scripts) from the repo directory as follows:\n\n```bash\n$ ./scripts/convert_efficientnet.sh --target_dir dist\n```\n\nYou 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`.\n\n## Acknowledgements\nI would like to thanks community members who actively contribute to this repository:\n\n1) Sasha Illarionov ([@sdll](https://github.com/sdll)) for preparing automated script for weights conversion\n2) Bj\u00f6rn Barz ([@Callidior](https://github.com/Callidior)) for model code adaptation for keras and tensorflow.keras frameworks \n\n\n",
    "bugtrack_url": null,
    "license": "Apache License 2.0",
    "summary": "EfficientNet model re-implementation. Keras and TensorFlow Keras.",
    "version": "1.1.1",
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "ef20159b40c5c5944c0a267d05e0ed3c",
                "sha256": "6967fcdaab2074f96228f684dad0628febe622a59181b4a28aaca1251f1b8784"
            },
            "downloads": -1,
            "filename": "efficientnet-1.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ef20159b40c5c5944c0a267d05e0ed3c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.0.0",
            "size": 18420,
            "upload_time": "2020-09-15T16:26:00",
            "upload_time_iso_8601": "2020-09-15T16:26:00.362832Z",
            "url": "https://files.pythonhosted.org/packages/53/97/84f88e581d6ac86dcf1ab347c497c4c568c38784e3a2bd659b96912ab793/efficientnet-1.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "dbab59272ed84a46ab608e15bb897a97",
                "sha256": "a92e7715453f6043942d9c8d995464e8d319494f08d1d458600abbd5c43544bb"
            },
            "downloads": -1,
            "filename": "efficientnet-1.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "dbab59272ed84a46ab608e15bb897a97",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.0.0",
            "size": 15984,
            "upload_time": "2020-09-15T16:26:01",
            "upload_time_iso_8601": "2020-09-15T16:26:01.845208Z",
            "url": "https://files.pythonhosted.org/packages/bc/0f/811c73e9e579361b202b1e8205fff114ee7f9a738489247207c9141266f3/efficientnet-1.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2020-09-15 16:26:01",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "qubvel",
    "github_project": "efficientnet",
    "travis_ci": true,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "keras_applications",
            "specs": [
                [
                    "<=",
                    "1.0.8"
                ],
                [
                    ">=",
                    "1.0.7"
                ]
            ]
        },
        {
            "name": "scikit-image",
            "specs": []
        }
    ],
    "lcname": "efficientnet"
}
        
Elapsed time: 0.02958s