掌桥专利:专业的专利平台
掌桥专利
首页

数字图像稳定处理的优化方法、系统、芯片和板卡

文献发布时间:2024-01-17 01:15:20


数字图像稳定处理的优化方法、系统、芯片和板卡

技术领域

本披露一般地涉及多媒体处理领域。更具体地,本披露涉及一种数字图像稳定系统、用于优化数字图像稳定处理的方法、芯片和板卡。

背景技术

视频图像中的运动是由物体运动或摄像机运动引起的。如果相机和物体的相对运动过大,则会导致图像之间产生高频抖动。由于人眼的视觉暂留效应,会导致视频流的模糊甚至让人产生眩晕的感觉。通常,造成该现象的主要原因是相机的非主观运动。

数字图像稳定系统的目的是产生一个补偿的视频序列,消除由于仪器的非主观运动造成的画面抖动,使图像平滑。图1示出了数字图像稳定技术的基本流程图。如图所示,接收到原始视频序列110之后,会在步骤120中对原始视频序列进行局部运动估计。接着在步骤130中基于局部运动估计确定全局运动估计并进行平滑处理。最后,在步骤140中,利用平滑后的全局运动,对图像进行防抖矫正,得到矫正后的视频序列150。

在上述处理流程中,局部运动估计(步骤120)对相邻帧间的运动状态进行估计,是图像稳定算法的核心,其计算效率的高低对整个算法的运算速度有非常重大的影响。局部运动估计需要计算与匹配图像特征,当前基于传统的CPU、GPU的方案具有功耗高、运算速度慢、效率低等缺陷。

此外,图像矫正(步骤140)根据运动平滑后的参数,对整张图像进行防抖。通常情况下,图像矫正处理涉及对原始图像进行坐标变化,其变化后的坐标是非整形的,需要采用差值等手段进行坐标的对齐。图像矫正的处理速度直接影响整个算法的计算效率。当前基于传统的CPU、GPU的方案在对整个图像帧进行上述坐标处理时也同样存在功耗高、运行速度慢、效率低等缺陷。

上述两个问题使得传统的基于CPU、GPU的方案在高分辨率和实时性方面存在一定的瓶颈,限制了数字图像稳定技术的使用场景。

发明内容

为了至少解决在上文中所提到的一个或多个技术问题,本披露实施例提出了一种优化数字图像稳定技术的方案。本披露在如下的多个方面中提供前述的解决方案。

在第一方面中,本披露公开了一种数字图像稳定系统,用于执行数字图像稳定处理,所述数字图像稳定处理包括局部运动估计过程、全局运动估计和运动平滑过程和图像矫正过程,所述数字图像稳定系统包括通用处理器和专用处理电路,其中:所述通用处理器,配置用于调度所述数字图像稳定处理中各个过程的执行主体和参数设置;以及所述专用处理电路,配置用于根据所述通用处理器的调度,至少执行所述局部运动估计过程和/或所述图像矫正过程中的一部分。

在第二方面中,本披露公开了一种用于优化数字图像稳定处理的方法,其中所述数字图像稳定处理包括局部运动估计过程、全局运动估计和运动平滑过程和图像矫正过程,所述方法包括:利用通用处理器来调度所述数字图像稳定处理中各个过程的执行主体和参数设置;以及利用专用处理电路,在所述通用处理器的调度下,至少执行所述局部运动估计过程和/或所述图像矫正过程中的一部分。

在第三方面中,本披露公开了一种芯片,所述芯片包括本披露第一方面所述的数字图像稳定系统。

在第四方面中,本披露公开了一种板卡,所述板卡包括本披露第三方面所述的芯片。

通过利用本披露上述的优化数字图像稳定处理的方案,可以将计算量大和/或重复性计算较多的处理分配给专用处理电路来执行,从而可以加快运算速度,降低功耗,提升效率。进一步地,通过在通用处理器与专用处理电路之间合理地设置分工模式,在保证高效的同时,兼顾了方案的灵活性和场景适用性。

附图说明

通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:

图1示出了数字图像稳定技术的基本流程;

图2示出了根据本披露实施例的数字图像稳定系统的结构示意图;

图3示出了根据本披露一个实施例的数字图像稳定过程的示例性优化流程;

图4示出了根据本披露实施例的专用处理电路实现为单核智能处理器的内部结构示意图;

图5示出了根据本披露实施例的专用处理电路实现为多核智能处理器的内部结构示意图;

