卷积处理方法、电路、电子设备及计算机可读存储介质转让专利

申请号 : CN202211600016.7

文献号 : CN115600062B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 钱祎剑刘虹铎张斌沈小勇吕江波

申请人 : 深圳思谋信息科技有限公司

摘要 :

本申请涉及一种卷积处理方法、电路、电子设备及计算机可读存储介质。方法包括:对卷积处理过程中得到的点乘特征矩阵进行分块,得到多个子特征矩阵;针对每个子特征矩阵进行后变换处理时,按照子特征矩阵对应的加减变换规则,控制加减法单元对子特征矩阵进行变换,得到第一变换矩阵;确定子特征矩阵对应的位移量,依据位移量控制移位器组中的移位器对第一变换矩阵进行移位变换,得到第二变换矩阵;控制累加器将各子特征矩阵对应的第二变换矩阵进行累加,得到卷积处理生成的后变换特征矩阵。采用本方法,仅仅通过控制加减法单元、移位器和累加器就实现了对点乘特征矩阵的后变换处理,能够节省乘法资源。

权利要求 :

1.一种卷积处理方法,其特征在于,包括:

对卷积处理过程中得到的点乘特征矩阵进行分块,得到多个子特征矩阵;所述点乘特征矩阵是使用卷积加速算法对前变换特征矩阵进行点乘得到的;

针对每个子特征矩阵进行后变换处理时,按照所述子特征矩阵对应的加减变换规则,控制加减法单元对所述子特征矩阵进行变换,得到第一变换矩阵;

确定所述子特征矩阵对应的位移量,依据所述位移量控制移位器组中的移位器对所述第一变换矩阵进行移位变换,得到第二变换矩阵;其中,各所述移位器与待生成的后变换特征矩阵的元素位置相对应;所述位移量是根据后变换参数矩阵中后变换参数的排列位置特征确定的;

控制累加器将各所述子特征矩阵对应的第二变换矩阵进行累加,得到卷积处理生成的所述后变换特征矩阵;其中,所述累加器与所述后变换特征矩阵的元素位置相对应。

2.根据权利要求1所述的方法,其特征在于,所述对卷积处理过程中得到的点乘特征矩阵进行分块,得到多个子特征矩阵,包括:按照预设子矩阵大小,将卷积处理过程中得到的点乘特征矩阵中的边缘位置数据分块;所述边缘位置数据是在所述点乘特征矩阵中位于边缘位置的特征数据;

按照所述预设子矩阵大小,将所述点乘特征矩阵中除所述边缘位置数据之外的特征数据依次分块,得到多个子特征矩阵。

3.根据权利要求2所述的方法,其特征在于,所述按照预设子矩阵大小,将卷积处理过程中得到的点乘特征矩阵中的边缘位置数据分块,包括:将卷积处理过程中得到的点乘特征矩阵中位于角点位置的角点数据划分至同一子特征矩阵;所述角点数据构成的子特征矩阵的大小符合预设子矩阵大小;

对所述点乘特征矩阵中的首尾剩余行数据、以及首尾剩余列数据进行合并,分别对合并后的首尾剩余行数据和合并后的首尾剩余列数据进行分块,得到符合所述预设子矩阵大小的子特征矩阵;

其中,所述首尾剩余行数据是首尾行数据中,除处于首尾行的角点数据之外的特征数据;所述首尾剩余列数据是首尾列数据中,除处于首尾列的角点数据之外的特征数据。

4.根据权利要求1所述的方法,其特征在于,所述按照所述子特征矩阵对应的加减变换规则,控制加减法单元对所述子特征矩阵进行变换,得到第一变换矩阵,包括:在所述子特征矩阵对应的加减变换规则表征不做变换的情况下,通过控制左变换使能信号和右变换使能信号均无效,以控制加减法单元不对所述子特征矩阵进行变换,并控制数据选择器不调整所述子特征矩阵的数据顺序,得到第一变换矩阵。

5.根据权利要求1所述的方法,其特征在于,所述按照所述子特征矩阵对应的加减变换规则,控制加减法单元对所述子特征矩阵进行变换,得到第一变换矩阵,包括:在所述子特征矩阵对应的加减变换规则表征需要进行目标变换处理的情况下,控制与所述目标变换处理对应的使能信号有效,以控制加减法单元对所述子特征矩阵进行所述目标变换处理得到加减法变换结果;其中,所述目标变换处理包括左变换处理和右变换处理中的至少一种;

控制数据选择器调整所述加减法变换结果中的数据顺序,得到第一变换矩阵。

6.根据权利要求1所述的方法,其特征在于,所述确定所述子特征矩阵对应的位移量,包括:根据目标位置确定所述子特征矩阵在所述后变换参数矩阵中对应的参数子矩阵;所述目标位置是所述子特征矩阵在所述点乘特征矩阵中所处的位置;

从所述后变换参数矩阵中确定位移基准矩阵;

