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

文档序号:18871368发布日期:2019-10-14 19:38阅读:240来源:国知局
一种基于卷积神经网络的图像处理的方法和装置与流程

本申请涉及计算机技术领域,尤其涉及一种基于卷积神经网络的图像处理的方法和装置。



背景技术:

卷积神经网络(convolutionalneuralnetwork,cnn)的深入发展,使其在图像处理、模式识别、智能机器人、自动控制、预测估计、生物、医学、经济等领域已成功地解决了许多传统计算机方法难以解决的实际问题。在实现卷积神经网络算法的模型中,卷积计算占整个算法模型90%的计算量,因此卷积层的高效计算是大幅提升cnn算法模型的计算效率的关键,通过硬件加速实现卷积计算是一种有效途径。

图1所示为传统的卷积神经网络卷积层的示意图。卷积层是输入的图像特征图(incut_fm)与权重(weights)做卷积运算得到输出的图像特征图(outcut_fm),其中incut_fm的特征层数为n,outcut_fm的特征层数为m,weights的卷积核大小为k*k,r为输入的图像特征图的高,p为输入的图像特征图的宽。卷积层的计算是三维的incut_fm(n*r*p)与四维weights(n*m*k*k)相乘得到三维的outcut_fm(m*r*p),即一个k*k的卷积核与输入的图像特征图上对应的k*k的图像内容做卷积得到一个输出点,由此可知,利用图1所示的卷积神经网络卷积层进行图像的卷积计算时,一次仅能对输入的图像特征图的一个像素点进行卷积计算,计算性能低下。



技术实现要素:

本申请实施例提供一种基于卷积神经网络的图像处理的方法和装置,以解决现有的卷积神经网络卷积层的计算性能较低的问题。

本申请实施例提供的具体技术方案如下:

第一方面,本申请实施例提供一种基于卷积神经网络的图像处理的方法,包括:获取fn帧图像特征图;对所述fn帧图像特征图中的每一帧均分成q个子图像,其中每个所述子图像的高为c个像素点,宽为p个像素点,其中,所述fn帧图像特征图中相同位置的子图像组成一个高为c个像素点,宽为p个像素点,长为fn个像素点的三维图像矩阵,其中,q,c,p均为正整数;获取预设权重矩阵,所述预设权重矩阵为fnxfn的二维矩阵;根据所述预设权重矩阵,依次对所述fn帧图像特征图中的每个所述三维图像矩阵进行矩阵乘法计算,以获得处理后的图像特征图。

该有益效果在于,在对输入的图像特征图进行卷积处理时,一次图像卷积过程能够处理一个子图像的数据,提高计算性能。

结合第一方面,一种可能的设计中,所述fn的取值包括:2,3和4中的一个。

该有益效果在于,设计fn的值为较小的值,卷积层输入输出的图像特征图的帧数一般为2,3或4的整数倍,fn基本上能够被输入的图像特征图的帧数、输出的图像特征图的帧数整除,或者余数很小,从而能够提高计算性能,节约硬件资源。

结合第一方面,一种可能的设计中,所述p的取值包括:16,32,64,128和256中的一个。

该有益效果在于,可以将每一帧图像特征图切分成图像块的方式处理。此时,此时切分的子图像与原来的图像特征图宽度相同,高度为预设的图像块的高度,这样能够将图像特征图切分成横条的图像块,一次可以处理一行的图像数据,从而与现有的图像处理框架兼容,减少存储资源。

结合第一方面,一种可能的设计中,所述图像特征图的宽与所述子图像的宽相等。

结合第一方面,一种可能的设计中,所述c为1;对应的,所述高为c个像素点,宽为p个像素点,长为fn个像素点的三维图像矩阵为宽为p个像素点,长为fn个像素点的二维图像矩阵。

结合第一方面,一种可能的设计中,当所述方法用于所述卷积神经网络的第一个神经网络层时,所述图像特征图为待处理图像。

结合第一方面,一种可能的设计中,当所述方法用于所述卷积神经网络的非第一个神经网络层时,所述获取fn帧图像特征图,包括:将在上一个邻接的神经网络层中获得的处理后的图像特征图作为所述fn帧图像特征图。

结合第一方面,一种可能的设计中,所述获取fn帧图像特征图,包括:依次获取n帧图像特征图中的图像特征图,每次获取所述fn帧图像特征图,其中,n为正整数。

