一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种膨胀卷积加速计算方法及装置与流程

2022-02-22 01:52:05 来源:中国专利 TAG:


1.本发明属于深度学习领域,具体涉及膨胀卷积加速计算方法及装置。


背景技术:

2.本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
3.卷积神经网络(convolutional neural networks,简称cnn)是一种深度前馈人工神经网络,已被应用于诸多领域,如图像识别。卷积神经网络在图像数据的处理过程中会进行较为复杂的计算,主要包括卷积计算、批标准化计算、激活计算等。
4.用cnn进行图像处理时,通常需要经过多次卷积和池化操作增大模型的感受野。池化可以减少图像的尺寸,再使用卷积核可以增大感受野;经过卷积和池化的特征图会比较小,这时可以传到全连接网络进行分类。但是在进行图像分割时,需要针对每个像素点进行预测,因此还要把减小尺寸后的特征图通过上采样的方法(如deconv反卷积)转回原始图像尺寸再进行预测。在这一过程的主要问题:(1)信息丢失,池化操作是不可逆转的,通过对特征图进行上采样还原图像尺寸时丢失信息。(2)无法重构小的物体图像,如果一个物体占4
×
4的像素,则经过4次池化操作之后,物体的信息就无法重构了。因此,为了避免使用池化等操作扩大感受野,《multi-scale context aggregation by dilated convolutions》中提出了膨胀卷积(dilated convolution)。膨胀卷积运算会在卷积的过程中将卷积核扩张到指定尺寸,并将原卷积核中没有占用的区域用零填充。
5.现有技术中,为了加速对图像数据进行卷积计算以得到图像处理结果,常用的方法是利用im2col函数优化卷积运算。在cnn学习训练过程中,通常不会一次处理整张图片,而是先将图片划分为多个小的块(patch),并且每个patch需要经过im2col处理进行重排,将三维的patch展开成为一维向量,进而可以将卷积操作转换为二维矩阵乘法。
6.在上述方案中,当计算一次膨胀卷积需要同时访问多行和多列的数据,如图1所示,以尺寸为3*3、膨胀率为2的膨胀卷积为例的话,一次膨胀卷积需要的9个数分布在3行和3列,应当理解,数据读取只有针对连续的数据才能确保数据读取的带宽,如需同时访问到上述9个数需要对内部存储器的排布做特殊设计,例如通过内部存储器切分提高内存访问的并行度。然而,由于npu通常需要支持不同尺寸的卷积,因此若需要实现针对不同的卷积核的通用性,则需要把内存切分成很多小块才能兼容各种设置,这样一方面会增大内部存储器的面积,另一方面提升了数据访问逻辑的复杂度。
7.因此,设计出一种具有高通用性、低复杂度的膨胀卷积加速计算方法是当前亟需解决的技术问题。


技术实现要素:

