【CANN训练营第三季】基于Caffe ResNet-50网络实现图片分类
一、云服务器的使用
为了更好的让我们能够了解并学习昇腾的相关知识,华为CANN训练营第三季给予了一定的云服务器资源,申请镜像:https://devcloud.huaweicloud.com/expertmobile/qtn?id=37c0f1996ab744d0aecfc3209c843d95
关于云服务器的使用简单总结如下:
找到共享镜像如下步骤:
申请ESC弹性云服务器->获取弹性公网IP->运用SSH远程访问云服务器->正常按照ubuntu系统的终端命令来操作使用服务器
资源链接:
远程终端软件推荐Xshell:Xshell7_Xftp7,Xmanager7下载-xshellcn
进入终端后为root用户,需要进入HwHiAiUser用户
指令:
cd /home/
su - HwHiAiUser
可以使用ls或者ll指令随意浏览系统中已有的文件情况。
$ ls -al
二、基于Caffe ResNet-50网络实现图片分类
准备工作完成,开始正式实验!可以按照仓库里的readme文件所述步骤一步步操作,此处也仅仅简单给出实验的步骤和实验图。
仓库资源链接:
samples: CANN Samples - Gitee.com
1、下载样例代码
克隆sample仓里的代码
git clone https://gitee.com/ascend/samples.git
进入到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
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
5、图片格式转换
下载的图片是JPEG格式的,需要转换成适合模型输入要求格式的二进制文件(.bin)
在data目录下,执行transferPic.py脚本,将*.jpg转换为*.bin,同时将图片从1024 * 683的分辨率缩放为224 * 224。
如果执行脚本报错“ModuleNotFoundError: No module named 'PIL'”,则表示缺少Pillow库,请使用pip3 install Pillow --user命令安装Pillow库。
python3 ../script/transferPic.py
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
标签:resnet50,..,CANN,ResNet,50,--,文件夹,model,com From: https://blog.51cto.com/u_15917813/5954240