实际应用中,cnn卷积层输入的图像特征图的帧数为n,在进行基于卷积神经网络的图像处理时,可以对输入的n帧图像特征图进行分组处理,每个分组中包括fn帧图像特征图,提高处理效率。

结合第一方面,一种可能的设计中,所述获得处理后的图像特征图,包括:依次存储所述处理后的图像特征图,每次存储fn帧所述处理后的图像特征图,其中,所述存储后的图像特征图为m帧,m为正整数。

第二方面,本申请实施例提供一种基于卷积神经网络的图像处理的装置,包括:

第一获取单元,用于获取fn帧图像特征图;划分单元,对所述fn帧图像特征图中的每一帧均分成q个子图像,其中每个所述子图像的高为c个像素点,宽为p个像素点,其中,所述fn帧图像特征图中相同位置的子图像组成一个高为c个像素点,宽为p个像素点,长为fn个像素点的三维图像矩阵,其中,q,c,p均为正整数;第二获取单元,用于获取预设权重矩阵,所述预设权重矩阵为fnxfn的二维矩阵;处理单元,用于根据所述预设权重矩阵,依次对所述fn帧图像特征图中的每个所述三维图像矩阵进行矩阵乘法计算,以获得处理后的图像特征图。

结合第二方面,一种可能的设计中,所述fn的取值包括:2,3和4中的一个。

结合第二方面,一种可能的设计中,所述p的取值包括:16,32,64,128和256中的一个。

结合第二方面,一种可能的设计中,所述图像特征图的宽与所述子图像的宽相等。

结合第二方面,一种可能的设计中,所述c为1;对应的,所述高为c个像素点,宽为p个像素点,长为fn个像素点的三维图像矩阵为宽为p个像素点,长为fn个像素点的二维图像矩阵。

结合第二方面,一种可能的设计中,当所述装置用于处理所述卷积神经网络的第一个神经网络层时,所述图像特征图为待处理图像。

结合第二方面,一种可能的设计中,当所述装置用于处理所述卷积神经网络的非第一个神经网络层时,所述第一获取单元在获取fn帧图像特征图时,具体用于:将在上一个邻接的神经网络层中获得的处理后的图像特征图作为所述fn帧图像特征图。

结合第二方面,一种可能的设计中,所述第一获取单元在获取fn帧图像特征图时,具体用于:依次获取n帧图像特征图中的图像特征图,每次获取所述fn帧图像特征图,其中,n为正整数。

结合第二方面,一种可能的设计中,所述处理单元在获得处理后的图像特征图时,具体用于:依次存储所述处理后的图像特征图,每次存储fn帧所述处理后的图像特征图,其中,所述存储后的图像特征图为m帧,m为正整数。

第三方面,本申请实施例提供一种图像处理设备,该设备包括处理器、存储器,其中,所述存储器中存有计算机可读程序,所述处理器通过运行所述存储器中的程序,实现第一方面涉及的基于卷积神经网络的图像处理的方法。

第四方面,本申请实施例提供一种计算机存储介质,用于储存为上述第一方面所述计算机软件指令,其包含用于执行上述方面所设计的程序。

第五方面,本申请实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。

应理解,本申请实施例的第二至五方面与本申请实施例的第一、二方面的技术方案一致,各方面及对应的可实施的设计方式所取得的有益效果相似,不再赘述。

附图说明

图1为一种卷积神经网络卷积层示意图;

图2为一种卷积神经网络的计算引擎架构图;

图3为一种卷积神经网络卷积层示意图;

图4为一种卷积神经网络的计算引擎架构图;

图5为本申请实施例中的基于卷积神经网络的图像处理的方法流程图;

图6为本申请实施例中的图像处理设备的图像处理过程示意图;

图7a、图7b和图7c为本申请实施例中输入的图像特征图、权重数据和输出的图像特征图的结构图;

图8为本申请实施例中的处理器的计算引擎架构图;

图9为本申请实施例中的基于卷积神经网络的图像处理装置结构图;

图10为本申请实施例中的基于卷积神经网络的图像处理设备结构图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

利用图1所示的卷积神经网络的卷积层所设计的计算引擎架构如图2所示,由k*k个乘法器以及(k*k-1)个加法器组成。

