基于卷积神经网络的图像处理方法及装置与流程

文档序号:18756400发布日期:2019-09-24 22:29阅读:156来源:国知局
基于卷积神经网络的图像处理方法及装置与流程

本发明涉及图像处理领域,尤其涉及一种基于卷积神经网络的图像处理方法及装置。



背景技术:

本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

卷积神经网络(convolutionalneuralnetwork,cnn)是深度学习的代表算法之一。在卷积神经网络中,卷积层之后往往会加上一个池化层。卷积层用于对输入图像进行特征提取,得到特征图。池化层用于对卷积层输出的特征图进行压缩与提取,一方面使得特征图变小,简化网络计算复杂度;另一方面进行特征压缩,提取主要特征。

需要说明的是,实现池化功能的池化模块的硬件部分由数据缓存模块与数据处理模块构成。其中,模块的工作方式取决于图像数据输入的方式。图1为现有技术提供的一种图像数据的池化处理示意图,如图1所示,设定对图像数据进行池化运算的池化窗口为(poolingstride=2,poolingsize=2),其中,poolingstride表示池化窗口的步长,poolingsize表示池化窗口的大小,在不考虑通道数量的情况下,对图1所示的图像进行最大值池化运算,则相当于需要计算max(a,b,h,i)、max(c,d,j,k)等。

如图1所示,当图像数据的输入顺序为(a,b,h,i,c,d,j,k,…)时,需要池化处理的数据非常简单(即将每次到来的数据与之前的数据作比较,每四个数取一个最大值即可),这种情况下,数据缓存模块的容量只需要1个数据大小的空间,池化模块在硬件上实现的功能也相对简单。而当图像数据的输入顺序为(a,b,c,d,e,f,g,h,…)时,即在实际图像每一行全部输入完成以后再来下一行数据的情况下,需要缓存(a,b)的最大值,当(h,i)的最大值被算出来后,所占用的数据缓存空间才能被释放。因而,池化模块所需的数据缓存空间取决于实际图像一行的大小。同理,当图像数据的输入顺序为(a,h,o,v,…b,i,p,w,…)时,池化模块所需的数据缓存空间取决于实际图像一列的大小。

由上分析可知,池化模块实现池化时数据缓存容量(也即缓存空间的大小)取决与卷积模块输出数据到来的方式。由于硬件的资源有限(例如,asic或fpga),在对池化模块进行设计时更倾向于较高的资源利用率,因而,如何对池化模块的数据输入方式进行优化,以降低数据缓存空间,是亟待要解决的问题。



技术实现要素:

本发明实施例提供一种基于卷积神经网络的图像处理方法,用以解决现有卷积神经网络中池化层直接对卷积层输出的卷积运算结果进行池化运算,导致数据缓存空间较大的技术问题,该方法包括:获取待处理图像的卷积运算结果;根据卷积运算顺序,缓存待处理图像的卷积运算结果;根据池化运算顺序,读取缓存的卷积运算结果;对读取的卷积运算结果进行池化运算,得到待处理图像的池化运算结果。

本发明实施例还提供一种基于卷积神经网络的图像处理方法,用以解决现有卷积神经网络中池化层直接对卷积层输出的卷积运算结果进行池化运算,导致数据缓存空间较大的技术问题,该方法包括:根据池化运算顺序,确定卷积运算顺序;根据卷积运算顺序,输出待处理图像的卷积运算结果;对待处理图像的卷积运算结果进行池化运算,得到池化运算结果;缓存池化运算结果,并根据池化运算结果确定池化运算顺序。

本发明实施例还提供一种基于卷积神经网络的图像处理装置,用以解决现有卷积神经网络中池化层直接对卷积层输出的卷积运算结果进行池化运算,导致数据缓存空间较大的技术问题,该装置包括:卷积模块,用于输出待处理图像的卷积运算结果;缓存模块,与卷积模块连接,用于根据卷积模块的卷积运算顺序,缓存卷积模块输出的卷积运算结果;池化模块,与缓存模块连接,用于根据池化模块的池化运算顺序,读取缓存的卷积运算结果,并对读取的卷积运算结果进行池化运算,得到待处理图像的池化运算结果。