根据所述参数子矩阵与所述位移基准矩阵之间的相对关系,确定所述移位器组中的各所述移位器针对所述第一变换矩阵中的特征数据进行移位操作所需的位移量。

7.根据权利要求1至6中任一项所述的方法,其特征在于,所述多个子特征矩阵是依次进行后变换处理的;所述控制累加器将各所述子特征矩阵对应的第二变换矩阵进行累加,得到卷积处理生成的所述后变换特征矩阵,包括:在每计算出一个所述子特征矩阵对应的第二变换矩阵之后,根据所述子特征矩阵在所述点乘特征矩阵中的目标位置,从多个累加器中确定与所述目标位置相匹配的目标累加器;

控制所述目标累加器打开并屏蔽非目标累加器,以对所述子特征矩阵对应的第二变换矩阵与当前累加的变换矩阵进行累加,并在累加后对下一个子特征矩阵执行后变换处理。

8.根据权利要求7所述的方法,其特征在于,所述多个子特征矩阵是按照后变换处理周期依次进行后变换处理的;所述控制所述目标累加器打开并屏蔽非目标累加器,以对所述子特征矩阵对应的第二变换矩阵与当前累加的变换矩阵进行累加,并在累加后对下一个子特征矩阵执行后变换处理,包括:控制所述目标累加器打开并屏蔽非目标累加器,以对所述子特征矩阵对应的第二变换矩阵与在先周期已累加的变换矩阵进行累加,并进入下一个后变换处理周期,以对下一个子特征矩阵执行后变换处理;其中,在先周期是之前已执行的后变换处理周期。

9.一种变换控制电路,其特征在于,包括:

加减法单元,用于针对多个子特征矩阵中的每个子特征矩阵,按照所述子特征矩阵对应的加减变换规则对所述子特征矩阵进行变换,得到第一变换矩阵;所述多个子特征矩阵是将卷积处理过程中得到的点乘特征矩阵进行分块得到的;所述点乘特征矩阵是使用卷积加速算法对前变换特征矩阵进行点乘得到的;

移位器,用于确定所述子特征矩阵对应的位移量,依据所述位移量对所述第一变换矩阵进行移位变换,得到第二变换矩阵;其中,各所述移位器与待生成的后变换特征矩阵的元素位置相对应;所述位移量是根据后变换参数矩阵中后变换参数的排列位置特征确定的;

累加器,用于将各所述子特征矩阵对应的第二变换矩阵进行累加,得到卷积处理生成的所述后变换特征矩阵;其中,所述累加器与所述后变换特征矩阵的元素位置相对应。

10.一种电子设备,其特征在于,所述电子设备包括如权利要求9所述的变换控制电路。

11.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述的方法的步骤。

12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。

说明书 :

卷积处理方法、电路、电子设备及计算机可读存储介质

技术领域

[0001] 本申请涉及神经网络技术领域,特别是涉及一种卷积处理方法、电路、电子设备及计算机可读存储介质。

背景技术

[0002] 随着人工智能技术的发展,出现了卷积神经网络。卷积神经网络在目标识别方面具有巨大的优势和潜力,因而广泛应用于目标检测、差错检验和自动驾驶等领域。使用卷积神经网络进行目标识别时,会进行卷积运算,卷积运算的过程中涉及到大量的乘法运算,因而卷积运算的速率较慢。为提高卷积运算速率,采用卷积加速算法,比如采用Winograd算法(一种基于多项式插值算法的卷积加速实现方法)进行卷积处理。
[0003] 卷积加速算法通过对卷积操作的两个输入:神经元及权值进行一定规模切分后,分别做线性变换,也就是前变换,再将变换后的神经元和权值进行点乘,把点乘结果再次进行线性变换,即后变换,最后得到与原卷积操作等价的卷积结果。
[0004] 然而,传统的卷积加速算法在进行卷积处理中的后变换时,直接输入整个点乘结果与后变换参数矩阵相乘,导致计算后变换时需要消耗大量乘法资源。

发明内容