图6示出了可以实施本披露实施例的数据级流水线的数字图像稳定系统的示例性结构图;

图7示出了根据本披露实施例的运算单元的示例性结构框图;以及

图8示出根据本披露实施例的一种板卡的结构示意图。

具体实施方式

下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露披露的方案保护的范围。

应当理解,本披露的权利要求、说明书及附图中可能出现的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

下面结合附图来详细描述本披露的具体实施方式。

如前所述,当前的数字图像稳定技术采用传统的CPU或GPU进行处理,并且对于数字图像稳定处理中的各个过程未进行区别处理。例如,对图像的获取以及处理均是基于通用处理器获得。在实践中发现,这种基于通用处理器运行软件程序来处理图像的方式,受限于通用处理器的运行速率,特别是在通用处理器负荷较大的情况下,图像处理效率较低、时延较大。

为了克服传统技术功耗高、运行速度慢等缺陷,本披露实施例提供了一种数字图像稳定系统,将数字图像稳定处理中计算量大和/或重复性运算较多的处理分配给专用处理电路来执行,而对需要兼容多种参数或算法的处理分配给通用处理器来执行,从而在保证高效的同时,兼顾方案的灵活性和场景适应能力。

图2示出了根据本披露实施例的数字图像稳定系统的结构示意图。如图所示,数字图像稳定系统200包括通用处理器210和专用处理电路220。

通用处理器210配置用于调度数字图像稳定处理中各个过程的执行主体和参数设置。专用处理电路220则配置用于根据通用处理器的调度,执行数字图像稳定处理中计算量大和/或重复性运算较多的处理。

接口电路230用于在通用处理器210与专用处理电路220之间传输数据和控制指令。例如,专用处理电路220可以经由接口电路230从通用处理器210中获取输入数据,写入专用处理电路220片上的存储装置。进一步,专用处理电路220可以经由接口电路230从通用处理器210中获取控制指令,写入专用处理电路220片上的控制缓存中。替代地或可选地,接口电路230也可以读取专用处理电路220的存储装置中的数据并传输给通用处理器210。

通用处理器210和专用处理电路220可以通过接口电路230进行交互,以共同完成系统指定的操作。

通用处理器210作为通用的处理装置,执行包括但不限于数据搬运、对专用处理电路220的开启和/或停止等基本控制。根据实现方式的不同,通用处理器210可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。

专用处理电路220配置成执行系统指定的操作,其可以实现为专用集成电路、现场可编程门阵列或者单核智能处理器或者多核智能处理器,用以执行图像处理等过程,其可以通过接口电路230与通用处理器210进行交互,以共同完成系统指定的操作。

可选地或附加地,数字图像稳定系统200还可以包括存储装置,例如DRAM 240。DRAM 240用以存储待处理的数据,为DDR内存,大小通常为16G或更大,用于保存专用处理电路220和/或通用处理器210的数据。DRAM 240有时候也称为片外内存。

参考前文结合图1描述的数字图像稳定处理的流程可知,数字图像稳定处理大体上包括局部运动估计过程、全局运动估计和运动平滑过程和图像矫正过程。进一步地,各个过程根据其所涉及的运算,又可以拆分成若干子过程。这些子过程所涉及的运算特性各有不同,因此可以以子过程为粒度来为其调度执行主体。

在一个示例中,局部运动估计过程可以拆分成构建图像金字塔、特征点检测、特征点匹配和帧间运动求取等四个子过程。

图像金字塔是图像中多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其例如可以通过梯次向下采样获得,直到达到某个终止条件才停止采样。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。在图像金字塔中,层级越高,则图像越小,分辨率越低。图像金字塔可以处理图像偏移较大的情况,在高层低分辨率图像上,大的偏移将变为小的偏移。

构建图像金字塔子过程主要涉及对输入图像帧进行降采样,得到图像高斯金字塔。该子过程需要逐像素进行卷积操作,这种运算使用诸如CPU的通用处理器处理会消耗大量的时间。相反,如果使用专用处理电路通过硬件来实现,则可以显著提升处理速度。

特征点检测子过程主要涉及在图像金字塔上进行特征点的检测。特征点的检测主要包括特征点的提取和描述。特征点的提取需要逐像素进行卷积操作,而特征点的描述子生成也需要进行大量重复的卷积操作。

