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

185 lines
6.0 KiB

# 目录
<!-- TOC -->
- [目录](#目录)
- [MobileNetV3描述](#mobilenetv3描述)
- [模型架构](#模型架构)
- [数据集](#数据集)
- [环境要求](#环境要求)
- [脚本说明](#脚本说明)
- [脚本和样例代码](#脚本和样例代码)
- [训练过程](#训练过程)
- [用法](#用法)
- [启动](#启动)
- [结果](#结果)
- [评估过程](#评估过程)
- [用法](#用法-1)
- [启动](#启动-1)
- [结果](#结果-1)
- [导出MINDIR](#导出MINDIR)
- [模型描述](#模型描述)
- [性能](#性能)
- [训练性能](#训练性能)
- [随机情况说明](#随机情况说明)
- [ModelZoo主页](#modelzoo主页)
<!-- /TOC -->
# MobileNetV3描述
MobileNetV3结合硬件感知神经网络架构搜索NAS和NetAdapt算法已经可以移植到手机CPU上运行后续随新架构进一步优化改进。2019年11月20日
[论文](https://arxiv.org/pdf/1905.02244)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总体网络架构如下
[链接](https://arxiv.org/pdf/1905.02244)
# 数据集
使用的数据集:[imagenet](http://www.image-net.org/)
- 数据集大小125G共1000个类、1.2万张彩色图像
- 训练集120G共1.2万张图像
- 测试集5G共5万张图像
- 数据格式RGB
-数据在src/dataset.py中处理。
# 环境要求
- 硬件GPU/CPU
- 准备GPU/CPU处理器搭建硬件环境。
- 框架
- [MindSpore](https://www.mindspore.cn/install)
- 如需查看详情,请参见如下资源:
- [MindSpore教程](https://www.mindspore.cn/tutorial/training/zh-CN/master/index.html)
- [MindSpore Python API](https://www.mindspore.cn/doc/api_python/zh-CN/master/index.html)
# 脚本说明
## 脚本和样例代码
```python
├── 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]
### 启动
```bash
# 训练示例
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`,如下所示:
```text
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]
### 启动
```bash
# 推理示例
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`中找到如下结果:
```text
result:{'acc':0.71976314102564111} ckpt=/path/to/checkpoint/mobilenet-200_625.ckpt
```
## 导出MINDIR
修改`src/config.py`文件中的`export_mode`和`export_file`, 运行`export.py`。
```bash
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 |
|脚本 | [链接](https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/mobilenetv3)|
# 随机情况说明
`dataset.py`中设置了“create_dataset”函数内的种子同时还使用了train.py中的随机种子。
# ModelZoo主页
请浏览官网[主页](https://gitee.com/mindspore/mindspore/tree/master/model_zoo)。