一种3D图像处理中数据读写方法及系统、存储介质及终端与流程

文档序号:20448423发布日期:2020-04-17 22:54阅读:177来源:国知局
一种3D图像处理中数据读写方法及系统、存储介质及终端与流程

本发明涉及缓存应用的技术领域,特别是涉及一种3d图像处理中数据读写方法及系统、存储介质及终端。



背景技术:

数字图像处理(digitalimageprocessing)是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。3d图像处理算法中经常分成多个层逐层处理。每个层有输入图像和输出图像。因此,在3d图像处理的具体实现过程,需要占用巨大的存储带宽。例如,在神经网络alexnet中,相对于724mmacs计算量,需要3000m的数据访问。当存储全部用片外(off-chip)dram时候,巨大带宽带来高功耗和高延迟,严重影响系统性能。因此,数据的读写成为3d图像处理的瓶颈。

现有技术中,在双倍速率内存(doubledatarate,ddr)和算术逻辑部件运算器(arithmeticlogicalunit,alu)之间增加多级本地存储,尽可能缓存并重复利用缓存中的内容是一种有效减少ddr带宽的方法。例如dram和alu之间全缓存(globalbuffer),在各个alu之间增加可以相互访问的本地共享存储,在alu内部增加寄存器堆(registerfile)。随着buffer级别的逐层降低,各级存储单元处理单位数据的功耗和访问延迟也会指数降低。同时,硬件往往也更加复杂,面积随之增加。

另外,通过降低数据的位宽来减少带宽。具体地,通过量化用低bit位数表示数据,减少要处理数据量,然后输出结果进行反量化。该方法使alu更加简单,但随着数据位宽的降低必然带来计算精度的降低。对于神经网络而言,也需要对数据进行重新训练。

图像处理算法对图像的处理是按照一定顺序进行的。因此,可以对数据流分析和控制,合理使用buffer进行缓存。将图像划分为较小分块(tile),依次进行处理。该方法使得内存读取跨度减少。缓存以tile为单位,缓存单位变小,可用更小的内存管理单元(memorymanagementunit,mmu)或者cache缓存单位。然而,相邻tile之间存在重叠数据。当处于tile的边界的点需要处理的时候,需要重复访问相邻tile的数据。tile之间需要共同处理的数据称之为overlap数据。如果将tile缓存,也需要将overlap数据也进行缓存。同时,一层完成之前不能进行下一层的操作,层之间的结果存放在ddr中会有巨大的带宽,存放在缓存中又需要巨大的缓存面积。因此,如何提供缓存的利用率是重要的研究技术方向。



技术实现要素:

鉴于以上所述现有技术的缺点,本发明的目的在于提供一种3d图像处理中数据读写方法及系统、存储介质及终端,基于3d垂直滑动(verticalsliding)技术和环形缓冲区(circularbuffer),在有限缓存情况下极大地提升了3d图像处理中的缓存利用率,减少了对重叠部分的处理,从而整体上减轻图像处理中带宽消耗和读写延迟问题。

为实现上述目的及其他相关目的,本发明提供一种3d图像处理中数据读写方法,包括以下步骤:基于垂直滑动技术对3d图像进行水平方向的划分,将所述3d图像划分为至少两个子图;对于每个子图,将所述子图的处理数据存储至循环缓冲区;处理完所述子图后,在所述循环缓冲区中保留下一个子图所需的重叠部分数据;将图像处理算法的多层网络划分为至少两个分段,使得每个分段中相邻层之间的数据仅通过缓存交互,不经过ddr交互。

于本发明一实施例中,每个子图占用的环形缓冲区的大小为subimagexsize*(subimageysize+overlapsize)*subimagezsize,其中,subimagexsize、subimageysize、subimagezsize和overlapsize分别为子图x向大小、y向大小、z向大小和重叠部分大小。

于本发明一实施例中,在每个分段中,除最后一层外的每一层的输出数据写入缓存中,除第一层以外的每一层都从所述缓存中读取数据。

