本发明专利技术提供了一种膨胀卷积加速计算方法及装置,其中该方法包括:将R
【技术实现步骤摘要】
一种膨胀卷积加速计算方法及装置
[0001]本专利技术属于深度学习领域,具体涉及膨胀卷积加速计算方法及装置。
技术介绍
[0002]本部分旨在为权利要求书中陈述的本专利技术的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
[0003]卷积神经网络(Convolutional Neural Networks,简称CNN)是一种深度前馈人工神经网络,已被应用于诸多领域,如图像识别。卷积神经网络在图像数据的处理过程中会进行较为复杂的计算,主要包括卷积计算、批标准化计算、激活计算等。
[0004]用CNN进行图像处理时,通常需要经过多次卷积和池化操作增大模型的感受野。池化可以减少图像的尺寸,再使用卷积核可以增大感受野;经过卷积和池化的特征图会比较小,这时可以传到全连接网络进行分类。但是在进行图像分割时,需要针对每个像素点进行预测,因此还要把减小尺寸后的特征图通过上采样的方法(如deconv反卷积)转回原始图像尺寸再进行预测。在这一过程的主要问题:(1)信息丢失,池化操作是不可逆转的,通过对特征图进行上采样还原图像尺寸时丢失信息。(2)无法重构小的物体图像,如果一个物体占4
×
4的像素,则经过4次池化操作之后,物体的信息就无法重构了。因此,为了避免使用池化等操作扩大感受野,《MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS》中提出了膨胀卷积(dilated convolution)。膨胀卷积运算会在卷积的过程中将卷积核扩张到指定尺寸,并将原卷积核中没有占用的区域用零填充。
[0005]现有技术中,为了加速对图像数据进行卷积计算以得到图像处理结果,常用的方法是利用Im2col函数优化卷积运算。在CNN学习训练过程中,通常不会一次处理整张图片,而是先将图片划分为多个小的块(patch),并且每个patch需要经过Im2col处理进行重排,将三维的patch展开成为一维向量,进而可以将卷积操作转换为二维矩阵乘法。
[0006]在上述方案中,当计算一次膨胀卷积需要同时访问多行和多列的数据,如图1所示,以尺寸为3*3、膨胀率为2的膨胀卷积为例的话,一次膨胀卷积需要的9个数分布在3行和3列,应当理解,数据读取只有针对连续的数据才能确保数据读取的带宽,如需同时访问到上述9个数需要对内部存储器的排布做特殊设计,例如通过内部存储器切分提高内存访问的并行度。然而,由于NPU通常需要支持不同尺寸的卷积,因此若需要实现针对不同的卷积核的通用性,则需要把内存切分成很多小块才能兼容各种设置,这样一方面会增大内部存储器的面积,另一方面提升了数据访问逻辑的复杂度。
[0007]因此,设计出一种具有高通用性、低复杂度的膨胀卷积加速计算方法是当前亟需解决的技术问题。
技术实现思路
[0008]针对上述现有技术的膨胀卷积运算的实现通用性较差且复杂度高的问题。本专利技术实施例提出了一种膨胀卷积加速计算方法及装置。利用这种方法及装置,能够解决上述问
题。
[0009]本专利技术的实施例中提供了以下方案。
[0010]第一方面,提供一种膨胀卷积加速计算方法,所述方法包括:将R
×
S的膨胀卷积运算分解为S个R
×
1的子膨胀卷积运算,其中所述R为卷积核高度、所述S为卷积核宽度;针对每个R
×
1的子膨胀卷积运算,将多个权重值并行缓存至计算单元阵列中的多个计算单元;从输入图像数据中确定分别对应于所述多个权重值的多路输入数据流,将所述多路输入数据流并行输入所述多个计算单元;在所述多个计算单元内部,各自基于缓存的权重值和接收的输入数据流执行滑窗操作和乘法操作,并在所述多个计算单元之间执行累加操作,以输出所述子膨胀卷积运算的中间结果;叠加所述S个R
×
1的子膨胀卷积运算的中间结果,得到所述膨胀卷积运算的卷积结果。
[0011]在一种可能的实施方式中,根据所述膨胀卷积运算的膨胀率和卷积步长从输入图像数据中读取所需数据以拼接组成所述每个权重值对应的输入数据流。
[0012]在一种可能的实施方式中,根据所述膨胀卷积运算的膨胀率和卷积步长读取所述输入图像数据中的多行数据以拼接组成所述每个权重值对应的输入数据流。
[0013]在一种可能的实施方式中,所述滑窗操作的滑动步长根据所述膨胀卷积运算的所述卷积步长确定。
[0014]在一种可能的实施方式中,叠加所述S个R
×
1的子膨胀卷积运算的中间结果,包括:在所述S个R
×
1的子膨胀卷积运算中实时对所述S个R
×
1的子膨胀卷积运算的中间结果进行叠加,或者在所述S个R
×
1的子膨胀卷积运算执行完毕之后再进行多个中间结果的叠加。
[0015]第二方面,提供一种膨胀卷积加速计算装置,所述装置包括:逻辑控制单元和计算单元阵列;其中,所述逻辑控制单元被配置为用于:将R
×
S的膨胀卷积运算分解为S个R
×
1的子膨胀卷积运算,其中所述R为卷积核高度、所述S为卷积核宽度;针对每个R
×
1的子膨胀卷积运算,将多个权重值并行缓存至所述计算单元阵列中的多个计算单元;确定分别对应于所述多个权重值的多路输入数据流,将所述多路输入数据流并行输入所述多个计算单元;所述计算单元阵列被配置为用于:在所述多个计算单元内部,各自基于缓存的权重值和接收的输入数据流执行滑窗操作和乘法操作,并在所述多个计算单元之间执行累加操作,以输出所述子膨胀卷积运算的中间结果;叠加所述S个R
×
1的子膨胀卷积运算的中间结果,得到所述膨胀卷积运算的卷积结果。
[0016]在一种可能的实施方式中,所述逻辑控制单元被配置为用于:根据所述膨胀卷积运算的膨胀率和卷积步长从输入图像数据中读取所需数据以拼接组成所述每个权重值对应的输入数据流。
[0017]在一种可能的实施方式中,所述逻辑控制单元被配置为用于:根据所述膨胀卷积运算的膨胀率和卷积步长读取所述输入图像数据中的多行数据以拼接组成所述每个权重值对应的输入数据流。
[0018]在一种可能的实施方式中,所述滑窗操作的滑动步长根据所述膨胀卷积运算的所述卷积步长确定。
[0019]在一种可能的实施方式中,所述计算单元阵列被配置为用于:在所述S个R
×
1的子膨胀卷积运算中实时对所述S个R
×
1的子膨胀卷积运算的中间结果进行叠加,或者在所述S
个R
×
1的子膨胀卷积运算执行完毕之后再进行多个中间结果的叠加。
[0020]本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:通过将R
×
S的膨胀卷积运算分解为S个R
×
1的子膨胀卷积运算,将分解获得的多个权重值并行缓存在一列计算单元中,由各个计算单元基于缓存的权重值在输入数据流上进行滑窗操作和乘法操本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种膨胀卷积加速计算方法,其特征在于,所述方法包括:将R
×
S的膨胀卷积运算分解为S个R
×
1的子膨胀卷积运算,其中所述R为卷积核高度、所述S为卷积核宽度;针对每个R
×
1的子膨胀卷积运算,将多个权重值并行缓存至计算单元阵列中的多个计算单元;从输入图像数据中确定分别对应于所述多个权重值的多路输入数据流,将所述多路输入数据流并行输入所述多个计算单元;在所述多个计算单元内部,各自基于缓存的权重值和接收的输入数据流执行滑窗操作和乘法操作,并在所述多个计算单元之间执行累加操作,以输出所述子膨胀卷积运算的中间结果;叠加所述S个R
×
1的子膨胀卷积运算的中间结果,得到所述膨胀卷积运算的卷积结果。2.根据权利要求1所述的方法,其特征在于,根据所述膨胀卷积运算的膨胀率和卷积步长从输入图像数据中读取所需数据以拼接组成所述每个权重值对应的输入数据流。3.根据权利要求1所述的方法,其特征在于,根据所述膨胀卷积运算的膨胀率和卷积步长读取所述输入图像数据中的多行数据以拼接组成所述每个权重值对应的输入数据流。4.根据权利要求1所述的方法,其特征在于,所述滑窗操作的滑动步长根据所述膨胀卷积运算的所述卷积步长确定。5.根据权利要求1所述的方法,其特征在于,叠加所述S个R
×
1的子膨胀卷积运算的中间结果,包括:在所述S个R
×
1的子膨胀卷积运算中实时对所述S个R
×
1的子膨胀卷积运算的中间结果进行叠加,或者在所述S个R
×
1的子膨胀卷积运算执行完毕之后再进行多个中间结果的叠加。6.一种膨胀卷积加速计算装置,其特征在于,所述装置包括:逻辑控制单元...
【专利技术属性】
技术研发人员:徐兵,张楠赓,
申请(专利权)人:嘉楠明芯北京科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。