Skip to main content

编译及运行应用

样例介绍

获取样例

单击batchcrop获取样例

功能描述

该样例从一张YUV420SP NV12格式的输入图片中按指定区域分别抠出八张224*224子图(YUV420SP NV12)。

原理介绍

在该样例中,涉及的关键功能点,如下表所示。

初始化- 调用aclInit接口初始化AscendCL配置。
- 调用aclFinalize接口实现AscendCL去初始化。
Device管理- 调用aclrtSetDevice接口指定用于运算的Device。
- 调用aclrtGetRunMode接口获取软件栈的运行模式,根据运行模式的不同,内部处理流程不同。
- 调用aclrtResetDevice接口复位当前运算的Device,回收Device上的资源。
Context管理- 调用aclrtCreateContext接口创建Context。
- 调用aclrtDestroyContext接口销毁Context。
Stream管理- 调用aclrtCreateStream接口创建Stream。
- 调用aclrtDestroyStream接口销毁Stream。
- 调用aclrtSynchronizeStream接口阻塞程序运行,直到指定Stream中的所有任务都完成。
内存管理- 调用aclrtMallocHost接口申请Host上内存。
- 调用aclrtFreeHost释放Host上的内存。
- 调用aclrtMalloc接口申请Device上的内存。
- 调用aclrtFree接口释放Device上的内存。
执行媒体数据处理时,若需要申请Device上的内存存放输入或输出数据,需调用acldvppMalloc申请内存、调用acldvppFree接口释放内存。
数据传输如果在板端环境上运行应用,则无需进行数据传输。
媒体数据处理- 抠图 调用acldvppVpcBatchCropResizeAsync接口按指定区域从输入图片中抠图,再将抠的图片存放到输出内存中,作为输出图片。

目录结构

样例代码结构如下所示。

├── data
│ ├── dvpp_vpc_1920x1080_nv12.yuv //测试数据,需要按指导获取测试图片,放到data目录下

├── inc
│ ├── dvpp_process.h //声明媒体数据处理相关函数的头文件
│ ├── sample_process.h //声明模型处理相关函数的头文件
│ ├── utils.h //声明公共函数(例如:文件读取函数)的头文件

├── src
│ ├── acl.json //系统初始化的配置文件
│ ├── CMakeLists.txt //编译脚本
│ ├── dvpp_process.cpp //媒体数据处理相关函数的实现文件
│ ├── main.cpp //主函数,一图多框抠图功能的实现文件
│ ├── sample_process.cpp //资源初始化/销毁相关函数的实现文件
│ ├── utils.cpp //公共函数(例如:文件读取函数)的实现文件

├── CMakeLists.txt //编译脚本,调用src目录下的CMakeLists文件

父主题: 媒体数据处理V1(抠图,一图多框)

编译及运行应用

单击batchcrop获取样例,查看该样例下的README。

父主题: 媒体数据处理V1(抠图,一图多框)

样例介绍

获取样例

单击venc_image获取样例

功能描述

该样例将一张YUV420SP NV12格式的图片连续编码n次,生成一个H265格式的视频码流(n可配,通过运行应用时设置入参来配置,默认为16次)。

原理介绍

在该样例中,涉及的关键功能点,如下表所示。

初始化- 调用aclInit接口初始化AscendCL配置。
- 调用aclFinalize接口实现AscendCL去初始化。
Device管理- 调用aclrtSetDevice接口指定用于运算的Device。
- 调用aclrtGetRunMode接口获取软件栈的运行模式,根据运行模式的不同,内部处理流程不同。
- 调用aclrtResetDevice接口复位当前运算的Device,回收Device上的资源。
Context管理- 调用aclrtCreateContext接口创建Context。
- 调用aclrtDestroyContext接口销毁Context。
内存管理- 调用acldvppMalloc接口申请device上内存。
- 调用acldvppFree释放device上的内存。
数据传输如果在板端环境上运行应用,则无需进行数据传输。
媒体数据处理视频编码,调用aclvencSendFrame接口将将待编码的图片传到编码器进行编码。

目录结构

样例代码结构如下所示。

