forked from mindspore-Ecosystem/mindspore
151 lines
7.3 KiB
Markdown
151 lines
7.3 KiB
Markdown
|
# MobileNetV2 Description
|
|||
|
|
|||
|
|
|||
|
MobileNetV2 is tuned to mobile phone CPUs through a combination of hardware- aware network architecture search (NAS) complemented by the NetAdapt algorithm and then subsequently improved through novel architecture advances.Nov 20, 2019.
|
|||
|
|
|||
|
[Paper](https://arxiv.org/pdf/1905.02244) Howard, Andrew, Mark Sandler, Grace Chu, Liang-Chieh Chen, Bo Chen, Mingxing Tan, Weijun Wang et al. "Searching for MobileNetV2." In Proceedings of the IEEE International Conference on Computer Vision, pp. 1314-1324. 2019.
|
|||
|
|
|||
|
# Model architecture
|
|||
|
|
|||
|
The overall network architecture of MobileNetV2 is show below:
|
|||
|
|
|||
|
[Link](https://arxiv.org/pdf/1905.02244)
|
|||
|
|
|||
|
# Dataset
|
|||
|
|
|||
|
Dataset used: [imagenet](http://www.image-net.org/)
|
|||
|
|
|||
|
- Dataset size: ~125G, 1.2W colorful images in 1000 classes
|
|||
|
- Train: 120G, 1.2W images
|
|||
|
- Test: 5G, 50000 images
|
|||
|
- Data format: RGB images.
|
|||
|
- Note: Data will be processed in src/dataset.py
|
|||
|
|
|||
|
|
|||
|
# Features
|
|||
|
|
|||
|
|
|||
|
# Environment Requirements
|
|||
|
|
|||
|
- Hardware(Ascend/GPU)
|
|||
|
- Prepare hardware environment with Ascend or GPU processor. If you want to try Ascend , please send the [application form](https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/file/other/Ascend%20Model%20Zoo%E4%BD%93%E9%AA%8C%E8%B5%84%E6%BA%90%E7%94%B3%E8%AF%B7%E8%A1%A8.docx) to ascend@huawei.com. Once approved, you can get the resources.
|
|||
|
- Framework
|
|||
|
- [MindSpore](http://10.90.67.50/mindspore/archive/20200506/OpenSource/me_vm_x86/)
|
|||
|
- For more information, please check the resources below:
|
|||
|
- [MindSpore tutorials](https://www.mindspore.cn/tutorial/zh-CN/master/index.html)
|
|||
|
- [MindSpore API](https://www.mindspore.cn/api/zh-CN/master/index.html)
|
|||
|
|
|||
|
|
|||
|
# Script description
|
|||
|
|
|||
|
## Script and sample code
|
|||
|
|
|||
|
```python
|
|||
|
├── MobileNetV2
|
|||
|
├── Readme.md
|
|||
|
├── scripts
|
|||
|
│ ├──run_train.sh
|
|||
|
│ ├──run_eval.sh
|
|||
|
├── src
|
|||
|
│ ├──config.py
|
|||
|
│ ├──dataset.py
|
|||
|
│ ├──luanch.py
|
|||
|
│ ├──lr_generator.py
|
|||
|
│ ├──mobilenetV2.py
|
|||
|
├── train.py
|
|||
|
├── eval.py
|
|||
|
```
|
|||
|
|
|||
|
## Training process
|
|||
|
|
|||
|
### Usage
|
|||
|
|
|||
|
- Ascend: sh run_train.sh Ascend [DEVICE_NUM] [SERVER_IP(x.x.x.x)] [VISIABLE_DEVICES(0,1,2,3,4,5,6,7)] [DATASET_PATH] [CKPT_PATH]
|
|||
|
- GPU: sh run_trian.sh GPU [DEVICE_NUM] [VISIABLE_DEVICES(0,1,2,3,4,5,6,7)] [DATASET_PATH]
|
|||
|
|
|||
|
### Launch
|
|||
|
|
|||
|
```
|
|||
|
# training example
|
|||
|
Ascend: sh run_train.sh Ascend 8 192.168.0.1 0,1,2,3,4,5,6,7 ~/imagenet/train/ mobilenet_199.ckpt
|
|||
|
GPU: sh run_train.sh GPU 8 0,1,2,3,4,5,6,7 ~/imagenet/train/
|
|||
|
```
|
|||
|
|
|||
|
### Result
|
|||
|
|
|||
|
Training result will be stored in the example path. Checkpoints will be stored at `. /checkpoint` by default, and training log will be redirected to `./train/train.log` like followings.
|
|||
|
|
|||
|
```
|
|||
|
epoch: [ 0/200], step:[ 624/ 625], loss:[5.258/5.258], time:[140412.236], lr:[0.100]
|
|||
|
epoch time: 140522.500, per step time: 224.836, avg loss: 5.258
|
|||
|
epoch: [ 1/200], step:[ 624/ 625], loss:[3.917/3.917], time:[138221.250], lr:[0.200]
|
|||
|
epoch time: 138331.250, per step time: 221.330, avg loss: 3.917
|
|||
|
```
|
|||
|
|
|||
|
## Eval process
|
|||
|
|
|||
|
### Usage
|
|||
|
|
|||
|
- Ascend: sh run_infer.sh Ascend [DATASET_PATH] [CHECKPOINT_PATH]
|
|||
|
- GPU: sh run_infer.sh GPU [DATASET_PATH] [CHECKPOINT_PATH]
|
|||
|
|
|||
|
### Launch
|
|||
|
|
|||
|
```
|
|||
|
# infer example
|
|||
|
Ascend: sh run_infer.sh Ascend ~/imagenet/val/ ~/train/mobilenet-200_625.ckpt
|
|||
|
GPU: sh run_infer.sh GPU ~/imagenet/val/ ~/train/mobilenet-200_625.ckpt
|
|||
|
```
|
|||
|
|
|||
|
> checkpoint can be produced in training process.
|
|||
|
|
|||
|
### Result
|
|||
|
|
|||
|
Inference result will be stored in the example path, you can find result like the followings in `val.log`.
|
|||
|
|
|||
|
```
|
|||
|
result: {'acc': 0.71976314102564111} ckpt=/path/to/checkpoint/mobilenet-200_625.ckpt
|
|||
|
```
|
|||
|
|
|||
|
# Model description
|
|||
|
|
|||
|
## Performance
|
|||
|
|
|||
|
### Training Performance
|
|||
|
|
|||
|
| Parameters | MobilenetV2 | |
|
|||
|
| -------------------------- | ---------------------------------------------------------- | ------------------------- |
|
|||
|
| Model Version | | large |
|
|||
|
| Resource | Ascend 910, cpu:2.60GHz 56cores, memory:314G | NV SMX2 V100-32G |
|
|||
|
| uploaded Date | 05/06/2020 | 05/06/2020 |
|
|||
|
| MindSpore Version | 0.3.0 | 0.3.0 |
|
|||
|
| Dataset | ImageNet | ImageNet |
|
|||
|
| Training Parameters | src/config.py | src/config.py |
|
|||
|
| Optimizer | Momentum | Momentum |
|
|||
|
| Loss Function | SoftmaxCrossEntropy | SoftmaxCrossEntropy |
|
|||
|
| outputs | | |
|
|||
|
| Loss | | 1.913 |
|
|||
|
| Accuracy | | ACC1[77.09%] ACC5[92.57%] |
|
|||
|
| Total time | | |
|
|||
|
| Params (M) | | |
|
|||
|
| Checkpoint for Fine tuning | | |
|
|||
|
| Model for inference | | |
|
|||
|
|
|||
|
#### Inference Performance
|
|||
|
|
|||
|
| Parameters | | | |
|
|||
|
| -------------------------- | ----------------------------- | ------------------------- | -------------------- |
|
|||
|
| Model Version | V1 | | |
|
|||
|
| Resource | Huawei 910 | NV SMX2 V100-32G | Huawei 310 |
|
|||
|
| uploaded Date | 05/06/2020 | 05/22/2020 | |
|
|||
|
| MindSpore Version | 0.2.0 | 0.2.0 | 0.2.0 |
|
|||
|
| Dataset | ImageNet, 1.2W | ImageNet, 1.2W | ImageNet, 1.2W |
|
|||
|
| batch_size | | 130(8P) | |
|
|||
|
| outputs | | | |
|
|||
|
| Accuracy | | ACC1[72.07%] ACC5[90.90%] | |
|
|||
|
| Speed | | | |
|
|||
|
| Total time | | | |
|
|||
|
| Model for inference | | | |
|
|||
|
|
|||
|
# ModelZoo Homepage
|
|||
|
[Link](https://gitee.com/mindspore/mindspore/tree/master/mindspore/model_zoo)
|