Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/leaderj1001/MobileNetV3-Pytorch
Implementing Searching for MobileNetV3 paper using Pytorch
https://github.com/leaderj1001/MobileNetV3-Pytorch
cifar-10 cifar-100 imagenet mobilenetv3 pytorch searching-for-mobilenetv3
Last synced: about 1 month ago
JSON representation
Implementing Searching for MobileNetV3 paper using Pytorch
- Host: GitHub
- URL: https://github.com/leaderj1001/MobileNetV3-Pytorch
- Owner: leaderj1001
- License: mit
- Created: 2019-05-08T06:18:39.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-07-04T00:41:50.000Z (over 5 years ago)
- Last Synced: 2024-08-01T22:50:11.388Z (4 months ago)
- Topics: cifar-10, cifar-100, imagenet, mobilenetv3, pytorch, searching-for-mobilenetv3
- Language: Python
- Homepage:
- Size: 67.2 MB
- Stars: 290
- Watchers: 9
- Forks: 71
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-image-classification - unofficial-pytorch : https://github.com/leaderj1001/MobileNetV3-Pytorch
- awesome-image-classification - unofficial-pytorch : https://github.com/leaderj1001/MobileNetV3-Pytorch
- awesome-AutoML-and-Lightweight-Models - leaderj1001/MobileNetV3-Pytorch
README
# Implementing Searching for MobileNetV3 paper using Pytorch
- The current model is a very early model. I will modify it as a general model as soon as possible.
## Paper
- [Searching for MobileNetV3 paper](https://arxiv.org/abs/1905.02244)
- Author: Andrew Howard(Google Research), Mark Sandler(Google Research, Grace Chu(Google Research), Liang-Chieh Chen(Google Research), Bo Chen(Google Research), Mingxing Tan(Google Brain), Weijun Wang(Google Research), Yukun Zhu(Google Research), Ruoming Pang(Google Brain), Vijay Vasudevan(Google Brain), Quoc V. Le(Google Brain), Hartwig Adam(Google Research)## Todo
- Experimental need for ImageNet dataset.
- Code refactoring## MobileNetV3 Block
![캡처](https://user-images.githubusercontent.com/22078438/57360577-6f30d000-71b5-11e9-89a6-24034a3ecdde.PNG)## Experiments
- For CIFAR-100 data, I experimented with resize (224, 224).| Datasets | Model | acc1 | acc5 | Epoch | Parameters
| :---: | :---: | :---: | :---: | :---: | :---: |
CIFAR-100 | MobileNetV3(LARGE) | 70.44% | 91.34% | 80 | 3.99M
CIFAR-100 | MobileNetV3(SMALL) | 67.04% | 89.41% | 55 | 1.7M
IMAGENET | MobileNetV3(LARGE) WORK IN PROCESS | | | | 5.15M
IMAGENET | MobileNetV3(SMALL) WORK IN PROCESS | | | | 2.94M## Usage
### Train
```
python main.py
```
- If you want to change hyper-parameters, you can check "python main.py --help"Options:
- `--dataset-mode` (str) - which dataset you use, (example: CIFAR10, CIFAR100), (default: CIFAR100).
- `--epochs` (int) - number of epochs, (default: 100).
- `--batch-size` (int) - batch size, (default: 128).
- `--learning-rate` (float) - learning rate, (default: 1e-1).
- `--dropout` (float) - dropout rate, (default: 0.3).
- `--model-mode` (str) - which network you use, (example: LARGE, SMALL), (default: LARGE).
- `--load-pretrained` (bool) - (default: False).
- `--evaluate` (bool) - Used when testing. (default: False).
- `--multiplier` (float) - (default: 1.0).### Test
```
python main.py --evaluate True
```
- Put the saved model file in the checkpoint folder and saved graph file in the saved_graph folder and type "python main.py --evaluate True".
- If you want to change hyper-parameters, you can check "python test.py --help"Options:
- `--dataset-mode` (str) - which dataset you use, (example: CIFAR10, CIFAR100), (default: CIFAR100).
- `--epochs` (int) - number of epochs, (default: 100).
- `--batch-size` (int) - batch size, (default: 128).
- `--learning-rate` (float) - learning rate, (default: 1e-1).
- `--dropout` (float) - dropout rate, (default: 0.3).
- `--model-mode` (str) - which network you use, (example: LARGE, SMALL), (default: LARGE).
- `--load-pretrained` (bool) - (default: False).
- `--evaluate` (bool) - Used when testing. (default: False).
- `--multiplier` (float) - (default: 1.0).### Number of Parameters
```python
import torchfrom model import MobileNetV3
def get_model_parameters(model):
total_parameters = 0
for layer in list(model.parameters()):
layer_parameter = 1
for l in list(layer.size()):
layer_parameter *= l
total_parameters += layer_parameter
return total_parameterstmp = torch.randn((128, 3, 224, 224))
model = MobileNetV3(model_mode="LARGE", multiplier=1.0)
print("Number of model parameters: ", get_model_parameters(model))
```## Requirements
- torch==1.0.1