ShuffleNetV2在Ascend和GPU等平台上运行比以往更快、更准确。
论文: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).
ShuffleNetV2的整体网络架构如下:
使用的数据集:ImageNet
转换数据集:flower_photos
+-- ShuffleNetV2
+-- Readme.md # ShuffleNetV2的相关说明
+-- scripts
+--run_distribute_train_for_ascebd.sh # 在Ascend上运行shell脚本进行分布式训练
+--run_distribute_train_for_gpu.sh # 在GPU上运行shell脚本进行分布式训练
+--run_eval_for_ascend.sh # 在Ascend上评估shell脚本
+--run_eval_for_gpu.sh # 在GPU上评估shell脚本
+--run_standalone_train_for_gpu.sh # 在GPU上评估shell脚本
+-- src
+--config.py # 参数配置
+--CrossEntropySmooth.py # GPU训练的损失函数
+--dataset.py # 创建数据集
+--loss.py # 网络的损失函数
+--lr_generator.py # 设置学习率
+--shufflenetv2.py # ShuffleNetV2网络
+-- cpu_transfer.py # 转换脚本
+-- dataset_split.py # 拆分数据集用于转换脚本
+-- quick_start.py # 快速启动脚本
+-- train.py # 训练脚本
+-- eval.py # 评估脚本
您可以使用python命令或运行shell脚本来进行训练。shell脚本的用法如下:
# 训练示例
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.log 2>&1 &
CPU: python cpu_transfer.py --checkpoint_input_path ./input_ckpt/shufflenetv2_top1acc69.63_top5acc88.72.ckpt --checkpoint_save_path ./save_ckpt/Graph_mode --train_dataset ./data/flower_photos_split/train --use_pynative_mode False --platform CPU
shell:
GPU: cd scripts & sh run_distribute_train_for_gpu.sh 8 0,1,2,3,4,5,6,7 ~/imagenet
训练结果将存储在示例路径中。默认情况下,检查点文件将存储在./checkpoint
中,训练日志将重定向到./train/train.log
。
您可以使用python命令或运行shell脚本进行评估。shell脚本的用法如下:
# 推理示例
python:
Ascend: python eval.py --platform='Ascend' --dataset_path='~/imagenet' --checkpoint='checkpoint_file' > eval.log 2>&1 &
GPU: CUDA_VISIBLE_DEVICES=0 python eval.py --platform='GPU' --dataset_path='~/imagenet/val/' --checkpoint='checkpoint_file'> eval.log 2>&1 &
CPU: python eval.py --dataset_path ./data/flower_photos_split/eval --checkpoint_dir ./save_ckpt/Graph_mode --platform CPU --checkpoint ./save_ckpt/Graph_mode/shufflenetv2_1-154_18.ckpt --enable_checkpoint_dir True --use_pynative_mode False
shell:
Ascend: cd scripts & sh run_eval_for_ascend.sh '~/imagenet' 'checkpoint_file'
GPU: cd scripts & sh run_eval_for_gpu.sh '~/imagenet' 'checkpoint_file'
推理结果将存储在示例路径中,您可以在eval.log
中找到结果。
推理前需参照 MindSpore C++推理部署指南 进行环境变量设置。
本地导出MindIR模型
python export.py --device_target [PLATFORM] --ckpt_file [CKPT_FILE] --file_format [FILE_FORMAT] --file_name [OUTPUT_FILE_BASE_NAME]
必须先设置checkpoint_file_path参数。
PLATFORM
:可选值为Ascend,GPU或CPU。
FILE_FORMAT
:可选值为AIR,ONNX或MINDIR。
在进行推理之前,必须通过export.py
脚本导出MindIR文件。下方为使用MindIR模型进行推理的例子。
当前批处理大小只能设置为1。
# Ascend 310推理
bash run_infer_310.sh [MINDIR_PATH] [DATASET_NAME] [DATASET_PATH] [NEED_PREPROCESS] [DEVICE_ID]
MINDIR_PATH
:MindIR模型的文件名。DATASET_NAME
:ImageNet2012数据集。DATASET_PATH
:ImageNet2012数据集中val的路径。NEED_PREPROCESS
:值为y或n。DEVICE_ID
:可选参数,默认值为0。推理结果保存在当前路径中,您可以在acc.log文件中找到类似如下结果。 Top1 acc:0.69608 Top5 acc:0.88726
# 在CPU上进行推理
python eval.py --dataset_path [eval dataset] --checkpoint_dir [ckpt dir for eavl ] --platform [CPU] --checkpoint [ckpt path for eval] --enable_checkpoint_dir [True/False]--use_pynative_mode [True/False]
推理结果保存在当前路径中,您可以在acc.log文件中找到类似如下结果。 Top1 acc:0.86 Top5 acc:1
参数 | Ascend 910 | GPU | CPU(转换) |
---|---|---|---|
模型版本 | ShuffleNetV2 | ShuffleNetV2 | ShuffleNetV2 |
资源 | Ascend 910 | NV SMX2 V100-32G | Intel(R)Core(TM) i5-7200U CPU@2.50GHz(4 CPUs) |
上传日期 | 10/09/2021 | 09/24/2020 | 08/30/2022 |
MindSpore版本 | 1.3.0 | 1.0.0 | 1.8 |
数据集 | ImageNet | ImageNet | Flower_photos |
训练参数 | src/config.py | src/config.py | src/config.py |
优化器 | 动量 | 动量 | 动量 |
损失函数 | SoftmaxCrossEntropyWithLogits | CrossEntropySmooth | CrossEntropySmooth |
准确率 | 69.59%(Top1) | 69.4%(Top1) | 86.4%(Top1) |
总时长 | 11.6小时8秒 | 49小时8秒 | 15小时18分钟6秒 |
参数 | Ascend 910 | GPU | CPU(转换) |
---|---|---|---|
资源 | Ascend 910 | NV SMX2 V100-32G | Intel(R)Core(TM) i5-7200U CPU@2.50GHz(4 CPUs) |
上传日期 | 10/09/2021 | 09/24/2020 | 08/30/2022 |
MindSpore版本 | 1.3.0 | 1.0.0 | 1.8.0 |
数据集 | ImageNet | ImageNet | Flower_photos |
batch_size | 125 | 128 | 128 |
输出 | 概率 | 概率 | 概率 |
准确率 | ac=69.59%(Top1) | acc=69.4%(Top1) | acc=86.4%(Top1) |
请查看官方主页。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。