# EfficientNet-PyTorch **Repository Path**: jchopemind/EfficientNet-PyTorch ## Basic Information - **Project Name**: EfficientNet-PyTorch - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-06 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EfficientNet PyTorch _IMPORTANT NOTE_: In the latest update, I switched hosting providers for the pretrained models, as the previous models were becoming extremely expensive to host. This _will_ break old versions of the library. I apologize, but I cannot afford to keep serving the models on the old provider. Everything should work properly if you update the library: ``` pip install --upgrade efficientnet-pytorch ``` ### Update (January 23, 2020) This update adds a new category of pre-trained model based on adversarial training, called _advprop_. It is important to note that the preprocessing required for the advprop pretrained models is slightly different from normal ImageNet preprocessing. As a result, by default, advprop models are not used. To load a model with advprop, use: ``` model = EfficientNet.from_pretrained("efficientnet-b0", advprop=True) ``` There is also a new, large `efficientnet-b8` pretrained model that is only available in advprop form. When using these models, replace ImageNet preprocessing code as follows: ``` if advprop: # for models using advprop pretrained weights normalize = transforms.Lambda(lambda img: img * 2.0 - 1.0) else: normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ``` This update also addresses multiple other issues ([#115](https://github.com/lukemelas/EfficientNet-PyTorch/issues/115), [#128](https://github.com/lukemelas/EfficientNet-PyTorch/issues/128)). ### Update (October 15, 2019) This update allows you to choose whether to use a memory-efficient Swish activation. The memory-efficient version is chosen by default, but it cannot be used when exporting using PyTorch JIT. For this purpose, we have also included a standard (export-friendly) swish activation function. To switch to the export-friendly version, simply call `model.set_swish(memory_efficient=False)` after loading your desired model. This update addresses issues [#88](https://github.com/lukemelas/EfficientNet-PyTorch/pull/88) and [#89](https://github.com/lukemelas/EfficientNet-PyTorch/pull/89). ### Update (October 12, 2019) This update makes the Swish activation function more memory-efficient. It also addresses pull requests [#72](https://github.com/lukemelas/EfficientNet-PyTorch/pull/72), [#73](https://github.com/lukemelas/EfficientNet-PyTorch/pull/73), [#85](https://github.com/lukemelas/EfficientNet-PyTorch/pull/85), and [#86](https://github.com/lukemelas/EfficientNet-PyTorch/pull/86). Thanks to the authors of all the pull requests! ### Update (July 31, 2019) _Upgrade the pip package with_ `pip install --upgrade efficientnet-pytorch` The B6 and B7 models are now available. Additionally, _all_ pretrained models have been updated to use AutoAugment preprocessing, which translates to better performance across the board. Usage is the same as before: ```python from efficientnet_pytorch import EfficientNet model = EfficientNet.from_pretrained('efficientnet-b7') ``` ### Update (June 29, 2019) This update adds easy model exporting ([#20](https://github.com/lukemelas/EfficientNet-PyTorch/issues/20)) and feature extraction ([#38](https://github.com/lukemelas/EfficientNet-PyTorch/issues/38)). * [Example: Export to ONNX](#example-export) * [Example: Extract features](#example-feature-extraction) * Also: fixed a CUDA/CPU bug ([#32](https://github.com/lukemelas/EfficientNet-PyTorch/issues/32)) It is also now incredibly simple to load a pretrained model with a new number of classes for transfer learning: ```python model = EfficientNet.from_pretrained('efficientnet-b1', num_classes=23) ``` ### Update (June 23, 2019) The B4 and B5 models are now available. Their usage is identical to the other models: ```python from efficientnet_pytorch import EfficientNet model = EfficientNet.from_pretrained('efficientnet-b4') ``` ### Overview This repository contains an op-for-op PyTorch reimplementation of [EfficientNet](https://arxiv.org/abs/1905.11946), along with pre-trained models and examples. The goal of this implementation is to be simple, highly extensible, and easy to integrate into your own projects. This implementation is a work in progress -- new features are currently being implemented. At the moment, you can easily: * Load pretrained EfficientNet models * Use EfficientNet models for classification or feature extraction * Evaluate EfficientNet models on ImageNet or your own images _Upcoming features_: In the next few days, you will be able to: * Train new models from scratch on ImageNet with a simple command * Quickly finetune an EfficientNet on your own dataset * Export EfficientNet models for production ### Table of contents 1. [About EfficientNet](#about-efficientnet) 2. [About EfficientNet-PyTorch](#about-efficientnet-pytorch) 3. [Installation](#installation) 4. [Usage](#usage) * [Load pretrained models](#loading-pretrained-models) * [Example: Classify](#example-classification) * [Example: Extract features](#example-feature-extraction) * [Example: Export to ONNX](#example-export) 6. [Contributing](#contributing) ### About EfficientNet 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. We develop EfficientNets based on AutoML and Compound Scaling. In particular, we first use [AutoML Mobile framework](https://ai.googleblog.com/2018/08/mnasnet-towards-automating-design-of.html) 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.
|
|