由于cnn的各卷积层的卷积核k的大小不是固定的,有可能为1x1,3x3,5x5甚至到11x11。该技术的计算引擎必须要支持各种大小的卷积核,即在芯片设计时需要设计为最大的卷积核,比如限定最大支持7x7,这样在硬件上一个pe需要49个乘法器,对于卷积核为1x1以及3x3的卷积层,只用到其中1个或者9个乘法器单元,该情况下利用率只有2%以及18%,这样就会存在很大的资源浪费,不能高效利用硬件资源,降低系统性能。

目前还有一种改进的卷积神经网络的计算方法是,按照分块处理的思想,将需要进行卷积运算原图划分成许多tr*tc的图像块,对于每一个图像块,其处理过程如图3所示。具体的实现过程为:将输入的图像特征图的层数n以tn为单位进行划分,每tn层作为一个单元,同理将输出的图像特征图的层数m以tm为单位进行划分,每tm层作为一个单元。具体的,对应的实现卷积运算的计算引擎架构如图4所示:该计算引擎处理输入的图像特征图的一个点对应的tn层特征图,输出一个点对应的tm层特征图。该计算引擎有tn*tm个乘法器和(tn*tm-1)个加法器组成。

cnn各层卷积层的输入的图像特征图和输出的图像特征图的层数不同,如果tm,tn设置较小,该计算引擎的计算能力较小,性能较低。如果tm,tn设置较大会造成硬件资源的浪费。假设一种可能的设计中,设计tm=64,tn=7,这样一个计算引擎有448个乘法器。一般cnn网络中有很多卷积层中输入输出的图像特征图层数比7以及64小,并且很多不是7和64的整数倍,这样不能充分利用硬件资源造成资源浪费。例如,输入的图像特征图和输出的图像特征图的层数分别是3和6,此时只利用到448个乘法器中的18个乘法器,利用率只有4%,造成硬件资源的浪费。

由于采用现有的基于卷积神经网络的计算方法来设计的计算引擎不可避免的会出现硬件资源的浪费,鉴于此,本申请提供一种新的基于卷积神经网络的图像处理的方法和装置,在对图像进行卷积运算时能够提高计算性能。

参阅图5所示,本申请提供一种基于卷积神经网络的图像处理的方法,具体包括如下过程:

步骤50:获取fn帧图像特征图。

具体的,获取fn帧图像特征图,包括:依次获取n帧图像特征图中的图像特征图,每次获取所述fn帧图像特征图,其中,n为正整数。

实际应用中,cnn卷积层输入的图像特征图的帧数为n,在进行基于卷积神经网络的图像处理时,可以对输入的n帧图像特征图进行分组处理,每个分组中包括fn帧图像特征图,提高处理效率。

其中,所述fn的取值包括:2,3和4中的一个。这样设计fn的原因是,cnn卷积层输入输出的图像特征图的帧数一般为2,3或4的整数倍,fn基本上能够被输入的图像特征图的帧数n、输出的图像特征图的帧数m整除,或者余数很小,从而能够提高计算性能,节约硬件资源。

步骤51:对所述fn帧图像特征图中的每一帧均分成q个子图像,其中每个所述子图像的高为c个像素点,宽为p个像素点,其中,所述fn帧图像特征图中相同位置的子图像组成一个高为c个像素点,宽为p个像素点,长为fn个像素点的三维图像矩阵,其中,q,c,p均为正整数。

可选的,所述p的取值包括:16,32,64,128和256中的一个;所述图像特征图的宽与所述子图像的宽相等。

这样,可以将每一帧图像特征图切分成图像块(stripe)的方式处理。此时,此时切分的子图像与原来的图像特征图宽度相同,高度为预设的图像块的高度,这样能够将图像特征图切分成横条图像块,一次可以处理一行的图像数据。

一种可能的设计中,所述c为1;对应的,所述高为c个像素点,宽为p个像素点,长为fn个像素点的三维图像矩阵为宽为p个像素点,长为fn个像素点的二维图像矩阵。

步骤52:获取预设权重矩阵,所述预设权重矩阵为fnxfn的二维矩阵。

步骤53:根据所述预设权重矩阵,依次对所述fn帧图像特征图中的每个所述三维图像矩阵进行矩阵乘法计算,以获得处理后的图像特征图。

