Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
Jiayu Guo be37736135 | 3 years ago | |
---|---|---|
scripts | 3 years ago | |
src | 3 years ago | |
Readme.md | 3 years ago | |
eval.py | 3 years ago | |
export.py | 3 years ago | |
train.py | 3 years ago |
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
├── MobileNetV3
├── README_CN.md # MobileNetV3相关描述
├── scripts
│ ├──run_standalone_train.sh # 用于单卡训练的shell脚本
│ ├──run_distribute_train.sh # 用于八卡训练的shell脚本
│ └──run_eval.sh # 用于评估的shell脚本
├── src
│ ├──config.py # 参数配置
│ ├──dataset.py # 创建数据集
│ ├──loss.py # 损失函数
│ ├──lr_generator.py # 配置学习率
│ ├──mobilenetV3.py # MobileNetV3架构
│ └──monitor.py # 监控网络损失和其他数据
├── eval.py # 评估脚本
├── export.py # 模型格式转换脚本
└── train.py # 训练脚本
模型训练和评估过程中使用的参数可以在config.py中设置:
'num_classes': 1000, # 数据集类别数
'image_height': 224, # 输入图像高度
'image_width': 224, # 输入图像宽度
'batch_size': 150, # 数据批次大小
'epoch_size': 370, # 模型迭代次数
'warmup_epochs': 4, # warmup epoch数量
'lr': 0.05, # 学习率
'momentum': 0.9, # 动量参数
'weight_decay': 4e-5, # 权重衰减率
'label_smooth': 0.1, # 标签平滑因子
'loss_scale': 1024, # loss scale
'save_checkpoint': True, # 是否保存ckpt文件
'save_checkpoint_epochs': 1, # 每迭代相应次数保存一个ckpt文件
'keep_checkpoint_max': 5, # 保存ckpt文件的最大数量
'save_checkpoint_path': "./checkpoint", # 保存ckpt文件的路径
'export_file': "mobilenetv3_small", # export文件
'export_format': "MINDIR", # export格式
您可以使用python或shell脚本进行训练。
# 训练示例
python:
Ascend单卡训练示例:python train.py --device_id [DEVICE_ID] --dataset_path [DATA_DIR]
shell:
Ascend单卡训练示例: sh ./scripts/run_standalone_train.sh [DEVICE_ID] [DATA_DIR]
Ascend八卡并行训练:
cd ./scripts/
sh ./run_distribute_train.sh [RANK_TABLE_FILE] [DATA_DIR]
ckpt文件将存储在 ./checkpoint
路径下,训练日志将被记录到 log.txt
中。训练日志部分示例如下:
epoch 1: epoch time: 553262.126, per step time: 518.521, avg loss: 5.270
epoch 2: epoch time: 151033.049, per step time: 141.549, avg loss: 4.529
epoch 3: epoch time: 150605.300, per step time: 141.148, avg loss: 4.101
epoch 4: epoch time: 150638.805, per step time: 141.180, avg loss: 4.014
epoch 5: epoch time: 150594.088, per step time: 141.138, avg loss: 3.607
您可以使用python或shell脚本进行评估。
# 评估示例
python:
python eval.py --device_id [DEVICE_ID] --dataset_path [DATA_DIR] --checkpoint_path [PATH_CHECKPOINT]
shell:
sh ./scripts/run_eval.sh [DEVICE_ID] [DATA_DIR] [PATH_CHECKPOINT]
训练过程中可以生成ckpt文件。
可以在 eval_log.txt
查看评估结果。
result: {'Loss': 2.3101649037352554, 'Top_1_Acc': 0.6746546546546547, 'Top_5_Acc': 0.8722122122122122} ckpt= ./checkpoint/model_0/mobilenetV3-370_625.ckpt
参数 | Ascend |
---|---|
模型名称 | mobilenetV3 |
模型版本 | 小版本 |
运行环境 | HUAWEI CLOUD Modelarts |
上传时间 | 2021-3-25 |
MindSpore 版本 | 1.1.1 |
数据集 | imagenet |
训练参数 | src/config.py |
优化器 | RMSProp |
损失函数 | CrossEntropyWithLabelSmooth |
最终损失 | 2.31 |
精确度 (8p) | Top1[67.5%], Top5[87.2%] |
训练总时间 (8p) | 16.4h |
评估总时间 | 1min |
参数量 (M) | 36M |
脚本 | 链接 |
我们在 dataset.py
和 train.py
脚本中设置了随机种子。
请核对官方 主页。
mobilenetV3_small_x1_0
Python Shell
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》