本发明实施例还提供一种基于卷积神经网络的图像处理装置,用以解决现有卷积神经网络中池化层直接对卷积层输出的卷积运算结果进行池化运算,导致数据缓存空间较大的技术问题,该装置包括:卷积模块,用于根据池化运算顺序确定卷积运算顺序,并根据卷积运算顺序输出待处理图像的卷积运算结果;池化模块,与卷积模块连接,用于对卷积模块输出的卷积运算结果进行池化运算,得到池化运算结果;缓存模块,与池化模块和卷积模块分别连接,用于缓存池化模块输出池化运算结果,并根据池化模块的池化运算结果确定池化模块的池化运算顺序。

本发明实施例中,将卷积模块对待处理图像进行卷积运算的结果,根据卷积模块的卷积运算顺序进行缓存,池化模块根据池化运算顺序,读取缓存中相应的卷积运算结果,使得池化模块可以根据池化运算顺序执行池化运算,以得到待处理图像的池化运算结果。通过本发明实施例,大大降低了池化模块的数据缓存空间,提高了资源利用率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1为现有技术提供的一种图像数据的池化处理示意图;

图2为本发明实施例中提供的一种流水线结构的图像处理装置示意图;

图3为本发明实施例中提供的一种非流水线结构的图像处理装置示意图;

图4为本发明实施例中提供的一种基于卷积神经网络的图像处理方法流程图;

图5为本发明实施例中提供的又一种基于卷积神经网络的图像处理方法流程图;

图6为本发明实施例中提供的一种采用并行方式处理多通道图像数据的示意图;

图7为本发明实施例中提供的一种采用时分复用方式处理多通道图像数据的示意图;

图8为本发明实施例中提供的一种时序示意图;

图9为本发明实施例中提供的一种采用两个fifo存储器对池化运算中间结果缓存的过程示意图;

图10为本发明实施例中提供的一种采用两个fifo存储器对池化运算中间结果缓存的结果示意图;

图11为本发明实施例中提供的一种采用单个fifo存储器对池化运算中间结果缓存的过程示意图;

图12为本发明实施例中提供的一种采用单个fifo存储器对池化运算中间结果缓存的结果示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。

如本申请背景部分内容可知,现有卷积神经网络中,池化层连接在卷积层之后,直接对卷积层输出的卷积运算结果进行池化运算,由于卷积运算完成后,池化层所消耗的时间可以忽略不计,因而,这种卷积层与池化层构成的流水线(pipeline)结构,其优点是除卷积消耗的时钟周期外不会再消耗掉额外的时钟周期,从而可以节省运算的总时钟周期;其缺点是池化层需要配合卷积层的输出数据,准备缓存资源,使得数据缓存空间占用较大。

为了解决上述问题,本发明实施例提供了一种图2所示的流水线结构的图像处理装置示意图,如图2所示,该装置包括:卷积模块21、池化模块22和缓存模块23;其中,池化模块22与卷积模块21连接,缓存模块23与池化模块22和卷积模块21分别连接;

具体地,卷积模块21根据从缓存模块23获取的池化运算顺序确定卷积模块21的卷积运算顺序,并根据该卷积运算顺序输出待处理图像的卷积运算结果;池化模块22直接对卷积模块21输出的卷积运算结果进行池化运算,得到待处理图像的池化运算结果。其中,缓存模块23可以缓存池化模块22输出的池化运算结果,并根据池化运算结果确定池化模块23的池化运算顺序。

需要说明的是,图2所示的流水线结构的图像处理装置采用的是池化优先原则,即根据池化模块所需数据来调整卷积模块的输出。通过这种结构,实现了根据池化运算顺序输入数据(即卷积运算因由池化结果的分布导向,按池化要求的数据计算出卷积结果),不仅可以节省缓存资源的容量,降低数据缓存空间;而且由于卷积模块与池化模块之间采用流水线结构,可以节省运算的数据处理的总时钟周期。但这种结构,对卷积模块读取原始数据提出了更苛刻的顺序要求,即卷积模块需要更复杂的结构和预先的配置以配合池化模块。另外,缓存模块中的图像数据被读取时,计算图像地址会更复杂,可能会增加读取数据的时间和所需要的数据缓存空间。

由此,作为一种更优选的方案,本发明实施例还提供了一种图3所示的非流水线结构的图像处理装置示意图,如图3所示,该装置也包括:卷积模块21、池化模块22和缓存模块23;其中,卷积模块21和池化模块22分别与缓存模块23连接;