进一步的,当图5所示的方法用于所述卷积神经网络的第一个神经网络层时,所述图像特征图为待处理图像。当图5所示的方法用于所述卷积神经网络的非第一个神经网络层时,所述获取fn帧图像特征图,包括:将在上一个邻接的神经网络层中获得的处理后的图像特征图作为所述fn帧图像特征图。

具体的,步骤53中所述获得处理后的图像特征图,包括:依次存储所述处理后的图像特征图,每次存储fn帧所述处理后的图像特征图,其中,所述存储后的图像特征图为m帧,m为正整数。

基于图5所示的方法,本申请实施例提出一种新的图像处理设备,该图像处理设备包括存储器和处理器其中,该图像处理设备接收的输入的图像特征图(incut_fm)的帧数为n,输出的图像特征图(outcut_fm)的帧数为m,权重的卷积核大小为k*k,该图像处理设备的工作流程可以参阅图6所示。

s101:接收输入的n帧图像特征图,如图7a所示。

输入的图像特征图即为n*p*c的三维数据,即每个特征图的大小为p*c,总共有n帧图像特征图,c为图像特征图的高度,p为图像特征图的宽度。

s102:获取权重数据。

其中,权重数据是一个四维的矩阵,由m*n个k*k的卷积核组成,即m*n*k*k的四维矩阵,如图7b所示。

s103:将输入的n帧图像特征图和权重数据存储到存储器中。

图像特征图在存储器中的存储格式为按照从第一幅图像特征图到第n幅图像特征图的顺序,每一幅图像特征图按照从左到右,从上到下的顺序逐点存储。输出的图像特征图的帧数为m,其存储方式与输入的图像特征图类似。

权重数据在存储器中的存储顺序为先存储k*k这两维的数据,然后存储n维的数据,最后存储m维的数据。

s104:处理器调用存储器中存储的图像特征图,在存储器中获取输入的图像特征图的基本单元。

其中,图像特征图的基本单元为:相邻fn帧图像特征图上对应的p个像素点所组成的fn*p的二维图像矩阵,其中p设置为每个图像块的一行的宽度。

具体的,输入的图像特征图的基本单元的获取过程为:按照fn*c的二维矩阵为基本单元在输入的图像特征图上以循环分块(looptiling)的方式获取。循环的方式是先按照如图7a中箭头i1(即n)的方向,然后按照箭头i2(即c)的方向循环。首先获取第1、2、…、fn帧图像特征图的第1行的所有像素点组成的二维矩阵fn*p组成第一个输入的图像特征图基本单元;然后按照如图7a中箭头i1所示的方向移动fn帧图像特征图,即第fn+1,fn+2、…、2*fn帧图像特征图的第1行的所有像素点组成的二维矩阵fn*p组成第二个输入的图像特征图的基本单元;当所有n帧图像特征图的第一行的数据都循环完之后,按照图7a中箭头i2的方向移动到第二行,然后同理按照i1箭头所示循环。

s105:处理器调用存储器中存储的权重数据,在存储器中获取权重数据的基本单元。

其中,权重数据的基本单元为:fn*fn个权重点所组成的二维矩阵。

具体的,权重数据的基本单元获取过程为:按照fn*fn*1*1为基本单元在存储器存储的四维权重数据上以循环分块(looptiling)的方式获取。权重数据的循环方式有两种方式,一种是先沿如图7b中箭头w1(即k*k)的方向循环,然后按照箭头w2(即n)的方向循环,最后按照箭头w3(即m)的方向循环;另一种是先沿如图7b中箭头w1(即k*k)的方向循环,然后按照箭头w3(即m)的方向循环,最后按照箭头w2(即n)的方向循环。

s106:处理器对图像特征图的基本单元和权重数据的基本单元进行乘法计算,以输出图像特征图的基本单元。

其中:输出的图像特征图的基本单元和输入的图像特征图的基本单元的数据格式相同,均为:相邻fn帧图像特征图上对应的p个像素点所组成的fn*p的二维矩阵。

s107:将输出的图像特征图的基本单元存储到存储器中。

具体的,输出的图像特征图的基本单元的存储方式为:将输出的图像特征图的基本单元以fn*p为基本单元按照循环分块的方式填充到输出的图像特征图中,循环的方式是先按照如图7c中箭头o1(即m)的方向,然后按照箭头o2(即c)的方向循环。

s108:判断处理器是否应用在卷积神经网络的最后一个神经网络层,若是,则执行s109;否则将输出的图像特征图作为下一个神经网络层的输入的图像特征图返回执行s104。

