1.数据预处理概述
AIPP
DVPP(Digital Vision Preprocessing)
DVPP:数字视觉预处理当前对外提供了5个功能模块,分别是: 视频编码模块 (VENC),视频解码模块
(VDEC),JPEG图片编码 (PEGE) ,JPEG图片解码 (JPEGD)
视觉预处理模块 (VPC)
其中,视频解码模块提供对H.264/H.265格式视频的解码功能,对输入的视频码流进行解码并输出图片可用于视频结构化等场景;与之相对应的,视频编码模块可将原始YUV数据帧编码成H.264/H.265格式的视频流,用于直接展示等场景。同样与视频编解码相对应的还有JPEG图片的编解码,可将JPEG图片与YUV格式的数据进行相互转换,用于模型推理或后处理等场景
除了以上几个基本的编解码模块外,数字视觉预处理还提供了一些其他的功能,如格式转换 (YUV/RGB到YUV420),图片缩放、裁剪等功能,这些功能则是由VPC模块来实现的。
2.数据预处理基本原理
数据传输到Device后,经过预处理(解码、缩放)后,输出源图编码格式或者YUV420SP格式的图片,作为模型推理的输入
2.1解码:
2.2 缩放
缩放对图片的宽高有对齐要求(宽16对齐、高2对齐)
>缩放后输出图片内存根据YUV420SP格式计算,计算公式:对齐后的宽对齐后的高*3/2。
2.3 资源释放
数据预处理结束后,除数据预处理的输出内存(要作为模型推理的输入,需等模型推理结束后才能释放)其它相关资源需及时释放,例如数据预处理的输入内存、图片描述信息等。
与数据预处理相关的内存必须通过acldvppMalloc接口申请,通过acldvppFree接口释放3
2.4 关于异步接口
对于本章介绍的异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功,对于有依赖的接口,为确保能按序执行任务,建议用户在多个接口中指定同一个stream,因为同一个stream中的任务按接口调用顺序执行。
在调用异步口对图片进行解码、抠图、缩放等操作时,如果任务之间有依赖,一定要调用aclrtSynchronizeStream接口确保创建通道的任务已执行完成,再调用其它接口。
2.5关于内存申请/释放实现媒体数据处理的VPC功能、JPEGD功能、JEPGE等功能前,若需要申请Device上的内存存放输入或输出数据,需调用acldvppMalloc申请内存、调用aldvppFree接口释放内存。
支持的媒体数据处理功能如下:
VPC(vision preprocessing ore) 功能: 支持对图片做图、缩放、叠加拼接、格式转换等操作,详细描述请参见功能及约束说明。
JPEGD (JPEG decoder)功能: 将pgjpeg、JPG、JPEG图片解码成YUV格式图片,详细描述请参见功能及约束说明。
JPEGE(JPEGencoder)功能: 将YUV格式图片编码成jpg图片,详细描述请参见功能及约束说明。
VDEC(video decoder) 功能:实现视频的解码,详细描述请参见功能及约束说明。
除acldvppMalloc接口、acldvppFree接口外,媒体数据处理章节中的其它接口只能在Host上调用,不能在Device上调用
一 JPEG解码
解码流程
二 VDEC视频解码
三 VPC
约束说明