本发明涉及卷积神经网络fpga加速
技术领域:
:,尤指一种基于卷积神经网络的图像处理方法及图像处理装置。
背景技术:
::随着科学技术的发展,越来越多的终端开始利用卷积神经网络来进行机器学习,以完成图像识别(比如人脸识别和物体检测)等等。而卷积神经网络(convolutionalneuralnetwork,cnn)的本质即卷积计算。而现场可编程门阵列(fieldprogrammablegatearray,fpga)fpga芯片中的处理单元(processingelement,pe)是卷积的基本计算单元。请参考图1,为现有技术中的一种pe的结构示意图。如图1所示,fpga芯片设置了16个卷积计算通道,每一个通道中设置了32个数字信号处理(digitalsignalprocessing,dsp)元器件,单个dsp可以做一次卷积计算,由于dsp的成本较高,所以fpga上的dsp的个数有限,进而影响卷积次数和卷积速度。技术实现要素:本发明实施例提供一种基于卷积神经网络的图像处理方法及图像处理装置,用以提高fpga卷积计算的效率。第一方面,本发明实施例提供一种基于卷积神经网络的图像处理方法,应用于现场可编程门阵列fpga中,所述fpga包括处理单元pe,所述pe包括卷积计算模块,所述卷积计算模块中包括多个对数log域累加器,所述方法包括:所述pe获取待处理图像和卷积权重;所述待处理图像呈现第一矩阵形式,所述第一矩阵为m*m*z的矩阵,所述第一矩阵中每个矩阵元为所述待处理图像的一个像素数据;所述卷积权重为n*n*z的第二矩阵;其中,m和n为大于等于2的整数,m大于等于n,z=2i,i为大于等于0的整数;所述pe将所述第一矩阵、所述第二矩阵输入所述多个log域累加器,所述多个log域累加器根据所述第一矩阵、所述第二矩阵进行卷积计算,得到第三矩阵,所述第三矩阵为(m-n+1)*(m-n+1)*j的矩阵,j为大于等z的整数;所述第三矩阵为输出的图像。可选地,所述卷积权重至少包括j个n*n*z的第二矩阵;所述卷积计算模块包括m个卷积计算通道,m小于等于j的正整数;其中,每个卷积计算通道至少包括z个log域累加器,z为大于等于1的整数;所述pe将所述第一矩阵、所述第二矩阵输入所述多个log域累加器,包括:所述pe将所述第一矩阵和所述j个n*n*z的第二矩阵中的第i个第二矩阵输入所述m个卷积计算通道中的第k通道;所述第k通道中的z个log域累加器将所述第一矩阵和所述第i个第二矩阵作卷积计算,得到第三矩阵中的第i个(m-n+1)*(m-n+1)*1子矩阵;其中,i为大于等于1小于等于j的整数,k为大于等于1小于等于m的整数。可选地,所述第k通道中的z个log域累加器将所述第一矩阵和所述第i个第二矩阵作卷积计算,得到第三矩阵中的第i个(m-n+1)*(m-n+1)*1子矩阵,包括:所述第k通道中的z个log域累加器将第四矩阵和所述第i个第二矩阵作卷积计算,得到第三矩阵中一个数据;所述第四矩阵为所述第一矩阵中n*n*z的子矩阵;所述m个通道总共得到m个(m-n+1)*(m-n+1)*1的子矩阵,所述m个子矩阵构成所述第三矩阵中的一个(m-n+1)*(m-n+1)*m子矩阵。可选地,所述第k通道中的z个log域累加器将所述第四矩阵和所述第i个第二矩阵作卷积计算,得到第三矩阵中一个数据,包括:所述z个log域累加器中的第i个log域累加器执行如下步骤:当i小于等于z时,所述第i个log域累加器将所述第四矩阵中的一个n*n*1的子矩阵、所述第i个第二矩阵中的一个n*n*1的子矩阵作卷积计算,得到第一值;所述第一值为所述z个log域累加器中的下一个log域累加器的输入值;当i等于z时,所述第i个log域累加器的输出的第一值为所述第三矩阵中的一个数据。可选地,所述第i个log域累加器将所述第四矩阵中的一个n*n*1的子矩阵、所述第i个第二矩阵中的一个n*n*1的子矩阵作卷积计算,得到第一值,包括:所述第i个log域累加器按照如下方式进行计算:所述第i个log域累加器将所述a、b和c进行二进制编码,得到公式r=2c+2(a+b);其中,c为输入值,a为所述第四矩阵中的第i个n*n*1子矩阵中的一个数据,b为所述第一个第二矩阵中的第i个n*n*1子矩阵中的一个数据;n*n个所述r的总和为所述第i个log域累加器的输出值,所述a、b、c是由所述a、b、c采用格伦布-莱斯前缀编码方法换算得到的数值。第二方面,本发明实施例提供一种基于卷积神经网络的图像处理装置,所述基于卷积神经网络的图像处理装置包括fpga,所述fpga包括处理单元,包括:所述处理单元,用于获取待处理图像和卷积权重;所述待处理图像呈现第一矩阵形式,所述第一矩阵为m*m*z的矩阵,所述第一矩阵中每个矩阵元为所述待处理图像的一个像素数据;所述卷积权重为n*n*z的第二矩阵;其中,m和n为大于等于2的整数,m大于等于n,z=2i,i为大于等于0的整数;所述处理单元包括多个log域累加器;所述处理单元还用于:将所述第一矩阵、所述第二矩阵输入所述多个log域累加器,所述多个log域累加器根据所述第一矩阵、所述第二矩阵进行卷积计算,得到第三矩阵,所述第三矩阵为(m-n+1)*(m-n+1)*j的矩阵,j为大于等z的整数;所述第三矩阵为输出的图像。可选地,所述卷积权重至少包括j个n*n*z的第二矩阵;所述处理单元还包括卷积计算模块;所述卷积计算模块包括m个卷积计算通道,m小于等于j的正整数;其中,每个卷积计算通道至少包括z个log域累加器,z为大于等于1的整数;所述处理单元在用于将所述第一矩阵、所述第二矩阵输入所述多个log域累加器时,具体用于:将所述第一矩阵和所述j个n*n*z的第二矩阵中的第i个第二矩阵输入所述m个卷积计算通道中的第k通道;所述第k通道中的z个log域累加器将所述第一矩阵和所述第i个第二矩阵作卷积计算,得到第三矩阵中的第i个(m-n+1)*(m-n+1)*1子矩阵;其中,i为大于等于1小于等于j的整数,k为大于等于1小于等于m的整数。可选地,所述第k通道中的z个log域累加器在用于将所述第一矩阵和所述第i个第二矩阵作卷积计算,得到第三矩阵中的第i个(m-n+1)*(m-n+1)*1子矩阵时,具体用于:将第四矩阵和所述第i个第二矩阵作卷积计算,得到第三矩阵中一个数据;所述第四矩阵为所述第一矩阵中n*n*z的子矩阵;所述m个通道总共得到m个(m-n+1)*(m-n+1)*1的子矩阵,所述m个子矩阵构成所述第三矩阵中的一个(m-n+1)*(m-n+1)*m子矩阵。可选地,所述第k通道中的z个log域累加器在用于将所述第四矩阵和所述第i个第二矩阵作卷积计算,得到第三矩阵中一个数据时,具体用于:所述z个log域累加器中的第i个log域累加器执行如下步骤:当i小于等于z时,所述第i个log域累加器将所述第四矩阵中的一个n*n*1的子矩阵、所述第i个第二矩阵中的一个n*n*1的子矩阵作卷积计算,得到第一值;所述第一值为所述z个log域累加器中的下一个log域累加器的输入值;当i等于z时,所述第i个log域累加器的输出的第一值为所述第三矩阵中的一个数据。可选地,所述第i个log域累加器在用于将所述第四矩阵中的一个n*n*1的子矩阵、所述第i个第二矩阵中的一个n*n*1的子矩阵作卷积计算,得到第一值时,具体用于:将所述a、b和c进行二进制编码,得到公式r=2c+2(a+b);其中,c为输入值,a为所述第四矩阵中的第i个n*n*1子矩阵中的一个数据,b为所述第一个第二矩阵中的第i个n*n*1子矩阵中的一个数据;n*n个所述r的总和为所述第i个log域累加器的输出值,所述a、b、c是由所述a、b、c采用格伦布-莱斯前缀编码方法换算得到的数值。第三方面,本发明实施例提供一种基于卷积神经网络的图像处理装置,包括处理器和存储器;其中,所述存储器用于存储一个或多个计算机程序;当所述存储器存储的一个或多个计算机程序被所述处理器执行时,使得所述基于卷积神经网络的图像处理装置实现第一方面或上述第一方面的任意一种可能的设计的方法。第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面或上述第一方面的任意一种可能的设计的方法。第五方面,本发明实施例提供一种计算机程序产品,所述计算机程序产品存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面或上述第一方面的任意一种可能的设计的方法。本发明有益效果如下:在本发明实施例提供的方案中,pe获取待处理图像和卷积权重;待处理图像呈现第一矩阵形式,第一矩阵为m*m*z的矩阵,第一矩阵中每个矩阵元为待处理图像的一个像素数据;卷积权重为n*n*z的第二矩阵;其中,m和n为大于等于2的整数,m大于等于n,z=2i,i为大于等于0的整数;pe将第一矩阵、第二矩阵输入log域累加器,log域累加器根据第一矩阵、第二矩阵进行卷积计算,得到第三矩阵,第三矩阵为(m-n+1)*(m-n+1)*j的矩阵,j为大于等z的整数;第三矩阵为输出的图像。通过这种方式,可以提高fpga芯片卷积次数和卷积速度,从而可以提高fpga卷积计算的效率。附图说明图1为现有技术中的一种pe的结构示意图;图2为本发明实施例提供的一种4×4×2的输入图像和3×3×2的卷积权重作卷积计算得到2×2×2的输出图像的示意图;图3为本发明实施例提供的一种基于卷积神经网络的图像处理方法的流程示意图;图4为本发明实施例提供一种输入的图像经过和卷积权重做卷积计算后得到输出的图像的一种示意图;图5为本发明实施例提供的一种pe的结构示意图;图6为本发明实施例提供的一种pe的结构示意图;图7为本发明实施例提供的一种pe的具体结构示意图;图8为本发明实施例提供的一种log域累加器的具体结构示意图;图9为本发明实施例提供的一种基于卷积神经网络的图像处理装置的结构示意图;图10为本发明实施例提供的一种基于卷积神经网络的图像处理装置的结构示意图。具体实施方式为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。附图中各部件的形状和大小不反映真实比例,目的只是示意说明本
发明内容。为了方便理解本发明的技术方案,下面先介绍本发明中卷积计算过程。示例性的,请参考图2,为本发明实施例提供的一种4×4×2的输入图像和3×3×2的卷积权重作卷积计算得到2×2×2的输出图像的示意图。如图2所示,输出图像中的第一个2×2×1矩阵中的第1行第1列的像素数据v1的具体计算如下:v1=p1*k1+p2*k2+p3*k3+p5*k4+p6*k5+p7*k6+p9*k7+p10*k8+p11*k9。输出图像中的第一个2×2×1矩阵中的第1行第2列的像素数据v2的具体计算如下:v2=p2*k1+p3*k2+p4*k3+p6*k4+p7*k5+p8*k6+p10*k7+p11*k8+p12*k9。以此类推,输出图像中的第一个2×2×1矩阵中的第2行第1列的像素数据v3的具体计算如下:v3=p5*k1+p6*k2+p7*k3+p9*k4+p10*k5+p11*k6+p13*k7+p14*k8+p15*k9。输出图像中的第一个2×2×1矩阵中的第2行第2列的像素数据v4的具体计算如下:v4=p6*k1+p7*k2+p8*k3+p10*k4+p11*k5+p12*k6+p14*k7+p15*k8+p16*k9。同理可得,输出图像中的第二个2×2×1矩阵中的第1行的像素数据v1-1、v1-2的具体计算如下:v1-1=p1-1*k1+p1-2*k2+p1-3*k3+p1-5*k4+p1-6*k5+p1-7*k6+p1-9*k7+p1-10*k8+p1-11*k9;v1-2=p1-2*k1+p1-3*k2+p1-4*k3+p1-6*k4+p1-7*k5+p1-8*k6+p1-10*k7+p1-11*k8+p1-12*k9。以此类推,输出图像中的第二个2×2×1矩阵中的第2行的像素数据v1-3、v1-4的具体计算如下:v1-3=p1-5*k1+p1-6*k2+p1-7*k3+p1-9*k4+p1-10*k5+p1-11*k6+p1-13*k7+p1-14*k8+p1-15*k9;v1-4=p1-6*k1+p1-7*k2+p1-8*k3+p1-10*k4+p1-11*k5+p1-12*k6+p1-14*k7+p1-15*k8+p1-16*k9。下面介绍本发明的技术方案。请参考图3所示,为本发明实施例提供的一种基于卷积神经网络的图像处理方法的流程示意图。该方法可以适用于基于卷积神经网络的图像处理装置(例如手机、ipad、电脑、机器人等终端,本发明实施例不限定),或者适用于一个fpga,fpga包括pe和存储器,存储器用于存储输入图像的矩阵以及卷积权重的矩阵等,pe用于作卷积计算,具体内容下文介绍。如图3所示,该方法包括:s301、pe获取待处理图像和卷积权重;待处理图像呈现第一矩阵形式,第一矩阵为m*m*z的矩阵,第一矩阵中每个矩阵元为待处理图像的一个像素数据;卷积权重为n*n*z的第二矩阵;其中,m和n为大于等于2的整数,m大于等于n,z=2i,i为大于等于0的整数。可选地,基于卷积神经网络的图像处理装置可以在获取待处理图像后,将待处理图像以第一矩阵(第一矩阵为m*m*z的矩阵)的形式呈现,其中,第一矩阵中每个矩阵元为待处理图像的一个像素数据(像素点)。然后,基于卷积神经网络的图像处理装置将第一矩阵和卷积权重(即n*n*z的第二矩阵)发送给pe。s302、pe将第一矩阵、第二矩阵输入log域累加器,log域累加器根据第一矩阵、第二矩阵进行卷积计算,得到第三矩阵,第三矩阵为(m-n+1)*(m-n+1)*j的矩阵,j为大于等z的整数;第三矩阵为输出的图像。可选地,pe可以用来将第一矩阵和第二矩阵作卷积计算。下面介绍pe将待处理图像(即第一矩阵)和第二矩阵做卷积计算后得到输出的图像(即第三矩阵)。示例性的,请参考图4所示,为本发明实施例提供一种输入的图像经过和卷积权重做卷积计算后得到输出的图像的一种示意图。在图4中,以输入的图像为104×104×32的矩阵(即第一矩阵为104×104×32的矩阵)、卷积权重为3×3×32的矩阵(即第二矩阵为3×3×32的矩阵)为例。需要说明的是,fpga中可以至少存储j个n*n*z的第二矩阵(例如卷积权重至少包括j个n*n*z的第二矩阵)。在图4中,以卷积权重包括64个3*3*32的第二矩阵为例。请继续参考图3所示,pe将第一矩阵和64个第二矩阵一一作卷积计算,得到第三矩阵,其中,第三矩阵为102×102×64的矩阵。具体而言,pe将第一矩阵和每个第二矩阵作卷积计算,得到102×102×1的矩阵,即第一矩阵和64个第二矩阵作卷积计算,得到64个102×102×1的矩阵。pe将64个102×102×1的矩阵叠加得到102×102×64的第三矩阵。下面介绍该pe将第一矩阵和第二矩阵作卷积计算得到第三矩阵的具体过程。示例性的,请参考图5,为本发明实施例提供的一种pe的结构示意图。如图5所示,pe(图5中以500标识pe)可以包括卷积计算模块501,其中,卷积计算模块501中可以包括log域累加器502。pe的具体结构如图6(图6为本发明实施例提供的一种pe的结构示意图)所示。如图6所示,卷积计算模块501可以包括m个卷积计算通道,如通道1、通道2……通道m,m小于等于j的正整数(在图6中以m=16为例)。其中,每个卷积计算通道至少包括z个log域累加器,z为大于等于1的整数(在图6中以z=32为例)。在pe将第一矩阵和第二矩阵作卷积计算的过程中,针对每个log域累加器执行如下步骤:可选地,pe将第一矩阵和j个n*n*z的第二矩阵中的第i个第二矩阵输入m个卷积计算通道中的第k通道;第k通道中的z个log域累加器将第一矩阵和第i个第二矩阵作卷积计算,得到第三矩阵中的第i个(m-n+1)*(m-n+1)*1子矩阵;其中,i为大于等于1小于等于j的整数,k为大于等于1小于等于m的整数。举例来说,请结合图4和图6所示,由于图6中包括16个通道,一个通道能算出一个值,且一个通道中只能使用一个滤波器进行计算,而图4中包括64个滤波器,所以图6所示的pe一个周期内16个通道只计算了16个滤波器(第二矩阵),若要计算完64个滤波器,需要4个周期。举例来说,在第一周期内,pe可以将第一矩阵和第一个第二矩阵输入通道1,通道1中的32个log域累加器将第一矩阵和第1个第二矩阵作卷积计算,得到第三矩阵中的第1个102×102×1子矩阵。pe可以将第一矩阵和第二个第二矩阵输入通道2,通道2中的32个log域累加器将第一矩阵和第2个第二矩阵作卷积计算,得到第三矩阵中的第2个102×102×1子矩阵,以此类推,pe可以将第一矩阵和第16个第二矩阵输入通道16,通道16中的32个log域累加器将第一矩阵和第16个第二矩阵作卷积计算,得到第三矩阵中的第16个102×102×1子矩阵。当pe在第一周期内完成第一矩阵和16个第二矩阵的卷积计算后,pe将16个102*102*1子矩阵进行叠加,得到102×102×16子矩阵。第二周期至第四周期内,pe可以采用与第一周期相同或者类似的方法将第一矩阵与剩下的第二矩阵进行卷积计算。最后,pe将4个102×102×16子矩阵进行叠加,得到102*102*64的第三矩阵,并将第三矩阵输出。下面介绍一个周期内一个通道将第一矩阵和第二矩阵做卷积计算的具体过程。可选地,第k通道中的z个log域累加器将第四矩阵和第i个第二矩阵作卷积计算,得到第三矩阵中一个数据;第四矩阵为第一矩阵中n*n*z的子矩阵;m个通道总共得到m个(m-n+1)*(m-n+1)*1的子矩阵,m个子矩阵构成第三矩阵中的一个(m-n+1)*(m-n+1)*m子矩阵。请继续结合图4和图6所示,以通道1为例,pe可以从第一矩阵(比如图4所示的第一矩阵)中提取3×3×32的第四矩阵,通道1中的32个log域累加器将第四矩阵和第1个第二矩阵作卷积计算,得到第三矩阵中一个数据。比如,当第四矩阵的第1行为第一矩阵的第1行,第1列为第一矩阵的第1列(即图4所示的第一矩阵中左上角的3×3×32的子矩阵)时,第四矩阵和第1个第二矩阵作卷积计算,得到第三矩阵中的一个数据为第三矩阵中第一个102×102×1子矩阵中的第1行第1列的像素数据;当第四矩阵的第1行为第一矩阵的第1行,第1列为第一矩阵的第2列时,第四矩阵和第1个第二矩阵作卷积计算,得到第三矩阵中的一个数据为第三矩阵中第一个102×102×1子矩阵中的第1行第2列的像素数据,以此类推,当第四矩阵的第一行为第一矩阵的第一行,第1列为第一矩阵的第102列时,第四矩阵和第1个第二矩阵作卷积计算,得到第三矩阵中的一个数据为第三矩阵中第一个102×102×1子矩阵中的第1行第102列的像素数据。其中,当第四矩阵的第1行为第一矩阵的第2行至102行时,通道1可以相同或者类似的方法进行卷积计算。当通道1完成第一矩阵和第一个第二矩阵的卷积计算时,总共可以得到102×102个数据(像素数据),通道将102×102个数据构成102×102×1的子矩阵,该子矩阵是第三矩阵中的一个子矩阵。以此类推,通道2至通道16可以采用与通道1相同或类似的方法进卷积计算,各得到一个102×102×1的子矩阵,16个通道总共得到16个102×102×1的子矩阵,16个子矩阵构成第三矩阵中的一个102×102×16子矩阵。那么4个周期后,得到4个102×102×16的子矩阵,构成102×102×64的矩阵,即第三矩阵。下面介绍一个周期内每个卷积计算通道中的z个log域累加器之间配合工作过程。可选地,z个log域累加器中的第i个log域累加器执行如下步骤:当i小于等于z时,第i个log域累加器将第四矩阵中的一个n*n*1的子矩阵、第i个第二矩阵中的一个n*n*1的子矩阵作卷积计算,得到第一值;第一值为z个log域累加器中的下一个log域累加器的输入值。当i等于z时,第i个log域累加器的输出的第一值为第三矩阵中的一个数据。举例来说,请继续结合图4和图6所示,以通道1为例,第一个log域累加器可以将第四矩阵中的一个3×3×1的子矩阵、第1个第二矩阵中的一个3×3×1的子矩阵作卷积计算,得到计算结果,得到第一值,其中,第一值为z个log域累加器中的下一个log域累加器的输入值(例如c2),第32个log域累加器的输出值为第三矩阵中的一个数据。通道2至通道16中的z个log域累加器的卷积计算的方法与通道1的z个log域累加器卷积计算方法相同或类似。在上述实施例中,每个通道内log域累加器的个数和卷积权重三维的个数相同,都是z。下面介绍另一实施例,在该实施例中每个通道内的log域累加器可以和卷积权重三维的个数z可以不同。为了方面描述下文中以每个通道中log域累加器的个数以q表示,即上述实施例中q=z,下面的实施例中q不等于z。当q大于z时,pe中的每个通道内前q=z的log域累加器的计算过程与前述过程相同或者类似,后续的q-z个log域累加器可以将第q个log域累加器的输出值依次输出,即最后一个log域累加器的输出值(也是第q个log域累加器的输出值)为第三矩阵中的一个数据(例如图6中的通道1中的第32个log域累加器的输出值rusult1为第三矩阵中的一个数据rcnn1),在此不重复赘述。当q<z时,pe中的每个通道中的最后一个log域累加器的多个输出值的和为第三矩阵中的一个数据。示例性的,请参考图7,为本发明实施例提供的一种pe的具体结构示意图。如图7所示,pe还可以包括fpga加法器。下面介绍当q<z时,pe中的每个通道中的计算过程。请继续参考图7所示,以通道1为例,当q=32,z=64(即第一矩阵为104×104×64的矩阵,第二矩阵为3×3×64)时,通道1需要计算两次才能将3×3×64的第四矩阵和3×3×64第二矩阵计算完成。通道1每一次计算都会输出一个结果,两次的输出结果之和为rcnn1。例如,第一次计算中,当通道1计算完第四矩阵的第一个3×3×32子矩阵和第二矩阵的第一个3×3×32子矩阵时,第32个log域累加器第一次输出的rusult1为第四矩阵的第一个3×3×32子矩阵和第二矩阵的第一个3×3×32卷积计算得到的数值。在第二次计算中,通道1的第32个log域累加器第二次输出的rusult1为第四矩阵的第二个3×3×32子矩阵和第二矩阵的第二个3×3×32卷积计算得到的数值。fpga加法器将通道1两次计算的结果相加,得到rccn1。下面介绍一个周期内每个log域累加器的具体工作过程。可选地,示例性的,请参考图8,为本发明实施例提供的一种log域累加器的具体结构示意图。如图8所示,每个log域累加器可以包括3个加法器,1个移位寄存器,1个显示查找表(look-up-table,lut)和一个d触发器(dataflip-flop)。可选地,第i个log域累加器按照如下方式进行计算:第i个log域累加器将a、b和c进行二进制编码,得到公式r=2c+2(a+b);其中,c为输入值(可以是预先设置好的值,比如经验值),a为第四矩阵中的第i个n*n*1子矩阵中的一个数据,b为第一个第二矩阵中的第i个n*n*1子矩阵中的一个数据;n*n个r的总和为第i个log域累加器的输出值,a、b、c是由a、b、c采用格伦布-莱斯前缀编码方法换算得到的数值。举例来说,请继续参考图4、图6和图8所示,当第四矩阵的第一个3×3×1子矩阵的第1行为第一矩阵的第一个104×104×1子矩阵第1行、第1列为第一矩阵的第一列时,第一个log域累加器将第四矩阵的第一个3×3×1子矩阵的第1行第1列数据(即a1)和第二矩阵的第一个3×3×1子矩阵的第1行第1列数据(即b1)进行相乘,得到一个乘积,该乘积与c1(其中,c1=0)相加,得到r0(即r0=a1*b1+c1)。第一个log域累加器将a、b、c进行二进制编码,第一个log域累加器中的第一个加法器801将二进制编码后的a转化为2a、将二进制编码后的b转化为2b、将二进制编码后的c转化为2c,并将r0=a*b+c转化为r=2c+2(a+b)。其中,指数c是由c采用格伦布-莱斯(golomb-rice)前缀编码方法换算得到的数值,指数a是由a采用格伦布-莱斯前缀编码方法换算得到的数值,指数b是由b采用格伦布-莱斯前缀编码方法换算得到的数值。为了得到r的精确值,第一个log域累加器将a、b、c转换成a1和b1、b2、b3……,第一个log域累加器中的第二个加法器802根据将r=2c+2(a+b)简化为r1=2a1(2b1+2b2+2b3+……)。第一个log域累加器经过lut803查表找到r1所对应的数值,并将r1所对应的数值输出。当第一个log域累加器完成第四矩阵的第一个3×3×1子矩阵的第1行第1列数据和第二矩阵的第一个3×3×1子矩阵的第1行第1列数据的计算时,第一个log域累加器将r1发送给移位寄存器804,移位寄存器804再将r1发送给第三个加法器805。第一个log域累加器可以采用相同或类似的方式完成第四矩阵的第1行的其它列数据和第二矩阵的第1行其它列的数据的计算。当第一个log域累加器完成第四矩阵的第1行和第二矩阵的第1行的计算时,总共得到3个r1(因为第一行只有三个数据),以此类推,当第一个log域累加器完成第四矩阵的第一个3×3×1子矩阵的其它两行和第二矩阵的第一个3×3×1子矩阵的其它两行的计算时,得到6个r1。其中,9个r1的总和为第一个log域累加器的输出值。当d触发器806检测到第三个加法器805接收到新的r1时,d触发器806可以使第三个加法器805将r1和新的r1相加。其中,新的r1为第四矩阵的第一个3×3×1子矩阵的一个数据和第二矩阵的第一个3×3×1子矩阵的一个数据的计算得到的数据。当d触发器806检测到第四矩阵的第一个3×3×1子矩阵的第3行第3列的数据和第二矩阵的第一个3×3×1子矩阵的第3行第3列的数据的计算时,d触发器806将第三个加法器805计算的最后结果输出,该最后的结果为第一个log域累加器的输出值(即第二个log域累加器的输入值c2)。第二个log域累加器至第32个log域累加器可以采用相同或类似的方法进行计算。其中,第32个log域累加器的输出值为第三矩阵中的一个数据。由前述描述内容可知,在本发明实施例中pe基本上用不到dsp,用到较多的资源为lut、移位寄存器、加法器和触发器,但是由于pe中的lut、移位寄存器、加法器和触发器的个数较多且成本较低,pe可以设置更多的卷积计算通道来作卷积计算,从而可以提高pe卷积次数和卷积速度,进而提高fpga卷积计算效率。通过以上描述可知,在本发明实施例提供的方案中,pe获取待处理图像和卷积权重;待处理图像呈现第一矩阵形式,第一矩阵为m*m*z的矩阵,第一矩阵中每个矩阵元为待处理图像的一个像素数据;卷积权重为n*n*z的第二矩阵;其中,m和n为大于等于2的整数,m大于等于n,z=2i,i为大于等于0的整数;pe将第一矩阵、第二矩阵输入log域累加器,log域累加器根据第一矩阵、第二矩阵进行卷积计算,得到第三矩阵,第三矩阵为(m-n+1)*(m-n+1)*j的矩阵,j为大于等z的整数;第三矩阵为输出的图像。通过这种方式,可以提高fpga卷积次数和卷积速度,从而可以提高fpga卷积计算效率。基于同一发明构思下,本发明实施例提供了一种基于卷积神经网络的图像处理装置。请参考图9所示,为本发明实施例提供的一种基于卷积神经网络的图像处理装置的结构示意图。如图9所示,基于卷积神经网络的图像处理装置90包括:fpga(图9中用91标识fpga),fpga包括处理单元92。可选地,处理单元92,用于获取待处理图像和卷积权重;待处理图像呈现第一矩阵形式,第一矩阵为m*m*z的矩阵,第一矩阵中每个矩阵元为待处理图像的一个像素数据;卷积权重为n*n*z的第二矩阵;其中,m和n为大于等于2的整数,m大于等于n,z=2i,i为大于等于0的整数;处理单元92包括多个log域累加器93;处理单元92还用于:将第一矩阵、第二矩阵输入多个log域累加器93,多个log域累加器93根据第一矩阵、第二矩阵进行卷积计算,得到第三矩阵,第三矩阵为(m-n+1)*(m-n+1)*j的矩阵,j为大于等z的整数;第三矩阵为输出的图像。可选地,卷积权重至少包括j个n*n*z的第二矩阵;处理单元92还包括卷积计算模块(图9中未示出);卷积计算模块包括m个卷积计算通道(图9中未示出),m小于等于j的正整数;其中,每个卷积计算通道至少包括z个log域累加器(图9中未示出),z为大于等于1的整数;处理单元92在用于将第一矩阵、第二矩阵输入多个log域累加器93时,具体用于:将第一矩阵和j个n*n*z的第二矩阵中的第i个第二矩阵输入m个卷积计算通道中的第k通道;第k通道中的z个log域累加器将第一矩阵和第i个第二矩阵作卷积计算,得到第三矩阵中的第i个(m-n+1)*(m-n+1)*1子矩阵;其中,i为大于等于1小于等于j的整数,k为大于等于1小于等于m的整数。可选地,第k通道中的z个log域累加器在用于将第一矩阵和第i个第二矩阵作卷积计算,得到第三矩阵中的第i个(m-n+1)*(m-n+1)*1子矩阵时,具体用于:将第四矩阵和第i个第二矩阵作卷积计算,得到第三矩阵中一个数据;第四矩阵为第一矩阵中n*n*z的子矩阵;m个通道总共得到m个(m-n+1)*(m-n+1)*1的子矩阵,m个子矩阵构成第三矩阵中的一个(m-n+1)*(m-n+1)*m子矩阵。可选地,第k通道中的z个log域累加器在用于将第四矩阵和第i个第二矩阵作卷积计算,得到第三矩阵中一个数据时,具体用于:z个log域累加器中的第i个log域累加器执行如下步骤:当i小于等于z时,第i个log域累加器将第四矩阵中的一个n*n*1的子矩阵、第i个第二矩阵中的一个n*n*1的子矩阵作卷积计算,得到第一值;第一值为z个log域累加器中的下一个log域累加器的输入值;当i等于z时,第i个log域累加器的输出的第一值为第三矩阵中的一个数据。可选地,第i个log域累加器在用于将第四矩阵中的一个n*n*1的子矩阵、第i个第二矩阵中的一个n*n*1的子矩阵作卷积计算,得到第一值时,具体用于:将a、b和c进行二进制编码,得到公式r=2c+2(a+b);其中,c为输入值,a为第四矩阵中的第i个n*n*1子矩阵中的一个数据,b为第一个第二矩阵中的第i个n*n*1子矩阵中的一个数据;n*n个r的总和为第i个log域累加器的输出值,a、b、c是由a、b、c采用格伦布-莱斯前缀编码方法换算得到的数值。本实施例中的基于卷积神经网络的图像处理装置90与前述图3所示的基于卷积神经网络的图像处理方法是基于同一构思下的发明,通过前述对基于卷积神经网络的图像处理方法的详细描述,本领域技术人员可以清楚的了解本实施例中基于卷积神经网络的图像处理装置90的实施过程,所以为了说明书的简洁,在此不再赘述。基于同一发明构思下,本发明实施例提供了一种基于卷积神经网络的图像处理装置。请参考图10所示,为本发明实施例提供的一种基于卷积神经网络的图像处理装置的结构示意图。如图10所示,基于卷积神经网络的图像处理装置10包括处理器11和存储器12。可选地,处理器11可以是通用的中央处理器(centralprocessingunit,cpu)或特定应用集成电路(applicationspecificintegratedcircuit,asic),可以是一个或多个用于控制程序执行的集成电路。可选地,存储器12可以包括高速随机存取存储器,还可以包括非易失存储器,例如磁盘存储器件、闪存器件或其他非易失性固态存储器件等,本发明实施例不作限定。可选地,存储器12用于存储一个或多个计算机程序;当存储器12存储的一个或多个计算机程序被处理器11执行时,使得基于卷积神经网络的图像处理装置10能够实现图3所示的实施例中的全部或部分步骤。本实施例中的基于卷积神经网络的图像处理装置10与前述图3所示的基于卷积神经网络的图像处理方法是基于同一构思下的发明,通过前述对基于卷积神经网络的图像处理方法的详细描述,本领域技术人员可以清楚的了解本实施例中基于卷积神经网络的图像处理装置10的实施过程,所以为了说明书的简洁,在此不再赘述。基于同一发明构思下,本发明实施例提供了一种计算机可读存储介质。可选地,计算机可读存储介质有计算机程序,计算机程序包括程序指令,程序指令当被计算机执行时,使计算机执行上述基于卷积神经网络的图像处理方法的步骤。由于本实施例中的计算机程序与前述图3所示的基于卷积神经网络的图像处理方法是基于同一构思下的发明,通过前述对基于卷积神经网络的图像处理方法的详细描述,本领域技术人员可以清楚的了解本实施例中计算机程序的实施过程,所以为了说明书的简洁,在此不再赘述。基于同一发明构思下,本发明实施例提供了一种计算机程序产品,计算机程序产品存储有计算机程序,计算机程序包括程序指令,程序指令当被计算机执行时,使得计算机执行上述基于卷积神经网络的图像处理方法的步骤。由于本实施例中的计算机程序产品与前述图3所示的基于卷积神经网络的图像处理方法是基于同一构思下的发明,通过前述对基于卷积神经网络的图像处理方法的详细描述,本领域技术人员可以清楚的了解本实施例中计算机程序产品的实施过程,所以为了说明书的简洁,在此不再赘述。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页12当前第1页12