特征点匹配是利用特征点描述子的匹配程度,来获得两帧图像的匹配点对。具体地,可以对当前帧所提取的特征点与前一帧的特征点进行匹配,获得前后一致的匹配点对。特征匹配需要不断重复点与点之间的描述子匹配值的计算,从而获得最佳的匹配点对。如果使用专用处理电路,通过硬件方式来实现这些大量的、重复性运算则可以有效提升处理速率。

帧间运动求取子过程主要涉及利用特征点点对约束,采用诸如RANSAC算法及直接线性变换,求得帧间变换矩阵。RANSAC算法可以剔除误匹配对运动估计的影响,提升运动估计的鲁棒性,然而该算法需要不断重复地使用一些点对的坐标,大量重复进行直接线性变换。这种大量的重复性运算更适合使用专用硬件电路进行处理,从而提升处理效率。

从上面对局部运动估计过程中各个子过程的运算特点分析可以看出,构建图像金字塔、特征点检测、特征点匹配和帧间运动求取这几个子过程更适合使用专用的硬件电路来实现。因此,在一些实施例中,可以调度专用处理电路执行局部运动估计过程中的构建图像金字塔、特征点检测、特征点匹配和帧间运动求取中的一项或多项。优选地,这四个子过程均使用专用处理电路来执行。

在一个示例中,全局运动估计和运动平滑过程可以拆分成全局运动求取和运动平滑这两个子过程。

全局运动求取子过程主要涉及将当前帧间变换矩阵与前一帧全局变换矩阵相乘,得到当前帧全局变换矩阵。该子过程采用迭代的方式进行,计算量小,只需要一次或若干次的矩阵乘法。因此,此子过程采用通用处理器即可快速完成。此外,全局运动求取的灵活性高,对数字图像稳定处理的结果影响大,采用通用处理器可以更适应不同的场景。

运动平滑子过程主要涉及对图像的运动进行建模,利用过去若干帧的全局变换矩阵,采用相应的滤波方式对当前帧的全局变换矩阵进行滑动平滑滤波,得到当前帧的全局平滑运动。运动平滑过程是数字图像稳定处理的核心过程,该过程通常包含若干次矩阵的加法和乘法等运算,采用迭代的方式进行,计算量小,但是对最终的防抖效果有最直接的影响。同时,针对不同的使用场景和运动形态往往需要不同的运动模型以及不同的平滑滤波算法,例如扩展卡尔曼滤波、低通滤波或者是基于优化的算法实现。专用处理电路针对特定运算的效率高,但灵活性不够。因此,在本披露实施例中,运动平滑过程可以使用通用处理器来执行,从而满足不同场景、不同滤波算法的实现需求,防抖方案部署更加方便与灵活。

从上面对全局运动估计和运动平滑过程中各个子过程的运算特点分析可以看出,全局运动求取和运动平滑子过程均适合使用通用处理器来执行,可以增强灵活性。

在一个示例中,图像矫正过程可以拆分为防抖矩阵求取和图像去抖两个子过程。

防抖矩阵求取子过程涉及求取抖动变换矩阵。当前帧的全局变换矩阵包含相机主动运动及抖动,将该矩阵乘以平滑矩阵的逆,即可得到消除当前帧抖动的抖动变换矩阵。在一个示例中,上述运算过程包括一个三阶矩阵(也即平滑矩阵)的求逆运算,以及全局变化矩阵与该逆矩阵的矩阵乘运算。该子过程可以采用迭代的方式进行,计算量小,因此,适合采用通用处理器来执行。

图像去抖子过程主要涉及利用抖动变换矩阵对图像进行逆变换,得到去抖动后的图像。该子过程需要逐像素获取反变换后的像素坐标和像素值,每个像素点都需要进行矩阵乘法运算,计算量大。因此,该子过程使用专用处理电路来实现,可以提升处理速率。

从上面对图像矫正过程中各个子过程的运算特点分析可以看出,图像去抖子过程更适合使用专用的硬件电路来实现。因此,在一些实施例中,可以调度专用处理电路执行图像矫正过程中的图像去抖子过程,防抖矩阵求取子过程则使用通用处理器来执行。