由图3可以看出,由于卷积模块21与池化模块22之间有缓存模块23,则卷积模块21可以无需匹配池化模块22的输出,直接根据卷积运算顺序,将待处理图像的卷积运算结果直接缓存至缓存模块23,池化模块22也无需匹配卷积模块21的输出,从缓存模块23按需根据池化运算顺序,读取缓存模块23中缓存的卷积运算结果,并对读取的卷积运算结果进行池化运算,得到待处理图像的池化运算结果。

需要说明的是,图3所示的非流水线结构的图像处理装置,使得池化模块可以根据自身需求从缓存模块中便捷、准确地取数,不仅节省了自身的缓存资源,还可以在不同的网络中可以随时调整取数方式,灵活性更强;其缺点是,相比于图2所示的流水线结构的图像处理装置,更浪费时钟周期,且对池化模块的编程也会复杂。

作为一种可选的实施例,图2和图3所示的缓存模块23均可以采用静态随机存取存储器(staticrandom-accessmemory,sram),使用这种存储器存储数据,只要保持通电,则其内部存储的数据边可恒常保持。

需要注意的是,在对网络中数据量和时钟富余的分析后,可以采取一种对asic或fpga更合适的设计。在asic或fpga实际应用中,卷积运算所消耗的资源与时间要远远大于池化运算,在更改不了卷积输出,并且为节省时钟周期采用流水线结构的方式中,如何更改池化对数据的“适应性”是提升性能的关键点。

本发明实施例还提供了一种基于卷积神经网络的图像处理方法,可以应用但不限于图3所示非流水线结构的的图像处理装置。

图4为本发明实施例中提供的一种基于卷积神经网络的图像处理方法流程图,如图4所示,该方法包括如下步骤:

s401,获取待处理图像的卷积运算结果;

s402,根据卷积运算顺序,缓存待处理图像的卷积运算结果;

s403,根据池化运算顺序,读取缓存的卷积运算结果;

s404,对读取的卷积运算结果进行池化运算,得到待处理图像的池化运算结果。

通过上述s401至s404提供的方案,将卷积模块对待处理图像进行卷积运算的结果,根据卷积模块的卷积运算顺序进行缓存,池化模块根据池化运算顺序,读取缓存中相应的卷积运算结果,使得池化模块可以根据池化运算顺序执行池化运算,以得到待处理图像的池化运算结果,大大降低了池化模块的数据缓存空间,提高了资源利用率。

本发明实施例还提供了一种基于卷积神经网络的图像处理方法,可以应用但不限于图2所示的流水线结构的图像处理装置。

图5为本发明实施例中提供的又一种基于卷积神经网络的图像处理方法流程图,如图5所示,该方法包括如下步骤:

s501,根据池化运算顺序,确定卷积运算顺序;

s502,根据卷积运算顺序,输出待处理图像的卷积运算结果;

s503,对待处理图像的卷积运算结果进行池化运算,得到池化运算结果;

s504,缓存池化运算结果,并根据池化运算结果确定池化运算顺序。

通过上述s501至s504提供的方案,根据池化模块的池化运算顺序确定卷积模块的卷积运算顺序,以便卷积模块匹配池化模块来输出待处理图像的卷积运算结果,使得池化模块可以实时根据卷积模块输出的卷积运算结果进行池化运算,得到相应的池化运算结果,将池化模块的池化运算结果缓存至缓存模块,以便缓存模块根据池化运算结果,确定下一池化运算的池化运算顺序。

需要说明的是,当本发明实施例中待处理图像为多通道图像的情况下,对待处理图像进行卷积运算的卷积运算结果中包含多个通道的图像数据。而对于多通道图像数据的池化运算,只需要复制足够多的池化模块去处理卷积运算结果中的每一通道图像数据,最终将每一通道图像数据的池化结果组合输出即可。从这里也可以看出,基于硬件实现池化时,数据缓存的容量取决于上层结果到来的方式,数据处理的复杂度取决于数据缓存的方式,而整体模块所占用的资源还取决于通道的数量。

由此,无论是图4所示的s404,还是图5所示的s503中,作为一种可选的实施方式,在对多通道图像数据的卷积运算结果进行池化运算的时候,可以具体包括如下步骤:获取卷积运算结果中包含的每一通道图像数据;对卷积运算结果中包含的每一通道图像数据进行池化运算,得到每一通道图像数据的池化运算结果;将所有通道图像数据的池化运算结果合并,得到待处理图像的池化运算结果。

可选地,在对卷积运算结果中包含的每一通道图像数据进行池化运算,得到每一通道图像数据的池化运算结果的时候,可以通过如下两种方式中的任意一种来实现:

