昇腾CANN社区版功能验证-基于Caffe ResNet-50网络实现图片分类(同步推理)

举报
花溪 发表于 2021/09/22 09:49:09 2021/09/22
【摘要】 基于Caffe ResNet-50网络实现图片分类(同步推理)功能描述该样例主要是基于Caffe ResNet-50网络(单输入、单Batch)实现图片分类的功能。在该样例中:先使用样例提供的脚本transferPic.py,将2张*.jpg图片都转换为*.bin格式,同时将图片从1024*683的分辨率缩放为224*224。加载离线模型om文件,对2张图片进行同步推理,分别得到推理结果,再...

基于Caffe ResNet-50网络实现图片分类(同步推理)

功能描述

该样例主要是基于Caffe ResNet-50网络(单输入、单Batch)实现图片分类的功能。

在该样例中:

  1. 先使用样例提供的脚本transferPic.py,将2张*.jpg图片都转换为*.bin格式,同时将图片从1024*683的分辨率缩放为224*224。

  2. 加载离线模型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

原始模型权重下载地址 :

https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/resnet50/resnet50.caffemodel

原始模型网络下载地址 :

https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/resnet50/resnet50.prototxt

atc转换的cfg文件:

wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/resnet50/insert_op.cfg

om模型下载地址:

https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/resnet50/resnet50.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

折腾了几天没成功,  基本步骤没问题,猜测是环境变量或者依赖那里没做好,后续再填坑了

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。