数字视觉预处理模块作为昇腾AI软件栈中的编解码和图像转换模块,为神经网络发挥着预处理辅助功能。当来自系统内存和网络的视频或图像数据进入昇腾AI处理器的计算资源中运算之前,由于Davinci架构对输入数据有固定的格式要求,如果数据未满足架构规定的输入格式、分辨率等要求,就需要调用数字视觉处理模块进行格式的转换,才可以进行后续的神经网络计算步骤。

功能架构

数字视觉预处理对外提供6个模块,分别为视频解码(VDEC)模块、视频编码(VENC)模块、JPEG解码(JPEGD)模块、JPEG编码(JPEGE)模块、PNG解码(PNGD)模块和视觉预处理(VPC)模块。

  • VDEC模块提供H.264/H.265的视频解码功能,对输入的视频码流进行解码输出图像,用于视频识别等场景的前处理。

  • VNEC模块提供输出视频的编码功能。对于视觉预处理模块的输出数据或原始输入的YUV格式数据,视频编码模块进行编码输出H.264/H.265视频,便于直接进行视频的播放和显示。

  • JPEGD模块对JPEG格式的图片进行解码,将原始输入的JPEG图片转换成YUV数据,对神经网络的推理输入数据进行预处理。

  • JPEG图片处理完成后,需要用JPEGE编码模块对处理后的数据进行JPEG格式还原,用于神经网络的推理输出数据的后处理。

  • 当输入图片格式为PNG时,需要调用PNGD解码模块进行解码,将PNG图片以RGB格式进行数据输出给昇腾AI处理器进行推理计算。

  • VPC模块提供对图片和视频其它方面的处理功能,如格式转换(例如YUV/RGB格式到YUV420格式转换)、大小缩放、裁剪等功能。

  • 数字视觉处理(DVPP)模块的执行流程如下图所示,需要由Matrix、DVPP、DVPP驱动和DVPP硬件模块共同协作完成。

  • 位于框架最上层是Matrix,负责调度DVPP中的功能模块进行相应处理以及管理数据流。

  • DVPP位于功能架构的中上层,为Matrix提供调用视频图形处理模块的编程接口,通过这些接口可以配置编解码和视觉预处理模块的相关参数。

  • DVPP驱动位于功能架构的中下层,最贴近于DVPP的硬件模块,主要负责设备管理、引擎管理和引擎模组的驱动。驱动会根据DVPP下发的任务分配对应的DVPP硬件引擎,同时还对硬件模块中的寄存器进行读写,完成其他一些硬件初始化工作。

  • 最底层的是真实的硬件计算资源DVPP模块组,是一个独立于昇腾AI处理器中其他模块的单独专用加速器,专门负责执行与图像和视频相对应的编解码和预处理任务。

预处理机制

当输入数据进入数据引擎时,引擎一旦检查发现数据格式不满足后续AI Core的处理需求,则可开启数字视觉预处理模块进行数据预处理。如下图所示的数据流所示,以图片预处理为例:

1.首先Matrix会将数据从内存搬运到DVPP的缓冲区进行缓存。

2.根据具体数据的格式,预处理引擎通过DVPP提供的编程接口来完成参数配置和数据传输。

3.编程接口启动后,DVPP将配置参数和原始数据传递给驱动程序,由DVPP驱动调用PNG或JPEG解码模块进行初始化和任务下发。

4.DVPP专用硬件中的PNG或JPEG解码模块启动实际操作来完成图片的解码,得到YUV或者RGB格式的数据,满足后续处理的需要。

5.解码完成后,Matrix以同样机制继续调用VPC进一步把图片转化成YUV420SP格式,因为YUV420SP格式数据存储效率高且占用带宽小,所以同等带宽下可以传输更多数据来满足AI Core强大计算吞吐量的需求。同时DVPP也可以完成图像的裁剪与缩放。

如下图展示了一种典型改变图像尺寸的裁剪和补零操作,VPC在原图像中取出的待处理图像部分,再将这部分进行补零操作,在卷积神经网络计算过程中保留边缘的特征信息。补零操作需要用到上、下、左、右四个填充尺寸,在补零区域中进行图像边缘扩充,最后得到可以直接计算的补零后图像。

6.经过一系列的预处理后的图像数据有以下两种处理方式:

  • 图像数据可以根据模型要求经过AIPP进行进一步预处理(可选,若DVPP输出的数据满足图像要求,则可以不经过AIPP的处理),然后将满足要求的图像数据在AI CPU的控制下进入AI Core进行所需的神经网络计算。

  • 将输出的图像数据统一通过JPEG编码模块进行编码,完成编码后处理,将数据放入DVPP的缓冲器中,最终由Matrix取出数据进行后续操作,同时也会释放DVPP的计算资源并回收缓存。

整个预处理过程中,Matrix完成不同模块的功能调用。DVPP作为定制化的数据补给模块,采用了异构或专用的处理方式来对图像数据进行快速变换,为AI Core提供了充足的数据源,从而满足了神经网络计算中大数据量、大带宽的需求。

作者:Torrenza

