样例介绍
功能描述
该样例主要是基于Caffe ResNet-50网络(单输入、单batch)实现图片分类的功能。
将Caffe ResNet-50网络的模型文件转换为适配昇腾AI处理器的离线模型(*.om文件),在样例中,加载该om文件,对2张*.jpg图片进行解码、缩放、推理,分别得到推理结果后,再对推理结果进行处理,输出最大置信度的类别标识。
转换模型时,需配置色域转换参数,用于将YUV420SP格式的图片转换为RGB格式的图片,才能符合模型的输入要求。
主要接口
主要接口如下表所示。
初始化 |
|
---|---|
Device管理 |
|
Stream管理 |
|
内存管理 |
执行媒体数据处理时,若需要申请Device上的内存存放输入或输出数据,需调用acl.media.dvpp_malloc申请内存、调用acl.media.dvpp_free接口释放内存。 |
数据传输 |
如果在Host上运行应用,则需调用acl.rt.memcpy接口:
如果在板端环境上运行应用,则无需进行数据传输。 |
媒体数据处理V1 |
|
模型推理 |
|
数据后处理(单算子调用) |
处理模型推理的结果,通过调用算子Cast将推理结果的数据类型从float32转成float16,再调用ArgMaxD算子从推理结果中查找最大置信度的类别标识。 通过acl.op.set_model_dir接口加载单算子模型文件,通过acl.op.cast接口执行Cast算子、通过acl.op.execute_v2接口执行ArgMaxD算子。 |
目录结构
目录结构如下所示。
vpc_resnet50_imagenet_classification ├──scripts │ ├── host_version.conf //版本号配置文件。 │ └── testcase_300.sh //运行脚本。 ├──src │ ├── acl_dvpp.py //图片缩放实现文件。 │ ├── acl_model.py //模型推理实现文件。 │ ├── acl_op.py //单算子精度转换实现文件。 │ ├── acl_sample.py //运行文件。 │ ├── acl_util.py //工具类函数实现文件。 │ └── constant.py //常量定义。 ├── data //测试数据,需要用户部署。 │ ├── fusion_result.json //atc转化后生成,记录融合算子信息。 │ ├── dog1_1024_683.jpg │ └── dog2_1024_683.jpg ├── caffe_model //需要用户部署。 │ ├── aipp.cfg //模型的配置数据。 │ ├── resnet50.caffemodel //resnet50模型。 │ └── resnet50.prototxt // resnet50模型的网络文件。 ├── op_models //atc转换后生成后的目录。 │ ├── 0_Cast_0_2_1000_1_2_1000.om //精度转换自定义算子。 │ ├── 1_ArgMaxD_1_2_1000_3_2_1.om //精度转换自定义算子。 │ └── op_list.json //精度转换算子配置文件。 └── model//推理模型转换后生成的目录。 │ └── resnet50_aipp.om └── README_CN.md