You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mindspore/model_zoo/official/cv/mobilenetv3/README_CN.md

6.0 KiB

目录

MobileNetV3描述

MobileNetV3结合硬件感知神经网络架构搜索NAS和NetAdapt算法已经可以移植到手机CPU上运行后续随新架构进一步优化改进。2019年11月20日

论文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.

模型架构

MobileNetV3总体网络架构如下

链接

数据集

使用的数据集:imagenet

  • 数据集大小125G共1000个类、1.2万张彩色图像
    • 训练集120G共1.2万张图像
    • 测试集5G共5万张图像
  • 数据格式RGB
    • 数据在src/dataset.py中处理。

环境要求

脚本说明

脚本和样例代码

├── MobileNetV3
  ├── Readme.md     # MobileNetV3相关描述
  ├── scripts
     ├──run_train.sh   # 用于训练的shell脚本
     ├──run_eval.sh    # 用于评估的shell脚本
  ├── src
     ├──config.py      # 参数配置
     ├──dataset.py     # 创建数据集
     ├──launch.py      # 启动python脚本
     ├──lr_generator.py     # 配置学习率
     ├──mobilenetV3.py      # MobileNetV3架构
  ├── train.py      # 训练脚本
  ├── eval.py       #  评估脚本
  ├── mindspore_hub_conf.py       #  MindSpore Hub接口

训练过程

用法

使用python或shell脚本开始训练。shell脚本的使用方法如下

  • 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]

启动

# 训练示例
  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/

结果

训练结果保存在示例路径中。检查点默认保存在./checkpoint中,训练日志重定向到./train/train.log,如下所示:

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

评估过程

用法

使用python或shell脚本开始训练。shell脚本的使用方法如下

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

启动

# 推理示例
  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

训练过程中可以生成检查点。

结果

推理结果保存示例路径中,可以在val.log中找到如下结果:

result:{'acc':0.71976314102564111} ckpt=/path/to/checkpoint/mobilenet-200_625.ckpt

导出MINDIR

修改src/config.py文件中的export_modeexport_file, 运行export.py

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

模型描述

性能

训练性能

参数 MobilenetV3
模型版本 大版本
资源 NV SMX2 V100-32G
上传日期 2020-05-06
MindSpore版本 0.3.0
数据集 ImageNet
训练参数 src/config.py
优化器 Momentum
损失函数 Softmax交叉熵
输出 概率
损失 1.913
准确率 ACC1[77.57%] ACC5[92.51%]
总时长 1433分钟
参数(M) 5.48M
微调检查点 44M
脚本 链接

随机情况说明

dataset.py中设置了“create_dataset”函数内的种子同时还使用了train.py中的随机种子。

ModelZoo主页

请浏览官网主页