昇腾AI处理器软件栈--数字视觉预处理(DVPP)相关推荐

  1. 昇腾AI处理器软件栈--神经网络软件架构

    为完成一个神经网络应用的实现和执行,昇腾AI软件栈在深度学习框架到昇腾AI处理器之间架起了一座桥梁,为神经网络从原始模型,到中间计算图表征,再到独立执行的离线模型提供了快速转化的捷径.昇腾AI软件栈围 ...

  2. 【华为云技术分享】昇腾AI处理器软件栈--总览

    昇腾AI软件栈提供了计算资源.性能调优的运行框架以及功能多样的配套工具,是一套完整的解决方案,可以使昇腾AI处理器发挥出极佳的性能. 昇腾AI软件栈可以分为神经网络相关软件模块.工具链以及其它软件模块 ...

  3. 【昇腾学院】昇腾AI处理器软件栈--框架管理器(Framework)离线模型生成

    离线模型生成 以卷积神经网络为例,在深度学习框架下构造好相应的网络模型,并且训练好原始数据,再通过离线模型生成器进行算子调度优化.权重数据重排和压缩.内存优化等,最终生成调优好的离线模型.离线模型生成 ...

  4. 昇腾AI处理器软件栈--运行管理器(Runtime)

    神经网络构造中,算子组成了不同应用功能的网络结构.而张量加速引擎(Tensor Boost Engine)作为算子的兵工厂,为基于昇腾AI处理器运行的神经网络提供算子开发能力,用TBE语言编写的TBE ...

  5. 昇腾AI处理器软件栈--任务调度器(TS)

    任务调度器与运行管理器工程组成软硬件之间的大坝系统.在执行时,任务调度器对硬件进行任务的驱动,为昇腾AI处理器提供具体的目标任务,与运行管理器一起完成任务调度流程,并将输出数据回送给运行管理器,充当了 ...

  6. 昇腾AI处理器软件栈--张量加速引擎(TBE)

    神经网络构造中,算子组成了不同应用功能的网络结构.而张量加速引擎(Tensor Boost Engine)作为算子的兵工厂,为基于昇腾AI处理器运行的神经网络提供算子开发能力,用TBE语言编写的TBE ...

  7. 昇腾AI处理器软件栈--流程编排器(Matrix)

    功能简介 昇腾AI处理器对网络执行层次进行划分,将特定功能的执行操作看做基本执行单位--计算引擎(Engine).每个计算引擎在流程编排过程中对数据完成基本操作功能,如对图片进行分类处理.输入图片预处 ...

  8. 华为昇腾 AI 处理器架构大揭秘! | 华为昇腾师资培训沙龙武汉场

    「无 AI,不科技」.在AI 产业逐步落地成熟的今天,AI 人才的争夺战已打响,甚至有不少网友预测,未来AI 开发将成为人人必备的技能之一.不过,现实来看,无论是 AI 三驾马车中的数据.算力.算法, ...

  9. 解密昇腾AI处理器--Ascend310简介

    Ascend310 AI处理器规格 Ascend310 AI处理器逻辑架构 昇腾AI处理器本质上是一个片上系统(System on Chip,SoC),主要可以应用在和图像.视频.语音.文字处理相关的 ...

最新文章

  1. DockerFile 参数详解
  2. 很酷的word技巧---删除行前的空格
  3. localStorage.setItem()前后端分离情况下使用
  4. 处理机流水线------经典五段流水线
  5. android ndk gcc,Android NDK GCC似乎是铿锵的 - 它应该是这样吗?
  6. 为什么虚拟机上一运行就显示程序停止_五分钟学Java:如何学习Java面试必考的JVM虚拟机...
  7. 《PostgreSQL服务器编程》一一1.7 定制排序方法
  8. QT5开发及实例学习之十九图形视图体系结构
  9. [转载] python实现堆排序用类的方法_python实现堆排序的实例讲解
  10. 现有2个空水壶,容积分别为5升和6升,问题是如何只用这2个水壶从池塘里取得3升的水?水壶问题(裴蜀等式)
  11. 开发QQ桌球瞄准器(3):绘制瞄准线及母球
  12. Android开发知识(二十二)LayoutInflater装载xml布局过程的源码解析
  13. MTK平台 获取本机的SIM卡中IMSI号
  14. bootstrap table 复选框获取选中某几行的数据 + 可翻页
  15. linux系统没有硬盘分区,Linux系统入门学习:硬盘分区的陷阱及应对
  16. 安全证书、OpenSSL、keystore(keystore生成过程讲得多)
  17. 微信小程序 云开发 订阅消息 获取下发权限失败 errCode: 20001
  18. 李阳疯狂英语·超级人生名言20句
  19. 【Bug】jupyter notebook运行一直显示:kernel starting,please wait(Ubuntu)
  20. 数据结构-基于不同策略的英文单词的词频统计和检索系统-菜单

热门文章

  1. 2016年广东省电子设计大赛健康电子专题——健康养殖远程监控系统(环境监控系统V1.0版本)
  2. jdbc读取mysql时分秒yyyy-mm-dd hh:_[转]JDBC中日期时间的处理技巧
  3. jquery load 事件用法
  4. Avro从入门到入土
  5. 【ABAP系列】SAP ABAP 取两个内表的交集 比较两个内表的不同
  6. 20155327实践二
  7. Python 第一章 基础知识
  8. Android Train—notification通知
  9. Python自学之路NO.1-Python的安装与配置
  10. iOS中锁定屏幕的方法