[0005] 基于此,有必要针对上述技术问题,提供一种卷积处理方法、电路、电子设备及计算机可读存储介质,能够实现节省乘法资源的效果。
[0006] 第一方面,本申请提供了一种卷积处理方法,包括:
[0007] 对卷积处理过程中得到的点乘特征矩阵进行分块,得到多个子特征矩阵;点乘特征矩阵是使用卷积加速算法对前变换特征矩阵进行点乘得到的;
[0008] 针对每个子特征矩阵进行后变换处理时,按照子特征矩阵对应的加减变换规则,控制加减法单元对子特征矩阵进行变换,得到第一变换矩阵;
[0009] 确定子特征矩阵对应的位移量,依据位移量控制移位器组中的移位器对第一变换矩阵进行移位变换,得到第二变换矩阵;其中,各移位器与待生成的后变换特征矩阵的元素位置相对应;位移量是根据后变换参数矩阵中后变换参数的排列位置特征确定的;
[0010] 控制累加器将各子特征矩阵对应的第二变换矩阵进行累加,得到卷积处理生成的后变换特征矩阵;其中,累加器与后变换特征矩阵的元素位置相对应。
[0011] 第二方面,本申请还提供了一种变换控制电路,包括:
[0012] 加减法单元,用于针对多个子特征矩阵中的每个子特征矩阵,按照子特征矩阵对应的加减变换规则对子特征矩阵进行变换,得到第一变换矩阵;多个子特征矩阵是将卷积处理过程中得到的点乘特征矩阵进行分块得到的;点乘特征矩阵是使用卷积加速算法对前变换特征矩阵进行点乘得到的;
[0013] 移位器,用于确定子特征矩阵对应的位移量,依据位移量对第一变换矩阵进行移位变换,得到第二变换矩阵;其中,各移位器与待生成的后变换特征矩阵的元素位置相对应;位移量是根据后变换参数矩阵中后变换参数的排列位置特征确定的;
[0014] 累加器,用于将各子特征矩阵对应的第二变换矩阵进行累加,得到卷积处理生成的后变换特征矩阵;其中,累加器与后变换特征矩阵的元素位置相对应。
[0015] 第三方面,本申请还提供了一种电子设备,电子设备包括上述的变换控制电路。
[0016] 第四方面,本申请还提供了一种电子设备,电子设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述的卷积处理方法的步骤。
[0017] 第五方面,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述的卷积处理方法的步骤。
[0018] 第六方面,本申请还提供了一种计算机程序产品,计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现上述的卷积处理方法的步骤。
[0019] 上述卷积处理方法、电路、电子设备及计算机可读存储介质,通过将使用卷积加速算法对前变换特征矩阵进行点乘得到的点乘特征矩阵划分为多个子特征矩阵,根据各子特征矩阵对应的加减变换规则控制加减法单元对子特征矩阵进行变换得到第一变换矩阵、再根据子特征矩阵对应的位移量控制移位器组中的移位器对第一变换矩阵进行移位变换得到第二变换矩阵,最后通过控制累加器将各子特征矩阵对应的第二变换矩阵进行累加,得到卷积处理生成的后变换特征矩阵。相较于传统的后变换处理方法,本申请仅仅通过控制加减法单元、移位器和累加器就实现了对点乘特征矩阵的后变换处理,从而节省了乘法资源。

附图说明

[0020] 图1为本申请实施例提供的一种卷积处理方法的流程示意图;
[0021] 图2为本申请实施例提供的一种划分点乘特征矩阵的示意图;
[0022] 图3为本申请实施例提供的一种卷积处理运算单元的示意图;
[0023] 图4为本申请实施例提供的一种变换控制电路的结构示意图;
[0024] 图5为本申请实施例提供的一种卷积处理流水线设计示意图;
[0025] 图6为本申请实施例提供的第一种电子设备的内部结构图;
[0026] 图7为本申请实施例提供的第二种电子设备的内部结构图;
[0027] 图8为本申请实施例提供的一种计算机可读存储介质的内部结构图。

具体实施方式