第一种方式,基于时分复用的方式,采用一个算子对卷积运算结果中包含的每一通道图像数据进行池化运算,得到每一通道图像数据的池化运算结果。

具体地,上述方式可以具体包括:缓存卷积运算结果中包含的每一通道图像数据;采用先进先出的方式,读取缓存的每一通道图像数据;对读取的每一通道图像数据进行池化运算;缓存每一通道图像数据的池化运算结果;采用先进先出的方式,输出每一通道图像数据的池化运算结果。

第二种方式,基于并行的方式,采用多个算子对卷积运算结果中包含的每一通道图像数据进行池化运算,得到每一通道图像数据的池化运算结果。

具体地,如果算子的数量大于通道数,则直接采用倍数于通道数的算子对卷积运算结果中包含的每一通道图像数据进行池化运算,得到每一通道图像数据的池化运算结果;如果算子的数量小于通道数,则采用算子复用的方式,对卷积运算结果中包含的每一通道图像数据进行池化运算,得到每一通道图像数据的池化运算结果。

在卷积神经网络中,每一层卷积运算会根据网络配置和对应的权重数据计算出不同通道下的特征图数据。在硬件应用里,这种多通道形式的运算可以通过增加算子或者重复使用算子来完成。图6为本发明实施例中提供的一种采用并行方式处理多通道图像数据的示意图;如图6所示,假设网络中单个图像数据的宽度为16bit,当进入池化的有效数据为48bit(即3通道)时,池化模块会使用3个相同的alu计算模块(也称算子)来分别对每一通道图像数据进行池化运算,并在算出结果后,统一合并成48bit的结果池化运算结果输出,这种方式不需要额外编程,但在通道数超过了预设的算子的数量时,仍需要其他策略进行调整。

由于在大规模asic或fpga应用大量使用重复的算子的设计会显得臃肿,更加灵活地配合网络来压缩算子的数量是优化资源的一个方向。图7为本发明实施例中提供的一种采用时分复用方式处理多通道图像数据的示意图,如图7所示,同样是3通道数据送入池化模块时,池化模块只使用1个算子来进行池化运算,不过这时需要采用一个fifo存储器对进入池化模块的数据进行缓存,并每一次池化只放出16bit的数据供运算。同时需要一个fifo存储器来对每一通道的池化与运算结果进行缓存,等3通道数据结果完成时再输出完整的48bit结果。

需要注意的是,池化运算相对卷积运算简单很多,因而算子所使用的资源并不会占太多,且在时间上会节省很多,尤其对于图2所示池化模块与卷积模块直接连接的情形,池化几乎可以在卷积结束的同时完成。因而,图6所示的并行模式可以适用于通道优先的输入方式,即图像数据按每个点的通道全部输入完成以后再进行下一个点的输入。而图7所示的时分复用模式,可以适用于对时间要求不是很严格、通道数较少、资源紧张的环境中。

另外,还需要说明的是,在卷积神经网络中,由于层与层的数据通道数会不断变化,很难设定一个固定值来确定算子的数量。如果某一层的通道数大于算子的数量,则需要的一定的策略来在不增加算子数量的同时处理掉数据。由此,在基于并行的方式,采用多个算子对卷积运算结果中包含的每一通道图像数据进行池化运算的时候,如果算子的数量大于通道数,则直接采用倍数于通道数的算子对卷积运算结果中包含的每一通道图像数据进行池化运算,得到每一通道图像数据的池化运算结果;如果算子的数量小于通道数,则需要采用算子复用的方式,对卷积运算结果中包含的每一通道图像数据进行池化运算,得到每一通道图像数据的池化运算结果。

虽然复用算子来计算超出通道数的数据是比较常用的方法,但同时也会消耗掉更多的时钟周期,因而需要提前额外进行数据分割,并设计好逻辑来给算子准备数据。

(一)对于算子的数量小于通道数的情形,在进行算子复用时,需要考虑时序上是否满足要求。假设现有算子的数量为t,输入池化数据宽度为ws,图像数据宽度为wt,在计算完一次所有通道的数据时每一个算子需要重复使用的次数为n,则存在如下等式:

若n大于1,则需要进行编程对数据进行分割处理,使用fifo和存储控制器将数据分割后逐步压入算子计算,得到的结果保存至该像素点所有通道数计算完毕后再进行组合输出。这样整个池化的时间将会增加至大于n倍。如果是采用的池化模块与卷积模块直接连接的流水线结构,为了避免产生延迟,需要保证在下一次卷积计算出结果之前,池化计算完成。如图8所示,conv1、conv2和conv3代表进行了3次卷积运算,卷积运算的结果在卷积完成后输出,a、b、c和d、e、f分别代表算子进行3次重复池化操作后所占用的时间。

