掌桥专利:专业的专利平台
掌桥专利
首页

面向2D和3D卷积神经网络的Winograd处理方法及系统

文献发布时间:2023-06-19 12:14:58


面向2D和3D卷积神经网络的Winograd处理方法及系统

技术领域

本发明涉及卷积神经网络算法领域,尤其涉及一种面向2D和3D卷积神经网络的Winograd处理方法及系统。

背景技术

目前,随着深度学习技术的发展,基于视频的研究领域越来越受到重视。同时大量的研究证明3D CNN在许多复杂的计算机视觉任务中非常有效,包括视频分类,行为识别和医学图像分析。相比2D CNN而言,3D CNN的计算复杂度更高,内存带宽需求也更高,因此使用Winograd算法来降低3D CNN的计算复杂度是一种高效的处理方法。目前基于3DWinograd的研究还比较少,并且大多数集中于stride=1的格式。

发明内容

为至少一定程度上解决现有技术中存在的技术问题之一,本发明的目的在于提供一种面向2D和3D卷积神经网络的Winograd处理方法及系统。

本发明所采用的技术方案是:

一种面向2D和3D卷积神经网络的Winograd处理方法,包括以下步骤:

S1、卷积神经网络每一层的步长为(m,n,p),根据卷积神经网络的步长,判断对应维度的外部数据是否需要进行分解,如需进行分解,则进行步骤S2;

S2、根据不同维度的步长将外部输入激活分解成不同激活块,根据不同维度的步长以及卷积核大小将外部输入权重分解成不同的权重块;

S3、分解后的激活块存入卷积神经网络加速器的内部激活缓存中,分解后的权重块根据组合优先级再一次进行组合成最终的计算块,组合之后存入卷积神经网络加速器的内部权重缓存中;

S4、在卷积神经网络的缓存中,数据按照分解后的块进行存储,因此数据增加了块这个维度的信息;对于每一个分解后的数据块,计算步长为1;在计算过程中,取出相对应的权重块和激活块进行Winograd卷积;

S5、所有输入通道的计算结果需要累加,同时所有块的计算结果也需要累加以得出最终结果;每一个权重块计算完成的结果需要进行累加之后才能进行最后的输出。

进一步,所述步骤S2,包括:

对于激活的分解:根据不同维度的步长对激活的不同维度的数据进行单独处理,如果维度步长大于1,对此维度的数据进行分解;

分解方法为:根据步长大小对数据进行分解,分解出来的不同维度的激活块之间数据的距离与对应维度的步长匹配;

对于权重的分解:根据不同维度的步长对卷积核进行分解,如果步长大于1或者卷积核大小大于Winograd单元大小,则需要对卷积核进行分解;

分解方法为:判断不同维度步长,如果步长大于1,则根据步长大小对卷积核的不同维度的数据进行分解,分解出来的不同维度的权重块之间数据的距离与对应维度的步长匹配。

进一步,所述步骤S3,包括:

对于激活块的存储:分解后的激活块,按照分解后块的顺序分别存在卷积神经网络加速器的内部缓存的不同位置中;

对于权重块的组合:为了匹配加速器支持的Winograd单元尺寸,经过分解后的权重块需进一步组合;

组合的方法:根据Winograd尺寸进行组合,将大于Winograd单元尺寸的权重块,分解成Winograd单元尺寸的权重块,组合的原则为尽量组合成加速器支持的Winograd单元尺寸;将小于Winograd单元尺寸的块,补零成Winograd单元尺寸的权重块,补零的原则为就近原则;

组合的优先级为:优先组合为3D的权重块,其次组合为2D的权重块;组合的结果为:所有权重块的尺寸都在加速器支持的Winograd尺寸中;

对于权重块的存储:组合后的权重块分别存在卷积神经网络速器的内部缓存的不同位置中。

进一步,所述步骤S4,包括:

经过分解后,分解后的激活块和权重块都已存储在卷积神经网络加速器中的内部缓存中;

每一个权重块都有对应的一个激活块,在计算过程中,将互相对应的权重块和激活块进行Winograd卷积运算,将运算完成的结果存储在内部缓存中。

进一步,所述步骤S5,包括:

所有输入通道的计算结果需要累加,同时所有块的计算结果也需要累加以得出最终结果;每一个权重块计算完成的结果需要进行累加之后才能进行最后的输出。