[0028] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0029] 使用卷积神经网络进行目标识别时,会进行卷积运算;由于卷积运算的过程中涉及到大量的乘法运算,因此卷积运算的速率较慢。为提高卷积运算的速率,采用卷积加速算法,比如Winograd算法,利用对卷积运算中的操作数进行线性变换,进而发现需要乘法数最小的变换方法,再通过增加部分加法操作代替所需要的乘法操作。从硬件层面来说,乘法器相比于加法器所需的结构更加复杂,面积功耗更大,综合处理性能更差,故以加法取代乘法的Winograd算法在处理二维卷积运算时具有极大优势。对于形式为F(n×n,k×k)(n为偶数,k为奇数)形式的Winograd函数,Winograd算法执行卷积运算时的计算式为:
[0030] S=AT[(GgGT)⨀(BT dB)]A
[0031] 其中,GgGT和BTdB均为前变换特征矩阵,将GgGT和BTdB进行点乘得到的就是点乘特征矩阵。
[0032] Y=(GgGT)⨀(BT dB)是点乘部分的运算结果,即点乘特征矩阵,Y为(n+k‑1)×(n+k‑1)尺寸的矩阵;
[0033] S为后变换的结果,即后变换特征矩阵,且S=AT YA,S为n×n尺寸的矩阵;
[0034] A是后变换参数矩阵,A为(n+k‑1)×n尺寸的矩阵。可以理解,AT是A的转置矩阵,只T要确定了A或A就确定了后变换参数矩阵。
[0035] 在一些实施例中,如图1所示,提供了一种卷积处理方法,以该方法应用于电子设备为例进行说明,包括以下步骤:
[0036] 步骤101、对卷积处理过程中得到的点乘特征矩阵进行分块,得到多个子特征矩阵;点乘特征矩阵是使用卷积加速算法对前变换特征矩阵进行点乘得到的。
[0037] 可以理解,为了简化点乘特征矩阵的后变换处理,把点乘特征矩阵分成多个子特征矩阵,子特征矩阵可看作一个数,只要满足形状要求,就可进行形式上的矩阵运算。卷积加速算法可以是Winograd算法(一种基于多项式插值算法的卷积加速实现方法)。
[0038] 步骤102、针对每个子特征矩阵进行后变换处理时,按照子特征矩阵对应的加减变换规则,控制加减法单元对子特征矩阵进行变换,得到第一变换矩阵。
[0039] 其中,加减变换规则是控制加减单元输入信号的规则。也就是说,通过子特征矩阵对应的加减变换规则控制加减单元的输入信号,从而对子特征矩阵进行相应的后变换处理。
[0040] 第一变化矩阵是将子特征矩阵输入加减法单元进行变换后得到的矩阵。
[0041] 示例性地,电子设备根据每个子特征矩阵在点乘特征矩阵中的位置信息,确定子特征矩阵对应的加减变换规则(线性变换矩阵),再根据加减变换规则控制加减法单元对子特征矩阵进行变换,得到第一变换矩阵。
[0042] 在一些实施例中,根据Winograd算法的原理,在选用的多项式子式为x ± 2u时,将F(n×n,k×k)(n为偶数,k为奇数)形式的Winograd后变换拆解为4种矩阵运算过程的组合累加,即加减变换规则包括左右变换、左变换、右变换以及不变换。因此,针对子特征矩阵在点乘特征矩阵中的位置信息,即可确定子特征矩阵相对应的加减变换规则。
[0043] 在一些实施例中,输入子特征矩阵为Y(i,j),经过加减变换变换单元进行后变换处理输出的第一变换矩阵为Y’(i,j)。
[0044] 其中,左右变换是指 ,可见,左右变换的实质是子特征矩阵分别左乘和右乘 。
[0045] 左变换是指 ,可见左变换的实质是子特征矩阵左乘 。
[0046] 右变换是指 ,右变换的实质是子特征矩阵右乘。
[0047] 不变换是指 ,可见,不变换的实质是输出的子特征矩阵等于输入的子特征矩阵。
[0048] 其中,输入Y(i,j)和输出Y’(i,j)均为尺寸2×2的矩阵、M是后变换参数矩阵中的位移基准矩阵,为 。
[0049] 步骤103、确定子特征矩阵对应的位移量,依据位移量控制移位器组中的移位器对第一变换矩阵进行移位变换,得到第二变换矩阵;其中,各移位器与待生成的后变换特征矩阵的元素位置相对应;位移量是根据后变换参数矩阵中后变换参数的排列位置特征确定的。
[0050] 其中,位移量是在一个时钟频率周期内,移位器将数据进行逻辑移位的数量。例如,11的二进制数表示为0001011,按左移量为2进行左移得到的数是0101100(十进制数为44),即11逻辑左移两位扩大了4倍。
[0051] 第二变化矩阵是将第一变换矩阵输入移位器组中的移位器,进行变换后得到的矩阵。
[0052] 示例性地,电子设备根据子特征矩阵与后变换参数矩阵中后变换参数的排列位置特征确定之间的对应关系,确定子特征矩阵中各元素对应的位移量,并依据位移量控制移位器组中的移位器对第一变换矩阵进行移位变换,得到第二变换矩阵。
[0053] 步骤104、控制累加器将各子特征矩阵对应的第二变换矩阵进行累加,得到卷积处理生成的后变换特征矩阵;其中,累加器与后变换特征矩阵的元素位置相对应。
[0054] 示例性地,电子设备将子特征矩阵输入加减法单元和移位器后,得到第二变换矩阵,并将第二变换矩阵进行累加,累加后得到的矩阵就是卷积处理生成的后变换特征矩阵。
[0055] 上述卷积处理方法中,通过将使用卷积加速算法对前变换特征矩阵进行点乘得到的点乘特征矩阵划分为多个子特征矩阵,根据各子特征矩阵对应的加减变换规则控制加减法单元对子特征矩阵进行变换得到第一变换矩阵、再根据子特征矩阵对应的位移量控制移位器组中的移位器对第一变换矩阵进行移位变换得到第二变换矩阵,最后通过控制累加器将各子特征矩阵对应的第二变换矩阵进行累加,得到卷积处理生成的后变换特征矩阵。相较于传统的后变换处理方法,本申请仅仅通过控制加减法单元、移位器和累加器就实现了对点乘特征矩阵的后变换处理,从而节省了乘法资源。
[0056] 在一些实施例中,对卷积处理过程中得到的点乘特征矩阵进行分块,得到多个子特征矩阵,包括:
[0057] 按照预设子矩阵大小,将卷积处理过程中得到的点乘特征矩阵中的边缘位置数据分块;边缘位置数据是在点乘特征矩阵中位于边缘位置的特征数据;按照预设子矩阵大小,将点乘特征矩阵中除边缘位置数据之外的特征数据依次分块,得到多个子特征矩阵。
[0058] 其中,边缘位置数据是处于点乘特征矩阵周边的数据。
[0059] 在一些实施例中,点乘特征矩阵Y为
[0060]
[0061] 则点乘特征矩阵中第一行的数据Y00‑Y05、最后一行的数据Y50‑Y55、第一列的数据Y00‑Y50以及最后一列的数据Y05‑Y55都叫边缘位置数据。
[0062] 在一些实施例中,预设子矩阵是2x2的矩阵。将边缘位置数据和非边缘位置数据都分成2x2的子特征矩阵。
[0063] 上述实施例中,将点乘特征矩阵划分为多个子特征矩阵,便于提高卷积处理的处理速度。
[0064] 在一些实施例中,按照预设子矩阵大小,将卷积处理过程中得到的点乘特征矩阵中的边缘位置数据分块,包括:
[0065] 将卷积处理过程中得到的点乘特征矩阵中位于角点位置的角点数据划分至同一子特征矩阵;角点数据构成的子特征矩阵的大小符合预设子矩阵大小;
[0066] 对点乘特征矩阵中的首尾剩余行数据、以及首尾剩余列数据进行合并,分别对合并后的首尾剩余行数据和合并后的首尾剩余列数据进行分块,得到符合预设子矩阵大小的子特征矩阵;
[0067] 其中,首尾剩余行数据是首尾行数据中,除处于首尾行的角点数据之外的特征数据;首尾剩余列数据是首尾列数据中,除处于首尾列的角点数据之外的特征数据。
[0068] 其中,角点位置是指点乘特征矩阵中四个角落的位置。例如,把上述实施例的点乘特征矩阵Y中的Y00、Y05、Y50以及Y55 称为角点数据,把角点数据所在的位置称为角点位置。
[0069] 在一些实施例中,如图2所示,提供了一种对点乘特征矩阵Y(以下简称Y)进行划分,得到子特征矩阵的方法。对于形式为F(n×n,k×k)(n为偶数,k为奇数)的Winograd函数,将点乘矩阵Y拆分为(n+k‑1)2/4个2×2子矩阵。将Y中角点位置的4个数据构成的1个2×2子矩阵,记为Y(0,0);将Y的首行数据以及尾行数据,分别去掉头尾数据(记为Yup和Ydown)后,将首尾剩余行数据合并,将合并后的首尾剩余行数据从左到右按2×2的尺寸,即按图2中2×2的虚线方格划分得到的(n+k‑3)/2个子矩阵,记为Y(0,j)(j≠0);将Y的首列数据和尾列数据,分别去掉头尾数据(记为Yleft和Yright),将首尾剩余列数据合并,将合并后的首尾剩余列数据从上到下按2×2的尺寸,即按图2中2×2的虚线方格划分得到的(n+k‑3)/2个子矩阵,记为Y(i,0)(i≠0);将Y中去掉首行数据、尾行数据、首列数据以及尾列数据后的剩余数据(记为Ymid),按2×2的尺寸,即按图2中2×2的虚线方格划分得到的(n+k‑3)2/4个子矩阵,记为Y(i,j)(i≠0, j≠0)。可以理解,图2中2×2的虚线方格仅仅用以举例说明如何按照2×2预设子矩阵大小,对点乘特征矩阵Y进行划分得到子特征矩阵。
[0070] 在一些实施例中, 按照上述实施例中的方法对点乘特征矩阵Y进行划分,得到的子特征矩阵如下:
[0071]
[0072] 在一些实施例中,按照子特征矩阵对应的加减变换规则,控制加减法单元对子特征矩阵进行变换,得到第一变换矩阵,包括:
[0073] 在子特征矩阵对应的加减变换规则表征不做变换的情况下,通过控制左变换使能信号和右变换使能信号均无效,以控制加减法单元不对子特征矩阵进行变换,并控制数据选择器不调整子特征矩阵的数据顺序,得到第一变换矩阵。
[0074] 示例性地,当输入子特征矩阵为Y(0,0)时,子特征矩阵对应的加减变换规则表征不做变换,则电子设备控制左变换使能信号和右变换使能信号均无效,即左变换使能信号len为0,右变换使能信号ren为0,相应地所有加减法单元的输入为0。
[0075] 在一些实施例中,输入子特征矩阵为 时,不对子特征矩阵做变换,则得到的第一变换矩阵为[Y00 Y05 Y50 Y55]。
[0076] 在一些实施例中,按照子特征矩阵对应的加减变换规则,控制加减法单元对子特征矩阵进行变换,得到第一变换矩阵,包括:在子特征矩阵对应的加减变换规则表征需要进行目标变换处理的情况下,控制与目标变换处理对应的使能信号有效,以控制加减法单元对子特征矩阵进行目标变换处理得到加减法变换结果;其中,目标变换处理包括左变换处理和右变换处理中的至少一种;控制数据选择器调整加减法变换结果中的数据顺序,得到第一变换矩阵。
[0077] 其中,使能信号是决定子特征矩阵进行目标变换时的信号。也就是说,使能信号决定子特征矩阵是进行左变换处理、右变换处理中的一种,还是同时执行左边换处理和右变换处理,即左右变换处理。
[0078] 示例性地,当输入子特征矩阵为Y(0,j)(j≠0)时,子特征矩阵对应的加减变换规则表征做右变换,则电子设备控制左变换使能信号无效,即左变换使能信号len=0,以及右变换使能信号有效,即右变换使能信号ren=1。相应地,将右变换使能信号作为输入的所有加减法单元的输入为1。
[0079] 在一些实施例中,对子特征矩阵做右变换进行举例说明。
[0080]
[0081] 其中,输入加减法单元的子特征矩阵为 ,len=0,ren=1,右变换得到的第一变换矩阵为[Y01+Y02 Y02‑Y01 Y51+Y52 Y52‑Y51]。
[0082] 需要说明的是,Y(0,1)执行右变换的实质是Y(0,1)右乘M矩阵 。
[0083] 示例性地,当输入子特征矩阵为Y(i,0)(i≠0)时,子特征矩阵对应的加减变换规则表征做左变换,则电子设备控制左变换使能信号有效,即左变换使能信号len=1,以及右变换使能信号无效,即右变换使能信号ren=0。相应地,将左变换使能信号作为输入的所有加减法单元的输入为1。
[0084] 在一些实施例中,对子特征矩阵做左变换进行举例说明。
[0085] 输入加减法单元的子特征矩阵为 ,len=1,ren=0,左变换得到的第一变换矩阵为[Y10+Y20 Y15+Y25 Y20‑Y10 Y25‑Y15],执行左变换的具体过程如下:
[0086]
[0087]
[0088] 需要说明的是,对Y(1,0)做左变换的实质是Y(1,0)左乘M矩阵 。
[0089] 示例性地,当输入子特征矩阵为Y(i,j)(i≠0, j≠0)时,子特征矩阵对应的加减变换规则表征做左右变换,则电子设备控制左变换使能信号和右变换使能信号均有效,即左变换使能信号len=1,以及右变换使能信号ren=1。相应地,将左变换使能信号作为输入的所有加减法单元的输入为1,将右变换使能信号作为输入的所有加减法单元的输入为1。
[0090] 在一些实施例中,以子特征矩阵Y(2,2)为例,按如下步骤执行左右变换。
[0091]
[0092]
[0093] 输入加减法单元的子特征矩阵为 ,len=1,ren=1,依次对Y(2,2)执行左变换和右变换,执行左右变换后得到的第一变换矩阵为:
[0094]
[0095] 需要说明的是,对Y(2,2)做左右变换的实质是Y(2,2)分别左乘和右乘M矩阵 。
[0096] 上述实施例中,根据子特征矩阵对应的加减变换规则执行相应的变换,得到第一变换矩阵,简单高效。
[0097] 在一些实施例中,确定子特征矩阵对应的位移量,包括:
[0098] 根据目标位置确定子特征矩阵在后变换参数矩阵中对应的参数子矩阵;目标位置是子特征矩阵在点乘特征矩阵中所处的位置;
[0099] 从后变换参数矩阵中确定位移基准矩阵;
[0100] 根据参数子矩阵与位移基准矩阵之间的相对关系,确定移位器组中的各移位器针对第一变换矩阵中的特征数据进行移位操作所需的位移量。
[0101] 其中,后变换参数矩阵是Winograd算法执行卷积运算时的计算式S=AT[(GgGT)⨀T T(B dB)]A中的A或A矩阵。例如对F(2×2,3×3)形式的Winograd函数,后变换参数矩阵是。例如对F(4×4,3×3)形式的Winograd函数,后变换参数矩阵
是 。
[0102] 示例性地,对于形式为F(4×4,3×3)Winograd函数,后变换处理输出为:
[0103]
[0104] 点乘后输出为:
[0105]
[0106] 将点乘特征矩阵进行分块后各子特征矩阵分别为:
[0107]
[0108] 根据各子点乘矩阵对应的参数子矩阵和位移基准矩阵之间的关系,确定移位器组中的各移位器针对第一变换矩阵中的特征数据进行移位操作所需的位移量。
[0109] 在一些实施例中,多个子特征矩阵是依次进行后变换处理的;控制累加器将各子特征矩阵对应的第二变换矩阵进行累加,得到卷积处理生成的后变换特征矩阵,包括:
[0110] 在每计算出一个子特征矩阵对应的第二变换矩阵之后,根据子特征矩阵在点乘特征矩阵中的目标位置,从多个累加器中确定与目标位置相匹配的目标累加器;
[0111] 控制目标累加器打开并屏蔽非目标累加器,以对子特征矩阵对应的第二变换矩阵与当前累加的变换矩阵进行累加,并在累加后对下一个子特征矩阵执行后变换处理。
[0112] 示例性地,当输入子特征矩阵为Y(0,0)时,除了累加器SA(0, 0)、SA(0, n‑1)、SAA(n‑1, 0)、S(n‑1, n‑1),其他累加器的输入切换为0。
[0113] 示例性地,当输入子特征矩阵为Y(0,j)(j≠0)时,除了累加器SA(0,:)和SA(n‑1,:),其他累加器的输入切换为0。
[0114] 示例性地,当输入子特征矩阵为Y(i,0)(i≠0)时,除了累加器SA(:, 0)和SA(:, n‑1),其他累加器的输入切换为0。
[0115] 在一些实施例中,多个子特征矩阵是按照后变换处理周期依次进行后变换处理的;控制目标累加器打开并屏蔽非目标累加器,以对子特征矩阵对应的第二变换矩阵与当前累加的变换矩阵进行累加,并在累加后对下一个子特征矩阵执行后变换处理,包括:
[0116] 控制目标累加器打开并屏蔽非目标累加器,以对子特征矩阵对应的第二变换矩阵与在先周期已累加的变换矩阵进行累加,并进入下一个后变换处理周期,以对下一个子特征矩阵执行后变换处理;其中,在先周期是之前已执行的后变换处理周期。
[0117] 在一些实施例中,如图3所示,提供了一种卷积处理运算单元。现针对图3做如下说明。
[0118] 加减法单元用于对子特征矩阵实现左变换、右变换、左右变换以及不变换中的任意一种变换。
[0119] 移位是将输入数据执行二进制向左或向右移位的操作。其中加减运算输出的4个2 2 h
数据,连接n/4个移位器组,输出n/4个2×2矩阵,每组记为S (p,q)(p,q∈[0, n/2‑1])。每
2 2
个数据连接n/4个移位器,共n个移位器组,构成一个n×n的移位器阵列,与最终结果S的数据一一对应。
[0120] 累加器将输入数据进行累加,能够选择不与当前数据累加,即加0操作,每个移位A器组后都连接一个累加器,构成一个n×n的累加器阵列模块,每个累加器记为S(r,t)(r,t∈[0, n‑1])。
[0121] 在一些实施例中,对于形式为F(n1×n1,k×k)的Winograd函数和形式为F(n2×n2,k×k)的Winograd函数(n1、n2为偶数,k为奇数),若n1>n2,则F(n1×n1,k×k)的卷积处理运算单元通过屏蔽部分累加器输出可兼容用于F(n2×n2,k×k)的后变换计算。若n不变、则k为奇数的Winograd函数后变换可以用同一个卷积处理运算单元完成。
[0122] 在一些实施例中,提供了一种变换控制电路,包括:
[0123] 加减法单元,用于针对多个子特征矩阵中的每个子特征矩阵,按照子特征矩阵对应的加减变换规则对子特征矩阵进行变换,得到第一变换矩阵;多个子特征矩阵是将卷积处理过程中得到的点乘特征矩阵进行分块得到的;点乘特征矩阵是使用卷积加速算法对前变换特征矩阵进行点乘得到的;
[0124] 移位器,用于确定子特征矩阵对应的位移量,依据位移量对第一变换矩阵进行移位变换,得到第二变换矩阵;其中,各移位器与待生成的后变换特征矩阵的元素位置相对应;位移量是根据后变换参数矩阵中后变换参数的排列位置特征确定的;
[0125] 累加器,用于将各子特征矩阵对应的第二变换矩阵进行累加,得到卷积处理生成的后变换特征矩阵;其中,累加器与后变换特征矩阵的元素位置相对应。
[0126] 在一些实施例中,上述实施例中的变换控制电路还包括数据选择器,数据选择器根据左变换使能信号和右变换使能信号调整输出数据顺序。
[0127] 在一些实施例中,在左变换使能信号和右变换使能信号均无效的情况下,加减法单元用于不对子特征矩阵进行变换,数据选择器用于不调整子特征矩阵的数据顺序,得到第一变换矩阵。
[0128] 在一些实施例中,在目标变换处理对应的使能信号有效的情况下,加减法单元用于对子特征矩阵进行目标变换处理得到加减法变换结果,数据选择器用于调整加减法变换结果中的数据顺序,得到第一变换矩阵;其中,目标变换处理包括左边换处理和右变换处理中的至少一种。
[0129] 在一些实施例中,如图4所示,提供了一种变换控制电路示意图。
[0130] 其中,MUX‑0为能够将输入的数据切换为0输出的数据选择器;4MUX为4路数据选择器;shifter为左移位模块,可以采用桶型移位等电路实现,执行将数据左移shift_op位。该电路可以实现上述的3种矩阵变换,由左变换使能信号len和右变换使能信号ren控制。len和ren直接控制加减法单元右输入的MUX‑0,输入切换到0时不执行相应的变换。在均不执行变换时,加减法单元输出的数据顺序从左到右为{Y’A, Y’B, Y’C, Y’D},其余3种变换,即左变换、右变换和左右变换均会改变输出数据顺序,4路数据选择器根据左右变换的使能情况将加减法单元输出的数据的顺序重排为{Y’A, Y’B, Y’C, Y’D}。
[0131] 在一些实施例中,如图5所示,提供了一种卷积处理流水线设计示意图。电路各级中间通过寄存器实现数据锁存和流水,保证数据可以连续输入。运用变换控制电路进行F(n×n,k×k)(n为偶数,k为奇数)形式的卷积处理流水线的过程为:将点乘特征矩阵Y拆分为2
(n+k‑1) /4个2×2子特征矩阵,每周期送入一个2×2子矩阵进入卷积处理单元,一次F(n×
2
n,k×k)的Winograd后变换经过(n+k‑1) /4个周期在累加器输出上得到n×n的矩阵结果。
[0132] 在一些实施例中,举例说明卷积处理方法的整体计算过程。
[0133] F(4×4, 3×3)的Winograd函数为:
[0134]
[0135] 输出为
[0136]
[0137] 点乘后输出:
[0138]
[0139] 变换控制电路包含一组加减法单元,4组4个的左位移器组,16个累加器SA(0, 0)~A
S(3, 3)分别对应S00~S33。将点乘特征矩阵进行划分得到如下多个子特征矩阵:
[0140]
[0141] 每一个后变换处理周期送入一组子特征矩阵,其中不做变换的子特征矩阵Y(0,0)的后变换处理步骤如下:依次将Y(0,0)输入加减法单元、4路数据选择器、移位器组和累加器,得到Y(0,0)对应的子后变换矩阵。
[0142]
[0143]
[0144] 做右变换的子特征矩阵Y(0,1)的后变换处理步骤如下:依次将Y(0,1)输入加减法单元、4路数据选择器、移位器组得到Y(0,1)对应的子后变换矩阵,累加器将Y(0,0)和Y(0,1)对应的子后变换矩阵进行累加。
[0145]
[0146]
[0147]
[0148] Y(0,2)与Y(0,1)一样,都是做右变换处理。对Y(0,2)做右变换的处理步骤如下:依次将Y(0,2)输入加减法单元、4路数据选择器、移位器组得到Y(0,2)对应的子后变换矩阵,累加器将Y(0,0)、Y(0,1)和Y(0,2)对应的子后变换矩阵进行累加。
[0149]
[0150]
[0151] 做左变换的子特征矩阵Y(1,0)的后变换处理步骤如下:依次将Y(1,0)输入加减法单元、4路数据选择器、移位器组得到Y(1,0)对应的子后变换矩阵,累加器将Y(0,0)、Y(0,1)、Y(0,2)和Y(1,0)对应的子后变换矩阵进行累加。
[0152]
[0153]
[0154]
[0155]
[0156] Y(2,0)与Y(1,0)同理,不再重复描述。
[0157] 做左右变换的子特征矩阵Y(2,2)的后变换处理步骤如下:依次将Y(2,2)输入加减法单元、4路数据选择器、移位器组得到Y(2,2)对应的子后变换矩阵,累加器将Y(0,0)、Y(0,1)、Y(0,2)、Y(1,0)和Y(2,2)对应的子后变换矩阵进行累加。
[0158]
[0159]
[0160] 其他子特征矩阵的计算和变换与Y(2, 2)同理,不再重复描述。累加器对所有子特征矩阵对应的子后变换矩阵进行累加即得到卷积处理生成的后变换特征矩阵。
[0161] 应该理解的是,虽然如上述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0162] 在一些实施例中,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图6示。该电子设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)及通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的数据库用于存储实现卷积处理方法所需的相关数据。该电子设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述的卷积处理方法的步骤。
[0163] 在一些实施例中,提供了一种电子设备,该电子设备可以是终端,其内部结构图可以如图7示。该电子设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)及通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现上述的卷积处理方法的步骤。
[0164] 本领域技术人员可以理解,图6或图7示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0165] 在一些实施例中,提供了一种电子设备,该电子设备包括存储器和处理器,存储器存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例的步骤。
[0166] 在一些实施例中,提供了一种计算机可读存储介质800,其上存储有计算机程序820,计算机程序820被处理器执行时实现上述各方法实施例中的步骤,其内部结构图如图8所示。
[0167] 在一些实施例中,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例的步骤。
[0168] 需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
[0169] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read‑Only Memory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
[0170] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0171] 以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。