ResNet50_vd 快速体验
ResNet50_vd 模型介绍请参考 PaddleClas ResNet 系列。
一、准备运行环境
请参考启智AI协作平台小白训练营课程中的第9课-云脑(基于Ascend NPU调试和训练任务)准备『调试任务』环境,其中启动镜像请选择 PaddlePaddle 深度学习框架镜像。启动成功之后,请打开调试环境启动页面的『Terminal』,按照以下步骤运行即可。
二、下载并安装 PaddleClas 套件
也可以访问 PaddleClas 的 项目地址 直接下载源码。
# 下载套件代码
git clone https://openi.pcl.ac.cn/PaddlePaddle/PaddleClas.git -b release/2.5
# 进入套件目录
cd PaddleClas
# PaddleClas 的 Python 依赖库在 requirements.txt 中给出,可通过如下命令安装:
pip install --upgrade -r requirements.txt -i https://mirror.baidu.com/pypi/simple
# 源码安装
python setup.py install
三、准备训练数据集
# 进入数据集目录
cd PaddleClas/dataset
# 下载数据集并解压
wget https://paddle-imagenet-models-name.bj.bcebos.com/data/flowers102.zip
unzip flowers102.zip
# 下载解压完成之后,当前目录结构如下
PaddleClas/dataset/flowers102
├── flowers102_label_list.txt
├── jpg # 图片目录
├── train_extra_list.txt
├── train_list.txt
└── val_list.txt
四、使用昇腾NPU进行模型训练
注意:昇腾上首次训练从启动到结束约20分钟(昇腾需在本地创建 kernel_meta
开头的缓存文件),第二次训练只需约5分钟左右。
在 PaddleClas
套件根目录下运行如下命令进行模型的边训练边评估,此示例中使用的训练数据集较小,因此最终的精度结果存在浮动,如需获取最高准确率,建议运行多次训练取最优值。
# 参数说明:
# -o Global.device=npu 参数指定运行设备为昇腾 NPU 设备,否则默认为 GPU 设备
# -o Arch.pretrained 参数指定是否加载预训练模型训练,默认为 False 关闭
# 不使用预训练模型 - 最高准确率为 0.2735
python tools/train.py -c ./ppcls/configs/quick_start/ResNet50_vd.yaml -o Global.device=npu
# 使用预训练模型 - 最高准确率为 0.9402
python tools/train.py -c ./ppcls/configs/quick_start/ResNet50_vd.yaml -o Global.device=npu \
-o Arch.pretrained=True
# 训练完成后会在当前目录下生成模型 checkpoint 文件,文件结构如下
PaddleClas/output/ResNet50_vd/
├── best_model.pdopt
├── best_model.pdparams
├── best_model.pdstates
├── epoch_1.pdopt
├── ... ...
├── latest.pdstates
└── train.log
五、使用昇腾NPU进行模型评估
在 PaddleClas
套件根目录下使用 output/ResNet50_vd/best_model
训练结果进行模型评估。
# 参数说明:
# -o Global.device=npu 参数指定运行设备为昇腾 NPU 设备,否则默认为 GPU 设备
# -o Arch.pretrained 参数指定训练保存的模型路径用于验证集上的精度评估
python tools/eval.py -c ./ppcls/configs/quick_start/ResNet50_vd.yaml -o Global.device=npu \
-o Arch.pretrained="output/ResNet50_vd/best_model"
# 评估结果如下
[2023/02/13 21:39:12] ppcls INFO: [Eval][Epoch 0][Avg]CELoss: 0.26695, loss: 0.26695, top1: 0.93627, top5: 0.98529
六、使用昇腾NPU进行模型推理
在 PaddleClas
套件根目录下使用 output/ResNet50_vd/best_model
训练结果,对 dataset/flowers102/jpg/image_00001.jpg
图片进行推理预测。
# 参数说明:
# -o Global.device=npu 参数指定运行设备为昇腾 NPU 设备,否则默认为 GPU 设备
# -o Global.pretrained_model 参数指定训练保存的模型路径用于推理预测
# -o Infer.infer_imgs 参数指定输入图片的路径用于推理预测
python tools/infer.py -c ./ppcls/configs/quick_start/ResNet50_vd.yaml -o Global.device=npu \
-o Global.pretrained_model="output/ResNet50_vd/best_model" \
-o Infer.infer_imgs="dataset/flowers102/jpg/image_00001.jpg"
# 预测结果如下
[{'class_ids': [76, 11, 9, 12, 70], 'scores': [0.99037, 0.00169, 0.00061, 0.00057, 0.00045], 'file_name': 'dataset/flowers102/jpg/image_00001.jpg', 'label_names': ['passion flower', "colt's foot", 'globe thistle', 'king protea', 'gazania']}]