本发明所采用的另一技术方案是:

一种面向2D和3D卷积神经网络的Winograd处理系统,包括:

分解判断模块,用于卷积神经网络每一层的步长为(m,n,p),根据卷积神经网络的步长,判断对应维度的外部数据是否需要进行分解,如需进行分解,则进入分解模块;

分解模块,用于根据不同维度的步长将外部输入激活分解成不同激活块,根据不同维度的步长以及卷积核大小将外部输入权重分解成不同的权重块;

缓存模块,用于分解后的激活块存入卷积神经网络加速器的内部激活缓存中,分解后的权重块根据组合优先级再一次进行组合成最终的计算块,组合之后存入卷积神经网络加速器的内部权重缓存中;

卷积运算模块,用于在卷积神经网络的缓存中,数据按照分解后的块进行存储,因此数据增加了块这个维度的信息;对于每一个分解后的数据块,计算步长为1;在计算过程中,取出相对应的权重块和激活块进行Winograd卷积;

累加模块,用于所有输入通道的计算结果需要累加,同时所有块的计算结果也需要累加以得出最终结果;每一个权重块计算完成的结果需要进行累加之后才能进行最后的输出。

本发明所采用的另一技术方案是:

一种面向2D和3D卷积神经网络的Winograd处理系统,包括:

至少一个处理器;

至少一个存储器,用于存储至少一个程序;

当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现上所述方法。

本发明的有益效果是:本发明对输入的激活和权重进行分解存储后,根据分解后的不同卷积核进行处理;这种数据分解方法使得加速器支持不同维度,不同步长,不同卷积核大小的卷积神经网络;相比传统卷积算术,加速器实现了非常高效的性能。

附图说明

为了更清楚地说明本发明实施例或者现有技术中的技术方案,下面对本发明实施例或者现有技术中的相关技术方案附图作以下介绍,应当理解的是,下面介绍中的附图仅仅为了方便清晰表述本发明的技术方案中的部分实施例,对于本领域的技术人员而言,在无需付出创造性劳动的前提下,还可以根据这些附图获取到其他附图。

图1是本发明实施例中面向不同维度的Winograd分解流程图;

图2是本发明实施例中步长为(1,2,2)的输入激活分解示意图;

图3是本发明实施例中步长为(2,2)和(1,1)的,卷积核为5x5的卷积核分解以及组合示意图;

图4是本发明实施例中步长为(2,2,2)和(1,1,1)的,卷积核为5x5x5的卷积核分解以及组合示意图;

图5是本发明实施例中多种卷积算法的乘法次数比较图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。

在本发明的描述中,需要理解的是,涉及到方位描述,例如上、下、前、后、左、右等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。

本发明的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。

如图1所示,本实施例提供一种面向2D和3D卷积神经网络的Winograd处理方法,采用统一的基于Winograd的计算单元来加速任意核大小,任意步长,任意维度的卷积运算,提高了硬件实现的区域效率。该方法具体包括以下步骤:

S101、3D卷积神经网络每一层的步长为(m,n,p),2D卷积神经网络是3D卷积神经网络的一种特例,即当p=1。外部数据进入加速器缓存之前,根据卷积神经网络的步长,判断对应维度的外部数据是否需要进行分解后才进入卷积神经网络加速器的内部缓存中,如需进行分解,则进行步骤S102。

S102、根据不同维度的步长将外部输入激活分解成不同激活块,根据不同维度的步长以及卷积核大小将外部输入权重分解成不同的权重块。

其中,步骤S102具体包括以下步骤:

对于激活的分解:根据不同维度的步长对激活的不同维度的数据进行单独处理,如果维度步长大于1,则需要对此维度的数据进行分解。分解方法为,在对应维度根据步长大小对数据进行分解,分解出来的不同维度的激活块之间数据的距离为对应维度的步长。

对于权重的分解:根据不同维度的步长对卷积核进行分解,如果步长大于1或者卷积核大小大于Winograd单元大小,则需要对卷积核进行分解。分解方法为,首先判断不同维度步长,如果步长大于1,则根据步长大小对卷积核的不同维度的数据进行分解,分解出来的不同维度的权重块之间数据的距离为对应维度的步长。