8.针对上述现有技术的膨胀卷积运算的实现通用性较差且复杂度高的问题。本发明实施例提出了一种膨胀卷积加速计算方法及装置。利用这种方法及装置,能够解决上述问
题。
9.本发明的实施例中提供了以下方案。
10.第一方面,提供一种膨胀卷积加速计算方法,所述方法包括:将r
×
s的膨胀卷积运算分解为s个r
×
1的子膨胀卷积运算,其中所述r为卷积核高度、所述s为卷积核宽度;针对每个r
×
1的子膨胀卷积运算,将多个权重值并行缓存至计算单元阵列中的多个计算单元;从输入图像数据中确定分别对应于所述多个权重值的多路输入数据流,将所述多路输入数据流并行输入所述多个计算单元;在所述多个计算单元内部,各自基于缓存的权重值和接收的输入数据流执行滑窗操作和乘法操作,并在所述多个计算单元之间执行累加操作,以输出所述子膨胀卷积运算的中间结果;叠加所述s个r
×
1的子膨胀卷积运算的中间结果,得到所述膨胀卷积运算的卷积结果。
11.在一种可能的实施方式中,根据所述膨胀卷积运算的膨胀率和卷积步长从输入图像数据中读取所需数据以拼接组成所述每个权重值对应的输入数据流。
12.在一种可能的实施方式中,根据所述膨胀卷积运算的膨胀率和卷积步长读取所述输入图像数据中的多行数据以拼接组成所述每个权重值对应的输入数据流。
13.在一种可能的实施方式中,所述滑窗操作的滑动步长根据所述膨胀卷积运算的所述卷积步长确定。
14.在一种可能的实施方式中,叠加所述s个r
×
1的子膨胀卷积运算的中间结果,包括:在所述s个r
×
1的子膨胀卷积运算中实时对所述s个r
×
1的子膨胀卷积运算的中间结果进行叠加,或者在所述s个r
×
1的子膨胀卷积运算执行完毕之后再进行多个中间结果的叠加。
15.第二方面,提供一种膨胀卷积加速计算装置,所述装置包括:逻辑控制单元和计算单元阵列;其中,所述逻辑控制单元被配置为用于:将r
×
s的膨胀卷积运算分解为s个r
×
1的子膨胀卷积运算,其中所述r为卷积核高度、所述s为卷积核宽度;针对每个r
×
1的子膨胀卷积运算,将多个权重值并行缓存至所述计算单元阵列中的多个计算单元;确定分别对应于所述多个权重值的多路输入数据流,将所述多路输入数据流并行输入所述多个计算单元;所述计算单元阵列被配置为用于:在所述多个计算单元内部,各自基于缓存的权重值和接收的输入数据流执行滑窗操作和乘法操作,并在所述多个计算单元之间执行累加操作,以输出所述子膨胀卷积运算的中间结果;叠加所述s个r
×
1的子膨胀卷积运算的中间结果,得到所述膨胀卷积运算的卷积结果。
16.在一种可能的实施方式中,所述逻辑控制单元被配置为用于:根据所述膨胀卷积运算的膨胀率和卷积步长从输入图像数据中读取所需数据以拼接组成所述每个权重值对应的输入数据流。
17.在一种可能的实施方式中,所述逻辑控制单元被配置为用于:根据所述膨胀卷积运算的膨胀率和卷积步长读取所述输入图像数据中的多行数据以拼接组成所述每个权重值对应的输入数据流。
18.在一种可能的实施方式中,所述滑窗操作的滑动步长根据所述膨胀卷积运算的所述卷积步长确定。
19.在一种可能的实施方式中,所述计算单元阵列被配置为用于:在所述s个r
×
1的子膨胀卷积运算中实时对所述s个r
×
1的子膨胀卷积运算的中间结果进行叠加,或者在所述s
个r
×
1的子膨胀卷积运算执行完毕之后再进行多个中间结果的叠加。
20.本技术实施例采用的上述至少一个技术方案能够达到以下有益效果:通过将r
×
s的膨胀卷积运算分解为s个r
×
1的子膨胀卷积运算,将分解获得的多个权重值并行缓存在一列计算单元中,由各个计算单元基于缓存的权重值在输入数据流上进行滑窗操作和乘法操作,在计算单元之间进行累加操作,从而实现加速膨胀卷积运算,通过这种方案,不需要单独实现im2col的功能,降低了复杂度。
21.应当理解,上述说明仅是本发明技术方案的概述,以便能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施。为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举例说明本发明的具体实施方式。
附图说明
22.通过阅读下文的示例性实施例的详细描述,本领域普通技术人员将明白本文所述的优点和益处以及其他优点和益处。附图仅用于示出示例性实施例的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的标号表示相同的部件。在附图中:
23.图1为现有技术中基于im2col的膨胀卷积运算的示意图;
24.图2为一种卷积神经网络计算装置的结构示意图;
25.图3为根据本发明一实施例的膨胀卷积加速计算方法的流程示意图;
26.图4a为一种膨胀卷积运算的示意图,图4b为图a示出的膨胀卷积运算的另一示意图;
27.图5为根据本发明一实施例的将r
×
s的膨胀卷积运算分解为s个r
×
1的子膨胀卷积运算的示意图;
28.图6为根据本发明一实施例的将r
×
s的膨胀卷积运算分解为s个r
×
1的子膨胀卷积运算的另一示意图;
29.图7为根据本发明一实施例的利用缓存有权重值的计算单元(pe)进行膨胀卷积的示意图;
30.图8为根据本发明一实施例的利用缓存有权重值的计算单元(pe)进行滑窗操作的示意图;
31.图9为根据本发明一实施例的膨胀卷积加速计算装置的结构示意图。
32.在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
33.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
34.在本发明中,应理解,诸如“包括”或“具有”等术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不旨在排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在的可能性。
35.另外还需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征
可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
36.图2示出了一种膨胀卷积加速计算装置的结构示意图20。其包括:计算平台21和外部存储器22,计算平台21至少包括用于执行膨胀卷积运算的计算单元(pe)阵列211和内部存储器212,其中,外部存储器22通常选用低成本的存储介质,通常带宽受限且读写功耗也较高。内部存储器通常选用访问速度较快的存储介质,比如sram,其带宽较高,读写代价也较低,但通常成本较高,因此一般容量受限。
37.图3示出了根据本发明实施例的膨胀卷积加速计算方法300的流程示意图。以下结合图2所示出的膨胀卷积加速计算装置,对图3中膨胀卷积加速计算方法300的各个方面进行详细阐述。
38.如图3所示,该方法300可以包括:
39.步骤301:将r
×
s的膨胀卷积运算分解为s个r
×
1的子膨胀卷积运算,其中r为卷积核高度、s为卷积核宽度;
40.步骤302:针对每个r
×
1的子膨胀卷积运算,将多个权重值并行缓存至计算单元阵列中的多个计算单元;
41.步骤303:从输入图像数据中确定分别对应于多个权重值的多路输入数据流,将多路输入数据流并行输入多个计算单元;
42.步骤304:在多个计算单元内部,各自基于缓存的权重值和接收的输入数据流执行滑窗操作和乘法操作,并在多个计算单元之间执行累加操作,以输出子膨胀卷积运算的中间结果;
43.步骤305:叠加s个r
×
1的子膨胀卷积运算的中间结果,得到膨胀卷积运算的卷积结果。
44.图4a和图4b示出膨胀卷积运算的一个示例。其中,如图4a所示,该膨胀卷积运算的输入图像数据是由若干个像素值d
abc
组成的矩阵数据,其中,下标a表示通道序号,下标b表示行序号,取值为0,1,