s109:将输出的图像特征图作为图像处理设备的输出图像进行输出。

采用本申请的图像处理方法设计的处理器能够架构输入的图像特征图的基本单元和权重数据的基本单元,进行乘法运算,得到输出的特种功能图基本单元,其处理器的计算引擎架构如图8所示:

该计算引擎架构由p*fn*fn个乘法器和p*fn*(fn-1)个加法器组成。输入的图像特征图的基本单元:fn*p个二维数据和权重数据的基本单元:fn*fn个二维数据分配到对应的乘法器上进行乘法运算,再将中间结果分配到对应的加法器上进行加法运算,得到输出的图像特征图的基本单元。

fn在具体实施中,设置为较小的值,具体设置为2,3或者4。cnn卷积层的输入输出的图像特征图层数一般为2或者3的整数倍,fn基本上能被m、n整除或者余数很小,因此,能够提高充分利用处理器中硬件资源,提高资源利用率,达到更高的计算性能。

一种可能的设计中,p在具体实施中设置为每个图像块的宽度,这样计算引擎一次能够处理一行的图像数据。在硬件实现上,在应将资源允许的情况下,比较容易扩展,只需要增大p即可。

基于上述方法实施例,如图9所示,本申请实施例提供一种基于卷积神经网络的图像处理的装置900,该装置900包括第一获取单元901、划分单元902、第二获取单元903、处理单元904,其中:

第一获取单元901,用于获取fn帧图像特征图;

划分单元902,对所述fn帧图像特征图中的每一帧均分成q个子图像,其中每个所述子图像的高为c个像素点,宽为p个像素点,其中,所述fn帧图像特征图中相同位置的子图像组成一个高为c个像素点,宽为p个像素点,长为fn个像素点的三维图像矩阵,其中,q,c,p均为正整数;

第二获取单元903,用于获取预设权重矩阵,所述预设权重矩阵为fnxfn的二维矩阵;

处理单元904,用于根据所述预设权重矩阵,依次对所述fn帧图像特征图中的每个所述三维图像矩阵进行矩阵乘法计算,以获得处理后的图像特征图。

可选的,所述fn的取值包括:2,3和4中的一个。

可选的,所述p的取值包括:16,32,64,128和256中的一个。

可选的,所述图像特征图的宽与所述子图像的宽相等。

可选的,所述c为1;对应的,所述高为c个像素点,宽为p个像素点,长为fn个像素点的三维图像矩阵为宽为p个像素点,长为fn个像素点的二维图像矩阵。

可选的,当所述装置用于处理所述卷积神经网络的第一个神经网络层时,所述图像特征图为待处理图像。

可选的,当所述装置用于处理所述卷积神经网络的非第一个神经网络层时,所述第一获取单元901在获取fn帧图像特征图时,具体用于:将在上一个邻接的神经网络层中获得的处理后的图像特征图作为所述fn帧图像特征图。

可选的,所述第一获取单元901在获取fn帧图像特征图时,具体用于:

依次获取n帧图像特征图中的图像特征图,每次获取所述fn帧图像特征图,其中,n为正整数。

可选的,所述处理单元904在获得处理后的图像特征图时,具体用于:

依次存储所述处理后的图像特征图,每次存储fn帧所述处理后的图像特征图,其中,所述存储后的图像特征图为m帧,m为正整数。

需要说明的是,本申请实施例中的装置900的各个单元的功能实现以及交互方式可以进一步参照相关方法实施例的描述,在此不再赘述。

根据同一发明构思,本申请实施例还提供一种图像处理设备1000,如图10所示,该图像处理设备1000包括处理器1001和存储器1002,执行本发明方案的程序代码保存在存储器1002中,用于指令处理器1001执行图5所示的图像处理方法。

本申请还可以通过对处理器进行设计编程,将图5所示的方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图5所示的方法。

可以理解的是,本申请实施例上述处理器可以是一个cpu,dsp,asic,或一个或多个用于控制本发明方案程序执行的集成电路。计算机系统中包括的一个或多个存储器,可以是只读存储器(英文:read-onlymemory,简称rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(英文:randomaccessmemory,简称:ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是磁盘存储器。这些存储器通过总线与处理器相连接,或者也可以通过专门的连接线与处理器连接。

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

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

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

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

显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

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