1、下载一个实例,运行一个图像分类实例(环境:Ubuntu22.04,硬件:昇腾310B1,加速模块:atlas 200i a2)
samples: CANN Samples - Gitee.com
目录结构如下:
├── data
│ ├── dog1_1024_683.jpg //测试数据,需要按指导获取测试图片,放到data目录下
│ ├── dog2_1024_683.jpg //测试数据,需要按指导获取测试图片,放到data目录下
├── inc
│ ├── model_process.h //声明模型处理相关函数的头文件
│ ├── sample_process.h //声明资源初始化/销毁相关函数的头文件
│ ├── utils.h //声明公共函数(例如:文件读取函数)的头文件
├── script
│ ├── transferPic.py //将*.jpg转换为*.bin,同时将图片从1024*683的分辨率缩放为224*224
├── src
│ ├── acl.json //系统初始化的配置文件
│ ├── CMakeLists.txt //编译脚本
│ ├── main.cpp //主函数,图片分类功能的实现文件
│ ├── model_process.cpp //模型处理相关函数的实现文件
│ ├── sample_process.cpp //资源初始化/销毁相关函数的实现文件
│ ├── utils.cpp //公共函数(例如:文件读取函数)的实现文件
├── .project //工程信息文件,包含工程类型、工程描述、运行目标设备类型等
├── CMakeLists.txt //编译脚本,调用src目录下的CMakeLists文件
2、简化版步骤(注意下面的目录是我的将实例从gitee下载下来后拷贝在notebooks下的):
---------------------------------------------------准备工作--------------------------------------------------------------
1)下载实例
2)在vscode中打开实例
3)下载权重文件(ResNet-50原始模型):
- ResNet-50网络的模型文件(*.prototxt):单击Link下载该文件。
- ResNet-50网络的权重文件(*.caffemodel):单击Link下载该文件。
- 将权重文件放在/home/HwHiAiUser/samples/notebooks/resnet50_imagenet_classification/caffe_model“目录下。如果目录不存在,需要自行创建。
4)将ResNet-50原始模型转换为适配昇腾AI处理器的离线模型(*.om文件),我的处理器是昇腾310B1。可以通过npu-smi info指令进行查询自己的硬件芯片型号
atc --model=caffe_model/resnet50.prototxt --weight=caffe_model/resnet50.caffemodel --framework=0 --output=model/resnet50 --soc_version=Ascend310B1 --input_format=NCHW --input_fp16_nodes=data --output_type=FP32 --out_nodes=prob:0
5)准备测试图片,放在data目录下
6)切换到“样例目录/data“目录下,执行transferPic.py脚本,将*.jpg转换为*.bin,同时将图片从1024*683的分辨率缩放为224*224。在“样例目录/data“目录下生成2个*.bin文件。
python3 ../script/transferPic.py
---------------------------------------------------编译运行--------------------------------------------------------------
7)回到resnet50_imagenet_classification目录下(这里需要修改为自己的目录,具体修改方法,见上方详细链接)
export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest
export NPU_HOST_LIB=/usr/local/Ascend/ascend-toolkit/latest/runtime/lib64/stub
8)新建目录用于存放编译文件
mkdir -p build/intermediates/host
9)切换都按新建的目录下,并编译
cd build/intermediates/host
cmake ../../../src -DCMAKE_CXX_COMPILER=g++ -DCMAKE_SKIP_RPATH=TRUE
10)编译成功后生成可执行文件
make
11)切换到生成的可执行文件目录下运行,out目录
./main
12)以上就是快速体验的步骤,大多失败是出现在目录上和型号上,新手第一次实现建议前期一步一步把准备工作做好,重要目录存档,或者都翻几遍就熟悉了,还有可能出现的是用户权限问题,切换为root用户一般能解决这种问题。