拓冰建站拓冰建站
首页 / 资讯中心 / 正文

CANN/GE ResNet-50图像分类示例

样例使用指导【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge功能描述该样例主要是基于Onnx ResNet-50网络单输入、单Batch实现图片分类的功能。在该样例中先使用样例提供的脚本transfer_pic.py将2张*.jpg图片都转换为*.bin格式同时将图片从1024*683的分辨率缩放为224*224。加载离线模型om文件对2张图片进行同步推理分别得到推理结果再对推理结果进行处理输出top5置信度的类别标识。在加载离线模型前提前将Onnx ResNet-50网络的模型文件转换为适配昇腾AI处理器的离线模型。目录结构├── data │ ├── dog1_1024_683.jpg // 测试数据,需要按指导获取测试图片,放到data目录下 │ ├── dog2_1024_683.jpg // 测试数据,需要按指导获取测试图片,放到data目录下 ├── model │ ├── resnet50.om // Onnx ResNet-50网络的模型文件,需要按指导获取atc转换后的om文件,放到model目录下 ├── scripts │ ├── build.sh // sample编译脚本 │ ├── run.sh // sample运行脚本 │ ├── transfer_pic.py // 将*.jpg转换为*.bin同时将图片从1024*683的分辨率缩放为224*224 ├── src │ ├── acl.json // 系统初始化的配置文件 │ ├── CMakeLists.txt // 编译配置脚本 │ ├── sample_resnet50_imagenet_classification.cpp // 主函数图片分类功能的实现文件 ├── CMakeLists.txt // 编译脚本调用src目录下的CMakeLists文件环境准备通过安装指导 环境准备正确安装toolkit和ops包设置环境变量 (假设包安装在/usr/local/Ascend/)source /usr/local/Ascend/cann/set_env.sh实现步骤以运行用户登录开发环境。下载代码并上传至环境后请先进入根目录下examples/acl/1_sample_resnet50_imagenet_classification样例目录。请注意下文中的样例目录均指examples/acl/1_sample_resnet50_imagenet_classification目录。准备ResNet-50模型。获取ResNet-50原始模型。您可以从以下链接中获取ResNet-50网络的模型文件并以运行用户将获取的文件上传至开发环境的样例目录/model目录下。如果目录不存在需要自行创建。ResNet-50网络的模型文件*.onnx单击Link下载该文件。将ResNet-50原始模型转换为适配昇腾AI处理器的离线模型*.om文件。切换到样例目录执行如下命令(以Atlas A2系列产品为例)cd 样例目录/model atc --modelresnet50_Opset16.onnx --framework5 --outputresnet50 --soc_versionAscend910B1 --input_formatNCHW --output_typeFP32--model原始模型文件路径。--framework原始框架类型。0表示Caffe1表示MindSpore3表示TensorFlow5表示ONNX。--soc_version昇腾AI处理器的版本。版本获取可参考Link。--output_type指定输出的数据类型为float32。--output生成的resnet50.om文件存放在样例目录/model目录下。建议使用命令中的默认设置否则在编译代码前您还需要修改sample_resnet50_imagenet_classification.cpp 中的omModelPath参数值。const char* omModelPath ../model/resnet50.om;准备测试图片。可以按照以下命令获取样例的输入图片输入图片需要放置到样例目录/data目录下。如果目录不存在需自行创建。如果wget失败您也可以直接在浏览器中输入以下链接下载后上传至样例目录/data目录。cd 样例目录/data wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog1_1024_683.jpg wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog2_1024_683.jpg切换到样例目录/data目录下执行transfer_pic.py脚本将*.jpg转换为*.bin同时将图片从1024*683的分辨率缩放为224*224。在样例目录/data目录下生成2个*.bin文件。python3 ../scripts/transfer_pic.py如果执行脚本报错ModuleNotFoundError: No module named PIL则表示缺少Pillow库请使用pip3 install Pillow --user命令安装Pillow库。构建验证以运行用户登录开发环境。请先进入根目录下examples/acl/1_sample_resnet50_imagenet_classification样例目录。请注意下文中的样例目录均指examples/acl/1_sample_resnet50_imagenet_classification目录。切换到样例目录/scripts,编译程序。bash build.sh运行程序bash run.sh执行结果执行成功后在屏幕上的关键提示信息示例如下提示信息中的index表示类别标识、value表示该分类的最大置信度这些值可能会根据版本、环境有所不同请以实际情况为准[INFO] acl init success [INFO] open device 0 success [INFO] create context success [INFO] create stream success [INFO] load model ../model/resnet50.om success [INFO] start to process file:../data/dog1_1024_683.bin [INFO] model execute success [INFO] top 1: index[161] value[xxxxxx] [INFO] top 2: index[xxx] value[xxxxxx] [INFO] top 3: index[xxx] value[xxxxxx] [INFO] top 4: index[xxx] value[xxxxxx] [INFO] top 5: index[xxx] value[xxxxxx] [INFO] output data success [INFO] start to process file:../data/dog2_1024_683.bin [INFO] model execute success [INFO] top 1: index[267] value[xxxxxx] [INFO] top 2: index[xxx] value[xxxxxx] [INFO] top 3: index[xxx] value[xxxxxx] [INFO] top 4: index[xxx] value[xxxxxx] [INFO] top 5: index[xxx] value[xxxxxx] [INFO] output data success [INFO] SAMPLE PASSED说明类别标签和类别的对应关系与训练模型时使用的数据集有关本样例使用的模型是基于imagenet数据集进行训练的您可以在互联网上查阅imagenet数据集的标签及类别的对应关系。 当前屏显信息中的类别标识与类别的对应关系如下 161: [basset, basset hound]、 267: [standard poodle]。【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门