假设一次卷积运算所占用的时间为tc,一次池化运算所占用的时间为tp,算子需要重复使用的次数为n,则需要满足:

tc>n×tp;

当满足以上等式的情况下,重复使用算子时,不会在流水线运算过程中产生延迟。

由此,若在通道优先传输且池化模块与卷积模块为流水线结构运算模式下,如果算子数量不足够一次性算完所有数据而需要重复多次来完成运算时,需要考虑卷积所消耗的时间要大于多次算子运算总时间;需要注意的是,若不采用流水线结构运算,则不需要考虑卷积所消耗的时间。

当cnn网络中某一层所需要的通道数较小,而池化部分资源溢出时,若调整硬件上的偏重,有可能在加速池化后减少整个运算的时间。

由此,对于算子的数量大于通道数的情形,可以同时使用倍于通道数的算子数量来缩短池化的时间。因为卷积时间通常大于池化运算时间,在这种情况下,池化的输入会一直等待卷积的完成,因而,流水线结构在次不作考虑。如图3所示,池化模块的输入会经由缓存模块后得到。这样在两个方面加速了整个系统:第一,池化模块会根据最省资源的顺序从缓存模块中读取数据,这种数据输入方式能使池化模块所需缓存资源更少;第二,同时获取能使所有算子工作的数据量,加速了池化的速度。

需要注意的是,图3所示的这种结构,会同时带来缓存模块与卷积模块和池化模块传输相同的数据所造成的时间浪费,以及程序的复杂度。在实际的应用中,还应当考虑网络中存在通道数小于池化算子数量这种情况出现的频繁度来考虑是否添设这样加速的逻辑来对硬件进行优化。通常情况下,asic设计中会对特定的网络进行优化,例如通道较多的faster-rcnn网络或者通道数较少的mtcnn网络,整体的设计可能会因为数据或者计算的复杂度将资源或者富余时钟给予别的模块。

需要说明的是,在卷积模块输出待处理图像的卷积运算结果(特征图)时,可以按行或按列将卷积运算结果输入至池化模块。一种实施例中,如果卷积模块输出的数据按行输入至池化模块,则池化模块需要缓存每一行的卷积运算结果。仍以图1为例,当池化窗口为(poolingstride=2,poolingsize=3)时,需要缓存max(a,b,c)和max(c,d,e)等中间结果,而中间结果的数量与行的长度(即图像的宽)相关。同理可以得出,如果卷积模块输出的数据按行输入至池化模块,则需要缓存的数据与列的长度(即图像的的高)相关。由此,在没有将卷积模块的卷积运算结果存入缓存模块,而是直接传输给池化模块的情况下,可以选取卷积运算结果行或列(即特征图的宽或高)中较短的一边传入池化模块,以节省池化模块内部缓存的大小。

由此,上述s503可以具体包括如下步骤:获取卷积运算结果的行宽和列宽;如果行宽小于列宽,则按行对待处理图像的卷积运算结果进行池化运算;如果行宽大于列宽,则按列对待处理图像的卷积运算结果进行池化运算。

进一步地,在按行或列对待处理图像的卷积运算结果进行池化运算之后,还可以进一步缓存每行或列的池化运算中间结果,以及每行或列与下一行或列的运算结果;采用先进先出的方式,反复读取缓存的数据,直到获取到待处理图像的池化运算结果。

对于池化模块与卷积模块采用流水线结构直接连接的情形,池化窗口的步长和大小会影响到池化自身缓存资源的使用情况。下面介绍两种池化步长下池化所需缓存的数量,以尽可能减少数据缓存空间。

(1)池化窗口为(poolingstride=1,poolingsize=3)

假设图像数据的位宽为16bit,数据以通道优先的方式送入池化模块。在进行池化之前,需要准备3个与输入数据字宽相同(16bit)的寄存器,用来缓存接收到的数据;2个深度为(wi-1)的fifo存储器(即fifo_0和fifo_1)来缓存前1行暂时pooling出的值。所以2个fifo存储器是必要的,深度均为(wi-1),其中,wi表示图像的宽度。图9为本发明实施例中提供的一种采用两个fifo存储器对池化运算中间结果缓存的过程示意图,如图9所示,缓存过程如下:

