【CANN训练营第三季】基于Caffe ResNet-101网络实现图片分类在昇腾310服务器的推理过程

切换用户

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

编译成功应用测试截图


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容