S103、分解后的激活块存入卷积神经网络加速器的内部激活缓存中,分解后的权重块根据组合优先级再一次进行组合成最终的计算块,组合之后存入卷积神经网络加速器的内部权重缓存中。

其中,步骤S103具体包括以下步骤:

对于激活块的存储:分解后的激活块需要按照分解后块的顺序分别存在卷积神经网络加速器的内部缓存的不同位置中。

对于权重块的组合:为了匹配对应的Winograd单元尺寸,经过上述方法分解后的权重块需要进一步组合。组合的方法:根据Winograd尺寸进行组合,将大于Winograd单元尺寸的块,分解成Winograd单元尺寸的权重块,组合的原则为尽量组合成加速器支持的Winograd单元尺寸,可以组合成不同的Winograd尺寸单元;将小于Winograd单元尺寸的块,补零成Winograd单元尺寸的权重块,补零的原则为就近原则,以最小的补零数量,补成效率最高的Winograd单元尺寸。组合的优先级为,优先组合为3D的权重块,其次为2D权重块。组合的结果为所有对应的权重块都在加速器支持的Winograd尺寸中。

对于权重块的存储:组合后的权重块分别存在卷积神经网络速器的内部缓存的不同位置中。

S104、在卷积神经网络的缓存中,数据多了一个维度,块维度,所有块的计算步长都是1,在计算过程中,取出对应的权重块,和所有对应的激活进行Winograd卷积。

其中,步骤S104具体包括以下步骤:

经过上述分解后,分解后的激活块以及权重块都已经存储在卷积神经网络加速器中的内部缓存中。每一个权重块都有对应的一个激活块,在计算过程中,将对应的权重块和激活块进行Winograd卷积,计算完成的结果存储在内部缓存中。

S105、所有输入通道的计算结果需要累加,同时所有块的计算结果也需要累加以得出最终结果。每一个权重块计算完成的结果需要进行累加之后才能进行最后的输出。

本实施例的方法与传统Winograd分解方法不同的点在于:在数据进入加速器缓存之前,根据卷积网络维度、步长、大小对输入激活和权重进行分解和组合,然后加速器根据新的数据流从缓存中读取数据,进行计算。其中2D、3D Winograd具体的算法公式如下:

2DWinograd计算公式:y=G[(BxB

3D Winograd计算公式:y=(G[((BxB

其中G,B,A为Winograd常数转换矩阵,由Winograd尺寸单元确定,G为输出的转换矩阵,B为输入的转换矩阵,A为权重的转换矩阵。该算法主要是通过对输入激活和权重进行矩阵转换,之后进行点乘,最后输出再进行转换得到最终的结果。

以下结合附图对上述方法做进一步说明。

如图1所示,本实施例提供一种面向2D和3D卷积神经网络的Winograd处理方法,包括以下步骤:

S201、对输入激活进行处理,当网络在某一维度的步长大于1的时候,需要根据该维度的步长大小对该维度的数据进行分解,其他维度的数据保持不变。分解后的数据按块存入加速器的缓存当中。

S202、对输入权重进行处理,首先判断网络在每个维度的步长,如果某一维度步长大于1,则根据步长大小对该维度的数据进行分解。然后根据分解后的权重块大小进行重新组合,如果权重块大于Winograd单元尺寸,则需要对权重块进行进一步的分解,为了提高计算效率,尽量分解成适合Winograd单元尺寸的权重块,减少补零的个数。如果权重块小于Winograd最小尺寸,则需要补零,按照就近补零原则,补成最高效率的计算单元大小。最后得出的权重块按块的顺序存入缓存当中。其中,图3为步长为(2,2)和(1,1)的,卷积核为5x5的卷积核分解以及组合示意图,F(2,2),F(3,3),F(2x2),F(3x3x3)为Winograd尺寸单元;图4为步长为(2,2,2)和(1,1,1)的,卷积核为5x5x5的卷积核分解以及组合示意图。

S203、新的数据流由图2所示,相比分解之前,数据多了一个块的维度,所有块的运算结果需要累加才能得出最终的结果。

S204、加速器根据新的数据流从缓存中取出数据,对数据进行计算最后结果累加。

本实施例方法与现有方法的性能对比如下:

图5展示了三种网络(3D ResNet18,C3D,3D ConvNet)下,本发明与2DWinograd卷积算法以及传统卷积算法的乘法次数比较图。可以看出,本发明相比于传统卷积算法,实现了非常高效的乘法次数优化率,节省了60%的乘法次数,相比2DWinograd算法,节省了10~20%的乘法次数,实现了高效的性能。

综上所述,本实施例的Winograd处理方法与现有的技术相对比,具有如下有益效果:

(1)、现有技术中针对Winograd卷积分解方法只能将网络中的一层分解成一种固定的Winograd计算单元;而本实施例的分解方法可以将一层网络分解成多种Winograd计算格式,得益于新颖的算法流程图。对不同维度,不同步长,不同卷积核大小的卷积进行分解,分解之后数据多了一个块的维度,将同一层网络卷积核分解成不同大小的Winograd单元最大化提高乘法的节省率。

相比之下,本实施例通过不同Winograd计算单元的组合实现了对乘法节省率的最大优化。

(2)、现有技术中针对Winograd卷积分解方法是通过同时并行处理一个卷积核分解出来的多个块,最后多个块的计算结果累加得出最终结果。当遇到卷积核分解出来的块太多的情况时,比如3D卷积计算分解,这种方法就不在适用,因为分解出来的块数目太多,无法同时并行处理这么多分解出来的块。

相比之下,本实施例是通过将卷积核分解之后的块存储在缓存中,之后串行处理不同的块,最后所有的计算结果再一次累加得出结果。这种方法使得同一层网络可以选择性使用不同的Winograd计算单元来提高乘法节省率。同时也解决了3D卷积核分解出来的块太多的问题。

本实施例还提供一种面向2D和3D卷积神经网络的Winograd处理系统,包括:

分解判断模块,用于卷积神经网络每一层的步长为(m,n,p),根据卷积神经网络的步长,判断对应维度的外部数据是否需要进行分解,如需进行分解,则进入分解模块;

分解模块,用于根据不同维度的步长将外部输入激活分解成不同激活块,根据不同维度的步长以及卷积核大小将外部输入权重分解成不同的权重块;

缓存模块,用于分解后的激活块存入卷积神经网络加速器的内部激活缓存中,分解后的权重块根据组合优先级再一次进行组合成最终的计算块,组合之后存入卷积神经网络加速器的内部权重缓存中;

卷积运算模块,用于在卷积神经网络的缓存中,数据增加一个块维度,所有块的计算步长都是1,在计算过程中,取出对应的权重块,和所有对应的激活进行Winograd卷积;

累加模块,用于所有块的卷积运算结果大小一样,将每个块的计算结果对应位置进行累加。

本实施例的一种面向2D和3D卷积神经网络的Winograd处理系统,可执行本发明方法实施例所提供的一种面向2D和3D卷积神经网络的Winograd处理方法,可执行方法实施例的任意组合实施步骤,具备该方法相应的功能和有益效果。

本实施例还提供一种面向2D和3D卷积神经网络的Winograd处理系统,包括:

至少一个处理器;

至少一个存储器,用于存储至少一个程序;

当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现上所述方法。

本实施例的一种面向2D和3D卷积神经网络的Winograd处理系统,可执行本发明方法实施例所提供的一种面向2D和3D卷积神经网络的Winograd处理方法,可执行方法实施例的任意组合实施步骤,具备该方法相应的功能和有益效果。

本申请实施例还公开了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存介质中。计算机设备的处理器可以从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行图1所示的方法。

在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或所述方框有时能以相反顺序被执行。此外,在本发明的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。

此外,虽然在功能性模块的背景下描述了本发明,但应当理解的是,除非另有相反说明,所述的功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本发明是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本发明。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本发明的范围,本发明的范围由所附权利要求书及其等同方案的全部范围来决定。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。

计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

在本说明书的上述描述中,参考术语“一个实施方式/实施例”、“另一实施方式/实施例”或“某些实施方式/实施例”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。

尽管已经示出和描述了本发明的实施方式,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施方式进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

以上是对本发明的较佳实施进行了具体说明,但本发明并不限于上述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

相关技术
  • 面向2D和3D卷积神经网络的Winograd处理方法及系统
  • 一种面向卷积神经网络加速器的Winograd卷积拆分方法
技术分类

06120113228004