本申请涉及机器学习技术领域,尤其涉及一种图像数据的卷积运算方法、装置、电子设备及存储介质。
背景技术:
随着机器学习技术的不断发展,卷积神经网络被广泛应用于社会各领域中,尤其在图像识别、视频分析、自然语言处理等领域取得了非凡的成就。高计算复杂度和高模型参数是卷积神经网络的特性,为了能将卷积神经网络部署在资源受限的边缘设备上,现有技术通常采用模型压缩的方法,在不降低模型精度的情况下,将卷积神经网络模型中不重要的权重或卷积核移除,实现模型参数稀疏化。然而,参数稀疏化仅起到了压缩模型参数存储量的效果,模型的计算量并未降低,仍然不能有效减少边缘设备的功耗。
技术实现要素:
针对上述问题,本申请提供了一种图像数据的卷积运算方法、装置、电子设备及存储介质,有利于减少卷积神经网络的运算量,从而降低边缘设备的功耗。
为实现上述目的,本申请实施例第一方面提供了一种图像数据的卷积运算方法,该方法包括:
在提取出输入图像的特征图的情况下,获取卷积神经网络中单个卷积核的非零值分布;
根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核;
将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算,并将各个所述子卷积核的卷积运算结果进行累加,得到所述单个卷积核的卷积运算结果;
将所述单个卷积核的卷积运算结果在输入通道上进行累加,得到所述输入图像在输出通道上的卷积运算结果。
结合第一方面,在一种可能的实施方式中,所述根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核,包括以下之一:
根据所述单个卷积核的非零值分布,将每一非零值拆分为所述子卷积核,得到多个所述子卷积核;
根据所述单个卷积核的非零值分布,若内存中指示的是行优先,则将水平方向上不相邻的每一非零值拆分为所述子卷积核,以及将水平方向上相邻的非零值聚合为所述子卷积核,得到多个所述子卷积核;
根据所述单个卷积核的非零值分布,若内存中指示的是列优先,则将垂直方向上不相邻的每一非零值拆分为所述子卷积核,以及将垂直方向上相邻的非零值聚合为所述子卷积核,得到多个所述子卷积核。
结合第一方面,在一种可能的实施方式中,在所述将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算之前,所述方法还包括:
确定各个所述子卷积核在所述单个子卷积核中垂直方向和水平方向的起始位置、所述单个卷积核垂直方向和水平方向的移动步长以及各个所述子卷积核垂直方向和水平方向的大小;
根据所述起始位置、所述移动步长以及所述大小获取各个所述子卷积核的所述运算范围。
结合第一方面,在一种可能的实施方式中,所述将所述单个卷积核的卷积运算结果在输入通道上进行累加,包括:
确定输入通道的数量ci;
将所述单个卷积核的卷积运算结果在ci个输入通道上进行累加。
结合第一方面,在一种可能的实施方式中,所述将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算,包括:
根据所述起始位置、所述大小获取各个所述子卷积核在所述单个卷积核中垂直方向和水平方向的位置指示;
根据所述位置指示、所述移动步长、所述运算范围、批处理数量以及输入通道获取所述运算范围内的数据;
采用预设公式将各个所述子卷积核与所述运算范围内的数据进行卷积运算。
本申请实施例第二方面提供了一种图像数据的卷积运算装置,该装置包括:
位置获取模块,用于在提取出输入图像的特征图的情况下,获取卷积神经网络中单个卷积核的非零值分布;
卷积核拆分模块,用于根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核;
第一卷积运算模块,用于将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算,并将各个所述子卷积核的卷积运算结果进行累加,得到所述单个卷积核的卷积运算结果;
第二卷积运算模块,用于将所述单个卷积核的卷积运算结果在输入通道上进行累加,得到所述输入图像在输出通道上的卷积运算结果。
本申请实施例第三方面提供了一种电子设备,该电子设备包括输入设备和输出设备,还包括处理器,适于实现一条或多条指令;以及,计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如下步骤:
在提取出输入图像的特征图的情况下,获取卷积神经网络中单个卷积核的非零值分布;
根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核;
将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算,并将各个所述子卷积核的卷积运算结果进行累加,得到所述单个卷积核的卷积运算结果;
将所述单个卷积核的卷积运算结果在输入通道上进行累加,得到所述输入图像在输出通道上的卷积运算结果。
本申请实施例第四方面提供了一种计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如下步骤:
在提取出输入图像的特征图的情况下,获取卷积神经网络中单个卷积核的非零值分布;
根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核;
将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算,并将各个所述子卷积核的卷积运算结果进行累加,得到所述单个卷积核的卷积运算结果;
将所述单个卷积核的卷积运算结果在输入通道上进行累加,得到所述输入图像在输出通道上的卷积运算结果。
本申请的上述方案至少包括以下有益效果:可以看出,本申请实施例通过获取卷积神经网络中单个卷积核的非零值分布;根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核;将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算,并将各个所述子卷积核的卷积运算结果进行累加,得到所述单个卷积核的卷积运算结果;将所述单个卷积核的卷积运算结果在输入通道上进行累加,得到所述输入图像在输出通道上的卷积运算结果。这样按照非零值的分部将卷积神经网络中的所有单个卷积核拆分为多个子卷积核,原本由单个卷积核执行的高图像数据运算量被分解到多个子卷积核上进行卷积运算,有利于减少卷积神经网络的运算量,从而降低边缘设备的功耗。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种网络架构示意图;
图2为本申请实施例提供的一种图像数据的卷积运算方法的流程示意图;
图3为本申请实施例提供的一种单个卷积核的非零值分布的示例图;
图4a为本申请实施例提供的一种拆分子卷积核的示例图;
图4b为本申请实施例提供的另一种拆分子卷积核的示例图;
图4c为本申请实施例提供的另一种拆分子卷积核的示例图;
图5为本申请实施例提供的输入通道与输出通道的示例图;
图6为本申请实施例提供的另一种图像数据的卷积运算方法的流程示意图;
图7为本申请实施例提供的一种图像数据的卷积运算装置的结构示意图;
图8为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请说明书、权利要求书和附图中出现的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,术语“第一”、“第二”和“第三”等是用于区别不同的对象,而并非用于描述特定的顺序。
首先结合相关附图来举例介绍下本申请实施例的方案可能应用到的网络系统架构。请参见图1,图1为本申请实施例提供的一种网络架构示意图,如图1所示,包括图像采集设备101、服务器102和用户终103,其中,图像采集设备101、服务器102和用户终103通过网络进行通信,其通信可采用的网络包括但不限于虚拟网络、局域专用网络、城域网络。图像采集设备101可以是闸机通道、楼栋入口、小区、红绿灯路口等任何场景下的任何设备,例如:摄像机、摄像头、高清抓拍相机等等,其采集的图像可在用户终端103的显示界面进行展示,可发由服务器102进行相关处理和存储,可选的,图像采集设备101可将采集的图像进行实时上发,或按照用户通过用户终端103设置的时间周期进行上发。服务器102可以是单个服务器,也可以是服务器集群,其处理器或内置芯片部署有卷积神经网络算法,可根据用户终端103发送的指令执行或自动执行卷积神经网络算法,以对图像采集设备101采集的图像进行图像识别、目标检测或目标跟踪等相关处理,并可将最终的处理结果返回至用户终端103。用户终端103可以是台式电脑、笔记本电脑、平板、手机、交互式网络电视(internetprotocoltelevision,iptv)、可穿戴设备等等,主要用于提供人机交互界面,可对图像采集设备101采集的图像进行展示以及对服务器102的图像识别、目标检测或目标跟踪结果进行展示,或者用于用户与服务器102进行任意形式的交互。
基于图1所示的网络架构,以下结合其他附图对本申请实施例提供的图像数据的卷积运算方法进行详细阐述。
请参加图2,图2为本申请实施例提供的一种图像数据的卷积运算方法的流程示意图,该图像数据的卷积运算方法由服务器102执行,如图2所示,包括步骤s21-s24:
s21,在提取出输入图像的特征图的情况下,获取卷积神经网络中单个卷积核的非零值分布。
本申请具体实施例中,输入图像由图1中图像采集设备101采集并传输至服务器102,该输入图像可以是抓拍的图片、拍摄的视频帧等等,特征图可以是该输入图像的像素值,例如:小区闸机通道的图像采集设备101采集到通过行人的人脸图像,并将其发送给服务器102,由服务器102进行处理,提取出该人脸图像每个像素的值。卷积神经网络(convolutionalneuralnetworks,cnn)的卷积层通常有多个卷积核,卷积核的尺寸可能一致,也可能不一致,单个卷积核即卷积神经网络中的原始卷积核,对于单个卷积核通常可表示为kc,i,u,v,其中c,i,u,v分别表示输出通道、输入通道、卷积核垂直方向和水平方向的位置指示,c=0,1,…,c0-1;i=0,1,…,ci-1;u=0,1,…,kh-1;v=0,1,…,kw-1;c0,ci,kh,kw分别表示输出通道的数量、输入通道的数量、垂直方向的大小、水平方向的大小。
非零值即单个卷积核中kc,i,u,v≠0的位置,简言之,就是单个卷积核中权重值为0的值,非零值分布即非零值的位置,由于单个卷积核的值分布是未知的,因此,服务器102需要对单个卷积核进行遍历,以获取到单个卷积核中非零值的位置,而这些位置恰好可组成相应的图样,如图3所示,图中(0,0),(0,2),(1,1),(2,0),(2,1)即为非零值的卷积核单元,非零值的卷积核单元中的数据即表示非零值在单个卷积核水平方向和垂直方向的位置指示,例如:(0,0)即表示该非零值在单个卷积核中的第0行、第0列。
s22,根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核。
本申请具体实施例中,在获取到单个卷积核的非零值分布后,便可将单个卷积核拆分为多个子卷积核。而对单个卷积核进行拆分具体可包括三种实施方式:一、将每一非零值拆分为一个子卷积核,得到多个子卷积核,如图3中的(0,0),(0,2),(1,1),(2,0),(2,1)五个非零值,将每一非零值拆分为一个子卷积核,那么将得到如图4a所示的五个子卷积核;二、如果内存中指示的是以行优先进行存储,则将水平方向上不相邻的每一非零值拆分为一个子卷积核,并将水平方向上相邻的非零值聚合为一个子卷积核,得到多个子卷积核,如图3中的(0,0),(0,2),(1,1),(2,0),(2,1)五个非零值,将(0,0),(0,2),(1,1)三个非零值拆分为三个单独的子卷积核,(2,0)和(2,1)由于在水平方向上相邻,则将(2,0)和(2,1)聚合为一个子卷积核拆分出来,那么将得到如图4b所示的四个子卷积核;三、如果内存中指示的以列优先进行存储,则将垂直方向上不相邻的每一非零值拆分为一个子卷积核,并将垂直方向上相邻的非零值聚合为一个子卷积核,得到多个子卷积核,再如图3中的(0,0),(0,2),(1,1),(2,0),(2,1)五个非零值,将垂直方向上没有相邻非零值的(0,0),(0,2),(2,0)拆分为三个单独的子卷积核,由于(1,1)和(2,1)在垂直方向上相邻,则将(1,1)和(2,1)聚合为一个子卷积核拆分出来,那么将得到如图4c所示的四个子卷积核。
进一步的,上述根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核,还可以包括:
根据所述单个卷积核的非零值分布,若内存中指示的是行优先,则将水平方向上不相邻的所有非零值聚合为所述子卷积核,以及将水平方向上相邻的非零值聚合为所述子卷积核,得到多个所述子卷积核。如图3中,(0,0),(0,2),(1,1)三个非零值在水平方向上不相邻,则将这三个非零值聚合为一个子卷积核单元拆分出来,(2,0)和(2,1)由于在水平方向上相邻,则将(2,0)和(2,1)聚合为一个子卷积核拆分出来,由此得到多个子卷积核。
进一步的,上述根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核,还可以包括:
根据所述单个卷积核的非零值分布,若内存中指示的是列优先,则将垂直方向上不相邻的所有非零值聚合为所述子卷积核,以及将垂直方向上相邻的非零值聚合为所述子卷积核,得到多个所述子卷积核。如图3中,(0,0),(0,2),(2,0)三个非零值在垂直方向上不相邻,则将这三个非零值聚合为一个子卷积核拆分出来,由于(1,1)和(2,1)在垂直方向上相邻,则将(1,1)和(2,1)聚合为一个子卷积核拆分出来,由此得到多个子卷积核。
需要说明的是,在具体实施本方案时,具体采用上述哪一种拆分方案可根据实际情况的运算效率而定。
s23,将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算,并将各个所述子卷积核的卷积运算结果进行累加,得到所述单个卷积核的卷积运算结果。
本申请具体实施例中,在选用步骤s22中三种拆分方式之一对单个卷积核进行拆分后,首先获取各个子卷积核在特征图(图像采集设备101所采集的图像经过卷积神经网络的输入层得到的特征图)上的运算范围,例如:子卷积核(0,0)有一个对应的运算范围,子卷积核(0,2)有一个对应的运算范围。第n个子卷积核的运算范围具体可由:x(n)=q,q 1,…,sw·x q q-1,y(n)=p,p 1,…,sh·y p p-1确定,其中,x表示提取出的特征图水平方向的大小,q表示第n个子卷积核在单个卷积核中水平方向的起始位置,q表示第n个子卷积核水平方向的大小,y表示提取出的特征图垂直方向的大小,p表示第n个子卷积核在单个卷积核中垂直方向的起始位置,p表示第n个子卷积核垂直方向的大小。
确定各个子卷积核的运算范围后,由
其中,
其中,yb,c,i,y,x表示单个卷积核的运算结果,n表示单个卷积核的子卷积核的数量。
s24,将所述单个卷积核的卷积运算结果在输入通道上进行累加,得到所述输入图像在输出通道上的卷积运算结果。
本申请具体实施例中,输入通道的数量ci由服务器102确定,将单个卷积核的运算结果在ci个输入通道上进行累加,便得到卷积神经网络每个输出通道的卷积运算结果,其运算公式如下:
如图5所示,在对图像采集设备101输入的图像做目标检测时,采用的卷积神经网络有32个输入通道,64个输出通道,那么单个卷积核的数量为32*64个,将32*64个卷积核的卷积运算结果在32个输入通道上进行累加,得到的便是输入图像在64个输出通道中的每个输出通道的最终卷积运算结果。
可以看出,本申请实施例通过获取卷积神经网络中单个卷积核的非零值分布;根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核;将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算,并将各个所述子卷积核的卷积运算结果进行累加,得到所述单个卷积核的卷积运算结果;将所述单个卷积核的卷积运算结果在输入通道上进行累加,得到所述输入图像在输出通道上的卷积运算结果。这样按照非零值的分部将卷积神经网络中的所有单个卷积核拆分为多个子卷积核,原本由单个卷积核执行的高图像数据运算量被分解到多个子卷积核上进行卷积运算,有利于减少卷积神经网络的运算量,从而降低边缘设备的功耗。
请参见图6,图6为本申请实施例提供的另一种图像数据的卷积运算方法的流程示意图,同样可基于图1所示的网络架构实施,如图6所示,包括步骤s61-s66:
s61,在提取出输入图像的特征图的情况下,获取卷积神经网络中单个卷积核的非零值分布;
s62,根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核;
s63,确定各个所述子卷积核在所述单个子卷积核中垂直方向和水平方向的起始位置、所述单个卷积核垂直方向和水平方向的移动步长以及各个所述子卷积核垂直方向和水平方向的大小;
s64,根据所述起始位置、所述移动步长以及所述大小获取各个所述子卷积核的所述运算范围;
本申请具体实施例中,在将单个卷积核进行拆分后,针对第n个子卷积核,确定其在单个卷积核中水平方向的起始位置q和在单个卷积核中垂直方向的起始位置p、以及其水平方向的大小q和垂直方向的大小p、单个卷积核垂直方向和水平方向的移动步长sh和sw,由上述q、p、sh、sw、q、p计算得到第n个子卷积核的运算范围。
s65,将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算,得到各个所述子卷积核的卷积运算结果;
s66,将各个所述子卷积核的卷积运算结果进行累加,得到所述单个卷积核的卷积运算结果;
s67,将所述单个卷积核的卷积运算结果在输入通道上进行累加,得到所述输入图像在输出通道上的卷积运算结果。
在一种可能的实施方式中,所述将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算,包括:
根据所述起始位置、所述大小获取各个所述子卷积核在所述单个卷积核中垂直方向和水平方向的位置指示;
根据所述位置指示、所述移动步长、所述运算范围、批处理数量以及输入通道获取所述运算范围内的数据;
采用预设公式将各个所述子卷积核与所述运算范围内的数据进行卷积运算。
该实施方式中,第n个子卷积核在单个卷积核中垂直方向的位置指示u(n)=p,…,p p-1,水平方向的位置指示v(n)=q,…,q q-1,运算范围内的数据即
其中,图6所示的步骤s61-s67在图2-图5所示的实施例中已有详细的说明,且能达到相同或相似的有益效果,为避免重复,此处不再赘述。
可以看出,本申请实施例通过获取卷积神经网络中单个卷积核的非零值分布;根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核;获取各个所述子卷积核在所述特征图上对应的运算范围;将各个所述子卷积核与对应的所述运算范围内的数据进行卷积运算,得到各个所述子卷积核的卷积运算结果;将各个所述子卷积核的卷积运算结果进行累加,得到所述单个卷积核的卷积运算结果;将所述单个卷积核的卷积运算结果在输入通道上进行累加,得到所述输入图像在输出通道上的卷积运算结果。这样按照非零值的分部将卷积神经网络中的所有单个卷积核拆分为多个子卷积核,并计算出各个子卷积核的运算范围,每个子卷积核负责运算自己对应的运算范围内的数据,原本由单个卷积核执行的高图像数据运算量被分解到多个子卷积核上进行卷积运算,有利于减少卷积神经网络的运算量,从而降低边缘设备的功耗。
请参见图7,图7为本申请实施例提供的一种图像数据的卷积运算装置的结构示意图,如图7所示,该装置包括:
位置获取模块71,用于在提取出输入图像的特征图的情况下,获取卷积神经网络中单个卷积核的非零值分布;
卷积核拆分模块72,用于根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核;
第一卷积运算模块73,用于将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算,并将各个所述子卷积核的卷积运算结果进行累加,得到所述单个卷积核的卷积运算结果;
第二卷积运算模块74,用于将所述单个卷积核的卷积运算结果在输入通道上进行累加,得到所述输入图像在输出通道上的卷积运算结果。
在一种可能的实施方式中,第一卷积运算模块73,具体还用于:
确定各个所述子卷积核在所述单个子卷积核中垂直方向和水平方向的起始位置、所述单个卷积核垂直方向和水平方向的移动步长以及各个所述子卷积核垂直方向和水平方向的大小;
根据所述起始位置、所述移动步长以及所述大小获取各个所述子卷积核的所述运算范围。
在一种可能的实施方式中,在根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核方面,卷积核拆分模块72,具体用于执行以下之一:
根据所述单个卷积核的非零值分布,将每一非零值拆分为所述子卷积核,得到多个所述子卷积核;
根据所述单个卷积核的非零值分布,若内存中指示的是行优先,则将水平方向上不相邻的每一非零值拆分为所述子卷积核,以及将水平方向上相邻的非零值聚合为所述子卷积核,得到多个所述子卷积核;
根据所述单个卷积核的非零值分布,若内存中指示的是列优先,则将垂直方向上不相邻的每一非零值拆分为所述子卷积核,以及将垂直方向上相邻的非零值聚合为所述子卷积核,得到多个所述子卷积核。
在一种可能的实施方式中,在将所述单个卷积核的卷积运算结果在输入通道上进行累加方面,第二卷积运算模块74,具体用于:
确定输入通道的数量ci;
将所述单个卷积核的卷积运算结果在ci个输入通道上进行累加。
在一种可能的实施方式中,在将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算方面,第一卷积运算模块73,具体用于:
根据所述起始位置、所述大小获取各个所述子卷积核在所述单个卷积核中垂直方向和水平方向的位置指示;
根据所述位置指示、所述移动步长、所述运算范围、批处理数量以及输入通道获取所述运算范围内的数据;
采用预设公式将各个所述子卷积核与所述运算范围内的数据进行卷积运算。
根据本申请的一个实施例,图7所示的图像数据的卷积运算装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,基于图像数据的卷积运算装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。需要说明的是,本申请实施例提供的图像数据的卷积运算装置能够应用在目标检测、人脸识别、目标跟踪等图像处理场景中。
根据本申请的另一个实施例,可以通过在包括中央处理单元(cpu)、随机存取存储介质(ram)、只读存储介质(rom)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2或图6中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图7中所示的图像数据的卷积运算装置设备,以及来实现本申请实施例的图像数据的卷积运算方法。所述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
基于上述方法实施例和装置实施例的描述,本申请实施例还提供一种电子设备。请参见图8,该电子设备至少包括处理器81、输入设备82、输出设备83以及计算机存储介质84。其中,电子设备内的处理器81、输入设备82、输出设备83以及计算机存储介质84可通过总线或其他方式连接。
计算机存储介质84可以存储在电子设备的存储器中,所述计算机存储介质84用于存储计算机程序,所述计算机程序包括程序指令,所述处理器81用于执行所述计算机存储介质84存储的程序指令。处理器81(或称cpu(centralprocessingunit,中央处理器))是电子设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
在一个实施例中,本申请实施例提供的电子设备的处理器81可以用于进行一系列卷积运算处理:在提取出输入图像的特征图的情况下,获取卷积神经网络中单个卷积核的非零值分布;根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核;将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算,并将各个所述子卷积核的卷积运算结果进行累加,得到所述单个卷积核的卷积运算结果;将所述单个卷积核的卷积运算结果在输入通道上进行累加,得到所述输入图像在输出通道上的卷积运算结果。
在一种实施方式中,在将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算之前,处理器81还用于:
确定各个所述子卷积核在所述单个子卷积核中垂直方向和水平方向的起始位置、所述单个卷积核垂直方向和水平方向的移动步长以及各个所述子卷积核垂直方向和水平方向的大小;
根据所述起始位置、所述移动步长以及所述大小获取各个所述子卷积核的所述运算范围。
再一种实施方式中,处理器81用于执行所述根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核,包括以下之一:
根据所述单个卷积核的非零值分布,将每一非零值拆分为所述子卷积核,得到多个所述子卷积核;
根据所述单个卷积核的非零值分布,若内存中指示的是行优先,则将水平方向上不相邻的每一非零值拆分为所述子卷积核,以及将水平方向上相邻的非零值聚合为所述子卷积核,得到多个所述子卷积核;
根据所述单个卷积核的非零值分布,若内存中指示的是列优先,则将垂直方向上不相邻的每一非零值拆分为所述子卷积核,以及将垂直方向上相邻的非零值聚合为所述子卷积核,得到多个所述子卷积核。
再一种实施方式中,处理器81执行
所述将所述单个卷积核的卷积运算结果在输入通道上进行累加,包括:
确定输入通道的数量ci;
将所述单个卷积核的卷积运算结果在ci个输入通道上进行累加。
再一种实施方式中,处理器81执行所述将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算,包括:
根据所述起始位置、所述大小获取各个所述子卷积核在所述单个卷积核中垂直方向和水平方向的位置指示;
根据所述位置指示、所述移动步长、所述运算范围、批处理数量以及输入通道获取所述运算范围内的数据;
采用预设公式将各个所述子卷积核与所述运算范围内的数据进行卷积运算。
示例性的,上述电子设备可以是计算机、服务器、电脑主机等设备,电子设备可包括但不仅限于处理器81、输入设备82、输出设备83、计算机存储介质84。本领域技术人员可以理解,所述示意图仅仅是电子设备的示例,并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
需要说明的是,由于电子设备的处理器81执行计算机程序时实现上述的图像数据的卷积运算方法中的步骤,因此上述图像数据的卷积运算方法的实施例均适用于该电子设备,且均能达到相同或相似的有益效果。
本申请实施例还提供了一种计算机存储介质(memory),所述计算机存储介质是电子设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括终端中的内置存储介质,当然也可以包括终端所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了终端的操作系统。并且,在该存储空间中还存放了适于被处理器81加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速ram存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器;可选的,还可以是至少一个位于远离前述处理器81的计算机存储介质。在一个实施例中,可由处理器81加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关图像数据的卷积运算方法的相应步骤;具体实现中,计算机存储介质中的一条或多条指令由处理器81加载并执行如下步骤:
在提取出输入图像的特征图的情况下,获取卷积神经网络中单个卷积核的非零值分布;
根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核;
将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算,并将各个所述子卷积核的卷积运算结果进行累加,得到所述单个卷积核的卷积运算结果;
将所述单个卷积核的卷积运算结果在输入通道上进行累加,得到所述输入图像在输出通道上的卷积运算结果。
在一种示例中,计算机存储介质中的一条或多条指令由处理器81加载时还执行如下步骤:
确定各个所述子卷积核在所述单个子卷积核中垂直方向和水平方向的起始位置、所述单个卷积核垂直方向和水平方向的移动步长以及各个所述子卷积核垂直方向和水平方向的大小;
根据所述起始位置、所述移动步长以及所述大小获取各个所述子卷积核的所述运算范围。在一种示例中,计算机存储介质中的一条或多条指令由处理器81加载时还执行如下步骤之一:
根据所述单个卷积核的非零值分布,将每一非零值拆分为所述子卷积核,得到多个所述子卷积核;
根据所述单个卷积核的非零值分布,若内存中指示的是行优先,则将水平方向上不相邻的每一非零值拆分为所述子卷积核,以及将水平方向上相邻的非零值聚合为所述子卷积核,得到多个所述子卷积核;
根据所述单个卷积核的非零值分布,若内存中指示的是列优先,则将垂直方向上不相邻的每一非零值拆分为所述子卷积核,以及将垂直方向上相邻的非零值聚合为所述子卷积核,得到多个所述子卷积核。
在一种示例中,计算机存储介质中的一条或多条指令由处理器81加载时还执行如下步骤:
确定输入通道的数量ci;
将所述单个卷积核的卷积运算结果在ci个输入通道上进行累加。
在一种示例中,计算机存储介质中的一条或多条指令由处理器81加载时还执行如下步骤:
根据所述起始位置、所述大小获取各个所述子卷积核在所述单个卷积核中垂直方向和水平方向的位置指示;
根据所述位置指示、所述移动步长、所述运算范围、批处理数量以及输入通道获取所述运算范围内的数据;
采用预设公式将各个所述子卷积核与所述运算范围内的数据进行卷积运算。
示例性的,计算机存储介质的计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。
需要说明的是,由于计算机存储介质的计算机程序被处理器执行时实现上述的图像数据的卷积运算方法中的步骤,因此上述图像数据的卷积运算方法的所有实施例均适用于该计算机存储介质,且均能达到相同或相似的有益效果。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
1.一种图像数据的卷积运算方法,其特征在于,所述方法包括:
在提取出输入图像的特征图的情况下,获取卷积神经网络中单个卷积核的非零值分布;
根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核;
将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算,并将各个所述子卷积核的卷积运算结果进行累加,得到所述单个卷积核的卷积运算结果;
将所述单个卷积核的卷积运算结果在输入通道上进行累加,得到所述输入图像在输出通道上的卷积运算结果。
2.根据权利要求1所述的方法,其特征在于,在所述将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算之前,所述方法还包括:
确定各个所述子卷积核在所述单个子卷积核中垂直方向和水平方向的起始位置、所述单个卷积核垂直方向和水平方向的移动步长以及各个所述子卷积核垂直方向和水平方向的大小;
根据所述起始位置、所述移动步长以及所述大小获取各个所述子卷积核的所述运算范围。
3.根据权利要求1所述的方法,其特征在于,所述根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核,包括以下之一:
根据所述单个卷积核的非零值分布,将每一非零值拆分为所述子卷积核,得到多个所述子卷积核;
根据所述单个卷积核的非零值分布,若内存中指示的是行优先,则将水平方向上不相邻的每一非零值拆分为所述子卷积核,以及将水平方向上相邻的非零值聚合为所述子卷积核,得到多个所述子卷积核;
根据所述单个卷积核的非零值分布,若内存中指示的是列优先,则将垂直方向上不相邻的每一非零值拆分为所述子卷积核,以及将垂直方向上相邻的非零值聚合为所述子卷积核,得到多个所述子卷积核。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述将所述单个卷积核的卷积运算结果在输入通道上进行累加,包括:
确定输入通道的数量ci;
将所述单个卷积核的卷积运算结果在ci个输入通道上进行累加。
5.根据权利要求2所述的方法,其特征在于,所述将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算,包括:
根据所述起始位置、所述大小获取各个所述子卷积核在所述单个卷积核中垂直方向和水平方向的位置指示;
根据所述位置指示、所述移动步长、所述运算范围、批处理数量以及输入通道获取所述运算范围内的数据;
采用预设公式将各个所述子卷积核与所述运算范围内的数据进行卷积运算。
6.一种图像数据的卷积运算装置,其特征在于,所述装置包括:
位置获取模块,用于在提取出输入图像的特征图的情况下,获取卷积神经网络中单个卷积核的非零值分布;
卷积核拆分模块,用于根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核;
第一卷积运算模块,用于将各个所述子卷积核与在所述特征图上对应的运算范围内的数据进行卷积运算,并将各个所述子卷积核的卷积运算结果进行累加,得到所述单个卷积核的卷积运算结果;
第二卷积运算模块,用于将所述单个卷积核的卷积运算结果在输入通道上进行累加,得到所述输入图像在输出通道上的卷积运算结果。
7.根据权利要求6所述的装置,其特征在于,所述第一卷积运算模块,具体还用于:
确定各个所述子卷积核在所述单个子卷积核中垂直方向和水平方向的起始位置、所述单个卷积核垂直方向和水平方向的移动步长以及各个所述子卷积核垂直方向和水平方向的大小;
根据所述起始位置、所述移动步长以及所述大小获取各个所述子卷积核的所述运算范围。
8.根据权利要求6所述的装置,其特征在于,在根据所述单个卷积核的非零值分布对所述单个卷积核进行拆分,得到多个子卷积核方面,所述卷积核拆分模块具体用于执行以下之一:
根据所述单个卷积核的非零值分布,将每一非零值拆分为所述子卷积核,得到多个所述子卷积核;
根据所述单个卷积核的非零值分布,若内存中指示的是行优先,则将水平方向上不相邻的每一非零值拆分为所述子卷积核,以及将水平方向上相邻的非零值聚合为所述子卷积核,得到多个所述子卷积核;
根据所述单个卷积核的非零值分布,若内存中指示的是列优先,则将垂直方向上不相邻的每一非零值拆分为所述子卷积核,以及将垂直方向上相邻的非零值聚合为所述子卷积核,得到多个所述子卷积核。
9.一种电子设备,包括输入设备和输出设备,其特征在于,还包括:
处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如权利要求1-5任一项所述的方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如权利要求1-5任一项所述的方法。
技术总结