卷积神经网络的计算资源优化方法及系统与流程

文档序号:12272416阅读:212来源:国知局
卷积神经网络的计算资源优化方法及系统与流程
本发明涉及机器学习(MachineLearning,ML)和人工智能(ArtificialIntelligence,AI)
技术领域
,尤其涉及一种卷积神经网络(ConvolutionalNeuralNetwork,CNN)的计算资源优化方法及系统。
背景技术
:深度学习(DeepLearning,DL)是模拟人脑的思维方式和处理问题的方法。人脑的计算神经元数量是百亿量级,即使是一个“小型”的CNN所需要的计算也非常庞大,而且几乎所有的深度学习网络均运行在CPU(或CPU集群),或GPU(或GPU集群)硬件平台之上,所需要的硬件资源非常巨大,导致成本和功耗都非常大,运行速度缓慢,很多CNN在高性能的芯片平台上运行时也只能达到几帧/每秒的速度,无法进行实时处理。卷积神经网络包括卷基层和全连接层,其计算过程是逐层计算,在卷积神经网络的计算过程可以采用层间复用从而降低对处理器硬件资源的需求,即所有的卷积层依次运行在相同的模块(例如,卷积计算模块)中,所有的全连接层依次运行在相同的模块(全连接层模块)中,在设计卷积层模块和全连接层模块的时候,需要按照所有层的最大资源占用情况来设计相关参数,例如卷积核的尺寸、输入/输入Map的尺寸和数量等,卷积神经网络有一个特点:底层的Map尺寸大,但是数量少,高层的Map尺寸小,但是数量多。在层间复用方案中,需要以最大计算量的Map来设计计算模块。上述技术方案的弊端是,浪费计算资源且计算实时性差。技术实现要素:本发明的主要目的在于提供一种卷积神经网络的计算资源优化方法,旨在避免浪费计算资源且计算实时性差的弊端。为实现上述目的,本发明提供的卷积神经网络的计算资源优化方法包括以下步骤:将卷积神经网络的输入Map拆分为包括若干个子Map的子Map矩阵,其中,所述输入Map的尺寸为H×W,H>0,W>0;对每个所述子Map进行单独的卷积操作以得到每个所述子Map的卷积操作的计算结果;根据全部所述子Map的卷积操作的计算结果原位拼接成所述输入Map的卷积操作的计算结果,其中,原位拼接指将所述子Map的卷积操作的结果放在所述子Map在所述输入Map中对应的位置。优选地,所述对每个所述子Map进行单独的卷积操作以得到每个所述子Map的卷积操作的计算结果包括:对每个所述子Map进行单独的卷积操作的卷积核的尺寸为HC×HC,HC>1。优选地,所述将卷积神经网络的输入Map拆分为包括若干个子Map的子Map矩阵包括:根据所述输入Map的尺寸判断是否能将所述输入Map拆分为仅包含第一子Map的子Map矩阵,其中,所述第一子Map的尺寸为预设尺寸h×w,H>h>0,W>w>0,所述第一子Map在所述子Map矩阵中呈m行×n列分布,m=ceil(H/h)=floor(H/h),n=ceil(W/w)=floor(W/w);若是,则将所述输入Map拆分为仅包含所述第一子Map的子Map矩阵。优选地,所述根据所述输入Map的尺寸判断是否能将所述输入Map拆分为仅包含所述第一子Map的子Map矩阵还包括:若否,则将所述输入Map拆分为包括所述第一子Map、第二子Map、第三子Map及第四子Map的子Map矩阵;其中,所述第一子Map、所述第二子Map、所述第三子Map及所述第四子Map呈m’行×n’列排布;所述第二子Map、所述第三子Map及所述第四子Map的尺寸均小于所述预设尺寸;所述子Map矩阵中,第1行至第m’-1行以及第1列至第n’-1列均分布所述第一子Map,第m’行的第1列至第n’-1列均分布所述第二子Map,第n’列的第1至第m’-1行均分布所述第三子Map;第m’行的第n’列分布第四子Map;若m’=ceil(H/h)>floor(H/h)且n’=ceil(W/w)>floor(W/w),所述第二子Map的尺寸为[H-h×floor(H/h)]×w,所述第三子Map的尺寸为h×[W-w×floor(W/w)],所述第四子Map的尺寸为[H-h×floor(H/h)]×[W-w×floor(W/w)],若m’=ceil(H/h)>floor(H/h)且n’=ceil(W/w)=floor(W/w),则只存在所述第一子Map和所述第二子Map,若m’=ceil(H/h)=floor(H/h)且n’=ceil(W/w)>floor(W/w),则只存在所述第一子Map和所述第三子Map。优选地,所述将卷积神经网络的输入Map拆分为包括若干个子Map的子Map矩阵之后,还包括:在所述卷积操作需要保持卷积操作前后的所述子Map尺寸不变时,对位于所述子Map矩阵中第一行、最后一行、第一列和最后一列的所述子Map进行补零操作。优选地,所述在所述卷积操作需要保持卷积操作前后的所述子Map尺寸不变时,对位于所述子Map矩阵中第一行、最后一行、第一列和最后一列的所述子Map进行补零操作之后,还包括:对每个所述子Map进行补充相邻元素操作,以使对每个所述子Map的卷积操作能覆盖所述子Map当中的每一个元素,其中,所述补充相邻元素操作指将每个所述子Map的未补零的边缘补充相邻的子Map元素。此外,请参照图4,为实现上述目的,本发明还提供一种卷积神经网络的计算资源优化系统,所述卷积神经网络的计算资源优化系统包括:拆分模块10,用于将卷积神经网络的输入Map拆分为包括若干个子Map的子Map矩阵,其中,所述输入Map的尺寸为H×W,H>0,W>0;子Map计算模块30,用于对每个所述子Map进行单独的卷积操作以得到每个所述子Map的卷积操作的计算结果;计算结果合成模块50,用于根据全部所述子Map的卷积操作的计算结果原位拼接成所述输入Map的卷积操作的计算结果,其中,原位拼接指将所述子Map的卷积操作的结果放在所述子Map在所述输入Map中对应的位置。优选地,所述子Map计算模块包括;卷积核,用于对每个所述子Map进行单独的卷积操作,所述卷积核的尺寸为HC×HC,HC>1。优选地,所述拆分模块10还包括:判断单元,用于根据所述输入Map的尺寸判断是否能将所述输入Map拆分为仅包含第一子Map的子Map矩阵,其中,所述第一子Map的尺寸为预设尺寸h×w,H>h>0,W>w>0,所述第一子Map在所述子Map矩阵中呈m行×n列分布,m=ceil(H/h)=floor(H/h),n=ceil(W/w)=floor(W/w);均匀拆分单元,用于在能将所述输入Map拆分为仅包含所述第一子Map的子Map矩阵时,将所述输入Map拆分为仅包含所述第一子Map的子Map矩阵。优选地,所述拆分模块10还包括:非均匀拆分单元,用于在不能将所述输入Map拆分为仅包含所述第一子Map的子Map矩阵时,将所述输入Map拆分为包括所述第一子Map、第二子Map、第三子Map及第四子Map的子Map矩阵;其中,所述第一子Map、第二子Map、第三子Map及第四子Map呈m’行×n’列排布;所述第二子Map、所述第三子Map及所述第四子Map的尺寸均小于所述预设尺寸;所述子Map矩阵中,第1行至第m’-1行以及第1列至第n’-1列均分布所述第一子Map,第m’行的第1列至第n’-1列均分布所述第二子Map,第n’列的第1至第m’-1行均分布所述第三子Map;第m’行的第n’列分布第四子Map;若m’=ceil(H/h)>floor(H/h)且n’=ceil(W/w)>floor(W/w),所述第二子Map的尺寸为[H-h×floor(H/h)]×w,所述第三子Map的尺寸为h×[W-w×floor(W/w)],所述第四子Map的尺寸为[H-h×floor(H/h)]×[W-w×floor(W/w)],若m’=ceil(H/h)>floor(H/h)且n’=ceil(W/w)=floor(W/w),则只存在所述第一子Map和所述第二子Map,若m’=ceil(H/h)=floor(H/h)且n’=ceil(W/w)>floor(W/w),则只存在所述第一子Map和所述第三子Map。优选地,所述卷积神经网络的计算资源优化系统还包括:补零操作模块,用于在所述卷积操作需要保持卷积操作前后的所述子Map尺寸不变时,对位于所述子Map矩阵中第一行、最后一行、第一列和最后一列的所述子Map进行补零操作。优选地,所述卷积神经网络的计算资源优化系统还包括:补充相邻元素模块,用于对每个所述子Map进行补充相邻元素操作,以使对每个所述子Map的卷积操作能覆盖所述子Map当中的每一个元素,其中,所述补充相邻元素操作指将每个所述子Map的未补零的边缘补充相邻的子Map元素。在本发明的技术方案中,先将所述卷积神经网络的输入Map拆分为由若干个子Map构成的子Map矩阵,再对每个所述子Map进行单独处理,得到每个所述子Map的计算结果,拆分后的每个所述子Map的计算量小,因此可以根据计算量最大的所述子Map来设计系统的计算模块,同时,由于每个所述子Map的计算量小,可以设计并行计算,提升计算效率,因此计算实时性好,最后将每个所述子Map的计算结果原位拼接即可合成所述输入Map的计算结果,以实现节约计算资源和提高计算实时性的目的。附图说明图1为本发明卷积神经网络的计算资源优化方法第一实施例的流程示意图;图2为本发明卷积神经网络的计算资源优化方法一实施例的将输入Map拆分为仅包含所述第一子Map的子Map矩阵的示意图;图3为本发明卷积神经网络的计算资源优化方法另一实施例的流程示意图;图4为本发明卷积神经网络的计算资源优化系统第一实施例的功能模块示意图。本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。本发明提供一种卷积神经网络的计算资源优化方法,所述卷积神经网络包括图像输入层、多个卷积层、至少一个全连接层,并且,每两个所述卷积层中设置一激活层,或每两个所述卷积层中设置一所述激活层和一池化层。一般图像处理的流程是先对每个所述子Map进行卷积操作,再将卷积操作后的输出结果输入至激活层进行激活操作。在存在所述池化层时,激活操作的结果作为池化层的输入。所述池化层可以有效节约处理器的计算资源和使得卷积神经网络保持平移不变性。参照图1,在一实施例中,该卷积神经网络的计算资源优化方法包括以下步骤:步骤S10,将卷积神经网络的输入Map拆分为包括若干个子Map的子Map矩阵,其中,所述输入Map的尺寸为H×W,H>0,W>0;所述输入Map的尺寸H×W是根据图像分辨率、图像需要反映的物理区域大小及计算资源的大小等因素预先确定的,因此,所述输入Map的尺寸H×W是一个已知尺寸。通过卷积核对每个所述子Map进行卷积操作,直至完成所述子Map矩阵的卷积操作,卷积操作时,所述卷积核经过所述子Map矩阵的边缘,分为两种情况:所述卷积核不超出所述子Map矩阵的边缘或所述卷积核超出所述子Map矩阵的边缘。步骤S30,对每个所述子Map进行单独的卷积操作以得到每个所述子Map的卷积操作的计算结果;步骤S50,根据全部所述子Map的卷积操作的计算结果原位拼接成所述输入Map的卷积操作的计算结果,其中,原位拼接指将所述子Map的卷积操作的结果放在所述子Map在所述输入Map中对应的位置。例如,将所述输入Map拆分成5×5矩阵,得到25个子Map,对25个子Map进行单独的卷积操作以得到25个所述子Map的卷积操作的计算结果,因此,将25个所述子Map的卷积操作的结果进行原位拼接即可得到H×W的所述输入Map的计算结果。需要说明:原位拼接是指,将子Map的卷积操作的结果放在子Map在输入Map中对应的位置。在本发明的技术方案中,先将所述卷积神经网络的输入Map拆分为由若干个子Map构成的子Map矩阵,再对每个所述子Map进行单独处理,得到每个所述子Map的计算结果,拆分后的每个所述子Map的计算量小,因此可以根据计算量最大的所述子Map来设计系统的计算模块,同时,由于每个所述子Map的计算量小,可以设计并行计算,提升计算效率,因此计算实时性好,最后将每个所述子Map的计算结果原位拼接即可合成所述输入Map的计算结果,以实现节约计算资源和提高计算实时性的目的。优选地,所述对每个所述子Map进行单独的卷积操作以得到每个所述子Map的卷积操作的计算结果包括:步骤S31(图未示),对每个所述子Map进行单独的卷积操作的卷积核的尺寸为HC×HC,HC>1。请参阅图2,优选地,所述将卷积神经网络的输入Map拆分为包括若干个子Map的子Map矩阵包括:步骤S11(图未示),根据所述输入Map的尺寸判断是否能将所述输入Map拆分为仅包含第一子Map的子Map矩阵,其中,所述第一子Map的尺寸为预设尺寸h×w,H>h>0,W>w>0,所述第一子Map在所述子Map矩阵中呈m行×n列分布,m=ceil(H/h)=floor(H/h),n=ceil(W/w)=floor(W/w);m’=ceil(H/h)为对实数H/h做向上取整操作,n’=ceil(W/w)为对实数W/w做向上取整操作,floor(H/h)为对实数H/h做向下取整操作,floor(W/w)为对实数W/w做向下取整操作。具体的,所述第一子Map的尺寸为预设尺寸h×w,所述预设尺寸是根据硬件资源情况和整个所述卷积神经网络的最小Map的情况设计得到,在对所述子Map矩阵进行拆分时,希望每个所述子Map都能被拆分为预设尺寸,以得到降低硬件资源的效果。在本实施例中,预设尺寸h×w为64×48,当然,所述预设尺寸不限于此。根据所述输入Map的尺寸判断是否能将所述输入Map拆分为仅包含所述第一子Map的子Map矩阵,是指判断所述输入Map的尺寸是否能均匀拆分为行数为m,列数为n的第一子Map的矩阵,即判断H是否能被h整除,W是否能被w整除。步骤S13(图未示),若是,则将所述输入Map拆分为仅包含所述第一子Map的子Map矩阵。此时,视为对所述输入Map进行均匀拆分。例如,当所述输入Map的尺寸为320×240时,由于320能被64整除,240能被48整除,因此,所述输入Map能被均匀拆分为仅包含尺寸为64×48像素的所述第一子Map的所述子Map矩阵,且所述子Map矩阵的行数m=320/64=5,所述子Map矩阵的列数n=240/48=5,此时判断能将所述输入Map拆分为仅包含所述第一子Map的子Map矩阵。在本实施例中,所述卷积核的尺寸HC×HC为3×3,将320×240的所述输入Map均匀拆分为5×5的所述子Map矩阵后,每个所述第一子Map的尺寸为64×48。对每个所述第一子Map进行卷积操作,得到每个所述第一子Map的计算结果,得到每一个64×48的所述第一子Map的卷积操作的计算结果,然后将25个所述第一子Map的卷积操作的计算结果原位拼接起来得到320×240的所述输入Map的卷积结果。将所述输入Map均匀拆分时,由于每个所述子Map的尺寸相等,因此,系统只需要一套计算模块即可完成所述输入Map的计算过程,节约计算资源的效果显著。优选地,所述根据所述输入Map的尺寸判断是否能将所述输入Map拆分为仅包含所述第一子Map的子Map矩阵还包括:步骤S15(图未示),若否,则将所述输入Map拆分为包括所述第一子Map、第二子Map、第三子Map及第四子Map的子Map矩阵;其中,所述第一子Map、所述第二子Map、所述第三子Map及所述第四子Map呈m’行×n’列排布形成;所述第二子Map、所述第三子Map及所述第四子Map的尺寸均小于所述预设尺寸;所述子Map矩阵中,第1行至第m’-1行以及第1列至第n’-1列均分布所述第一子Map,第m’行的第1列至第n’-1列均分布所述第二子Map,第n’列的第1至第m’-1行均分布所述第三子Map;第m’行的第n’列分布第四子Map;若m’=ceil(H/h)>floor(H/h)且n’=ceil(W/w)>floor(W/w),所述第二子Map的尺寸为[H-h×floor(H/h)]×w,所述第三子Map的尺寸为h×[W-w×floor(W/w)],所述第四子Map的尺寸为[H-h×floor(H/h)]×[W-w×floor(W/w)],若m’=ceil(H/h)>floor(H/h)且n’=ceil(W/w)=floor(W/w),则只存在所述第一子Map和所述第二子Map,若m’=ceil(H/h)=floor(H/h)且n’=ceil(W/w)>floor(W/w),则只存在所述第一子Map和所述第三子Map。非均匀拆分的情况下,按照行元素是否可以均匀拆分以及列元素是否可以均匀拆分,可以分为三种情况:分别为:1、行元素和列元素都非均匀拆分;2、行元素非均匀拆分,列元素可均匀拆分;3、行元素均匀拆分,列元素非均匀拆分。此时,视为对所述输入Map进行非均匀拆分。具体的,当所述输入Map的尺寸为330×250时,由于330不能被64整除,250不能被48整除,判断不能将所述输入Map拆分为仅包含所述第一子Map的子Map矩阵,由于判断结果是否,因此,将所述输入Map进行非均匀拆分。m’=ceil(H/h)为对实数H/h做向上取整操作,n’=ceil(W/w)为对实数W/w做向上取整操作,floor(H/h)为对实数H/h做向下取整操作,floor(W/w)为对实数W/w做向下取整操作。在本实施例中,m’=ceil(H/h)=ceil(330/64)=6,n’=ceil(W/w)=ceil(250/48)=6,因此,所述子Map矩阵为6×6矩阵。所述第一子Map的尺寸同上,为64×48;所述第二子Map的尺寸为[H-h×floor(H/h)]×w=10×48;所述第三子Map的尺寸为h×[W-w×floor(W/w)]=64×10;所述第四子Map的尺寸为[H-h×floor(H/h)]×[W-w×floor(W/w)]=10×10。此时,所述子Map矩阵的第1行至第5行以及第1列至第5列均分布25个64×48的所述第一子Map,所述子Map矩阵的第6行中的第1列至第5列均分布5个64×10的所述第三子Map,所述子Map矩阵的第6列中的第1行至第5行均分布5个10×48的所述第二子Map,所述子Map矩阵的第6行中的第6列分布1个10×10的所述第四子Map。由于本实施例中,所述输入Map拆分成了尺寸不同的四种子Map,因此,完成全部的子Map运算需要四种计算模块。当只有H能被h整除,或者只有W能被w整除时,此时存在三种类型的子Map,但拆分原理相同,仍属于非均匀拆分,不再赘述。请参阅图3,优选地,所述将卷积神经网络的输入Map拆分为包括若干个子Map的子Map矩阵之后,还包括:步骤S09,在所述卷积操作需要保持卷积操作前后的所述子Map尺寸不变时,对位于所述子Map矩阵中第一行、最后一行、第一列和最后一列的所述子Map进行补零操作。其中,补零的行数为(Hc-1)/2,补零的列数为(Hc-1)/2。补零操作可以为行元素补零或列元素补零,补零的行数为(Hc-1)/2,补零的列数为(Hc-1)/2,在本实施例中Hc=3,因此补零的行数和列数分别为1。为了便于介绍,此处以包含3行×3列个子Map的子Map矩阵为例进行补零操作的详细介绍,Ai,j表示第i行,第j列个子Map,其中,3≥i≥1,3≥j≥1。A1,1A1,2A1,3A2,1A2,2A2,3A3,1A3,2A3,3对输入Map进行补零操作,当所述卷积核移动到所述子Map矩阵的边缘时会超出所述子Map矩阵的边缘,此时卷积核的中心可以扫描到所述子Map矩阵的边界像素点,此时,对所述输入Map的边缘位置进行补零操作,以使所述卷积核能得到完整的所述子Map矩阵的扫描结果。在此子Map矩阵中,位于子Map矩阵边缘的子Map为A1,1,A1,2,A1,3,A2,1,A3,1,A3,2,A2,3,A1,3,因此,需要进行补零操作的为第一行、最后一行、第一列和最后一列的子Map,即A1,1,A1,2,A1,3,A2,1,A3,1,A3,2,A2,3,A1,3。对于A2,2,由于卷积核计算时,卷积核的中心和边缘能始终位于子Map矩阵,因此,不需要对A2,2进行补零操作。同时,补零操作具体为:对A1,1的第一行以上补充1行零,以及第一列左侧补充1列零;对A1,2的第一行以上补充1列零;对A1,3的第一行以上补充1行零,以及最后一列右侧补充1列零;对A2,1的第一列左侧补充1列零;对A2,3的最后一列右侧补充1列零;对A3,1的最后一列以下补充1列零,以及第一列左侧补充1列零;对A3,2的最后一列以下补充1列零;对A3,3的最后一列以下补充1列零,以及最后一列右侧补充1列零。优选的,所述在所述卷积操作需要保持卷积操作前后的所述子Map尺寸不变时,对位于所述子Map矩阵中第一行、最后一行、第一列和最后一列的所述子Map进行补零操作之后,还包括:对每个所述子Map进行补充相邻元素操作,以使对每个所述子Map的卷积操作能覆盖所述子Map当中的每一个元素,其中,所述补充相邻元素操作指将每个所述子Map的未补零的边缘补充相邻的子Map元素。以上述子Map矩阵Ai,j为例,若要使卷积操作前后的子Map矩阵尺寸不变,对每个子Map进行单独的卷积操作时,需要能对子Map当中的每一个元素进行卷积计算,当卷积核的中心位于子Map矩阵的边缘时,由于卷积核的边缘超出了子Map的元素范围,因此得到的卷积计算结果是不完整的,此时,子Map的已经进行补零操作的边缘可以克服卷积核的边缘超出子Map边缘的情况,只需要对子Map的未补零的边缘进行补充相邻元素操作即可。补充相邻元素中,补充的相邻行元素为HC-1,补充的相邻列元素为HC-1。补充相邻元素的操作是为了保证相邻子Map之间的卷积操作的结果是正确的,最终才能将每个所述子Map原位拼接成所述输入Map。对位于子Map矩阵边缘位置的子Map进行补零操作和补充相邻元素操作,以及对位于子Map矩阵非边缘位置的子Map仅进行补充相邻元素操作后,得到的每个子Map矩阵的尺寸为(h+HC-1)×(w+HC-1)。在对每个子Map进行卷积操作时,卷积核只需扫描属于每个子Map的元素,并不需要扫描其补零元素、补充的相邻行元素和补充的相邻列元素,补零元素、补充的相邻行元素和补充的相邻列元素只是为了保证对子Map的边缘元素做卷积操作时能够得到正确的计算结果,因为边缘元素的卷积操作需要利用补零元素、补充的相邻行元素或补充的相邻列元素。应当注意,对所述输入Map进行均匀拆分或非均匀拆分两种情况下,均需要借用相邻子Map的行元素或列元素。此外,为实现上述目的,本发明还提供一种卷积神经网络的计算资源优化系统,所述卷积神经网络包括图像输入层、多个卷积层、至少一个全连接层,并且,每两个所述卷积层中设置一激活层,或每两个所述卷积层中设置一所述激活层和一池化层。一般图像处理的流程是先对每个所述子Map进行卷积操作,再将卷积操作后的输出结果输入至激活层进行激活操作。在存在所述池化层时,激活操作的结果作为池化层的输入。所述池化层可以有效节约处理器的计算资源和使得卷积神经网络保持平移不变性。参照图4,在一实施例中,本发明提供的卷积神经网络的计算资源优化系统包括:拆分模块10,用于将卷积神经网络的输入Map拆分为包括若干个子Map的子Map矩阵,其中,所述输入Map的尺寸为H×W,H>0,W>0;所述输入Map的尺寸H×W是根据图像分辨率、图像需要反映的物理区域大小及计算资源的大小等因素预先确定的,因此,所述输入Map的尺寸H×W是一个已知尺寸。通过卷积核对每个所述子Map进行卷积操作,直至完成所述子Map矩阵的卷积操作,卷积操作时,所述卷积核经过所述子Map矩阵的边缘,分为两种情况:所述卷积核不超出所述子Map矩阵的边缘或所述卷积核超出所述子Map矩阵的边缘。子Map计算模块30,用于对每个所述子Map进行单独的卷积操作以得到每个所述子Map的卷积操作的计算结果;计算结果合成模块50,用于根据全部所述子Map的卷积操作的计算结果原位拼接成所述输入Map的卷积操作的计算结果,其中,原位拼接指将所述子Map的卷积操作的结果放在所述子Map在所述输入Map中对应的位置。例如,将所述输入Map拆分成5×5矩阵,得到25个子Map,对25个子Map进行单独的卷积操作以得到25个所述子Map的卷积操作的计算结果,因此,将25个所述子Map的卷积操作的结果进行原位拼接即可得到H×W的所述输入Map的计算结果。需要说明:原位拼接是指,将子Map的卷积操作的结果放在子Map在输入Map中对应的位置。在本发明的技术方案中,先将所述卷积神经网络的输入Map拆分为由若干个子Map构成的子Map矩阵,再对每个所述子Map进行单独处理,得到每个所述子Map的计算结果,拆分后的每个所述子Map的计算量小,因此可以根据计算量最大的所述子Map来设计系统的计算模块,同时,由于每个所述子Map的计算量小,可以设计并行计算,提升计算效率,因此计算实时性好,最后将每个所述子Map的计算结果原位拼接即可合成所述输入Map的计算结果,以实现节约计算资源和提高计算实时性的目的。优选地,所述子Map计算模块包括;卷积核,用于对每个所述子Map进行单独的卷积操作,所述卷积核的尺寸为HC×HC,HC>1。优选地,所述拆分模块还包括:判断单元(图未示),用于根据所述输入Map的尺寸判断是否能将所述输入Map拆分为仅包含第一子Map的子Map矩阵,其中,所述第一子Map的尺寸为预设尺寸h×w,H>h>0,W>w>0,所述第一子Map在所述子Map矩阵中呈m行×n列分布,m=ceil(H/h)=floor(H/h),n=ceil(W/w)=floor(W/w);具体的,所述第一子Map的尺寸为预设尺寸h×w,所述预设尺寸是根据硬件资源情况和整个所述卷积神经网络的最小Map的情况设计得到,在对所述子Map矩阵进行拆分时,希望每个所述子Map都能被拆分为预设尺寸,以得到降低硬件资源的效果。在本实施例中,预设尺寸h×w为64×48,当然,所述预设尺寸不限于此。根据所述输入Map的尺寸判断是否能将所述输入Map拆分为仅包含所述第一子Map的子Map矩阵,是指判断所述输入Map的尺寸是否能均匀拆分为行数为m,列数为n的第一子Map的矩阵,即判断H是否能被h整除,W是否能被w整除。均匀拆分单元(图未示),用于在能将所述输入Map拆分为仅包含所述第一子Map的子Map矩阵时,将所述输入Map拆分为仅包含所述第一子Map的子Map矩阵。此时,视为对所述输入Map进行均匀拆分。例如,当所述输入Map的尺寸为320×240时,由于320能被64整除,240能被48整除,因此,所述输入Map能被均匀拆分为仅包含尺寸为64×48像素的所述第一子Map的所述子Map矩阵,且所述子Map矩阵的行数m=320/64=5,所述子Map矩阵的列数n=240/48=5,此时判断能将所述输入Map拆分为仅包含所述第一子Map的子Map矩阵。在本实施例中,所述卷积核的尺寸HC×HC为3×3,将320×240的所述输入Map均匀拆分为5×5的所述子Map矩阵后,每个所述第一子Map的尺寸为64×48。对每个所述第一子Map进行卷积操作,得到每个所述第一子Map的计算结果,得到每一个64×48的所述第一子Map的卷积操作的计算结果,然后将25个所述第一子Map的卷积操作的计算结果原位拼接起来得到320×240的所述输入Map的卷积结果。将所述输入Map均匀拆分时,由于每个所述子Map的尺寸相等,因此,系统只需要一套计算模块即可完成所述输入Map的计算过程,节约计算资源的效果显著。优选地,所述拆分模块还包括:非均匀拆分单元(图未示),用于在不能将所述输入Map拆分为仅包含所述第一子Map的子Map矩阵时,将所述输入Map拆分为包括所述第一子Map、第二子Map、第三子Map及第四子Map的子Map矩阵;其中,所述第一子Map、所述第二子Map、所述第三子Map及所述第四子Map呈m’行×n’列排布形成;所述第二子Map、所述第三子Map及所述第四子Map的尺寸均小于所述预设尺寸;所述子Map矩阵中,第1行至第m’-1行以及第1列至第n’-1列均分布所述第一子Map,第m’行的第1列至第n’-1列均分布所述第二子Map,第n’列的第1至第m’-1行均分布所述第三子Map;第m’行的第n’列分布第四子Map;若m’=ceil(H/h)>floor(H/h)且n’=ceil(W/w)>floor(W/w),所述第二子Map的尺寸为[H-h×floor(H/h)]×w,所述第三子Map的尺寸为h×[W-w×floor(W/w)],所述第四子Map的尺寸为[H-h×floor(H/h)]×[W-w×floor(W/w)],若m’=ceil(H/h)>floor(H/h)且n’=ceil(W/w)=floor(W/w),则只存在所述第一子Map和所述第二子Map,若m’=ceil(H/h)=floor(H/h)且n’=ceil(W/w)>floor(W/w),则只存在所述第一子Map和所述第三子Map。非均匀拆分的情况下,按照行元素是否可以均匀拆分以及列元素是否可以均匀拆分,可以分为三种情况:分别为:1、行元素和列元素都非均匀拆分;2、行元素非均匀拆分,列元素可均匀拆分;3、行元素均匀拆分,列元素非均匀拆分。此时,视为对所述输入Map进行非均匀拆分。具体的,当所述输入Map的尺寸为330×250时,由于330不能被64整除,250不能被48整除,判断不能将所述输入Map拆分为仅包含所述第一子Map的子Map矩阵,由于判断结果是否,因此,将所述输入Map进行非均匀拆分。m’=ceil(H/h)为对实数H/h做向上取整操作,n’=ceil(W/w)为对实数W/w做向上取整操作,floor(H/h)为对实数H/h做向下取整操作,floor(W/w)为对实数W/w做向下取整操作。在本实施例中,m’=ceil(H/h)=ceil(330/64)=6,n’=ceil(W/w)=ceil(250/48)=6,因此,所述子Map矩阵为6×6矩阵。所述第一子Map的尺寸同上,为64×48;所述第二子Map的尺寸为[H-h×floor(H/h)]×w=10×48;所述第三子Map的尺寸为h×[W-w×floor(W/w)]=64×10;所述第四子Map的尺寸为[H-h×floor(H/h)]×[W-w×floor(W/w)]=10×10。此时,所述子Map矩阵的第1行至第5行以及第1列至第5列均分布25个64×48的所述第一子Map,所述子Map矩阵的第6行中的第1列至第5列均分布5个64×10的所述第三子Map,所述子Map矩阵的第6列中的第1行至第5行均分布5个10×48的所述第二子Map,所述子Map矩阵的第6行中的第6列分布1个10×10的所述第四子Map。由于本实施例中,所述输入Map拆分成了尺寸不同的四种子Map,因此,完成全部的子Map运算需要四种计算模块。当只有H能被h整除,或者只有W能被w整除时,此时存在三种类型的子Map,但拆分原理相同,仍属于非均匀拆分,不再赘述。优选地,所述卷积神经网络的计算资源优化系统还包括:补零操作模块(图未示),用于在所述卷积操作需要保持卷积操作前后的所述子Map尺寸不变时,对位于所述子Map矩阵中第一行、最后一行、第一列和最后一列的所述子Map进行补零操作。其中,补零的行数为(Hc-1)/2,补零的列数为(Hc-1)/2。补零操作可以为行元素补零或列元素补零,补零的行数为(Hc-1)/2,补零的列数为(Hc-1)/2,在本实施例中Hc=3,因此补零的行数和列数分别为1。为了便于介绍,此处以包含3行×3列个子Map的子Map矩阵为例进行补零操作的详细介绍,Ai,j表示第i行,第j列个子Map,其中,3≥i≥1,3≥j≥1。A1,1A1,2A1,3A2,1A2,2A2,3A3,1A3,2A3,3对输入Map进行补零操作,当所述所述卷积核移动到所述子Map矩阵的边缘时会超出所述子Map矩阵的边缘,此时卷积核的中心可以扫描到所述子Map矩阵的边界像素点,此时,对所述输入Map的边缘位置进行补零操作,以使所述卷积核能得到完整的所述子Map矩阵的扫描结果。在此子Map矩阵中,位于子Map矩阵边缘的子Map为A1,1,A1,2,A1,3,A2,1,A3,1,A3,2,A2,3,A1,3,因此,需要进行补零操作的为第一行、最后一行、第一列和最后一列的子Map,即A1,1,A1,2,A1,3,A2,1,A3,1,A3,2,A2,3,A1,3。对于A2,2,由于卷积核计算时,卷积核的中心和边缘始终能位于子Map矩阵,因此,不需要对A2,2进行补零操作。同时,补零操作具体为:对A1,1的第一行以上补充1行零,以及第一列左侧补充1列零;对A1,2的第一行以上补充1列零;对A1,3的第一行以上补充1行零,以及最后一列右侧补充1列零;对A2,1的第一列左侧补充1列零;对A2,3的最后一列右侧补充1列零;对A3,1的最后一列以下补充1列零,以及第一列左侧补充1列零;对A3,2的最后一列以下补充1列零;对A3,3的最后一列以下补充1列零,以及最后一列右侧补充1列零。优选地,所述卷积神经网络的计算资源优化系统还包括:补充相邻元素模块,用于对每个所述子Map进行补充相邻元素操作,以使对每个所述子Map的卷积操作能覆盖所述子Map当中的每一个元素,其中,所述补充相邻元素操作指将每个所述子Map的未补零的边缘补充相邻的子Map元素。以上述子Map矩阵Ai,j为例,若要使卷积操作前后的子Map矩阵尺寸不变,对每个子Map进行单独的卷积操作时,需要能对子Map当中的每一个元素进行卷积计算,当卷积核的中心位于子Map矩阵的边缘时,由于卷积核的边缘超出了子Map的元素范围,因此得到的卷积计算结果是不完整的,此时,子Map的已经进行补零操作的边缘可以克服卷积核的边缘超出子Map边缘的情况,只需要对子Map的未补零的边缘进行补充相邻元素操作即可。每个子Map补充的相邻行元素为HC-1,补充的相邻列元素为HC-1。补充相邻元素的操作是为了保证相邻子Map之间的卷积操作的结果是正确的,最终才能将每个所述子Map原位拼接成所述输入Map。对位于子Map矩阵边缘位置的子Map进行补零操作和补充相邻元素操作,以及对位于子Map矩阵非边缘位置的子Map进行补充相邻元素操作,得到的每个子Map矩阵的尺寸为(h+HC-1)×(w+HC-1)。在对每个子Map进行卷积操作时,重叠元素共同组成第一'子Map卷积核只需扫描属于每个子Map的元素,并不需要扫描其补零元素、补充的相邻行元素和补充的相邻列元素,补零元素、补充的相邻行元素和补充的相邻列元素只是为了保证对子Map的边缘元素做卷积操作时能够得到正确的计算结果,因为边缘元素的卷积操作需要利用补零元素、补充的相邻行元素或补充的相邻列元素。应当注意,对所述输入Map进行均匀拆分或非均匀拆分两种情况下,均需要借用相邻子Map的行元素或列元素。对于如何根据子Map的卷积计算结果合成输入Map的卷积计算结果,请参考如下实施例:原始彩色图像12×12(H×W)的RGB三通道图像:R通道图像为:117193172501861268696169122482082061151318116764720025218616963195272387737131041310111520213424149569116441148971221281972237165866415624925116122787115283824425208242282081251221293451352492091521564125319356218110792081425918359692211281882361951015011916040213474154132602062615211419135107173692546216247135118913723217323423924616019881105185103561952711317132215173041G通道图像为:1791932311177822418273150174109185371841251124223045138196225911618922623275216244100156192152184578910448195113226128156775796820414937217191157661761071021279214217922216718879141477114722775216653924410313610921814119291361738250185103204471162204022822014840103207168521723423212142130183170116241402149383212631171283240170262101121212321691291039622713617519624110515622918329122B通道图像为:对应的灰度图像为:1531851461431071731418516212014417388621621231333617386180179194971578620715973131191651371591511631107298601868519712513110211213741157125571921891709118611311988811681172091171891361336597113162932101148419897160134153154165839967682071391021899312622384175145130888813221921912033219193128151113124731351591476621311278321121971888719314216821216112599138182991671301851321062061195087卷积核3×3,Hc=3:-0.141381900.093055700.02294120-0.148683300.14467020-0.010203100.01026590-0.12336460-0.16269930直接对输入Map(灰度图像)进行卷积过程如下:1、进行补零:000000000000000153185146143107173141851621201441730088621621231333617386180179194970015786207159731311916513715915116300110729860186851971251311021121370041157125571921891709118611311988008116811720911718913613365971131620093210114841989716013415315416583009967682071391021899312622384175001451308888132219219120332191930012815111312473135159147662131127800321121971888719314216821216112599001381829916713018513210620611950870000000000000002、进行卷积操作:例如:卷积操作中左上角第一个“像素”为-1,其计算过程为:0×(-0.1413819)+0×0.0930557+0×0.0229412×0×(-0.1486833)+153×0.1446702+185×(-0.0102031)+0×0.0102659+88×(-0.1233646)+62×(-0.1626993)=-0.6964734,取整后为-1,可以不取整。其他“像素”值类似,即卷积核在补零后的输入Map上以步长为1进行滑动,并做卷积计算。补零操作的主要目的是保持卷积操作后的结果与输入Map尺寸相同,便于处理,卷积层的卷积操作也可以不补零,但卷积操作的输出结果的尺寸会变小。直接对输入Map进行卷积操作,需要较多的硬件资源才能实现,为了在只用较少,或只有较少资源时实现大的Map的卷积操作,可以对输入Map进行拆分,对拆分后的子Map做卷积操作,然后合成输入Map的卷积操作的结果。将输入Map拆分成多个子Map,子Map大小为6×6(即h×w),则m=H/h=2,n=W/w=2,即均匀拆分为4个子Map;第1个子Map:153185146143107173886216212313336157862071597313111072986018685411571255719218981168117209117189第2个子Map:第3个子Map:93210114841989799676820713910214513088881322112815111312473135321121971888719313818299167130185第4个子Map:1601341531541658318993126223841759219120332191931591476621311278142168212161125991321062061195087对每个子Map进行补零和补充相邻元素后,进行卷积操作,补零是为了保持卷积操作的计算结果与子Map的尺寸相同,此外,补充相邻元素则是为了保证子Map边缘元素的卷积操作的计算结果正确,从而能够合成输入Map的计算结果。相邻数据的列数和行数等于Hc-1=2;第1个子Map补零和补充相邻元素后:000000000153185146143107173141088621621231333617301578620715973131191011072986018685197041157125571921891700811681172091171891360932101148419897160第2个子Map补零和补充相邻元素后:第3个子Map补零和补充相邻元素后:081168117209117189136093210114841989716009967682071391021890145130888813221920128151113124731351590321121971888719314201381829916713018513200000000第4个子Map补零和补充相邻元素后:189136133659711316209716013415315416583010218993126223841750219219120332191930135159147662131127801931421682121611259901851321062061195087000000000第1个子Map与第2个子Map之间的列相邻元素=2,相邻数据为:00173141361731311918519718917018913697160第1个子Map与第3个子Map之间的行相邻元素=2,相邻数据为:0811681172091171891360932101148419897160对第1个子Map运用同一个卷积核做卷积操作,计算结果为:-1-31-47-37-29-24-3-50-47-42-34-596-404-54-55-461-56-9-45-29-60-21-30-52-37-15-61-28-21-45-38-41-33可见,这与直接在输入Map上做卷积运算的结果是一致的,将4个子Map的卷积操作的结果按照子Map在输入Map上的位置合并,即可得到输入Map的卷积操作的计算结果。非均匀拆分与均匀拆分的原理相同,只是子Map的尺寸不完全一致。以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域
,均同理包括在本发明的专利保护范围内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1