于本发明一实施例中,应用于神经网络的3d图像处理。

对应地,本发明提供一种3d图像处理中数据读写系统,包括循环缓存模块和分段缓存模块;

所述循环缓存模块用于基于垂直滑动技术对3d图像进行水平方向的划分,将所述3d图像划分为至少两个子图;对于每个子图,将所述子图的处理数据存储至循环缓冲区;处理完所述子图后,在所述循环缓冲区中保留下一个子图所需的重叠部分数据;

所述分段缓存模块用于将图像处理算法的多层网络划分为至少两个分段,使得每个分段中相邻层之间的数据仅通过缓存交互,不经过ddr交互。

于本发明一实施例中,每个子图占用的环形缓冲区的大小为subimagexsize*(subimageysize+overlapsize)*subimagezsize,其中,subimagexsize、subimageysize、subimagezsize和overlapsize分别为子图x向大小、y向大小、z向大小和重叠部分大小。

于本发明一实施例中,在每个分段中,除最后一层外的每一层的输出数据写入缓存中,除第一层以外的每一层都从所述缓存中读取数据。

于本发明一实施例中,应用于神经网络的3d图像处理。

本发明提供一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的3d图像处理中数据读写方法。

本发明提供一种终端,包括:处理器及存储器;

所述存储器用于存储计算机程序;

所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行上述的3d图像处理中数据读写方法。

如上所述,本发明所述的3d图像处理中数据读写方法及系统、存储介质及终端,具有以下有益效果:

(1)基于3d垂直滑动技术和环形缓冲区,减少了对重叠部分的处理,在有限缓存情况下极大地提升了3d图像处理中的缓存利用率;

(2)通过对整个网络进行分析,在有限的缓存下,层之间结果不再必须用ddr交互,从而减少对ddr的访问,降低图像处理算法对带宽的需求,降低读写延迟和功耗;

(3)在硬件设计中,可以用更小的缓存(buffer)面积。

附图说明

图1显示为本发明的3d图像处理中数据读写方法于一实施例中的流程图;

图2显示为图像处理算法的数据结构示意图;

图3(a)显示为于一实施例中3d图像的垂直滑动为子图的示意图;

图3(b)显示为于另一实施例中3d图像的垂直滑动为子图的示意图;

图4显示为于一实施例中子图对应关系示意图;

图5显示为于一实施例中3d图像的循环缓冲区的示意图;

图6显示为本发明的3d图像处理中数据读写系统于一实施例中的结构示意图;

图7显示为本发明的终端于一实施例中的结构示意图。

元件标号说明

61循环缓存模块

62分段缓存模块

71处理器

72存储器

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

本发明的3d图像处理中数据读写方法及系统、存储介质及终端基于3d垂直滑动技术和环形缓冲区,在有限缓存情况下极大地提升了3d图像处理中的缓存利用率,减少了对重叠部分的处理和对ddr的访问,从而整体上减轻图像处理中带宽消耗和读写延迟问题,极大地提升了3d图像处理的速度。

如图1所示,于一实施例中,本发明的3d图像处理中数据读写方法包括以下步骤:

步骤s1、基于垂直滑动技术对3d图像进行水平方向的划分,将所述3d图像划分为至少两个子图;对于每个子图,将所述子图的处理数据存储至循环缓冲区;处理完所述子图后,在所述循环缓冲区中保留下一个子图所需的重叠部分数据。

具体的,在对3d图像进行划分的时候,按照一定3d的方块大小在垂直方向自上而下,依次进行滑动,该技术称之为垂直滑动技术。垂直滑动技术将原始的3d图像划分成上下多层,每一层包含的数据没有重叠。在划分的过程中3d滑动方块的大小固定。第一层或最后一层根据3d图像实际和大小和3d滑动方块的大小进行调整。如图3(a)所示,该例将3d图像划分成4个子图,分别记做记为subimage0,subimage1,subimage2,subimage3。