├── data
│ ├── dvpp_venc_128x128_nv12.yuv //测试数据,需要按指导获取测试图片,放到data目录下

├── inc
│ ├── venc_process.h //声明媒体数据处理相关函数的头文件
│ ├── sample_process.h //声明模型处理相关函数的头文件
│ ├── utils.h //声明公共函数(例如:文件读取函数)的头文件

├── src
│ ├── acl.json //系统初始化的配置文件
│ ├── CMakeLists.txt //编译脚本
│ ├── main.cpp //主函数,多图多框抠图功能的实现文件
│ ├── sample_process.cpp //资源初始化/销毁相关函数的实现文件
│ ├── utils.cpp //公共函数(例如:文件读取函数)的实现文件
│ ├── venc_process.cpp //媒体数据处理相关函数的实现文件

├── CMakeLists.txt //编译脚本,调用src目录下的CMakeLists文件

父主题: 媒体数据处理V1(视频编码)

编译及运行应用

单击venc_image获取样例,查看该样例下的README。

父主题: 媒体数据处理V1(视频编码)

样例介绍

获取样例

单击smallResolution_cropandpaste获取样例

功能描述

该样例主要实现以下三种场景的抠图贴图:

1、抠图区域小于10*6。

2、贴图区域与抠图区域的缩放比例在[1/32, 16]范围内。

3、满足VPC分辨率要求的输入图片的抠图贴图,分辨率的要求,请参见约束说明

原理介绍

在该样例中,涉及的关键功能点,如下表所示。

初始化- 调用aclInit接口初始化AscendCL配置。
- 调用aclFinalize接口实现AscendCL去初始化。
Device管理- 调用aclrtSetDevice接口指定用于运算的Device。
- 调用aclrtGetRunMode接口获取软件栈的运行模式,根据运行模式的不同,内部处理流程不同。
- 调用aclrtResetDevice接口复位当前运算的Device,回收Device上的资源。
Context管理- 调用aclrtCreateContext接口创建Context。
- 调用aclrtDestroyContext接口销毁Context。
Stream管理- 调用aclrtCreateStream接口创建Stream。
- 调用aclrtDestroyStream接口销毁Stream。
- 调用aclrtSynchronizeStream接口阻塞程序运行,直到指定Stream中的所有任务都完成。
内存管理- 调用aclrtMallocHost接口申请Host上内存。
- 调用aclrtFreeHost释放Host上的内存。
- 调用aclrtMalloc接口申请Device上的内存。
- 调用aclrtFree接口释放Device上的内存。
执行媒体数据处理时,若需要申请Device上的内存存放输入或输出数据,需调用acldvppMalloc申请内存、调用acldvppFree接口释放内存。
数据传输如果在板端环境上运行应用,则无需进行数据传输。
媒体数据处理抠图贴图: 调用acldvppVpcCropAndPasteAsync接口按指定区域从输入图片中抠图,再将抠的图片贴到目标图片的指定位置,作为输出图片。

目录结构

样例代码结构如下所示。

├── data
│ ├── dvpp_vpc_1920x1080_nv12.yuv //测试数据,需要按指导获取测试图片,放到data目录下

├── inc
│ ├── dvpp_process.h //声明媒体数据处理相关函数的头文件
│ ├── sample_process.h //声明模型处理相关函数的头文件
│ ├── utils.h //声明公共函数(例如:文件读取函数)的头文件

├── src
│ ├── acl.json //系统初始化的配置文件
│ ├── CMakeLists.txt //编译脚本
│ ├── dvpp_process.cpp //媒体数据处理相关函数的实现文件
│ ├── main.cpp //主函数,抠图贴图功能的实现文件
│ ├── sample_process.cpp //资源初始化/销毁相关函数的实现文件
│ ├── utils.cpp //公共函数(例如:文件读取函数)的实现文件

├── CMakeLists.txt //编译脚本,调用src目录下的CMakeLists文件

父主题: 媒体数据处理V1(抠图贴图)

编译及运行应用

单击smallResolution_cropandpaste获取样例,查看该样例下的README。

父主题: 媒体数据处理V1(抠图贴图)

样例介绍

获取样例

单击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/动态分辨率)

在线提单