课前准备
在进行开发前需要具备C/C++、Python语言基础知识以及Linux命令行操作能力
![](https://i-blog.csdnimg.cn/blog_migrate/3c42dee63d5a9fc9691356f6bd887e71.png)
图片分类应用
图片分类应用即按图片中内容所属类别来区分图片,主要过程就是将图片以模型支持的参数进行输入,经过模型得出分类结果。这里以已经训练好的开源模型Resnet50为例,该模型要求输入图片的编码格式为RGB、分辨率为224*224,在模型的输出中Top5置信度的类别标签及其对应置信度(置信度表示图片所属某个类别的可能性)
![](https://i-blog.csdnimg.cn/blog_migrate/16237cc17828ada0932a1bfd3f75ca85.png)
云服务环境申请&AI应用体验
登录华为云进入到控制台,获取华为云帐号名以及项目 ID 信息备用
使用代金券购买 ECS 云环境,以便获取到编译、运行应用的环境。
跳转到申请链接填写个人信息及个人华为云ID进行申请
![](https://i-blog.csdnimg.cn/blog_migrate/dd72b38b9c184c2174697a770ada8e0e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bbb1b2c5bb829fb53807878d94c2325d.png)
申请成功后可以在控制台相应页面看到代金券信息
![](https://i-blog.csdnimg.cn/blog_migrate/2b68da6a2236b60de0d667b01e2fa9f6.png)
跳转到页面后需要填写个人信息及北京四-项目ID
![](https://i-blog.csdnimg.cn/blog_migrate/ac2e9dbaeb88c6370ef03e7ef7c48d7c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/69e8425565d8010fa6f12af42bb73c53.png)
与代金券一样申请成功后可以在相应页面看到申请后的镜像(需要接收发放的镜像)
![](https://i-blog.csdnimg.cn/blog_migrate/ccb2eb271139608c2f901793c365fe52.png)
点击申请服务器即可进入到购买弹性服务器的页面
在选择基础配置时选择按需计费和AI加速型,其他保持默认即可
![](https://i-blog.csdnimg.cn/blog_migrate/0d1cca9bffef581adab3a193ef49d71b.png)
网络配置选择默认的即可
![](https://i-blog.csdnimg.cn/blog_migrate/fa76e50f8e47873ca9fafa8c3d768b8c.png)
设置好云服务器名称及用户密码后确认配置即可完成云服务器配置的创建
![](https://i-blog.csdnimg.cn/blog_migrate/4123541d7785e20f2333f365113563f2.png)
完成创建后可以在控制台相应页面看到该服务器,且创建好后默认会在开机运行状态,如果不使用要及时进行关机操作避免一直扣费
![](https://i-blog.csdnimg.cn/blog_migrate/a71f7815e519780c912b194e51ebf1fc.png)
云环境初始化
我这里使用Xshell进行远程连接,也可以直接使用华为云提供的cloudshell进行远程连接
![](https://i-blog.csdnimg.cn/blog_migrate/b1f2f443d9d4d0e36dfbc0798ecb3ae3.png)
成功登录到服务器后需要重新设置HwHiAiUser的用户密码,切换到HwHiAiUser用户,此时命令行没有回显用户标识,仅显示 $
![](https://i-blog.csdnimg.cn/blog_migrate/b6ffea7999340a97ed22e869d6351940.png)
然后需要重新设置shell环境
sudo dpkg-reconfigure dash
执行命令后会跳出一个图形界面,这里选No
![](https://i-blog.csdnimg.cn/blog_migrate/05bb6104c7e4c8e21cac66efe8b87908.png)
成功修改配置
![](https://i-blog.csdnimg.cn/blog_migrate/2cedaa7386aea2a22887720b2636ef32.png)
然后再进行用户切换,可以看到这次命令行能回显HwHiAiUser用户标识,说明设置成功
![](https://i-blog.csdnimg.cn/blog_migrate/74739efc702b020b1dcd9b3a393e0bd8.png)
下载项目到本地
git clone <https://gitee.com/ascend/samples.git
>
![](https://i-blog.csdnimg.cn/blog_migrate/0ee69fca0353849a897fd5d8258387ee.png)
先进入到下载好的sample文件中的样例目录中 cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification
并在该目录下创建一个用于存放Resnet-50模型的文件夹,进入该文件夹下载文件模型和权重文件
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
>
然后回退到样例目录中进行模型的转换
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
命令行回显ATC启动成功
![](https://i-blog.csdnimg.cn/blog_migrate/35179906ac81c41862252fecbdaa55d4.png)
并且在model文件夹中可以看到转换后的resnet50.om文件
![](https://i-blog.csdnimg.cn/blog_migrate/83270236b6cb5b42dbc6f1ef05106f8a.png)
切换data目录准备测试图片
wget <https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog1_1024_683.jpg>
wget <https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog2_1024_683.jpg>
复制
然后执行转换脚步transferPic.py将图片格式进行处理
python3 ../script/transferPic.py
回显模块未找到ModuleNotFoundError: No module named 'PIL'
尝试安装这个模块后发现可能是执行时python版本指定问题
![](https://i-blog.csdnimg.cn/blog_migrate/dc0d12d7e96f4fe78567f1148e86cc1d.png)
更改执行命令为python3.6 ../script/transferPic.py
即可成功转换
![](https://i-blog.csdnimg.cn/blog_migrate/8b3468fdf0c052bea77df392d0575127.png)
然后需要设置环境变量
export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub
复制
回退到样例目录创建用于存放编译文件的目录
mkdir -p build/intermediates/host
切换到’build/intermediates/host‘,执行编译命令
cmake ../../../src -DCMAKE_CXX_COMPILER=g++ -DCMAKE_SKIP_RPATH=TRUE
![](https://i-blog.csdnimg.cn/blog_migrate/ad04ff5e507ae74680fc85c873f07647.png)
执行运行命令
make
![](https://i-blog.csdnimg.cn/blog_migrate/7bd0a196f3393a48d37ae8033374713a.png)
成功执行后可以在样例目录下的out目录中看到main可执行文件,切换至该目录运行该文件
./main
执行成功得到测试图片的Top5置信度
![](https://i-blog.csdnimg.cn/blog_migrate/694ad5ee367f67c563b4f876ab0609c5.png)
该过程参考官方仓库中的样例samples: CANN Samples - Gitee.com
运行日志
日志目录默认为"CANN软件安装目录/ascend/log",应用运行之后,可在该目录下查阅日志。
日志样例
[ERROR] TEFUSION(12940,atc):2021-10-17-05:54:07.599.074 [tensor_engine/te_fusion/pywrapper.cc:33]InitPyLogger Failed to import te.platform.log_util
日志格式
[Level] ModuleName(PID,PName):DateTimeMS [FileName:LineNumber]LogContent
![](https://i-blog.csdnimg.cn/blog_migrate/1238704b0800336c42c51e3ad7621c87.png)