①接收到第1行第1个数据a时,存入data_buf_0;

②接收到第1行第2个数据b时,存入data_buf_1;

③接收到第1行第3个数据c时,存入data_buf_2,并比较data_buf_0和data_buf_1和data_buf_2,较大值压入fifo_0,并将b存入data_buf_0,c存入data_buf_1;

④接收到第1行第4个数据d时,存入data_buf_2,并比较data_buf_0和data_buf_1和data_buf_2,较大值压入fifo_0,并将c存入data_buf_0,d存入data_buf_1;

⑤直至第1行的结果比对完成后,开始读第2行第1个数h,存入data_buf_0;

⑥接收到第2行第2个数据i时,存入data_buf_1;

⑦接收到第2行第3个数据j时,存入data_buf_2,pop出fifo_0中的1个数,并比较它和data_buf_0和data_buf_1和data_buf_2,较大值压入fifo_1,并将data_buf_0和data_buf_1和data_buf_2的值压入fifo_0;

⑧重复以上步骤,并如图10所示,在fifo_0中存入第0行结果后,在获取第1行结果同时,计算出第0行和第1行的结果,并将结果压入fifo_1,同时也将第1行的结果压入fifo_0,进行缓存。在接收第2行的结果时,pop出fifo_1中的结果与第2行比较,并将结果存入缓存模块,同时将第二行结果依次压入fifo_0。重复上述步骤利用2个fifo存储器将所有池化运算结果存入缓存模块,并发出完成中断。

(2)池化窗口为(poolingstride=2,poolingsize=3)

在进行池化之前,需要准备3个与输入数据字宽相同(16bit)的寄存器,用来缓存接收到的数据;1个深度的fifo用来缓存暂时池化出的值。图11为本发明实施例中提供的一种采用单个fifo存储器对池化运算中间结果缓存的过程示意图,如图11所示,缓存过程如下:

①接收到第1行第1个数据a时,存入data_buf_0;

②接收到第1行第2个数据b时,存入data_buf_1;

③接收到第1行第3个数据c时,存入data_buf_2,并比较data_buf_0和data_buf_1和data_buf_2,较大值压入fifo,并将c存入data_buf_0;

④接收到第1行第4个数据d时,存入data_buf_1,第1行第5个数据e时,存入data_buf_2,并比较data_buf_0和data_buf_1和data_buf_2,较大值压入fifo,并将e存入data_buf_0;

⑤重复以上步骤,如图12所示,fifo中先存入第0行结果,当第1行结果出来同时pop出数,和第1行结果进行比较,并依次压入fifo。当第2行结果出来同时pop出数,将比较大的数存入sram,同时将第2行数据压入fifo。依次重复,直至所有结果存入sram。

需要说明的是,对于通道优先(即采用多个算子对多通道图像数据进行池化运算)的情形,本发明实施例中,尽可能地使用fifo来存储中间结果,并最小化时钟周期来反复地读取fifo,从而达到更省资源的目的。

此外,还需要说明的是,在卷积神经网络中池化的方式随着网络的变化而改变。其中常见的有最大值池化、平均值池化、随机值池化。在本文中提出的池化结构中,只需要改变算子的算法,来适应不同的池化方式即可。例如最大值池化,池化缓存中仅需要一直存储最大值,并且在池化范围中不断地更新最大值即可;平均值池化需要每次存储数据占池化范围的权值,并不断相加权值得到最后的平均值;随机值池化则需每次读入数据前产生随机向量,通过随机向量来记录向量所指位置的值。池化的方式通常不是池化模块设计的瓶颈,模块在硬件应用中也不会因为池化方式的改变而做大范围的更改。根据网络所对应的池化方式改变算子的计算行为便可适应大多数池化场景。

本发明实施例还提供一种计算机设备,用以解决现有卷积神经网络中池化层直接对卷积层输出的卷积运算结果进行池化运算,导致数据缓存空间较大的技术问题,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行上述方法实施例中任意一种可选或优选的基于卷积神经网络的图像处理方法。

本发明实施例还提供一种计算机可读存储介质,用以解决现有卷积神经网络中池化层直接对卷积层输出的卷积运算结果进行池化运算,导致数据缓存空间较大的技术问题,该计算机可读存储介质存储有执行上述方法实施例中任意一种可选或优选的基于卷积神经网络的图像处理方法的计算机程序。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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