,6;下标c表示列序号,取值0,1,

,6,也即其尺寸为7(列)*7(行)。该输入图像数据可以根据输入神经网络模型的真实图像获得,通常在外部存储器22上逐行逐通道地依次连续存储。该膨胀卷积层的卷积核是由若干个权重值w
edf
组成,其中,下标e表示通道序号,下标d表示行序号,取值为0,1,2;下标f表示列序号,取值0,1,2;也即卷积核尺寸为3(列)*3(行),卷积核可以根据若干图像样本数据训练获得,通常在外部存储器22上存储。如图4b所示,膨胀卷积结果是由卷积核对输入图像数据进行膨胀卷积而获得的输出数据,其中,p
xy
的下标x表示行序号,取值为0,1,2;下标y表示列序号,取值0,1,2;也即其尺寸为3(列)*3(行)。本实施例中,实现的膨胀卷积运算也即由输入图像数据和权重矩阵映射出膨胀卷积结果的操作,本实施例中以通道0的计算为例进行描述,本领域技术人员理解的是,可以按照通道0的计算逻辑对其他通道进行计算。
45.以图4a和图4b所示出的膨胀卷积运算为例,对本发明实施例进行详细描述。
46.假设膨胀卷积运算的膨胀率λ=2、卷积步长s=1。首先,可以将图4a和图4b所示出的3
×
3的膨胀卷积运算分解为3个3
×
1的子膨胀卷积运算。例如,如图5所示,将3
×
3的卷积核拆分为3个3
×
1的子卷积核:第一子卷积核、第二子卷积核以及第三子卷积核,然后将图4b所示出的膨胀卷积运算拆分为图6所示的三组子膨胀卷积运算。
47.接下来,针对每个3
×
1的子膨胀卷积运算,如图7所示,以通道0的卷积计算为例进
行描述,首先将3个权重值(w
000
,w
010
,w
020
)并行缓存至计算单元阵列中的3个计算单元。接下来,从输入图像数据中确定分别对应于3个权重值(w
000
,w
010
,w
020
)的3路输入数据流,将3路输入数据流并行输入3个计算单元。
48.在一些可能的实施方式中,可以根据该膨胀卷积运算的膨胀率λ=2和卷积步长s=1确定输入图像数据中的多行数据,并从多行数据中依次读取所需数据以拼接组成每个权重值对应的输入数据流。例如,输入缓存权重值w
000
的计算单元的数据流可以为:(d
000
,d
001
,d
002
,d
010
,d
011
,d
012
,d
020
,d
021
,d
022
),也即:(d
000
,...,d
00(w-2λ-1)
,d
010
,...,d
01(w-2λ-1)
,d
0(h-2λ-1)0
,...,d
0(h-2λ-1)(w-2λ-1)
),其中w为输入图像数据的宽度,h为输入图像数据的高度,w=7,h=7。相应地,可以依次推导出输入缓存有权重值w
010
和w
020
的计算单元的数据流。接下来,在3个计算单元内部,各自基于缓存的权重值和接收的输入数据流执行滑窗操作和乘法操作,并在多个计算单元之间执行累加操作,以输出子膨胀卷积运算的中间结果,例如,在计算单元内部,以缓存的权重值为滑动窗口对输入数据流执行滑窗操作,其中在每一次滑窗操作中将窗内数据进行乘法操作以获得乘法结果,在每一次乘法操作之后,对一列计算单元的乘法结果执行累加运算,得到对应于一像素位置的中间结果。
49.在一种可能的实施方式中,叠加s个r
×
1的子膨胀卷积运算的中间结果,包括:在所述s个r
×
1的子膨胀卷积运算中实时对所述s个r
×
1的子膨胀卷积运算的中间结果进行叠加,或者在所述s个r
×
1的子膨胀卷积运算执行完毕之后再进行多个中间结果的叠加。例如,在利用计算单元阵列计算得到上述第一中间结果、第二中间结果和第三中间结果之后,将叠加缓存的上述3个3
×
1的子膨胀卷积运算的中间结果,得到膨胀卷积运算的卷积结果。可选的,还可以在计算单元的计算过程中实时进行叠加,比如在计算出第二中间结果的p
00

