样例介绍
样例介绍
获取样例
单击YOLOV3_dynamic_batch_detection_picture获取样例
功能描述
该样例主要是基于Caffe YOLOv3网络、在动态Batch或动态多分辨率场景下实现目标检测的功能。
将Caffe YOLOv3网络的模型文件转换为适配昇腾AI处理器的离线模型(*.om文件),转换命令中需要设置不同档位的batch size(样例中batch档位分为1,2,4,8)或不同档位的分辨率(样例中分辨率档位分为416, 416;832,832;1248,1248),在应用中加载该om文件,通过传参设置选择不同档位的batch size或者分辨率进行推理,并将推理结果保存到文件中。
原理介绍
在该Sample中,涉及的关键功能点,如下表所示。
| 初始化 | - 调用aclInit接口初始化AscendCL配置。 - 调用aclFinalize接口实现AscendCL去初始化。 |
|---|---|
| Device管理 | - 调用aclrtSetDevice接口指定用于运算的Device。 - 调用aclrtGetRunMode接口获取软件栈的运行模式,根据运行模式的不同,内部处理流程不同。 - 调用aclrtResetDevice接口复位当前运算的Device,回收Device上的资源。 |
| Context管理 | - 调用aclrtCreateContext接口创建Context。 - 调用aclrtDestroyContext接口销毁Context。 |
| Stream管理 | - 调用aclrtCreateStream接口创建Stream。 - 调用aclrtDestroyStream接口销毁Stream。 |
| 内存管理 | - 调用aclrtMalloc接口申请Device上的内存。 - 调用aclrtFree接口释放Device上的内存。 |
| 数据传输 | 如果在板端环境上运行应用,则无需进行数据传输。 |
| 模型推理 | - 调用aclmdlLoadFromFileWithMem接口从*.om文件加载模型。 - 调用aclmdlSetDynamicBatchSize设置batch size或者调用aclmdlSetDynamicHWSize设置分辨率。 - 调用aclmdlExecute接口执行模型推理,同步接口。 - 调用aclmdlUnload接口卸载模型。 |
| 数据后处理 | 样例中提供了自定义接口DumpModelOutputResult,用于将模型推理的结果写入文件(运行可执行文件后,推理结果文件在运行环境上的应用可执行文件的同级目录下): text<br>processModel.DumpModelOutputResult();<br> |
目录结构
样例代码结构如下所示。
├── data
│ ├── tools_generate_data.py //测试数据生成脚本
├── inc
│ ├── model_process.h //声明模型处理相关函数的头文件
│ ├── sample_process.h //声明资源初始化/销毁相关函数的头文件
│ ├── utils.h //声明公共函数(例如:文件读取函数)的头文件
├── src
│ ├── acl.json //系统初始化的配置文件
│ ├── CMakeLists.txt //编译脚本
│ ├── main.cpp //主函数,图片分类功能的实现文件
│ ├── model_process.cpp //模型处理相关函数的实现文件
│ ├── sample_process.cpp //资源初始化/销毁相关函数的实现文件
│ ├── utils.cpp //公共函数(例如:文件读取函数)的实现文件
├── .project //工程信息文件,包含工程类型、工程描述、运行目标设备类型等
├── CMakeLists.txt //编译脚本,调用src目录下的CMakeLists文件
父主题: 基于Caffe YOLOv3网络实现目标检测(动态Batch/动态分辨率)
编译及运行应用
单击YOLOV3_dynamic_batch_detection_picture获取样例,查看该样例下的README。
父主题: 基于Caffe YOLOv3网络实现目标检测(动态Batch/动态分辨率)
样例介绍
获取样例
单击vpc_sample获取样例
功能描述
该样例实现图片的抠图、缩放、边界填充、色域转换、金字塔、LUT重映射、直方图统计等功能。
原理介绍
在该样例中,涉及的关键功能点,如下表所示。
| 初始化 | - 调用aclInit接口初始化AscendCL配置。 - 调用aclFinalize接口实现AscendCL去初始化。 |
|---|---|
| Device管理 | - 调用aclrtSetDevice接口指定用于运算的Device。 - 调用aclrtGetRunMode接口获取软件栈的运行模式,根据运行模式的不同,内部处理流程不同。 - 调用aclrtResetDevice接口复位当前运算的Device,回收Device上的资源。 |
| Context管理 | - 调用aclrtCreateContext接口创建Context。 - 调用aclrtDestroyContext接口销毁Context。 |
| 内存管理 | - 调用aclrtMallocHost接口/aclrtFreeHost接口申请/释放Host上内存。 - 执行媒体数据处理时,若需要申请Device上的内存存放输入或输出数据,需调用hi_mpi_dvpp_malloc接口/hi_mpi_dvpp_free接口申请/释放内存。 |
| 数据传输 | 如果在板端环境上运行应用,则无需进行数据传输。 |
| 媒体数据处理V2 | 参见VPC图像处理功能中的接口。 |
目录结构
样例代码结构如下所示。
├── common //示例代码文件所在的目录
│ ├── sample_comm.cpp //公共函数的实现文件
│ ├── sample_comm.h //声明公共函数的头文件
│ ├── sample_comm_vpc_*.cpp //抠图、缩放等函数的实现文件
├── smoke_vpc //示例代码文件所在的目录
│ ├── sample_vpc.cpp //main函数的实现文件
├── CMakeLists.txt //编译脚本
编译及运行应用
单击vpc_sample获取样例,查看该样例下的README。
样例介绍
获取样例
单击jpegd_sample获取样例
功能描述
该样例实现.jpg、.jpeg、.JPG、.JPEG图片的解码。
原理介绍
在该样例中,涉及的关键功能点,如下表所示。
| 初始化 | - 调用aclInit接口初始化AscendCL配置。 - 调用aclFinalize接口实现AscendCL去初始化。 |
|---|---|
| Device管理 | - 调用aclrtSetDevice接口指定用于运算的Device。 - 调用aclrtGetRunMode接口获取软件栈的运行模式,根据运行模式的不同,内部处理流程不同。 - 调用aclrtResetDevice接口复位当前运算的Device,回收Device上的资源。 |
| Context管理 | - 调用aclrtCreateContext接口创建Context。 - 调用aclrtDestroyContext接口销毁Context。 |
| 内存管理 | - 调用aclrtMallocHost接口/aclrtFreeHost接口申请/释放Host上内存。 - 执行媒体数据处理时,若需要申请Device上的内存存放输入或输出数据,需调用hi_mpi_dvpp_malloc接口/hi_mpi_dvpp_free接口申请/释放内存。 |
| 数据传输 | 如果在板端环境上运行应用,则无需进行数据传输。 |
| 媒体数据处理V2 | 参见VDEC视频解码功能/JPEGD图片解码功能中的接口。 |
目录结构
样例代码结构如下所示。
├── common //示例代码文件所在的目录
│ ├── sample_comm.h //声明解码函数的头文件
│ ├── sample_comm_jpegd.cpp //解码函数的实现文件
├── smoke_vpc //示例代码文件所在的目录
│ ├── sample_jpegd.cpp //main函数的实现文件
├── CMakeLists.txt //编译脚本
父主题: 媒体数据处理V2(JPEGD图片解码)
在线提单