样例体验一之图片解码缩放与同步推理
该样例是基于 Caffe ResNet-50 网络来实现图片分类功能,芯片要求是 Ascend310、310P 和 910。在开始前,首先要建议大家报名 CANN 训练营活动,然后入群找小助手领取代金券,这样就可以零成本进行样例开发了。
![](https://static001.geekbang.org/infoq/63/636882ce328dbf46531ac7a2fd4d6dda.png)
VPC(Vision Preprocessing Core)负责图像处理功能,支持对图片做抠图、缩放、格式转换等操作,大概流程可以分为创建通道描述、创建通道、申请内存、数据处理、释放内存、释放通道,具体的接口和流程可以参考下方链接:
VPC 图像处理典型功能-DVPP 图像/视频处理(媒体数据处理 V1)-媒体数据处理(含图像/视频等)-AscendCL 应用开发(C&C++)-应用开发-CANN 社区版 8.0.RC2.alpha001 开发文档-昇腾社区
服务器购买
我们首先打开华为云官网,点击弹性云服务器,选择按需计费,AI 加速器,我们选用的是 x86 架构,当然也可以选择鲲鹏架构,系统用公共镜像就可以,ubuntu 和 centos 都可以,根据习惯选择。
![](https://static001.geekbang.org/infoq/93/9318d0ce58e50dcd209db76b595e8184.png)
点击下一步,选择网络,如果没有创建子网的话,需要先创建,公网带宽,根据个人需求,在这里我建议选用按流量计费,这样在不使用服务器的时候,可以点击停止,不用解绑弹性公网 IP。最后输入登陆账户和密码,就可以点击创建,等待创建成功了。
环境准备
分别点击如下链接下载 CANN-toolkit 软件包和驱动:
社区版资源下载-资源下载中心-昇腾社区
社区版-固件与驱动-昇腾社区
![](https://static001.geekbang.org/infoq/0f/0f2d1cffe922ef2a613cf2c7da3ce08e.png)
下载完成后,我们可以通过 mobaxterm 将文件上传到服务器。
因为本身的服务器是安装有 cann 软件包的,不过版本比较低,在软件包上传完成后,我们就可以进行软件的升级了。
驱动升级:chmod + ./{product name}-npu-firmware_x.x.x.x.X.run
./{product name}-npu-firmware_x.x.x.x.X.run --upgrade
升级成功后,可以执行 npu-smi 查看版本。
CANN 升级:chmod +x 软件包名.run
使环境变量生效: 在安装目录下,执行./set_env.sh
设置 python 变量:
#用于设置 python3.7.5 库文件路径
export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH
#如果用户环境存在多个 python3 版本,则指定使用 python3.7.5 版本
export PATH=/usr/local/python3.7.5/bin:$PATH
下载并运行样例
点击链接下载链接:
samples: CANN Samples - Gitee.com
上传到服务器,解压,进入相关文件夹。
![](https://static001.geekbang.org/infoq/e5/e547c16b296a28735800fc1ef344355b.png)
下载 resnet50 模型相关文件:
ResNet-50 网络的模型文件(*.prototxt):单击 Link 下载该文件。
ResNet-50 网络的权重文件(*.caffemodel):单击 Link 下载该文件。
下载完成后,上传到如上路径的 model 文件夹下,执行 atc 模型转换命令。
![](https://static001.geekbang.org/infoq/c9/c942aea84ededb5bee5e5ec0f9451f65.png)
准备单算子模型,执行命令:
atc --singleop=out/op_models/op_list.json --soc_version=Ascend310 --output=out/op_models
![](https://static001.geekbang.org/infoq/00/00c33113e10fcf5af16542f3a0b9f2e5.png)
准备测试图片,将其上传到 data 文件夹下:
https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog1_1024_683.jpg
https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog2_1024_683.jpg
编译运行
我们的开发环境和运行环境操作架构一样使用如下配置:
export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub
切换到样例目录,创建目录用于存放编译文件:
mkdir -p build/intermediates/host
执行编译命令:
cd build/intermediates/host
cmake ../../../src -DCMAKE_CXX_COMPILER=g++ -DCMAKE_SKIP_RPATH=TRUE
make
编译成功后,切换到 out 路径,运行样例:
![](https://static001.geekbang.org/infoq/14/149087b981dd60d884a16ef5d01b5a88.png)
如图,代表样例运行成功了!
评论