跳到主要内容

采用VPC多功能组合接口,减少系统调度压力,性能更优

VPC处理时合理选择输出格式,降低内存申请,性能更优

背景说明

在Atlas 200/500 A2推理产品上,VPC图像处理功能支持输出YUV400格式(灰度图像),如果模型推理的输入图像是灰度图像,就直接使用VPC功能,无需再使用AIPP色域转换功能。

基本原理

在Atlas 200/500 A2推理产品上,直接使用VPC功能输出YUV400格式(灰度图像),省去使用AIPP色域转换功能,降低AI Core单元的负载,从硬件上提升性能。

使用说明

关于VPC功能的示例代码,请参见VPC图像处理典型功能

父主题: 使用媒体数据处理V1版本接口

采用VPC多功能组合接口,减少系统调度压力,性能更优

背景说明

在对图像进行抠图、缩放、贴图、填充等处理时,AscendCL媒体数据处理部分提供了以下实现功能的接口:

单功能接口与多功能组合接口的对应关系如下。

单功能接口多功能组合接口
- hi_mpi_vpc_crop(抠图)
- hi_mpi_vpc_resize(缩放)
- hi_mpi_vpc_crop_resize(抠图缩放)
- hi_mpi_vpc_crop_resize_paste(抠图缩放贴图)、hi_mpi_vpc_batch_crop_resize_paste(批量抠图缩放贴图)
- hi_mpi_vpc_crop(抠图)
- hi_mpi_vpc_resize(缩放)
- hi_mpi_vpc_copy_make_border(填充)
hi_mpi_vpc_crop_resize_make_border(抠图缩放填充)或hi_mpi_vpc_batch_crop_resize_make_border(批量抠图缩放填充)

基本原理

一个接口内部会有多次Host和Device的任务交互,每次交互有时延,若对于抠图、缩放等多个功能,调用多次接口,Host和Device的任务交互次数就会增加,时延自然也会随之增加。

采用多个功能组合接口,调用一个接口完成多个功能,虽然是多个功能,但对于Device来说都是一次处理(一个多功能组合接口和一个单功能接口的硬件执行时间相同),相对调用多个单功能接口,能够减少Host和Device的调度次数,减少Device的处理次数,对调度和性能有较多的提升,在性能优化时可以考虑。

使用示例

此处以批量抠图、缩放、填充为例说明如何调用多功能组合接口hi_mpi_vpc_batch_crop_resize_make_border,完整代码请单击Link获取。

父主题: 使用媒体数据处理V2版本接口

采用VPC批处理接口,降低时延,性能更优

背景说明

在对图像进行抠图、缩放等处理时,AscendCL媒体数据处理部分提供了以下两类接口:

以上两类接口的对应关系表如下。

单张图片处理接口批量图片处理接口
hi_mpi_vpc_crop_resize_paste(抠图缩放贴图)hi_mpi_vpc_batch_crop_resize_paste(批量抠图缩放贴图)
hi_mpi_vpc_crop_resize_make_border(抠图缩放填充)hi_mpi_vpc_batch_crop_resize_make_border(批量抠图缩放填充)

基本原理

昇腾AI处理器内置图像处理单元DVPP(Digital Video Pre-Processing),在DVPP中,有多个VPC(Vision Preprocessing Core)模块,处理图片的抠图、缩放、格式转换等任务。

在调用批处理接口时,批量任务会被均分到多个VPC模块、并行处理,批量接口的处理时延会降低,性能提升。

使用示例

此处以批量抠图、缩放、填充为例说明如何调用多功能组合接口hi_mpi_vpc_batch_crop_resize_make_border,完整代码请单击Link获取。

父主题: 使用媒体数据处理V2版本接口

合理选择VDEC视频解码输出格式和分辨率,性能更优

背景说明

如果用户需要借助DVPP进行视频解码,想要得到RGB格式图片,当前视频解码接口hi_mpi_vdec_send_stream支持输出YUV420SP格式或RGB888格式,且支持在解码时对图片进行缩放,所以从提升性能的角度,可以优化代码逻辑,直接调用视频解码接口hi_mpi_vdec_send_stream输出RGB888格式。