图3示出了根据本披露一个实施例的数字图像稳定过程的示例性优化流程。图中示出了数字图像稳定过程的各个处理步骤以及对应的执行主体划分。在此实施例中,优选地,局部运动估计过程中的构建图像金字塔321、特征点检测322、特征点匹配323和帧间运动求取324等四个子过程,以及图像矫正过程中的图像去抖342子过程均使用专用处理电路来执行,其余子过程则使用通用处理器来执行,也即全局运动求取331、运动平滑332和防抖矩阵求取341使用通用处理器来执行。由此,通过合理的软硬件分工模式,可以克服传统技术功耗高,运算速度慢等缺陷。此外,这种分工模式在保证高效的同时,兼顾了方案的灵活性和场景适应性。

前面提到专用处理电路可以实现为单核智能处理器或者多核智能处理器,其适用于执行图像处理等过程,诸如大量重复性、并行度高的运算,例如卷积、大型矩阵乘法运算等。

图4示出了根据本披露实施例的专用处理电路实现为单核智能处理器的内部结构示意图。单核智能处理器400包括三大模块:控制模块41、运算模块42及存储模块43。

控制模块41用以协调并控制运算模块42和存储模块43的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)411及指令译码单元(instructiondecode unit,IDU)412。取指单元411用以获取来自通用处理器210(参见图2)的指令,指令译码单元412则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块42和存储模块43。

运算模块42包括向量运算单元421及矩阵运算单元422。向量运算单元421用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元422负责深度学习算法的核心计算,即矩阵乘及卷积。

存储模块43用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)431、参数存储单元(weight RAM,WRAM)432、直接内存访问模块(direct memory access,DMA)433。NRAM 431用以存储输入神经元、输出神经元和计算后的中间结果;WRAM 432则用以存储深度学习网络的卷积核,即权值;DMA 433通过总线44连接DRAM 240,负责单核计算装置401与DRAM 240间的数据搬运。

在一些实现中,存储模块43可以包括多级存储单元,例如多级缓存,以便支持本披露实施例的数据级流水线。

图5示出了根据本披露实施例的专用处理电路实现为多核智能处理器的内部结构示意图。多核智能处理器500采用分层结构设计,多核计算装置500作为一个片上系统,其包括至少一个计算簇(cluster),每个计算簇又包括多个处理器核,换言之,多核智能处理器500是以片上系统-计算簇-处理器核的层次所构成的。

以片上系统的层级来看,如图5所示,多核智能处理器500包括外部存储控制器51、外设通信模块52、片上互联模块53、同步模块54以及多个计算簇55。

外部存储控制器51可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的DRAM 240,从而自片外读取数据或是将数据写入。外设通信模块52用以通过接口装置230接收来自通用处理器210的控制信号,启动专用处理电路220执行任务。片上互联模块53将外部存储控制器51、外设通信模块52及多个计算簇55连接起来,用以在各个模块间传输数据和控制信号。同步模块54是一种全局同步屏障控制器(global barrier controller,GBC),用以协调各计算簇的工作进度,确保信息的同步。多个计算簇55是多核智能处理器500的计算核心,在图中示例性地展示4个,随着硬件的发展,本公开的多核智能处理器500还可以包括8个、16个、64个、甚至更多的计算簇55。计算簇55用以高效地执行深度学习算法。

以计算簇的层级来看,如图5右上方所示,每个计算簇55包括处理单元502和存储核(MEM core)504。处理单元502执行各种计算任务。在一些实现中,处理单元可以是多核架构,例如包括多个处理核(IPU core)511-1~511-n,以完成诸如大规模向量计算任务。本公开不限制处理核511的数量。

处理核511的内部架构如图5下方所示。每个处理核511内可以具有多个用于执行计算任务的计算模块524-1~524-m,以及为执行计算任务所需要的本地存储模块523。需特别说明的是,本地存储模块523可以包括各种通信模块,以与外部存储单元进行数据交换。例如,本地存储模块523可以包括通信模块521,以与存储核504中的共享存储模块515通信。通信模块521例如可以是搬运直接内存访问模块(move direct memory access,MVDMA)。本地存储模块523还可以包括通信模块522,以与片外内存,例如DRAM 508进行数据交换。通信模块522例如可以是输入/输出直接内存访问模块(input/output direct memory access,IODMA)。IODMA 522控制本地存储模块523中的NRAM/WRAM(图5未示出,参见图4)与DRAM 508的访存;MVDMA521则用以控制本地存储模块523中的NRAM/WRAM与共享存储模块515的访存。

继续图5右上方视图,存储核504主要用以存储和通信,即存储处理核511间的共享数据或中间结果、以及执行计算簇55与DRAM 508之间的通信、计算簇55间彼此的通信、处理核511间彼此的通信等。在其他实施例中,存储核504具有标量运算的能力,用以执行标量运算,以实现数据通信中的运算任务。