之后实时累加到第一中间结果的p
00

上。可选的,可以根据片内缓存区域的大小确定叠加模式为计算过程中实时进行叠加,或者在计算执行完毕再之后进行多个中间结果的叠加。
50.在另外一些可能的实施方式中,为了进一步简单化数据读取逻辑,可以根据膨胀卷积运算的膨胀率和卷积步长确定输入图像数据中的多行数据,并将多行数据拼接组成每个权重值对应的输入数据流。例如,比如,当膨胀率λ=2,卷积步长=1,卷积核尺寸为3
×
3,输入图像数据尺寸为7
×
7时,可以向缓存有权重值w
000
的计算单元直接输入该输入图像数据的第1行、第2行和第3行数据的拼接组合,也即(d
000
,...,d
006
,d
010
,...,d
016
,d
020
,...,d
026
),并由计算单元内部控制滑窗操作的滑窗区域,比如可以仅在列序号不超过2的数据流上进行滑窗操作,并跳过列序号大于2的数据。
51.如图8所示,以上述3
×
3的膨胀卷积运算为例,基于缓存有权重值w
000
的计算单元对计算单元阵列的操作进行描述,其中,在时序t1,权重值w
000
在输入数据流上进行滑动至d
000
,并基于窗内的权重值和输入数据执行乘加操作:w
000
×d000
;与此同时,其他计算单元(pe)也基于缓存的权重段在其对应的输入数据流上进行同步滑动,以及基于权重值和窗内数据执行乘加操作,比如,权重值w
001
滑动至d
020
,权重值w
002
滑动至d
040
,依次类推,可以获得每个计算单元(pe)在时序t1处的乘法结果,进而可以将对应于第一子卷积核的一列计算单元(pe)在时序t1处的全部乘法结果相加得到一个输出值p
00