图1 VDEC解码输出的组合场景

基本原理

视频解码接口hi_mpi_vdec_send_stream支持输出YUV420SP格式或RGB888格式,可设置接口参数输出不同的格式,省去调用hi_mpi_vpc_convert_color进行格式转换的步骤,减少接口调用。

若视频码流分辨率与模型输入图片的分辨率不一致,需要对解码后的图片进行缩放处理,也可以在视频解码接口hi_mpi_vdec_send_stream中设置输出图片的分辨率,在解码的同时完成图片的缩放,省去单独调用缩放接口的步骤,减少接口调用。

总结下来,可以在视频解码接口hi_mpi_vdec_send_stream中完成解码+缩放+色域转换三个功能,减少调用接口的数量,提升性能。

使用示例

视频解码的示例代码请单击Link获取。

父主题: 使用媒体数据处理V2版本接口

合理使用VDEC解码跳帧,减少内存申请,减轻VPC压力,性能更优

背景说明

在视频解码+模型推理的场景下,若视频的帧数比较多,且不是每一帧都需要进行推理,对于不需要推理的帧,推荐用户在调用hi_mpi_vdec_send_stream接口解码时设置当前帧输出不显示,不输出解码结果。

基本原理

视频解码是需要连续的数据,解码后的数据需要输出YUV格式,则每帧数据解码后,VDEC内部还需要通过VPC进行解压缩、缩放、格式转换的流程。

如果不想获取某一帧的解码结果, 在调用hi_mpi_vdec_send_stream接口解码时设置当前帧输出不显示,这样,就不需要申请输出内存,且VDEC内部也不通过VPC模块进行解压缩、缩放、格式转换的流程。减少内存申请,也减轻了VPC的处理压力,达到提升性能的目标。

使用说明

请参见hi_mpi_vdec_send_stream接口的hi_vdec_stream结构体内的need_display参数说明。

父主题: 使用媒体数据处理V2版本接口

VPC处理时合理选择输出格式,降低内存申请,性能更优

在Atlas 200/500 A2推理产品上,VPC图像处理功能支持输出YUV400格式(灰度图像),如果模型推理的输入图像是灰度图像,就直接使用VPC功能,无需再使用AIPP色域转换功能。

基本原理

在Atlas 200/500 A2推理产品上,直接使用VPC功能输出YUV400格式(灰度图像),省去使用AIPP色域转换功能,降低AI Core单元的负载,从硬件上提升性能。

使用说明

关于VPC功能的示例代码,请参见VPC图片处理典型功能

父主题: 使用媒体数据处理V2版本接口

合理设置队列深度,减少硬件资源浪费,提升性能

背景说明

可使用媒体数据处理V2版本接口,配置VPC队列深度,队列深度范围[10,350]之间。用户业务下发任务时,若VPC队列满后,会反压阻塞任务下发,影响性能。

基本原理

适当加大VPC队列深度,可以缓解用户业务下发任务与VPC内部任务处理相互之间性能波动的影响。

  • 如果用户短时间内下发任务多于VPC通道处理速度,则多出来的任务会缓存在队列中,不会阻塞用户继续下发任务;
  • 如果短时间内用户下发任务较少,则VPC可以处理队列中缓存的任务,不会造成空闲,导致硬件资源浪费。

用户可基于业务下发任务的速度与VPC单通道处理的性能适当调整队列任务深度:

  • 用户业务创建一个通道,起多个线程往同一通道下发任务,且下发任务数超过上面单通道参考性能,则建议用户将队列深度设大;
  • 用户业务创建一个通道,只有一个线程往该通道下发任务,且为下发一次任务,获取一次结果,串行执行。该情况通道任务不会堆积,不必设大,保持默认即可。

:::note 说明 VPC单通道处理的性能,请参见性能指标说明。 :::

使用说明

调用hi_mpi_vpc_create_chn接口或hi_mpi_vpc_sys_create_chn接口创建VPC通道时,通过hi_vpc_chn_attr结构体内的attr参数设置队列深度。

关于VPC队列深度设置示例代码,参见sample_vpc.cpp中queue_len参数。

父主题: 使用媒体数据处理V2版本接口

在线提单