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.
6.0 KiB
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中处理。
环境要求
- 硬件:GPU/CPU
- 准备GPU/CPU处理器搭建硬件环境。
- 框架
- 如需查看详情,请参见如下资源:
脚本说明
脚本和样例代码
├── 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_mode
和export_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主页
请浏览官网主页。