存储核504包括一个较大的共享存储模块(SRAM)515、广播总线514、计算簇直接内存访问模块(cluster direct memory access,CDMA)518、全局直接内存访问模块(globaldirect memory access,GDMA)516及通信时计算模块517。SRAM 515承担高性能数据中转站的角色,在同一个计算簇55内不同处理核511之间所复用的数据不需要通过处理核511各自向DRAM 508获得,而是经SRAM 515在处理核511间中转,存储核504只需要将复用的数据从SRAM 515迅速分发给多个处理核511即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。

广播总线514、CDMA 518及GDMA 516则分别用来执行处理核511间的通信、计算簇55间的通信和计算簇55与DRAM 508的数据传输。以下将分别说明。

广播总线514用以完成计算簇55内各处理核511间的高速通信,此实施例的广播总线514支持核间通信方式包括单播、多播与广播。单播是指点对点(例如单一处理核至单一处理核)的数据传输,多播是将一份数据从SRAM 515传输到特定几个处理核511的通信方式,而广播则是将一份数据从SRAM 515传输到所有处理核511的通信方式,属于多播的一种特例。

CDMA 518用以控制在同一个专用处理电路220内不同计算簇55间的SRAM 515的访存。

GDMA 516与外部存储控制器51协同,用以控制计算簇55的SRAM 515到DRAM 508的访存,或是将数据自DRAM 508读取至SRAM 515中。从前述可知,DRAM 508与本地存储模块523中的NRAM/WRAM间的通信可以经由2个渠道来实现。第一个渠道是通过IODMA 522直接联系DRAM 508与本地存储模块523;第二个渠道是先经由GDMA 516使得数据在DRAM 508与SRAM 515间传输,再经过MVDMA 521使得数据在SRAM 515与本地存储模块523间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此DRAM 508与本地存储模块523间的通信通过第二个渠道可能更有效率。本公开的实施例可根据本身硬件条件选择数据传输渠道。

在一些实施例中,存储核504可以作为计算簇55内的一个缓存层级,达到拓宽通信带宽的作用。进一步地,存储核504还可以完成与其他计算簇55之间的通信。存储核504例如能够实现计算簇55之间的广播(Broadcast)、撒播(Scatter)、收集(Gather)、规约(Reduce)和全规约(All-reduce)等通信功能。其中,广播是指将同一份数据分发广播给所有计算簇;撒播是指将不同数据分发给不同的计算簇;收集是指将多个计算簇的数据会聚在一起;规约是指将多个计算簇中的数据按照指定的映射函数进行运算得到最后的结果发送给某个计算簇;而全规约与规约的区别在于后者最后的结果只发送给一个计算簇,而全规约需要发送给所有计算簇。

通信时计算模块517可以用于在通信过程中完成例如上述规约、全规约等通信中的计算任务,而不需要借助处理单元502,从而提升通信效率,达到“存算一体”的效果。取决于不同的硬件实现,通信时计算模块517和共享存储模块515可以整合在相同或不同部件中,本披露实施例在此方面没有限制,只要其实现的功能以及达到的技术效果与本披露类似,均属于本披露的保护范围。

在本披露实施例中,当数字图像稳定处理中的子过程在前述专用处理电路的硬件环境中执行时,还可以实施数据级流水线的数据处理方案,从而加速运算效率。更具体地,该流水线覆盖存储单元之间的流水,从而还可以有效提升流水线上各个功能部件的利用率。

图6示出了可以实施本披露实施例的数据级流水线的数字图像稳定系统的示例性结构图。在此图示中,从支持数据级流水线的角度示出数字图像稳定系统。如图所示,数字图像稳定系统600包括第一级存储单元610、第二级存储单元620和运算单元630。

第一级存储单元610可以用于存储相关数据,例如供运算单元630执行各种计算处理的输入数据,以及运算单元630执行计算处理后得到的结果,也即输出数据。

在一些实施例中,例如专用处理电路为单核智能处理器的情况下,第一级存储单元610可以是片外内存DDR,例如图2中的DRAM 240。在另一些实施例中,例如专用处理电路为多核智能处理器的情况下,第一级存储单元610可以是片外内存DDR,例如图2中的DRAM240或图5中的DRAM 508;第一级存储单元610也可以是其他计算簇的存储核,例如图5中其他计算簇内的存储核504。

