昇腾CANN社区版功能验证-基于Caffe ResNet-50网络实现图片分类(同步推理)
基于Caffe ResNet-50网络实现图片分类(同步推理)
功能描述
该样例主要是基于Caffe ResNet-50网络(单输入、单Batch)实现图片分类的功能。
在该样例中:
-
先使用样例提供的脚本transferPic.py,将2张*.jpg图片都转换为*.bin格式,同时将图片从1024*683的分辨率缩放为224*224。
-
加载离线模型om文件,对2张图片进行同步推理,分别得到推理结果,再对推理结果进行处理,输出top5置信度的类别标识。
在加载离线模型前,提前将Caffe ResNet-50网络的模型文件转换为适配昇腾AI处理器的离线模型。
官方样例地址:https://gitee.com/ascend/samples/tree/master/cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification#%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F
首先以root用户登陆服务器,然后git clone https://gitee.com/ascend/samples.git 下载样例代码
进入resnet50_imagenet_classification 目录
cd samples/cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification/
准备图片
https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/aclsample/dog1_1024_683.jpg
https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/aclsample/dog2_1024_683.jpg
使用wget将这两个jpg文件拉取到 data目录:
执行transferPic.py脚本,将*.jpg转换为*.bin,同时将图片从1024*683的分辨率缩放为224*224。在“样例目录/data“目录下生成2个*.bin文件。
python3.7.5 ../script/transferPic.py
原始模型权重下载地址 :
原始模型网络下载地址 :
atc转换的cfg文件:
wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/resnet50/insert_op.cfg
om模型下载地址:
mkdir caffe_model
建个caffe_model目录存放 caffe的模型文件和权重文件等
将ResNet-50网络转换为适配昇腾AI处理器的离线模型适配海思SoC的离线模型(*.om文件)。
source ~/.bashrc
source /usr/local/Ascend/bin/setenv.bash
切换到样例目录,执行如下命令:
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
或者换到样例目录,建model文件 下载om模型
换到样例目录,创建目录用于存放编译文件,例如,本文中,创建的目录为“build/intermediates/host“。
mkdir -p build/intermediates/host
切换到“build/intermediates/host“目录,执行cmake生成编译文件。
cd build/intermediates/host
cmake ../../../src -DCMAKE_CXX_COMPILER=g++ -DCMAKE_SKIP_RPATH=TRUE
执行make命令,生成的可执行文件main在“样例目录/out“目录下。
make
当开发环境为X86架构,运行环境为AArch64架构时,执行以下命令进行交叉编译。
cd build/intermediates/host
cmake ../../../src -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_SKIP_RPATH=TRUE
折腾了几天没成功, 基本步骤没问题,猜测是环境变量或者依赖那里没做好,后续再填坑了
- 点赞
- 收藏
- 关注作者
评论(0)