切换用户
su-HwHiAiUser
下载sample仓库
# 进入目录/home/HwHiAiUser
cd~
# 命令行下载master代码
gitclone https://gitee.com/ascend/samples.git
# 切换到历史tag,以v0.6.0举例
gitcheckout v0.6.0
准备模型
# 进入样例目录
cdsamples/cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification
# 创建并进入caffe_model目录
mkdircaffe_model &&cdcaffe_model
# 官网下载ResNet-101网络的模型文件(压缩包ATC Resnet101(FP16) from TensorFlow - Ascend310.zip)
# 解压后将其中的resnet101_tf.pb从本地上传到云服务器上
# 切换到样例目录
cd..
# 将ResNet-101原始模型转换为适配昇腾AI处理器的离线模型(*.om文件)
atc--model=caffe_model/resnet101_tf.pb--framework=3--output=model/resnet101_tf--output_type=FP32--soc_version=Ascend310--input_shape="input:1,224,224,3"--log=info
进入resnet50_imagenet_classification样例的script目录,修改transferPic.py脚本中的如下内容,将float16改为float32:
修改前
img=img.astype("float16")
修改后:
img=img.astype("float32")
切换到“resnet50_imagenet_classification样例目录/data“目录下,执行transferPic.py脚本,将.jpg转换为.bin,同时将图片从1024683的分辨率缩放为224224。在“resnet50_imagenet_classification样例目录/data“目录下生成2个*.bin测试文件。
python3 ../script/transferPic.py
在src/sample_process.cpp文件中定制代码(用新生成的模型替换旧的模型)
ResultSampleProcess::Process()
{
// model init
ModelProcessmodelProcess;
// const char* omModelPath = "../model/resnet50.om";
constchar*omModelPath="../model/resnet101_tf.om";
Resultret=modelProcess.LoadModel(omModelPath);
if(ret!=SUCCESS) {
ERROR_LOG("execute LoadModel failed");
returnFAILED;
}
ret=modelProcess.CreateModelDesc();
if(ret!=SUCCESS) {
ERROR_LOG("execute CreateModelDesc failed");
returnFAILED;
}
stringtestFile[]={
"../data/dog1_1024_683.bin",
"../data/dog2_1024_683.bin"
};
模型转换成功的截图

编译运行代码
# 配置环境变量
exportDDK_PATH=$HOME/Ascend/ascend-toolkit/latest/arm64-linux
exportNPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub
# 创建并进入build/intermediates/host目录,用于存放编译文件
mkdir-pbuild/intermediates/host &&cdbuild/intermediates/host
# 交叉编译
cmake ../../../src-DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++-DCMAKE_SKIP_RPATH=TRUE
# 执行如下命令,生成的可执行文件main在“样例目录/out“目录下
make
# 切换到可执行文件main所在的目录
cd$HOME/cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification/out
# 运行可执行文件
./main
编译成功应用测试截图
