【2023 · CANN训练营第一季】——根据ReadMe运行第一个Sample例程

前言:

        昇腾提供了以CANN AscendCL接口开发的样例仓,方便开发者学习。样例仓提供了C&C++、Python两种语言的样例。

        每个样例都有Readme,里面详细描述了功能、准备模型,准备数据,编译、运行的步骤。本笔记将根据Readme,完成resnet50_imagenet_classification工程的C++和Python两个版本的推理应用。

一、昇腾sample仓

 1、昇腾sample仓概述

        CANN AscendCL(Ascend Computing Language)提供Device管理、Context管理、Stream管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理等C语言API库供用户开发深度神经网络应用,用于实现目标识别、图像分类等功能。用户可以通过第三方框架调用AscendCL接口,以便使用昇腾AI处理器的计算能力;用户还可以使用AscendCL封装实现第三方lib库,以便提供昇腾AI处理器的运行管理、资源管理能力。

        昇腾样例仓就是以CANN AscendCL接口进行开发,制作的一系列给开发者进行参考学习的样例。这些样例主要分成“单一功能接口样例level1_single_api”和“推理教学样例level2_simple_inference”,推理教学样例又包含了:数据处理样例、分类样例、检测样例、自然语言处理样例等,基本上囊括了AI的主要方向的推理应用。这些例程提供了C++和Python两种实现,目录如下:


2、sample仓的学习方法

        了解了sample仓的目录结构后,我们就可以逐级找到自己感兴趣的例程进行学习,上手跑一下例程。

        进入一个具体的工程,首先要看的是Readme,这里面介绍了:工程的功能、工程的目录结构、获取模型和待推理的图片、编译和运行的步骤、关键的功能介绍。我们按照Readme的步骤,一步一步做下去就可以了。

        以resnet50_imagenet_classification的C++版为例,目录结构如下:


        RESNET50是一个 “图片分类应用”的模型,用来标识图片所属的分类,流程如下:


二、运行Resnet50图片分类样例——C++版

工程路径:samples/cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification。

        用Visual Studio code打开工程的Readme文件,如下图所示,按Readme里的说明一步一步即可完成第一个用例。用Mobaxtem连接到ECS上,由于sample仓已经下载,我们直接从第三步“准备模型”开始。


1、准备模型

    (1)步骤一:在工程路径下创建 caffe_model目录,并进入caffe_model目录。caffe_model是用来存放resnet50的原始caffe模型的。mkdir caffe_model && cd caffe_model

   (2) 步骤二:下载原始网络的模型文件(*.prototxt)、权重文件(*.caffemodel),根据Readme中的文件路径,使用wget获取对应文件。

wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/resnet50/resnet50.prototxt

 wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/resnet50/resnet50.caffemodel

    (3)步骤三:在工程目录下,创建model目录,用来存放转换后om格式的离线模型。先执行cd ..,退回到工程目录,再mkdir model创建model目录(因为代码指定om模型路径是工程目录下的model目录。拷贝readme中模型转换命令到mobaXterm中执行。

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

操作截图:


2、准备测试图片 

    (1)下载图片

        进入data目录,用wget命令下载待推理图片2张。


    (2)转换图片

        切换到“样例目录/data“目录下,执行transferPic.py脚本,将*.jpg转换为*.bin,同时将图片从1024*683的分辨率缩放为224*224。在“样例目录/data“目录下生成2个*.bin文件。

        python3 ../script/transferPic.py

        执行脚本报错“ModuleNotFoundError: No module named 'PIL'”,则表示缺少Pillow库,使用**pip3 install Pillow --user**命令安装Pillow库。


3、编译

        根据Readme,大致过程是:配置环境变量,用cmake工具生成Makefile,编译程序。


4、运行

    (1)运行过程


    (2)运行结果:

 

 

 

 

三、运行Resnet50图片分类样例——python版

        工程路径:

/samples/python/level2_simple_inference/1_classification/resnet50_imagenet_classification

        准备模型和图片的过程与C++版本一致,不再重复。推理结果与C++版本一致。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值