样例介绍
获取样例
单击Gitee,进入Ascend samples开源仓,详细参见README中的“版本说明”下载配套版本的sample包,从“python/level2_simple_inference/1_classification/resnet50_imagenet_classification”目录下获取resnet50_imagenet_classification样例
功能描述
该样例主要是基于Caffe ResNet-50网络(单输入、单batch)实现图片分类的功能。
将Caffe ResNet-50网络的模型文件转换为适配昇腾AI处理器的离线模型(*.om文件),在样例中,加载该om文件,对2张jpg(*.jpg)图片进行同步推理,分别得到推理结果后,再对推理结果进行处理,输出top5置信度的类别标识。
主要接口
| 功能 | 对应ACL模块 | ACL 接口函数 | 功能说明 | 
|---|---|---|---|
| 资源初始化 | 初始化 | acl.init | 初始化ACL配置。 | 
| Device管理 | acl.rt.set_device | 指定用于运算的Device。 | |
| Context管理 | acl.rt.create_context | 创建Context。 | |
| 模型初始化 | 模型加载与执行 | acl.mdl.load_from_file | 从*.om文件加载模型到device侧。 | 
| 数据类型及操作接口 | acl.mdl.create_desc | 创建模型描述数据类型。 | |
| 数据类型及操作接口 | acl.mdl.get_desc | 获取模型描述数据类型。 | |
| 模型推理 | 模型加载与执行 | acl.mdl.execute | 执行模型同步推理。 | 
| 数据交互 | 内存管理 | acl.rt.memcpy | 数据传输,Host->Device或Device->Host。 | 
| 内存管理 | acl.rt.malloc | 申请Device上的内存。 | |
| 内存管理 | acl.rt.malloc_host | 申请Host上的内存。 | |
| 公共模块 | -- | acl.util.ptr_to_numpy | void*数据转换为numpy类型数据。 | 
| -- | acl.util.numpy_to_ptr | numpy类型数据转换为void*数据。 | |
| 数据后处理 | 数据类型及操作接口 | acl.mdl.get_dataset_buffer | 获取数据集中信息。 | 
| 数据类型及操作接口 | acl.mdl.get_dataset_num_buffers | 获取数据集中信息。 | |
| 资源释放 | 内存管理 | acl.rt.free | 释放Device上的内存。 | 
| 内存管理 | acl.rt.free_host | 释放Host上的内存。 | |
| 模型加载与执行 | acl.mdl.unload | 卸载模型。 | |
| Context管理 | acl.rt.destroy_context | 销毁Context。 | |
| Device管理 | acl.rt.reset_device | 复位当前运算的Device,回收Device上的资源。 | |
| 去初始化 | acl.finalize | 实现ACL去初始化。 | 
目录结构
目录结构如下所示。
resnet50_imagenet_classification ├──src │ ├── acl_net.py //运行文件。 │ └── constant.py //常量定义。 ├── data │ ├── dog1_1024_683.jpg //测试图片数据。 │ └── dog2_1024_683.jpg //测试图片数据。 ├── caffe_model │ ├── resnet50.caffemodel //ResNet-50模型。 │ └── resnet50.prototxt // ResNet-50模型的网络文件。 └── model └── resnet50.om //转换后的模型文件。