第二级存储单元620可以用于存储或搬运相关数据。在一些实施例中,例如专用处理电路为单核智能处理器的情况下,第二级存储单元620可以是缓存单元。在另一些实施例中,例如专用处理电路为多核智能处理器的情况下,第二级存储单元620可以是由若干运算单元630构成的计算簇所使用的共享存储单元,例如图5中的计算簇55内的存储核504。

运算单元630负责处理数字图像稳定系统600分配的各种功能,例如构建图像金字塔、特征点检测、特征点匹配、帧间运动求取、图像去抖等。运算单元630例如可以包括图4中的控制模块41、运算模块42、和/或存储模块43。

在一些实施例中,运算单元630可以至少包括本地存储单元631和计算单元632。本地存储单元631可以用于存储或搬运相关数据,其例如可以是图4所示的各种RAM。计算单元632可以用于执行各种计算任务。在单核架构中,其例如包括图4所示的向量运算单元421及矩阵运算单元422。在多核架构中,其例如包括图5所示的多个计算模块524,每个计算模块524中又可以包括各种具体的运算单元,诸如向量运算单元、矩阵运算单元等等。

第一级存储单元610与第二级存储单元620之间可以通过第一直接内存访问(DMA)接口来实现数据交换或数据通信。例如,在第一级存储单元610是片外内存DDR、第二级存储单元620是共享存储单元的情况下,第一DMA接口可以是GDMA接口。又例如,在第一级存储单元610是其他计算簇的共享存储单元、第二级存储单元620是当前计算簇的共享存储单元的情况下,第一DMA接口可以是CDMA接口。

第二级存储单元620与运算单元630之间,更具体地,是与运算单元630中的本地存储单元631之间,可以通过第二DMA接口来实现数据交换或数据通信。例如,在第二级存储单元620是共享存储单元的情况下,第二DMA接口可以是MVDMA接口。

在一些实施例中,运算单元630与第一级存储单元610之间可以存在第三DMA接口。例如,在第一级存储单元610是片外内存的情况下,第三DMA接口可以是IODMA接口。

从上面的描述可知,第二级存储单元620与运算单元630之间支持并行处理,并且不同功能单元之间的数据通信可以通过不同的DMA接口来实现,由此可以充分利用并行性来实现数据级流水线。

在一些实施例中,第二级存储单元620可以划分成多个存储区,从而可以配置包括第一级存储单元610、第二级存储单元620和运算单元630的数据级流水线。在该数据级流水线中,第一级存储单元610与第二级存储单元之间可以并行处理,并且运算单元630与第一级存储单元610和/或第二级存储单元620之间可以并行处理。

更具体地,在一些实现中,第二级存储单元620可以配置有至少两个存储区,用以支持在通过第一DMA接口在其中一个存储区与第一级存储单元610之间进行数据访存的同时,通过不同于第一DMA接口的第二DMA接口在另一存储区与运算单元630之间进行数据访存。所配置的每个存储区可以用于分时存储输入数据块以及对应的输出数据块。

可选地或附加地,在一些实施例中,运算单元630中包括的本地存储单元也可以纳入在流水线中,从而配置成包括第一级存储单元610、第二级存储单元620、本地存储单元631和计算单元632的数据级流水线。在该流水线中,第一级存储单元610、第二级存储单元620、本地存储单元631之间均可以并行处理,并且计算单元632与第一级存储单元610、第二级存储单元620和/或本地存储单元631之间也均可以并行处理。

更具体地,在一些实现中,本地存储单元631配置有多个存储区,用以支持在通过第二DMA接口在其中一个存储区与第二级存储单元(例如共享存储单元)之间进行数据访存的同时,由计算单元632对另一存储区的数据执行计算处理。本地存储单元631中所配置的每个存储区用于分时存储输入数据块和作为计算处理结果的输出数据块。

进一步地,在一些需要缓存的计算处理中,本地存储单元还可以配置有计算缓存区,用以供计算单元632的计算处理临时存储数据。

本披露实施例的数据级流水线可以根据不同情况配置不同规模的流水线,从而灵活地适应于不同场景。

在本披露一些实施例中,专用处理电路中的运算单元(例如图4所示的运算模块42,图5所示的计算模块524,图6所示的计算单元632)可以使用主从结构来实现,从而更好地提高运算效率。

