mindspore/model_zoo/official/cv/shufflenetv2
panfengfeng ca562f53b0 fix googlenet & shufflenetv2 bugs 2021-01-25 23:15:14 +08:00
..
scripts Save the GPU backend multi card output in different folders. 2020-09-10 16:04:28 +08:00
src change code to import APIs from mindspore.dataset rather than mindspore.dataset.engine 2020-12-24 17:30:02 +08:00
README.md fix googlenet & shufflenetv2 bugs 2021-01-25 23:15:14 +08:00
eval.py fix shufflenetv2 script 2020-11-27 17:12:29 +08:00
export.py fix GPU device_id bug 2020-12-31 15:12:26 +08:00
train.py fix shufflenetv2 script 2020-11-27 17:12:29 +08:00

README.md

Contents

ShuffleNetV2 Description

ShuffleNetV2 is a much faster and more accurate network than the previous networks on different platforms such as Ascend or GPU. Paper Ma, N., Zhang, X., Zheng, H. T., & Sun, J. (2018). Shufflenet v2: Practical guidelines for efficient cnn architecture design. In Proceedings of the European conference on computer vision (ECCV) (pp. 116-131).

Model architecture

The overall network architecture of ShuffleNetV2 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

+-- ShuffleNetV2
  +-- Readme.md     # descriptions about ShuffleNetV2
  +-- scripts
    +--run_distribute_train_for_gpu.sh   # shell script for distributed training
    +--run_eval_for_gpu.sh         # shell script for evaluation
    +--run_standalone_train_for_gpu.sh   # shell script for standalone training
  +-- src
    +--config.py      # parameter configuration
    +--dataset.py     # creating dataset
    +--loss.py        # loss function for network
    +--lr_generator.py     # learning rate config
  +-- train.py      # training script
  +-- eval.py       # evaluation script
  +-- blocks.py     # ShuffleNetV2 blocks
  +-- network.py    # ShuffleNetV2 model network

Training process

Usage

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

  • Distributed training on GPU: sh run_standalone_train_for_gpu.sh [DEVICE_NUM] [VISIABLE_DEVICES(0,1,2,3,4,5,6,7)] [DATASET_PATH]
  • Standalone training on GPU: sh run_standalone_train_for_gpu.sh [DATASET_PATH]

Launch

# training example
  python:
      GPU: mpirun --allow-run-as-root -n 8 --output-filename log_output --merge-stderr-to-stdout python train.py --is_distributed=True --platform='GPU' --dataset_path='~/imagenet/train/' > train.log 2>&1 &

  shell:
      GPU: cd scripts & sh run_distribute_train_for_gpu.sh 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.

Eval process

Usage

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

  • GPU: sh run_eval_for_gpu.sh [DATASET_PATH] [CHECKPOINT_PATH]

Launch

# infer example
  python:
      GPU: CUDA_VISIBLE_DEVICES=0 python eval.py --platform='GPU' --dataset_path='~/imagenet/val/' > eval.log 2>&1 &

  shell:
      GPU: cd scripts & sh run_eval_for_gpu.sh '~/imagenet/val/' 'checkpoint_file'

checkpoint can be produced in training process.

Result

Inference result will be stored in the example path, you can find result in eval.log.

Model description

Performance

Training Performance

Parameters ShuffleNetV2
Resource NV SMX2 V100-32G
uploaded Date 09/24/2020
MindSpore Version 1.0.0
Dataset ImageNet
Training Parameters src/config.py
Optimizer Momentum
Loss Function CrossEntropySmooth
Accuracy 69.4%(TOP1)
Total time 49 h 8ps

Inference Performance

Parameters
Resource NV SMX2 V100-32G
uploaded Date 09/24/2020
MindSpore Version 1.0.0
Dataset ImageNet, 1.2W
batch_size 128
outputs probability
Accuracy acc=69.4%(TOP1)

ModelZoo Homepage

Please check the official homepage.