1.媒体数据处理
受网络结构和训练方式等因素的影响,绝大多数神经网络模型对输入数据都有格式上的限制。在计算机视觉领域,这个限制大多体现在图像的尺寸、色域、归一化参数等。如果源图或视频的尺寸、格式等与网络模型的要求不一致时,我们需要将源图或视频处理成符合模型要求的图或视频。
数据预处理的方式
AIPP、DVPP可以分开独立使用,也可以组合使用。组合使用场景下,一般先使用DVPP对图片/视频进行解码、抠图.缩放等基本处理,但由于DVPP硬件上的约束,DVPP处理后的图片格式、分辨率有可能不满足模型的要求,因此还需要再经过AIPP进一步做色域转换、抠图、填充等处理。
数据预处理DVPP功能
异腾AI处理器内置图像处理单元DVPP(Digital Video Pre-Processor),提供强大的媒体处理硬加速能力。同时,异构计算架构CANN提供了使用图像处理硬件算力的入口: AscendCL接口,开发者可通过接口来进行图像处理,以便利用异腾AI处理器的算力。
宽stride和高stride
由于硬件对图片宽、高对齐的要求,DVPP数据预处理中存在宽stride和高stride两个概念,分别用于表示对齐后的宽.对齐后的高,DVPP中的不同功能,对不同格式的输入或输出图片的宽、高对齐要求也不同,在使用DVPP中的多个功能串接(例如JPEGD+VPC)时,需特别注意接口文档中的对齐说明。
内存申请与内存释放
内存申请/释放接口
实现媒体数据处理的VPC、JPEGD、JPEGE等功能前,若需要申请内存存放输入或输出数据,需调用专用的内存申请/释放接口,申请/释放的都是Device上的内存。如果多个功能串联使用的场景,需要复用同一段内存,则按最大内存要求来申请内存媒体数据处理V1版本,需调用acldvppMalloc申请内存、调用acldvppFree接口释放内存媒体数据处理V2版本,需调用hi_mpi_dvpp_malloc申请内存、调用hi_mpi_dvpp_free接口释放内存
内存大小
针对不同的DVPP功能、不同的输入/输出图片格式,内存大小的计算公式也不同,使用DVPP功能时,需参见详细的文档说明。
内存复用
调用媒体数据处理专用的内存申请接口申请出来的内存,也可以在其它任务中使用,例如,从性能角度,为了减少拷贝,媒体数据处理的输出作为模型推理的输入,实现内存复用。但由于媒体数据处理访问的地址空间有限,为确保媒体数据处理时内存足够,除媒体数据处理功能外的其它功能(例如,模型加载),建议调用acrtMalloc接口、或aclrtMallocHost接口、或aclrtMallocCached接口等通用的内存管理接口申请内存。
通道数
实现媒体数据处理的各功能前,必须调用接口创建对应功能的通道。通道的创建与销毁会涉及资源的申请与释放,反复创建与销毁通道会影响业务性能,因此建议根据实际场景管理通道,例如,如果有持续VPC图片处理,则创建VPC的通道后,等到所有VPC功能调用完成后,再销毁该VPC通道通道数量多,会影响Device的CPU占用率和内存占用,通道数量建议参考各功能章节下的的性能指标的路数。
2.JPEG图片解码
图片分辨率约束
实现JPEGD图片解码功能时,涉及存放输入、输出数据,需调用专门的内存申请/释放接口申请Device上的输入、输出内存,这部分内存的生命周期由用户自行管理。输入内存的大小就是指实际的输入图片所占用的大小输出内存的大小参见左表中的计算公式。
实现JPEGD图片解码功能时,仅支持Huffman编码,压缩前的原图像色彩空间为YUV,像素的各分量比例为4:4:4或4:2:2或4:2:0或4:0:0或4:4:0不支持算术编码、不支持渐进JPEG格式、不支持JPEG2000格式。