图7示出了根据本披露实施例的运算单元的示例性结构框图。可以理解,图中结构适用于专用处理电路实现为单核智能处理器或多核智能处理器中各个核中的运算单元/模块的具体结构实现。如图所示,运算单元700包括:一个主处理电路701和多个从处理电路702。主处理电路和从处理电路之间以及多个从处理电路之间可以通过各种连接相互通信。

主处理电路和从处理电路可以相互配合,由此实现并行运算处理。在这种配置中,主处理电路例如可以用于对输入数据执行前序处理,例如对数据进行拆分,以及从多个从处理电路接收中间结果并执行后续处理,以得到运算指令的最终运算结果。从处理电路例如可以用于根据运算指令,对相应的数据(例如,拆分的数据)并行执行中间运算得到多个中间结果,并将多个中间结果传输回主处理电路。

在不同的应用场景中,多个从处理电路之间的连接方式既可以是通过硬线布置的硬连接方式,也可以是根据例如微指令进行配置的逻辑连接方式,以形成多种从处理电路阵列的拓扑结构。本披露实施例在此方面没有限制。

核中的控制模块(未示出)可以获取输入数据以及计算指令;在一种可选方案中,具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。上述计算指令包括但不限于:构建图像金字塔指令、特征检测与匹配指令、帧间运动求取指令和图像去抖指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。控制模块还可以解析该计算指令得到多个运算指令,将该多个运算指令以及输入数据发送给主处理电路701。

主处理电路701用于对输入数据执行前序处理以及在多个从处理电路之间传输数据以及运算指令;多个从处理电路702用于依据从主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给主处理电路;主处理电路701进一步用于对多个中间结果执行后续处理得到计算指令的计算结果。

本披露实施例中将运算单元设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。

在一些实施例里,本披露还公开了一种芯片(例如图8中示出的芯片802)。在一种实现中,该芯片是一种系统级芯片(System on Chip,SoC),并且集成有一个或多个如图2中所示的数字图像稳定系统。该芯片可以通过对外接口装置(如图8中示出的对外接口装置806)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如DRAM接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图8对该板卡进行详细地描述。

