AscendCL样例工程使用指导
本节介绍AscendCL样例工程ACL ResNet-50(C++)与ACL ResNet-50(Python)的使用,若需要更多样例,请查看https://gitee.com/ascend/samples。
功能描述
该样例主要是基于Caffe ResNet-50网络(单输入、单Batch)实现图片分类的功能。
将Caffe ResNet-50网络的模型文件转换为适配昇腾AI处理器的离线模型(*.om文件),在样例中,加载该om文件,对2张*.jpg图片进行同步推理,分别得到推理结果后,再对推理结果进行处理,输出top5置信度的类别标识。

原理介绍
在该Sample中,涉及的关键功能点,如下表所示(以C++接口为例)。API接口的详细介绍请参见《应用软件开发指南(C&C++)》或《应用软件开发指南(Python)》。
初始化 |
|
---|---|
Device管理 |
|
Context管理 |
|
Stream管理 |
|
内存管理 |
|
数据传输 |
如果在Host上运行应用,则需调用aclrtMemcpy接口:
如果在Device上运行应用,则无需进行数据传输。 如果在开发者板上运行应用,则无需进行数据传输。 |
模型推理 |
|
数据后处理 |
提供样例代码,处理模型推理的结果,直接在终端上显示top5置信度的类别编号。 另外,样例中提供了自定义接口DumpModelOutputResult,用于将模型推理的结果写入文件(运行可执行文件后,推理结果文件在运行环境上的应用可执行文件的同级目录下),默认未调用该接口,用户可在sample_process.cpp中,在调用OutputModelResult接口前,增加如下代码调用DumpModelOutputResult接口: // print the top 5 confidence values with indexes.use function DumpModelOutputResult // if want to dump output result to file in the current directory processModel.DumpModelOutputResult(); processModel.OutputModelResult(); |
ACL ResNet-50(C++)使用指导
- 用户可以创建应用工程,请参见新建应用工程创建ACL ResNet-50(C++)样例工程。
- 准备模型文件和数据。
- 获取模型文件。
- 转换模型。
在添加模型文件前,您需要先进行模型转换将第三方模型转换为适配昇腾AI处理器的离线模型(*.om文件)。模型转换功能介绍详情请参见模型转换。
- 在MindStudio顶部菜单栏找到并单击“Model Converter”功能。 ,进入
- 填写模型转换信息,参考如下。
- Model File:选择已上传的ResNet-50网络的模型文件(*.prototxt)。
- Weight File:选择已上传的ResNet-50网络的权重文件(*.caffemodel)。
- Model Name:模型名称,本次步骤以“resnet50”为例。
- Target SoC Version:请以实际情况选择。
- OutputPath:选择转换后的(.om)模型输出目录(默认输出路径“$HOME/modelzoo/${Model Name}/${Target SoC Version}/”)。
- 单击“Next”,本次样例在“Data Pre-Processing”功能不进行配置,继续单击“Next”进入下一步。
- 在“Advanced Options Preview”页面下,可通过“Command Preview”检查配置后生成的模型转换命令,确认后单击“Finish”,开始模型转换。
- 添加模型文件。
- 准备推理数据,请通过以下链接获取该样例的输入图片,根据实际使用场景进行操作。
图片获取链接:数据图片1、数据图片2。
- Linux使用场景。
- 以运行用户将获取的文件上传至开发环境的“工程目录/data”目录下。如果目录不存在,需自行创建。
- 以运行用户登录开发环境。
- 通过以下任意一种方式处理图片数据。
- 参见Python SDK依赖设置,配置Python解析器。在MindStudio的工程目录下找到“script/transferPic.py”选中并右键,在弹出的菜单中,选择 ,在弹出的运行配置中编辑“Working directory”配置为“工程目录/data”。配置完成,单击“OK”,再次右键单击“transferPic.py”选择 。
- 切换到“工程目录/data”目录下,执行“transferPic.py”脚本。
python3 ../script/transferPic.py
将*.jpg转换为*.bin,同时将图片从1024 * 683的分辨率缩放为224 * 224。在“工程目录/data”目录下生成2个*.bin文件。
如果执行脚本出现以下报错,则表示缺少Pillow库,请使用pip3 install Pillow --user命令安装Pillow库。
ModuleNotFoundError: No module named 'PIL'
- Windows使用场景。
- 获取图片后,可以执行以下步骤转换图片格式,以图片存放在“C:\Users\user1\AscendProjects\MyApp1\data”路径为例。
- 打开系统命令提示符。
- 执行以下命令进入工程文件下“C:\Users\user1\AscendProjects\MyApp1\data”。
cd C:\Users\user1\AscendProjects\MyApp1\data
- 执行以下命令转换图片格式。
python ..\script\transferPic.py
- Linux使用场景。
- 编译应用工程。在MindStudio工程界面,顶部菜单栏中单击 ,进入编译配置页面。
- 配置编译参数,单击
添加新增配置。
列表中带有“(default)”标记的配置项为当前默认配置项,如需进行变更,可选中所需配置项,并单击进行切换。
图2 编译配置表1 编译配置参数说明 参数配置
参数说明
Name
编译配置的名称。
Build Type
配置类型,可选:“Debug”或“Release”。
Toolchain
工具链配置器,配置详情请参见Toolchains,支持本地和远程编译功能。
CMake options
CMake选项,默认:“-DCMAKE_BUILD_TYPE=Debug -DCMAKE_SKIP_RPATH=TRUE”。
Build directory
编译目录相对路径,该路径是相对于工程目录的路径。
Build options
编译加速选项。
Environment Variables
环境变量配置。
可直接手动配置或单击
符号,在弹出窗中配置管理。
- 单击“OK”保存编译工程。
- 配置编译参数,单击
- 开始编译。
在MindStudio工程界面,顶部菜单栏中单击 。
- 运行应用工程。
在MindStudio工程界面,顶部菜单栏中单击 ,进入编译配置页面。
单击右上角“+”,新建“CMake Application”运行配置项,参考以下步骤进行配置。
ACL ResNet-50(Python)使用指导
- 请参见新建应用工程创建ACL ResNet-50(Python)样例工程。
- 准备模型文件和数据。
- 获取模型文件。
- 转换模型。
在添加模型文件前,您需要先进行模型转换将第三方模型转换为适配昇腾AI处理器的离线模型(*.om文件)。模型转换功能介绍详情请参见模型转换。
- 在MindStudio顶部菜单栏找到并单击“Model Converter”功能。 ,进入
- 填写模型转换信息,参考如下。
- Model File:选择已上传的ResNet-50网络的模型文件(*.prototxt)。
- Weight File:选择已上传的ResNet-50网络的权重文件(*.caffemodel)。
- Model Name:模型名称,本次步骤以“resnet50”为例。
- Target SoC Version:请以实际情况选择。
- OutputPath:选择转换后的(.om)模型输出目录(默认输出路径“$HOME/modelzoo/${Model Name}/${Target SoC Version}/”)。
- 单击“Next”,本次样例在“Data Pre-Processing”功能不进行配置,继续单击“Next”进入下一步。
- 在“Advanced Options Preview”页面下,可通过“Command Preview”检查配置后生成的模型转换命令,确认后单击“Finish”,开始模型转换。
- 添加模型文件。
- 准备推理数据,请通过以下链接获取该样例的输入图片,根据实际使用场景进行操作。
- 运行应用工程(如需配置Python解析器,请参见Python SDK依赖设置)。在MindStudio工程界面,顶部菜单栏中单击 ,进入编译配置页面。
- 配置运行参数。
- 在MindStudio工程界面,顶部菜单栏中单击“Run > Run...”。在弹出框中选择已创建好的运行配置信息,运行应用。
运行结果示例如图6,“index”及其“value”会根据运行环境的实际情况有所不同: