【2023 · CANN训练营第一季】图片分类应用开发
经过上面两篇的介绍,目前我们对昇腾和PyTorch模型迁移有了一定的了解,这里将首先快速体验运行样例以及开发一个图片分类应用。
申请云环境
- 获取账号名。登录华为云->账号中心->基本信息
- 获取项目ID。我的凭证->项目列表
然后去找小助手申请环境。
采用共享镜像,创建基于 Ascend 310 的环境,用户使用 HwHiAiUser。
速通样例
运行配置
-
创建好环境后,利用终端工具远程连接服务器。
-
首先更改
/etc/passwd
,设置HwHiAiUser使用的shell为bash
-
切换用户为HwHiAiUser
-
下载samples仓库
1
git clone https://gitee.com/ascend/samples.git
由于我使用的环境CANN版本为
6.0.RC1.alpha001
,根据仓库说明,需要将样例仓库切换版本为v0.8.0
以YOLOV3_coco_detection_picture为例
YOLOV3_coco_detection_picture所在目录为samples/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture
,
根据README.MD
进行如下操作。
-
下载原始模型
1
2
3wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/Yolov3/yolov3.caffemodel
wget <https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/Yolov3/yolov3.prototxt>
wget <https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/YOLOV3_coco_detection_picture/aipp_nv12.cfg> -
模型转换
1
atc --model=yolov3.prototxt --weight=yolov3.caffemodel --framework=0 --output=yolov3 --soc_version=Ascend310 --insert_op_conf=aipp_nv12.cfg
-
进入脚本目录进行编译,架构选择x86
1
2
3cd $HOME/samples/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture/scripts
bash sample_build.sh -
运行样例
结果显示输入图片检测有狗,置信度为99%
应用开发
本节以C/C++接口的AscendCL为例开发一个图片分类应用,模型采用的是Caffe架构的ResNet-50网络,输入为分辨率是224*224的RGB图像,输出为Top5置信度的类别标签以及其对应的置信度。
代码所在样例仓库目录为/home/HwHiAiUser/samples/cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification
模型应用分为四个步骤:准备模型、准备数据、编译程序、运行程序。
准备模型
首先,创建caffe_model
文件夹用于储存模型,而后通过链接获得模型。
其次,需要将caffe模型转为昇腾的om模型。
1 | atc --model=caffe_model/resnet50.prototxt --weight=caffe_model/resnet50.caffemodel --framework=0 --output=model/resnet50 --soc_version=Ascend310 --input_format=NCHW --input_fp16_nodes=data --output_type=FP32 --out_nodes=prob:0 |
参数说明
1 | --model:原始模型文件路径。 |
准备数据
在data
文件夹中放置测试数据,
1 | cd ./data |
而后利用图片转换脚本,将图片转为分辨率为224*224
的RGB图像。
编译程序
首先,需要设置环境变量,这里开发环境与运行环境的操作系统架构相同,采用
1 | export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest # $HOME/Ascend表示ascend-toolkit按照目录 |
其次,生成编译文件
1 | mkdir -p build/intermediates/host |
最后,进行编译
1 | make |
运行程序
找到编译生成的main
执行
结语
至此,便完成了一个caffe模型在昇腾NPU设备上的迁移和推理,下篇将对本次使用的图片分类应用的源码进行解析。