mindspore/model_zoo/official/cv/mobilenetv3
wuxuejian 3d185352e0 fix mobilenetv3 gpu train param 2021-02-05 10:44:10 +08:00
..
scripts Add MobileNetV3 CPU scripts 2021-02-03 17:06:39 +08:00
src Add MobileNetV3 CPU scripts 2021-02-03 17:06:39 +08:00
README_CN.md Add MobileNetV3 CPU scripts 2021-02-03 17:06:39 +08:00
Readme.md Add MobileNetV3 CPU scripts 2021-02-03 17:06:39 +08:00
eval.py Add MobileNetV3 CPU scripts 2021-02-03 17:06:39 +08:00
export.py Add MobileNetV3 CPU scripts 2021-02-03 17:06:39 +08:00
mindspore_hub_conf.py add moboilenetv3 and resnext50 hub 2020-09-22 10:34:27 +08:00
train.py fix mobilenetv3 gpu train param 2021-02-05 10:44:10 +08:00

Readme.md

Contents

MobileNetV3 Description

MobileNetV3 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 Howard, Andrew, Mark Sandler, Grace Chu, Liang-Chieh Chen, Bo Chen, Mingxing Tan, Weijun Wang et al. "Searching for mobilenetv3." In Proceedings of the IEEE International Conference on Computer Vision, pp. 1314-1324. 2019.

Model architecture

The overall network architecture of MobileNetV3 is show below:

Link

Dataset

Dataset used: imagenet

  • 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

Environment Requirements

Script description

Script and sample code

├── MobileNetV3
  ├── Readme.md              # descriptions about MobileNetV3
  ├── scripts
     ├──run_train.sh        # shell script for train
     ├──run_eval.sh         # shell script for evaluation
  ├── src
     ├──config.py           # parameter configuration
     ├──dataset.py          # creating dataset
     ├──lr_generator.py     # learning rate config
     ├──mobilenetV3.py      # MobileNetV3 architecture
  ├── train.py               # training script
  ├── eval.py                #  evaluation script
  ├── export.py              # export mindir script
  ├── mindspore_hub_conf.py  #  mindspore hub interface

Training process

Usage

You can start training using python or shell scripts. The usage of shell scripts as follows:

  • GPU: sh run_trian.sh GPU [DEVICE_NUM] [VISIABLE_DEVICES(0,1,2,3,4,5,6,7)] [DATASET_PATH]
  • CPU: sh run_trian.sh CPU [DATASET_PATH]

Launch

# training example
  python:
      GPU: python train.py --dataset_path ~/imagenet/train/ --device_targe GPU
      CPU: python train.py --dataset_path ~/cifar10/train/ --device_targe CPU
  shell:
      GPU: sh run_train.sh GPU 8 0,1,2,3,4,5,6,7 ~/imagenet/train/
      CPU: sh run_train.sh CPU ~/cifar10/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

You can start training using python or shell scripts. The usage of shell scripts as follows:

  • GPU: sh run_infer.sh GPU [DATASET_PATH] [CHECKPOINT_PATH]
  • CPU: sh run_infer.sh CPU [DATASET_PATH] [CHECKPOINT_PATH]

Launch

# infer example
  python:
    GPU: python eval.py --dataset_path ~/imagenet/val/ --checkpoint_path mobilenet_199.ckpt --device_targe GPU
    CPU: python eval.py --dataset_path ~/cifar10/val/ --checkpoint_path mobilenet_199.ckpt --device_targe CPU

  shell:
    GPU: sh run_infer.sh GPU ~/imagenet/val/ ~/train/mobilenet-200_625.ckpt
    CPU: sh run_infer.sh CPU ~/cifar10/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

Export MindIR

Change the export mode and export file in src/config.py, and run export.py.

python export.py --device_target [PLATFORM] --checkpoint_path [CKPT_PATH]

Model description

Performance

Training Performance

Parameters MobilenetV3
Model Version large
Resource NV SMX2 V100-32G
uploaded Date 05/06/2020
MindSpore Version 0.3.0
Dataset ImageNet
Training Parameters src/config.py
Optimizer Momentum
Loss Function SoftmaxCrossEntropy
outputs probability
Loss 1.913
Accuracy ACC1[77.57%] ACC5[92.51%]
Total time 1433 min
Params (M) 5.48 M
Checkpoint for Fine tuning 44 M
Scripts Link

Description of Random Situation

In dataset.py, we set the seed inside “create_dataset" function. We also use random seed in train.py.

ModelZoo Homepage

Please check the official homepage.