。在时序t2,权重值w
000
根据卷积步长在输入数据流上进行滑动至d
001
,依次类推,可以得到图6中的另一个输出值p
01

,在时序t3得到图6中的另一个输出值p
02

。最终可以得到图6中的第一中间结果中的每个值,并将第一中间结果缓存。
52.应当理解,在涉及第一子卷积核的计算执行完毕之后,将计算单元阵列中的缓存值更新为第二子卷积核的多个权重值,并按照和上述相似的方法获得图6中的第二中间结果中的每个值,依次类推,可以得到对应于每个子膨胀卷积运算的中间结果,将上述多个中间结果对应位置叠加,可以得到膨胀卷积操作的卷积结果。
53.在另外的实施例中,可以利用多列计算单元(pe)同时并行实现多个卷积核的膨胀卷积运算。进一步地,不同卷积核中处于同一位置的权重值对应于相同的输入数据流,则可以将不同卷积核中处于同一位置的权重值排列在计算单元(pe)阵列的同一行。
54.在一些可能的实施方式中,在上述步骤304中,该滑窗操作的滑动步长根据膨胀卷积运算的卷积步长确定。例如,在图8所示出的滑窗操作中,滑动步长和卷积步长相同。
55.本实施例中,通过采用上述方法,无需同时对外部存储器上基于单个存储方向上连续存储的输入图像数据进行频繁的跨行或跨列读取,也无需对内存的排布进行特殊设计,即可实现高通用性、低复杂度的膨胀卷积加速计算方法,此外,也无需在计算平台中额外实现im2col的功能,节省了硬件资源和运算功耗。
56.基于相同或类似的技术构思,本发明实施例还提供一种膨胀卷积加速计算装置,其包括:包括:逻辑控制单元91和计算单元(pe)阵列211;其中,
57.逻辑控制单元被配置为用于:将r
×
s的膨胀卷积运算分解为s个r
×
1的子膨胀卷积运算,其中r为卷积核高度、s为卷积核宽度;针对每个r
×
1的子膨胀卷积运算,将多个权重值并行缓存至计算单元阵列中的多个计算单元;确定分别对应于多个权重值的多路输入数据流,将多路输入数据流并行输入多个计算单元;
58.计算单元阵列被配置为用于:在多个计算单元内部,各自基于缓存的权重值和接收的输入数据流执行滑窗操作和乘法操作,并在多个计算单元之间执行累加操作,以输出子膨胀卷积运算的中间结果;叠加s个r
×
1的子膨胀卷积运算的中间结果,得到膨胀卷积运算的卷积结果。
59.在一些可能的实施方式中,逻辑控制单元91被配置为用于:根据膨胀卷积运算的膨胀率和卷积步长从输入图像数据中读取所需数据以拼接组成每个权重值对应的输入数据流。
60.在另外一些可能的实施方式中,逻辑控制单元91被配置为用于:根据膨胀卷积运算的膨胀率和卷积步长读取输入图像数据中的多行数据以拼接组成每个权重值对应的输入数据流。
61.在一些可能的实施方式中,滑窗操作的滑动步长根据膨胀卷积运算的卷积步长确定。
62.在一种可能的实施方式中,计算单元阵列被配置为用于:在s个r
×
1的子膨胀卷积运算中实时对s个r
×
1的子膨胀卷积运算的中间结果进行叠加,或者在s个r
×
1的子膨胀卷积运算执行完毕之后再进行多个中间结果的叠加。
63.本技术中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置而言,由于其基本相似于方法实施例,所以其描述进行了简化,相关之处可参见方法实施例的部分说明即可。
64.本技术实施例提供的装置与方法是一一对应的,因此,装置也具有与其对应的方
法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述装置的有益技术效果。
65.虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
66.虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献