如图2所示,alu通过总线访问ddr,可以直接访问sram缓存。第一次请求从ddr中请求数据,把需要缓存数据缓存到sram中。alu再次请求数据时,如果数据位于缓存sram中,则直接从缓存sram中读取。

为了减少tile之间的overlap的重复处理。在本发明中,采用verticalsliding技术将3d图像进行水平方向的划分,将每个划分块称之为子图(subimage)。优选地,尽量使得每个subimage扁长。假设每个subimage宽和原始image宽相等,可以根据可用sram的大小计算最大subimage的高。图3(a)所示为一个典型的划分。subimage的x和z方向深度和原始image相同,但是y方向高度减少。如果算出的subimage值是负数或者0,需要将3d图像左右分开。图3(b)所示为一个左右分开的划分,将原始3d图像分成3x4个3dsubimages。

具体地,本发明在subimage的处理过程中引入circularbuffer。在处理完一个subimage,继续处理该subimage下方subimage时候,通过暂时不销毁上一个subimageoverlap行的缓存,来减少从ddr读取重叠数据。其中,每次执行时,circularbuffer中被覆盖的数据是上一个subimage已经被消费,将来不再使用的数据,这样不但节省了空间,而且减少了overlap的重复读写。在图像卷积操作中,overlap的大小和卷积核(kernel)高度相关。其中竖直划分方向上的subimage共用circularbuffer;横向上相邻的subimage需要处理overlap利用数据。具体地,假如每一个滑动窗口的高为n,卷积核高为m,那么第二层的第一行需要复用第一层的m-1行。在circularbuffer中,当第一层处理完,再处理该层下方的一层时候,从第一层的结尾开始下去第二层,遇到circularbuffer底后返回到circularbuffer头。第一层为被覆盖的刚好是第二层的第一行需要的属于第一层的末几行,从而可以节省缓存,挺高缓存利用率。

在subimage划分中,不同层之间的subimage有对应关系。如图4所示,两个层共三个subimage划分。需要说明的是,为了简单,省去给出z方向表示。假设subimage00和subimage20的高度为2,其他subimage高度为4。设定进行卷积操作时,两次卷积核为3x3,那么subimage00和subimage10对应subimage10的输入,subimage10为subimage20的输入,其他依赖关系类推。具体地,subimage11作为输入时候需要用到subimage10的内容,需要的行为overlap的行。利用circularbuffer技术,在sram中仅需要存储overlap的行和新生成的结果,不再需要存放整个原始3d图像输出。

circularbuffer的实现以整个3d图像为一个循环单位。每一个z面预留overlap行的空间。假设一个3d图像在z方向上有两个面,记做z0和z1。在y方向上有8行,记做r0到r7。将3d图像上下分为两个subimage,称为subimage0和subimage1,subimage0包含r0到r3,subimage1包含r4到r7。假设卷积核的大小为3x3x2,subimage之间的overlap为两行。circularbuffer的大小为subimagexsize*(subimageysize+overlapsize)*subimagezsize。其中,subimagexsize、subimageysize、subimagezsize和overlapsize分别为子图x向大小、y向大小、z向大小和重叠部分大小。

如图5所示,当缓存subimage0时候,在circularbuffer中的摆放预留overlap空间,在该实施例中为两行,用“empty(空)”表示。subimage0缓存后被下一层网络消费。当下次缓存subimage1时候,subimage1的每个z面会从subimage0每个z面对应empty开始,或者从对应z面最后位置开始,顺序存放,覆盖的部分刚好是subimage0已经被消费掉的部分。某个z面会遇到circular尾,会把到缓存头部进行覆盖写。每个z面未被覆盖的行则刚好为overlap所需的行。

需要说明的时,同一个3d图像划分的多个subimage的高不一定完全相同。每次处理一个subimage需要知道3dsubimage的起始地址、宽、高、幅度(stride)和输出地址信息。划分subimage后,这些参数需要正确配置。

