基于PyTorch框架的ResNet50模型,对*.jpg图片分类,输出各图片所属分类的编号、名称。
样例的处理流程如下图所示:
可以使用以下两种方式下载,请选择其中一种进行源码准备。
命令行方式下载(下载时间较长,但步骤简单)。
# 开发环境,非root用户命令行中执行以下命令下载源码仓。
cd ${HOME}
git clone https://gitee.com/ascend/samples.git
**注:**如果需要切换到其它tag版本,以v0.9.0为例,可执行以下命令。
git checkout v0.9.0
压缩包方式下载(下载时间较短,但步骤稍微复杂)。
# 1. samples仓右上角选择 【克隆/下载】 下拉框并选择 【下载ZIP】。
# 2. 将ZIP包上传到开发环境中的普通用户家目录中,【例如:${HOME}/ascend-samples-master.zip】。
# 3. 开发环境中,执行以下命令,解压zip包。
cd ${HOME}
unzip ascend-samples-master.zip
**注:**如果需要下载其它版本代码,请在当前页面右上方按照下图切换版本。
样例的代码目录说明如下:
├── data // 用于存放测试图片
├── model // 用于存放模型文件
├── scripts // 用于存放运行样例的脚本
├── src // 用于存放源码
安装CANN软件。
单击Link,获取最新版本的CANN软件安装指南。
**注意:**此处还可以在页面左上侧切换版本,查看对应版本的安装指南。
设置环境变量。
注:“$HOME/Ascend”请替换“Ascend-cann-toolkit”包的实际安装路径。
# 设置CANN依赖的基础环境变量
. ${HOME}/Ascend/ascend-toolkit/set_env.sh
#如果用户环境存在多个python3版本,则指定使用python3.7.5版本
export PATH=/usr/local/python3.7.5/bin:$PATH
#设置python3.7.5库文件路径
export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH
# 配置程序编译依赖的头文件与库文件路径
export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub
安装OpenCV。
执行以下命令安装opencv,确保是3.x版本:
sudo apt-get install libopencv-dev
获取PyTorch框架的ResNet50模型(*.onnx),并转换为昇腾AI处理器能识别的模型(*.om)。
**注:**此处以昇腾310 AI处理器为例,针对其它昇腾AI处理器的模型转换,需修改atc命令中的--soc_version参数值。
# 为了方便下载,在这里直接给出原始模型下载及模型转换命令,可以直接拷贝执行。
cd $HOME/samples/inference/modelInference/sampleResnetQuickStart/python/model
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50.onnx
atc --model=resnet50.onnx --framework=5 --output=resnet50 --input_shape="actual_input_1:1,3,224,224" --soc_version=Ascend310
atc命令中各参数的解释如下,详细约束说明请参见《ATC模型转换指南》。
--model:ResNet-50网络的模型文件的路径。
--framework:原始框架类型。5表示ONNX。
--output:resnet50.om模型文件的路径。请注意,记录保存该om模型文件的路径,后续开发应用时需要使用。
--input_shape:模型输入数据的shape。
--soc_version:昇腾AI处理器的版本。
说明: 如果无法确定当前设备的soc_version,则在安装驱动包的服务器执行npu-smi info命令进行查询,在查询到的“Name“前增加Ascend信息,例如“Name“对应取值为_xxxyy_,实际配置的soc_version值为Ascend_xxxyy_。
获取测试图片数据。
请从以下链接获取该样例的测试图片dog1_1024_683.jpg,放在data目录下。
cd $HOME/samples/inference/modelInference/sampleResnetQuickStart/python/data
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog1_1024_683.jpg
注:若需更换测试图片,则需自行准备测试图片,并将测试图片放到data目录下。
运行样例。
执行以下脚本运行样例:
cd $HOME/samples/inference/modelInference/sampleResnetQuickStart/python/scripts
bash sample_run.sh
执行成功后,在屏幕上的关键提示信息示例如下,提示信息中的label表示类别标识、conf表示该分类的最大置信度,class表示所属类别。这些 值可能会根据版本、环境有所不同,请以实际情况为准:
[INFO] The sample starts to run
dog1_1024_683.jpg
label:162 conf:0.902207 class:beagle
*****run finish******
图片结果展示:
样例中的接口调用流程如下图所示。
在此样例基础上:
须知: 一般来说,更换其它图片分类模型(例如resnet50->resnet101),由于同类模型的输入、输出类似,在此样例基础上改动较小,但如果更换为其它类型的模型(例如目标检测模型),由于不同类型模型的输入、输出差别较大,在此样例基础上数据预处理、模型输入&输出准备以及数据后处理等改动很大,建议在Ascend Sample仓先找到目标检测类的样例,再基于目标检测样例修改。
获取更多样例,请单击Link。
获取在线视频课程,请单击Link。
获取学习文档,请单击AscendCL C&C++或AscendCL Python,查看最新版本的AscendCL推理应用开发指南。
查模型的输入输出
可使用第三方工具Netron打开网络模型,查看模型输入或输出的数据类型、Shape,便于在分析应用开发场景时使用。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。