【CANN训练营第三季】基于Caffe ResNet-50网络实现图片分类

【CANN训练营第三季】基于Caffe ResNet-50网络实现图片分类

一、云服务器的使用

为了更好的让我们能够了解并学习昇腾的相关知识,华为CANN训练营第三季给予了一定的云服务器资源,申请镜像:https://devcloud.huaweicloud.com/expertmobile/qtn?id=37c0f1996ab744d0aecfc3209c843d95

申请代金券:

昇腾社区-官网丨昇腾万里 让智能无所不及

关于云服务器的使用简单总结如下:

找到共享镜像如下步骤:

【CANN训练营第三季】基于Caffe ResNet-50网络实现图片分类_第1张图片

【CANN训练营第三季】基于Caffe ResNet-50网络实现图片分类_第2张图片
申请ESC弹性云服务器->获取弹性公网IP->运用SSH远程访问云服务器->正常按照ubuntu系统的终端命令来操作使用服务器

 【CANN训练营第三季】基于Caffe ResNet-50网络实现图片分类_第3张图片


资源链接:
远程终端软件推荐XshellXshell7_Xftp7,Xmanager7下载-xshellcn

进入终端后为root用户,需要进入HwHiAiUser用户

【CANN训练营第三季】基于Caffe ResNet-50网络实现图片分类_第4张图片
指令:

cd /home/

su - HwHiAiUser

可以使用ls或者ll指令随意浏览系统中已有的文件情况。

$ ls -al

【CANN训练营第三季】基于Caffe ResNet-50网络实现图片分类_第5张图片

 

二、基于Caffe ResNet-50网络实现图片分类

准备工作完成,开始正式实验!可以按照仓库里的readme文件所述步骤一步步操作,此处也仅仅简单给出实验的步骤和实验图。
仓库资源链接:
samples: CANN Samples - Gitee.com

1、下载样例代码

克隆sample仓里的代码

git clone https://gitee.com/ascend/samples.git

【CANN训练营第三季】基于Caffe ResNet-50网络实现图片分类_第6张图片
进入到resnet50_imagenet_classification样例的文件夹中

 cd samples/cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification

2、获取ResNet-50预训练模型

先创建一个用来存储该模型的文件夹caffe_model,进入文件夹

mkdir caffe_model

cd caffe_model

从网页直接通过命令下载预训练模型:权重文件(resnet50.caffemodel)和模型文件(resnet50.prototxt)

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

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

【CANN训练营第三季】基于Caffe ResNet-50网络实现图片分类_第7张图片

 

3、模型转换

上述下载的预训练模型需要首先运用ATC模型转换工具将该模型转换成昇腾AI处理器支持的离线模型(.om)
流程:
首先先切换到样例目录下(接着上面的操作就是上一级目录)

cd ../

然后运行模型转换工具 atc (atc 命令找不到解决办法:Ubuntu切换默认sh为bash或者dash - 灰信网(软件开发博客聚合) (freesion.com)

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文件夹可以看到resnet50.om已经转换完成了

  ls -al model/

 

4、下载测试图片

进入data文件夹,并下载两张ImageNet数据集中存在类别的图片

cd  ./data/

wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/aclsample/dog1_1024_683.jpg

wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/aclsample/dog2_1024_683.jpg

【CANN训练营第三季】基于Caffe ResNet-50网络实现图片分类_第8张图片 

 

5、图片格式转换

下载的图片是JPEG格式的,需要转换成适合模型输入要求格式的二进制文件(.bin)
在data目录下,执行transferPic.py脚本,将*.jpg转换为*.bin,同时将图片从1024 * 683的分辨率缩放为224 * 224。

如果执行脚本报错“ModuleNotFoundError: No module named 'PIL'”,则表示缺少Pillow库,请使用pip3 install Pillow --user命令安装Pillow库。

【CANN训练营第三季】基于Caffe ResNet-50网络实现图片分类_第9张图片 

python3 ../script/transferPic.py

 【CANN训练营第三季】基于Caffe ResNet-50网络实现图片分类_第10张图片

 

6、编译运行

进入“cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification”样例目录

cd ../

设置临时的环境变量,配置程序编译依赖的头文件与库文件路径

export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest

export NPU_HOST_LIB=$DDK_PATH/acllib/lib64/stub


建立build文件夹,准备编译代码文件

mkdir -p build/intermediates/host


进入build文件夹,编译.cpp文件

cd build/intermediates/host

cmake ../../../src -DCMAKE_CXX_COMPILER=g++ -DCMAKE_SKIP_RPATH=TRUE

make



可以在样例目录(cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification)下的out文件夹中找到编译好的可执行main文件,接下来我们直接运行main文件

cd ../../../out/

./main

你可能感兴趣的:(caffe,分类,人工智能)