步骤s2、将图像处理算法的多层网络划分为至少两个分段,使得每个分段中相邻层之间的数据仅通过缓存交互,不经过ddr交互。

具体地,图像处理模型往往包含多层,每层完成相应任务,相邻层之间有数据依赖关系。因此,如果相邻两层之间用ddr完成数据交互,将有较大的ddr带宽和延迟。如果中间结果全部缓存在buffer中,将占用巨大的缓存。划分为subimage后,层之间中间结果以subimage为缓存单位,不再需要对整个层全部的中间结果进行缓存。因此,本发明根据缓存buffer的大小,判断有多少层可以利用缓存进行交互。这些层的特点是第一层从ddr读取数据,将输出缓存到buffer中,中间层从buffer中读取并写入缓存中,直到最后一层数据写回到ddr中。满足上述条件的层成为分段(segment)。也就是说,分段中除最后一层外的每一层的结果写入到sram缓存中,除第一层以外的层都从sram读取数据。

划分的subimage越小,circularbuffer占用的sram就越小,也意味subimage之间overlap部分所占比重越大,有效数据占用率变小。因此,数据通过ddr缓存还是通过sram缓存具有不同的成本。不同的分段划分,会有不同的性能成本和sram利用率,故需要找到性能最优解。同时,层的划分同时关系到subimage的划分。

优选地,本发明的3d图像处理中数据读写方法应用于神经网络的3d图像处理。

如图6所示,于一实施例中,本发明的3d图像处理中数据读写系统包括循环缓存模块61和分段缓存模块62。

所述循环缓存模块61用于基于垂直滑动技术对3d图像进行水平方向的划分,将所述3d图像划分为至少两个子图;对于每个子图,将所述子图的处理数据存储至循环缓冲区;处理完所述子图后,在所述循环缓冲区中保留下一个子图所需的重叠部分数据。

所述分段缓存模块62用于将图像处理算法的多层网络划分为至少两个分段,使得每个分段中相邻层之间的数据仅通过缓存交互,不经过ddr交互。

需要说明的是,所述循环缓存模块61和分段缓存模块62的结构和原理与上述3d图像处理中数据读写方法的步骤一一对应,故在此不再赘述。

需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现,也可以全部以硬件的形式实现,还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如:x模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现。此外,x模块也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上x模块的功能。其它模块的实现与之类似。这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(applicationspecificintegratedcircuit,简称asic),一个或多个微处理器(digitalsingnalprocessor,简称dsp),一个或者多个现场可编程门阵列(fieldprogrammablegatearray,简称fpga)等。当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,如中央处理器(centralprocessingunit,简称cpu)或其它可以调用程序代码的处理器。这些模块可以集成在一起,以片上系统(system-on-a-chip,简称soc)的形式实现。

本发明的存储介质上存储有计算机程序,该程序被处理器执行时实现上述的3d图像处理中数据读写方法。

优选地,所述存储介质包括:rom、ram、磁碟、u盘、存储卡或者光盘等各种可以存储程序代码的介质。

如图7所示,于一实施例中,本发明的终端包括:处理器71及存储器72。

所述存储器72用于存储计算机程序。

所述存储器72包括:rom、ram、磁碟、u盘、存储卡或者光盘等各种可以存储程序代码的介质。

所述处理器71与所述存储器72相连,用于执行所述存储器72存储的计算机程序,以使所述终端执行上述的3d图像处理中数据读写方法。

优选地,所述处理器71可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessor,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

综上所述,本发明的3d图像处理中数据读写方法及系统、存储介质及终端基于3d垂直滑动技术和环形缓冲区,减少了对重叠部分的处理,在有限缓存情况下极大地提升了3d图像处理中的缓存利用率;通过对整个网络进行分析,在有限的缓存下,层之间结果不再必须用ddr交互,从而减少对ddr的访问,降低图像处理算法对带宽的需求,降低读写延迟和功耗;在硬件设计中,可以用更小的buffer面积。因此,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1