一、任务描述
该样例主要是基于Caffe ResNet-50网络(单输入、单Batch)实现图片分类的功能。
在该样例中:
-
先使用样例提供的脚本transferPic.py,将2张*.jpg图片都转换为*.bin格式,同时将图片从1024*683的分辨率缩放为224*224。
-
加载离线模型om文件,对2张图片进行同步推理,分别得到推理结果,再对推理结果进行处理,输出top5置信度的类别标识。
在加载离线模型前,提前将Caffe ResNet-50网络的模型文件转换为适配昇腾AI处理器的离线模型。
任务资源链接:
二、具体实操
1、申请华为云服务器
2、下载任务资源仓中的样例代码
下载完成
定位到样例目录
3、准备ResNet-50模型。
-
获取ResNet-50原始模型。
您可以从以下链接中获取ResNet-50网络的模型文件(*.prototxt)、预训练模型文件(*.caffemodel),并以运行用户将获取的文件上传至开发环境的“样例目录/caffe_model“目录下。如果目录不存在,需要自行创建。
- ResNet-50网络的模型文件(*.prototxt):https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/resnet50/resnet50.prototxt。
- ResNet-50网络的预训练模型文件(*.caffemodel):https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/resnet50/resnet50.caffemodel。
- 使用wget命令
-
将ResNet-50原始模型转换为适配昇腾AI处理器的离线模型(*.om文件)。
切换到样例目录,执行如下命令(以昇腾310 AI处理器为例):
模型转换成功
4、准备测试图片
-
请从以下链接获取该样例的输入图片,并以运行用户将获取的文件上传至开发环境的“样例目录/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 -
切换到“样例目录/data“目录下,执行transferPic.py脚本,将*.jpg转换为*.bin,同时将图片从1024*683的分辨率缩放为224*224。在“样例目录/data“目录下生成2个*.bin文件。
5、编译运行
1.设置环境变量,配置程序编译依赖的头文件与库文件路径。
2.切换到样例目录,创建目录用于存放编译文件,例如,本文中,创建的目录为“build/intermediates/host“
3.切换到“build/intermediates/host“目录,执行如下命令生成编译文件。
4.执行如下命令,生成的可执行文件main在“样例目录/out“目录下
5.切换到可执行文件main所在的目录,例如“$HOME/cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification/out”,运行可执行文件。
三、扩展内容
1、增添两张图片
同上述步骤在data路径中使用wget命令增添两张照片,并转换为.bin格式
https://scpic.chinaz.net/files/pic/pic9/201712/bpic4731.jpg
http://img.2qqtouxiang.com/pic/TP9791_19.jpg
2、修改代码
1.使用vim命令编辑sample_process.cpp文件
2.增加新增图片路径
3、重新编译运行