3.9 KiB
Contents
- ShuffleNetV2 Description
- Model Architecture
- Dataset
- Environment Requirements
- Script Description
- Model Description
ShuffleNetV2 Description
ShuffleNetV2 is a much faster and more accurate netowrk 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:
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
- Hardware(GPU)
- Prepare hardware environment with GPU processor.
- Framework
- For more information, please check the resources below:
Script description
Script and sample code
+-- ShuffleNetV2
+-- Readme.md # descriptions about ShuffleNetV2
+-- scripts
<EFBFBD> +--run_distribute_train_for_gpu.sh # shell script for distributed training
<EFBFBD> +--run_eval_for_multi_gpu.sh # shell script for evaluation
<EFBFBD> +--run_standalone_train_for_gpu.sh # shell script for standalone training
+-- src
<EFBFBD> +--config.py # parameter configuration
<EFBFBD> +--dataset.py # creating dataset
<EFBFBD> +--loss.py # loss function for network
<EFBFBD> +--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:
- Ditributed training on GPU: sh run_distribute_train_for_gpu.sh [DATA_DIR]
- Standalone training on GPU: sh run_standalone_train_for_gpu.sh [DEVICE_ID] [DATA_DIR]
Launch
# training example
python:
GPU: mpirun --allow-run-as-root -n 8 python train.py --is_distributed --platform 'GPU' --dataset_path '~/imagenet/train/' > train.log 2>&1 &
shell:
GPU: sh run_distribute_train_for_gpu.sh ~/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_multi_gpu.sh [DEVICE_ID] [EPOCH]
Launch
# infer example
python:
GPU: CUDA_VISIBLE_DEVICES=0 python eval.py --platform 'GPU' --dataset_path '~/imagenet/val/' --epoch 250 > eval.log 2>&1 &
shell:
GPU: sh run_eval_for_multi_gpu.sh 0 250
checkpoint can be produced in training process.
Result
Inference result will be stored in the example path, you can find result in val.log
.