图8是示出根据本披露实施例的一种板卡800的结构示意图。如图所示,该板卡包括用于存储数据的存储器件804,其包括一个或多个存储单元810。该存储器件可以通过例如总线等方式与控制器件808和上文所述的芯片802进行连接和数据传输。进一步,该板卡还包括对外接口装置806,其配置用于芯片(或芯片封装结构中的芯片)与外部设备812(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准PCIE接口等。

在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(Micro ControllerUnit,MCU),以用于对所述芯片的工作状态进行调控。

根据上述结合图2和图8的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。

根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器计算簇、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。

需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。

在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。

在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。

在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。

依据以下条款可更好地理解前述内容:

条款1、一种数字图像稳定系统,用于执行数字图像稳定处理,所述数字图像稳定处理包括局部运动估计过程、全局运动估计和运动平滑过程和图像矫正过程,所述数字图像稳定系统包括通用处理器和专用处理电路,其中:

所述通用处理器,配置用于调度所述数字图像稳定处理中各个过程的执行主体和参数设置;以及

所述专用处理电路,配置用于根据所述通用处理器的调度,至少执行所述局部运动估计过程和/或所述图像矫正过程中的一部分。

条款2、根据条款1所述的数字图像稳定系统,其中所述局部运动估计过程包括构建图像金字塔、特征点检测、特征点匹配和帧间运动求取,并且所述专用处理电路进一步配置用于执行所述局部运动估计过程中的所述构建图像金字塔、特征点检测、特征点匹配和帧间运动求取中的一项或多项。

条款3、根据条款1或2所述的数字图像稳定系统,其中所述图像矫正过程包括防抖矩阵求取和图像去抖,并且所述专用处理电路进一步配置用于执行所述图像矫正过程中的所述图像去抖。

条款4、根据条款1-3任一所述的数字图像稳定系统,其中所述通用处理器进一步配置用于执行所述数字图像稳定处理中的除所述专用处理电路执行的处理之外的其余处理。

条款5、根据条款1-4任一所述的数字图像稳定系统,其中:

所述通用处理器包括中央处理器、图形处理器、专用集成电路、数字信号处理器、现场可编程门阵列中的任一种;和/或

所述专用处理电路包括专用集成电路、现场可编程门阵列、单核智能处理器或多核智能处理器。

条款6、根据条款5所述的数字图像稳定系统,其中所述专用处理电路包括运算单元,所述运算单元包括一个主处理电路和多个从处理电路,其中:

所述主处理电路,用于对输入数据执行前序处理以及在所述多个从处理电路之间传输数据和运算指令;

所述多个从处理电路,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;并且

所述主处理电路进一步用于对所述多个中间结果执行后续处理以得到最终运算结果。

条款7、根据条款6所述的数字图像稳定系统,其中所述专用处理电路包括若干计算簇,每个计算簇包含若干所述运算单元以及由所述运算单元使用的共享存储单元,其中:

所述共享存储单元划分成多个存储区,以配置成包括片外内存、所述共享存储单元和所述运算单元的数据级流水线,以支持所述片外内存与所述共享存储单元之间的并行处理以及所述运算单元与所述片外内存和/或所述共享存储单元之间的并行处理。

条款8、根据条款7所述的数字图像稳定系统,其中所述运算单元还包括本地存储单元,以配置成包括所述片外内存、共享存储单元、所述本地存储单元和所述主处理电路的数据级流水线。

条款9、一种用于优化数字图像稳定处理的方法,其中所述数字图像稳定处理包括局部运动估计过程、全局运动估计和运动平滑过程和图像矫正过程,所述方法包括:

利用通用处理器来调度所述数字图像稳定处理中各个过程的执行主体和参数设置;以及

利用专用处理电路,在所述通用处理器的调度下,至少执行所述局部运动估计过程和/或所述图像矫正过程中的一部分。

条款10、根据条款9所述的方法,进一步包括:

将所述局部运动估计过程拆分为构建图像金字塔、特征点检测、特征点匹配和帧间运动求取子过程;以及

将所述构建图像金字塔、特征点检测、特征点匹配和帧间运动求取子过程中的一项或多项分配给所述专用处理电路执行。

条款11、根据条款9-10任一所述的方法,进一步包括:

将所述图像矫正过程拆分为防抖矩阵求取和图像去抖子过程;以及

将所述图像去抖子过程分配给所述专用处理电路执行。

条款12、根据条款9-11任一所述的方法,进一步包括:

将所述数字图像稳定处理中的除所述专用处理电路执行的子过程之外的其余子过程分配给所述通用处理器执行。

条款13、根据条款9-12任一所述的方法,其中:

所述通用处理器包括中央处理器、图形处理器、专用集成电路、数字信号处理器、现场可编程门阵列中的任一种;和/或

所述专用处理电路包括专用集成电路、现场可编程门阵列、单核智能处理器或多核智能处理器。

条款14、根据条款13所述的方法,其中所述专用处理电路包括运算单元,所述运算单元包括一个主处理电路和多个从处理电路,其中:

所述主处理电路对输入数据执行前序处理以及在所述多个从处理电路之间传输数据和运算指令;

所述多个从处理电路依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;以及

所述主处理电路进一步对所述多个中间结果执行后续处理以得到最终运算结果。

条款15、根据条款14所述的方法,其中所述专用处理电路包括若干计算簇,每个计算簇包含若干所述运算单元以及由所述运算单元使用的共享存储单元,并且所述共享存储单元划分成多个存储区,所述方法进一步包括:

构造包括片外内存、所述共享存储单元和所述运算单元的数据级流水线,在所述片外内存与所述共享存储单元之间进行并行处理以及在所述运算单元与所述片外内存和/或所述共享存储单元之间进行并行处理。

条款16、根据条款15所述的方法,其中所述运算单元还包括本地存储单元,并且所述方法进一步包括:

构造包括所述片外内存、共享存储单元、所述本地存储单元和所述主处理电路的数据级流水线。

条款17、一种芯片,其特征在于,所述芯片包括如条款1-8任一所述的数字图像稳定系统。

条款18、一种板卡,其特征在于,所述板卡包括条款17所述的芯片。

虽然本文已经示出和描述了本披露的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本披露思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本披露的过程中,可以采用对本文所描述的本披露实施例的各种替代方案。所附权利要求书旨在限定本披露的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。

相关技术
  • 用于录制并传输数字视频图像的图像录制系统、用于接收并处理数字图像数据的图像数据处理系统、用于生成无抖动数字视频图像的图像稳定系统和方法
  • 用于处理数字图像的图像处理系统和处理数字图像的图像处理方法
技术分类

06120116085219