卷积运算电路和方法、图像处理设备与流程

文档序号:32057014发布日期:2022-11-04 21:56阅读:149来源:国知局
卷积运算电路和方法、图像处理设备与流程

1.本技术涉及图像处理技术领域,具体涉及一种卷积运算电路和方法、图像处理设备。


背景技术:

2.用于图像去噪的卷积神经网络算法本身需要输出与输入特征图同等分辨率的输出特征,因而其中间结果数据量极大。一般情况下的神经网络计算硬件设计方案需要将某层神经网络运算后生成的中间数据转移到芯片外部,再在下个神经网络层运算之前将中间数据再加载到芯片内部。由于芯片内外传输的高延迟以及图像去噪算法的大中间数据量,容易导致对应的算法运行速度慢。


技术实现要素:

3.鉴于此,本技术提供一种卷积运算电路和方法、图像处理设备,以在提高卷积运算过程的运算速度。
4.本技术提供的一种卷积运算电路,包括多个用于进行不同卷积运算层的运算模块;
5.各个所述运算模块包括用于缓存中间数据的中间存储器和用于进行对应卷积运算的运算单元,所述运算单元与对应的中间存储器设于同一芯片内;
6.所述运算单元用于接收输入数据,对所述输入数据进行对应的卷积运算,将卷积运算过程的中间数据缓存至所述中间存储器,从所述中间存储器读取当前的中间数据供对应卷积运算采用,并根据最新的中间数据更新所述中间存储器缓存的中间数据,输出对应运算模块的卷积运算结果。
7.可选地,多个所述运算模块包括输入层卷积模块、至少一个dw卷积模块、至少一个pw卷积模块、以及输出层卷积模块。
8.可选地,所述输入层卷积模块包括tm1个第一乘法器、tm1个第一乘法器分别对应的第一加法器和第一中间存储器、以及第一非线性激活单元,tm1表示所述输入层卷积模块的卷积核个数;所述tm1个第一乘法器用于对所述图像特征图中对应通道的数据分别进行乘法运算,得到第一乘积;所述第一加法器用于从对应的所述第一中间存储器读取当前的第一中间数据,将所述当前的第一中间数据与对应的第一乘积相加,若相加结果为中间数据,则依据相加结果更新对应的第一中间数据,将更新后的第一中间数据存入对应的第一中间存储器;所述第一非线性激活单元用于激活表征当前层最终卷积结果的相加结果,得到所述第一运算结果。
9.可选地,所述输入层卷积模块还包括r1
×
s1个第一输入存储器,r1×
s1表示所述输入层卷积模块中单次卷积计算的窗口大小;所述r1
×
s1个第一输入存储器对应r1
×
s1卷积窗口,用于存储后续运算中需要用到的卷积窗口中的第一输入激活数据,以便所述tm1个第一乘法器读取所述第一输入激活数据;所述第一输入激活数据来源于所述图像特征图。
10.可选地,所述dw卷积模块包括tm2个第二乘法器、tm2个第二乘法器分别对应的第二加法器和第二中间存储器、以及第二非线性激活单元,tm2表示所述dw卷积模块的卷积核个数;所述tm2个第二乘法器用于对所述第一运算结果中对应通道的数据分别进行乘法运算,得到第二乘积;所述第二加法器用于从对应的所述第二中间存储器读取当前的第二中间数据,将所述当前的第二中间数据与所述第二乘积相加,若相加结果为中间数据,则依据相加结果更新所述第二中间数据,将更新后的所述第二中间数据存入所述第二中间存储器;所述第二非线性激活单元用于激活表征当前层最终卷积结果的相加结果,得到所述第二运算结果。
11.可选地,所述pw卷积模块包括tm3×
tn3个第三乘法器、第三加法器、第三中间存储器、以及第三非线性激活单元,tm3表示所述pw卷积模块的卷积核个数,tn3表示所述pw卷积模块中输入通道尺度上的分片大小;所述tm3×
tn3个第三乘法器用于对所述第二运算结果中对应通道的数据分别进行乘法运算,得到第三乘积;所述第三加法器用于分别对tm3组第三乘法器输出的第三乘积进行相加,并从所述第三中间存储器读取当前的第三中间数据,将所述当前的第三中间数据与第三乘积对应的相加结果进行累加,依据累加结果更新所述第三中间数据,将更新后的所述第三中间数据存入所述第三中间存储器;所述第三非线性激活单元用于激活表征当前层最终卷积结果的累加结果,得到所述第三运算结果。
12.可选地,所述pw卷积模块还包括tn3个第二输入存储器;所述tn3个第二输入存储器用于存储后续运算中需要用到的卷积窗口中的第二输入激活数据,以便所述tm3×
tn3个第三乘法器读取所述第二输入激活数据;所述第二输入激活数据来源于所述第二运算结果。
13.可选地,所述输出层卷积模块包括tn4个第四乘法器、第四加法器、第四中间存储器、以及第四非线性激活单元,tn4表示所述输出层卷积模块中输入通道尺度上的分片大小;所述tn4个第四乘法器用于所述第三运算结果中对应通道的数据分别进行乘法运算,得到第四乘积;所述第四加法器用于分别对tn4个第四乘法器输出的第四乘积进行相加,并从所述第四中间存储器读取当前的第四中间数据,将所述当前的第四中间数据与第四乘积对应的相加结果进行累加,依据累加结果更新所述第四中间数据,将更新后的所述第四中间数据存入所述第四中间存储器;所述第四非线性激活单元用于激活表征当前层最终卷积结果的相加结果,得到所述第四运算结果。
14.可选地,所述第一非线性激活单元、所述第二非线性激活单元、所述第三非线性激活单元和所述第四非线性激活单元分别包括:加法器组和比较器组;所述加法器组用于对表征当前层最终卷积结果的相加结果进行累加偏置处理;所述比较器组用于对累加偏置处理的结构进行非线性激活处理,得到对应的运算结果。
15.可选地,所述中间存储器包括静态随机存取存储器。
16.本技术还提供一种卷积运算方法,应用于上述任一种卷积运算电路,包括:
17.接收输入数据,对所述输入数据进行对应的卷积运算,将卷积运算过程的中间数据缓存至中间存储器;
18.从所述中间存储器读取当前的中间数据供对应卷积运算采用,并根据最新的中间数据更新所述中间存储器缓存的中间数据,输出对应运算模块的卷积运算结果。
19.本技术还提供一种图像处理设备,包括上述任一种卷积运算电路。
20.本技术上述卷积运算电路和方法、图像处理设备中,多个运算模块分别包括用于
缓存中间数据的中间存储器,以存储对应的中间数据,供后续运算卷积过程取用,使对应运算模块不需要在运算时多次从片外加载中间数据,节约了片内外数据传输的能量损耗与传输时间,能够提高卷积运算过程中的运算速度,降低相应执行功耗。
21.进一步地,上述各个运算模块适用于基于层融合(fused layer)架构实现的卷积神经网络硬件加速器,可以高效执行应用层融合架构情况下的卷积神经网络运算,加速算子可以采用深度可分离卷积中的两种底层算子:dw卷积以及pw卷积,均可以在加速器中被加速;可以适用层融合架构下的数据重用要求,可以对多种算子综合应用的情况进行很好地加速处理,可以高速完成卷积神经网路的运算任务,运算过程中为流水线设计,硬件利用率高。
22.进一步地,各个运算模块的计算将被展开进行硬件映射,不同运算模块分别负责不同算子的加速,在卷积神经网络运算过程中,每个运算模块均一直处于满载状态,能够进一步提高硬件利用率。
附图说明
23.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
24.图1是本技术一实施例的卷积运算电路结构示意图;
25.图2是本技术一实施例的运算模块结构示意图;
26.图3a和图3b是本技术一实施例的输入层卷积模块结构示意图;
27.图4是本技术一实施例的dw卷积模块结构示意图;
28.图5是本技术一实施例的pw卷积模块结构示意图;
29.图6是本技术一实施例的输出层卷积模块结构示意图。
具体实施方式
30.发明人研究发现,针对基于卷积神经网络的图像去噪算法加速的硬件采用融合层(fused layer)架构,即利用卷积窗口之间存在的重叠部分的数据重用机会,将中间数据存储在芯片内部,能够在一定程度上加快运算速度并减少功耗。轻量级的卷积神经网络算法可以将传统卷积(convolution)等价转换为深度可分离卷积(depthwise separable convolution,dw卷积)。有的卷积核具有四个维度,并且通常情况下四个维度均大于1。而深度可分离卷积是将传统卷积过程分为两部分进行,首先,第一步的dw卷积的卷积核均为单通道,其余三个维度与传统卷积相同。第二步包括经过dw卷积后的特征图进行pw卷积(pointwise convolution),其中pw卷积核为1
×
1大小。因此,深度可分离卷积相比传统卷积可以极大地减少传统卷积的参数量,进而更便于硬件映射,运算量也更少。然而目前的硬件加速器很少专门对dw卷积以及pw卷积进行加速。
31.发明人进一步研究发现,基于卷积神经网络的图像去噪算法加速的硬件设备中,cpu(中央处理器)、gpu(图像处理器)等执行基底因为本身结构的原因不能满足基于cnn(卷积神经网络)的图像去噪算法的高速度和低功耗的运算要求,基于cnn的图像去噪网络计算
量大,且中间数据需要极大的存储量,对此实施的硬件加速器需要更充分地利用数据重用机会。一般的cnn加速器的设计思路为将逐个卷积层分别放入运算阵列进行计算,之后将中间结果输出到片外,设定计算粒度为整个卷积层。而在基于cnn的图像去噪任务中,为了充分进行数据重用,将中间数据全部存储在片上,需要减小计算粒度,设计流水线式的计算架构,上述这种一般的cnn加速器的设计理念不再适用。深度可分离卷积与传统卷积相比,在计算方式有自身特点。而一般的cnn加速器很少对深度可分离卷积采取专门的硬件加速方案,损失了运算性能,深度可分离卷积无法充分利用为传统卷积设计的硬件的计算资源。
32.基于上述研究,本技术提供的卷积运算电路中,输入层卷积模块、dw卷积模块、pw卷积模块以及输出层卷积模块等多个运算模块分别包括用于缓存中间数据的中间存储器,以存储对应的中间数据,供后续卷积运算过程取用,使对应运算模块不需要在运算时多次从片外加载中间数据,节约了片内外数据传输的能量损耗与传输时间,能够提高卷积运算过程中的运算速度,降低相应执行功耗。上述各个运算模块适用于基于层融合(fused layer)架构实现的卷积神经网络硬件加速器,可以高效执行应用层融合架构情况下的卷积神经网络运算,加速算子可以采用深度可分离卷积中的两种底层算子,均可以在加速器中被加速;可以适用层融合架构下的数据重用要求,可以对多种算子综合应用的情况进行很好地加速处理,可以高速完成卷积神经网路的运算任务,运算过程中为流水线设计,硬件利用率高。
33.下面结合附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而非全部实施例。基于本技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。在不冲突的情况下,下述各个实施例及其技术特征可以相互组合。
34.本技术第一方面提供一种卷积运算电路,该卷积运算电路包括多个用于进行不同卷积运算层的运算模块;各个所述运算模块包括用于缓存中间数据的中间存储器和用于进行对应卷积运算的运算单元,所述运算单元与对应的中间存储器设于同一芯片内;所述运算单元用于接收输入数据,对所述输入数据进行对应的卷积运算,将卷积运算过程的中间数据缓存至所述中间存储器,从所述中间存储器读取当前的中间数据供对应卷积运算采用,并根据最新的中间数据更新所述中间存储器缓存的中间数据,输出对应运算模块的卷积运算结果。
35.具体地,运算单元可以包括乘法器和/或加法器等用于执行卷积运算的器件。可选地,乘法器可以对对应输入数据中对应通道的数据分别进行乘法运算,得到当前乘积,加法器可以从中间存储器读取当前的中间数据,将当前的中间数据与当前乘积相加,若相加结果为中间数据,则依据相加结果更新中间数据,将更新后的中间数据存入中间存储器,以供后续运算过程取用,若相加结果为运算模块对应的卷积结果,则根据相加结果确定运算模块的卷积运算结果,以将卷积运算结果输入下一层卷积运算层的运算模块或者作为最终的运算结果。
36.上述卷积运算电路可以将卷积运算过程的中间数据缓存至中间存储器,从中间存储器读取当前的中间数据供对应卷积运算采用,并根据最新的中间数据更新所述中间存储器缓存的中间数据,不需要在运算时多次从片外加载(load)中间数据,节约了片内外数据传输的能量损耗与传输时间,能够提高卷积运算过程中的运算速度,降低相应执行功耗。
37.在一个实施例中,卷积运算电路可以包括输入卷积层,至少一个dw卷积层、至少一个pw卷积层、以及输出卷积层,其中输入卷积层的输入数据包括表征待处理图像的图像特征图,其他各层卷积运算层的输入数据分别包括表征上一层卷积运算层输出数据的输入特征图。相应地,卷积运算电路的多个运算模块包括输入层卷积模块、至少一个dw卷积模块、至少一个pw卷积模块、以及输出层卷积模块。可选地,多个运算模块之间的输入输出关系可以参考图1所示,具有如下特征:输入层卷积模块

dw卷积模块

pw卷积模块

dw卷积模块

pw卷积模块
→……→
dw卷积模块

pw卷积模块

输出层卷积模块。本实施例提供的运算模块为面向图像去噪领域的神经网络加速器计算模块,该运算模块适用于基于层融合(fused layer)架构实现的卷积神经网络硬件加速器,可以高效执行应用层融合架构情况下的卷积神经网络运算,加速算子包括卷积(convolution)、深度可分离卷积(depthwise separable convolution)。其中,深度可分离卷积中的两种底层算子:dw卷积以及pw卷积,均可以得到加速。该运算模块适用层融合架构下的数据重用要求,可以对多种算子综合应用的情况进行很好地加速处理,可以高速完成卷积神经网路的运算任务,运算过程中为流水线设计,硬件利用率高。在具体运算过程中,上述各层卷积运算层的计算将被展开进行硬件映射,不同运算模块分别可以进行不同算子的加速,每个运算模块可以一直处于满载状态,达到极高的硬件利用率。
38.具体地,各个运算模块的相关参数定义可以参考图2所示。输入层卷积模块是用于计算卷积的运算模块,输入层卷积模块可以将待输入卷积神经网络中进行去噪处理的图像的像素点信息作为输入特征图,进行卷积运算以得到神经网络输入层提取后的特征,对应的输出特征图将被用于网络后续的卷积运算处理。输入层卷积模块的设计可以面向卷积核大小为r1×
s1且输出通道尺度上的分片(tile)大小为tm1的卷积运算,单次卷积计算的窗口大小为r1×
s1,模块每r1×
s1个周期进行的运算为单次卷积得到tm1个输出通道的部分和需要的计算,即tm1个卷积核与特征图对应r1×
s1个像素点的相乘,总乘法单元数为tm1×1×
1。dw卷积模块是用于计算dw卷积的运算模块,该模块中,图像去噪卷积神经网络的中间层的卷积运算被等价转换为轻量级的深度可分离卷积运算,以减少卷积运算参数,方便硬件映射。该模块将前一层模块的输出作为输入特征图,进行dw卷积运算,并将会把输出特征传递给后续的pw卷积模块。该模块的设计面向卷积核大小为r2×
s2且输出通道尺度上的分片大小为tm2的dw卷积运算,单次dw卷积计算的窗口大小为r2×
s2,模块每r2×
s2个周期进行的运算为单次dw卷积得到tm2个输出通道的部分和需要的计算,即tm2个dw卷积核与特征图对应r2×
s2个像素点的相乘,总乘法单元数为tm2×1×
1。pw卷积模块是用于计算pw卷积的运算模块,该模块将同层dw卷积模块的输出作为输入特征图,进行pw卷积运算,并将会把输出特征传递给下一层的运算模块。该运算模块的设计面向卷积核大小为1
×
1且输入通道尺度上的分片大小为tn3,输出通道尺度上的分片大小为tm3的pw卷积运算,单次pw卷积计算的窗口大小为1
×
1,模块每个周期进行的运算为单次pw卷积输入tn3个通道得到tm3个输出通道的部分和需要的计算,即tm3个pw卷积核与特征图中对应tn3个通道中1
×
1个像素点的相乘,总乘法单元数为tm3×
tn3×1×
1。输出层卷积模块是用于计算卷积的运算模块,该模块将上层模块的输出作为输入特征图,进行卷积运算,以输出经图像去噪卷积神经网络处理得到的最终去噪后图像的像素点特征。该模块的设计面向卷积核大小为r4×
s4且输入通道尺度上的分片大小为tn4的卷积运算,单次卷积计算的窗口大小为r4×
s4,模块每r4×
s4个周期进
行的运算为单次卷积输入tn4个通道得到输出特征的部分和需要的计算,即卷积核与特征图对应tn4个通道中r4×
s4个像素点的相乘,总乘法单元数为tn4×1×
1。
39.在一个示例中,所述输入层卷积模块包括用于缓存第一中间数据的第一中间存储器,用于接收图像特征图,对所述图像特征图中对应通道的数据分别进行乘法运算,得到第一乘积,从第一中间存储器读取当前的第一中间数据,将所述当前的第一中间数据与所述第一乘积相加,若相加结果为中间数据,则依据相加结果更新所述第一中间数据,将更新后的所述第一中间数据存入所述第一中间存储器,若所述相加结果表征当前层最终的卷积结果,则根据所述相加结果确定所述输入层卷积模块的第一运算结果。
40.在一个示例中,所述dw卷积模块包括用于缓存第二中间数据的第二中间存储器,用于接收所述第一运算结果,对所述第一运算结果中对应通道的数据分别进行乘法运算,得到对应的第二乘积,从第二中间存储器读取当前的第二中间数据,将所述当前的第二中间数据与所得到的各第二乘积相加以进行dw卷积运算,若相加结果为中间数据,则依据相加结果更新所述第二中间数据,将更新后的所述第二中间数据存入所述第二中间存储器,若所述相加结果表征当前层最终的卷积结果,则根据所述相加结果确定dw卷积模块的第二运算结果。
41.在一个示例中,所述pw卷积模块包括用于缓存第三中间数据的第三中间存储器,用于接收所述第二运算结果,对所述第二运算结果中对应通道的数据分别进行乘法运算,得到第三乘积,从第三中间存储器读取当前的第三中间数据,将所述当前的第三中间数据与所述第三乘积相加以进行pw卷积运算,若相加结果为中间数据,则依据相加结果更新所述第三中间数据,将更新后的所述第三中间数据存入所述第三中间存储器,若所述相加结果表征当前层最终的卷积结果,则根据所述相加结果确定所述pw卷积模块的第二运算结果。
42.在一个示例中,所述输出层卷积模块包括用于缓存第四中间数据的第四中间存储器,用于接收第三运算结果,对所述第三运算结果中对应通道的数据分别进行乘法运算,得到第四乘积,从第四中间存储器读取当前的第四中间数据,将所述当前的第四中间数据与所述第四乘积相加,若相加结果为中间数据,则依据相加结果更新所述第四中间数据,将更新后的所述第四中间数据存入所述第四中间存储器,若所述相加结果表征当前层最终的卷积结果,则根据所述相加结果确定所述输出层卷积模块的第四运算结果。
43.这里将卷积与深度可分离卷积映射到对应的运算模块中,且这种流水线式算子专用计算架构支持高数据重用度的融合层架构,可以实现极高的硬件利用率和运算速度。
44.在一个实施例中,参考图3a所示,所述输入层卷积模块包括tm1个第一乘法器111、tm1个第一乘法器111分别对应的第一加法器112和第一中间存储器113、以及第一非线性激活单元114,tm1表示所述输入层卷积模块的卷积核个数;其中tm1个第一乘法器111、tm1个第一中间存储器113、以及第一非线性激活单元114可以形成输入层卷积模块的第一运算单元。
45.所述tm1个第一乘法器111用于对所述图像特征图中对应通道的数据分别进行乘法运算,得到第一乘积,以实现各个第一乘法器111之间的并行运算,提高运算效率;所述第一加法器112用于从对应的所述第一中间存储器113读取当前的第一中间数据,将所述当前的第一中间数据与对应的第一乘积相加,若相加结果为中间数据,则依据相加结果更新对
应的第一中间数据,将更新后的第一中间数据存入对应的第一中间存储器113;所述第一非线性激活单元114用于激活表征当前层最终卷积结果的相加结果,得到所述第一运算结果,该第一运算结果可以通过对应的输出通道输出。可选地,tm1个第一乘法器111可以分别从外部控制设备或者存储设备获取对应权重,以采用获取的权重对图像特征图中对应通道的数据进行乘法运算,保证所得第一乘积的准确性。可选地,上述第一非线性激活单元114可以采用relu函数(线性整流函数)激活对应相加结果。
46.在一个示例中,参考图3b所示,所述输入层卷积模块还包括r1
×
s1个第一输入存储器115,r1×
s1表示所述输入层卷积模块中单次卷积计算的窗口大小;所述r1
×
s1个第一输入存储器115对应r1
×
s1卷积窗口,用于存储后续运算中需要用到的卷积窗口中的第一输入激活数据,以便所述tm1个第一乘法器111读取所述第一输入激活数据,使tm1个第一乘法器111能够复用第一输入存储器115存储的第一输入激活数据,提高第一输入存储器115的利用率;所述第一输入激活数据来源于所述图像特征图。
47.在具体运算过程中,上述输入层卷积模块每周期进行一个输出通道分片(输入层卷积模块包括tm1个输出通道)上的单个r1×
s1卷积窗口内其中1个数据对应部分和的卷积计算,对应结构可以参考图3b所示。图3b所示输入层卷积模块的工作过程可以划分为如下四级:第一级,由于输入激活存在时间重用性,因此图像特征图中单个通道r1×
s1卷积窗口中全部r1×
s1个数据可以由从片外加载到片上,并且存储在片上的第一输入存储器115中,以避免后续运算过程中的重复加载。第二级,由于输入激活存在空间重用性,输入的图像特征图中单个通道r1×
s1卷积窗口中的1个数据通过广播网络被发送到tm1个第一乘法器111,而tm1个权重中每个r1×
s1卷积窗口分别提供一个权重数据,即总共tm1个权重数据通过单播网络被发送到对应第一乘法器111,tm1个第一乘法器111同时进行运算,得到输出部分和。第三级,上级中tm1个乘法单元输出得到的部分和与tm1个输出部分和第一中间存储器113中先前存储的第一中间数据相加,若相加后存储器中获得的值为部分和完全累积后的最终卷积计算结果(即所有卷积核中r1×
s1卷积窗口中的对应数据已经全部完成运算),则第一中间存储器113的值传递给位于下一级的第一非线性激活单元114,还可以发送信号告知第一非线性激活单元114当前传输的值即为卷积运算结果,清空第一中间存储器113,否则,累加后的值仍为非最终结果的部分和,将存储在第一中间存储器113中等待下一周期的第一乘法器111输出,不会被传递给下一级,也不会发送信号给下一级。第四级,对上一级第一中间存储器113中的输出数据进行激活处理,第四级运算后的结果将直接作为输入层卷积模块的输出。可选地,上述激活处理可以包括累加偏置和非线性激活函数处理等处理过程。
48.在一个实施例中,参考图4所示,所述dw卷积模块包括tm2个第二乘法器121、tm2个第二乘法器121分别对应的第二加法器122和第二中间存储器123、以及第二非线性激活单元124,tm2表示所述dw卷积模块的卷积核个数;其中tm2个第二乘法器121、tm2个第二加法器122和第二中间存储器123、以及第二非线性激活单元124可以形成dw卷积模块的第二运算单元。
49.所述tm2个第二乘法器121用于对所述第一运算结果中对应通道的数据分别进行乘法运算,得到第二乘积,以实现各个第二乘法器121之间的并行运算,提高运算效率;所述第二加法器122用于从对应的所述第二中间存储器123读取当前的第二中间数据,将所述当
前的第二中间数据与所述第二乘积相加,若相加结果为中间数据,则依据相加结果更新所述第二中间数据,将更新后的所述第二中间数据存入所述第二中间存储器123;所述第二非线性激活单元124用于激活表征当前层最终卷积结果的相加结果,得到所述第二运算结果。可选地,tm2个第二乘法器121可以分别从外部控制设备或者存储设备获取对应权重,以采用获取的权重对输入数据中对应通道的输入数据进行乘法运算,保证所得第二乘积的准确性。可选地,上述第二非线性激活单元124可以采用relu函数激活对应相加结果。可选地,上述tm2个第二乘法器121可以分别接入输入层卷积模块中一个输出通道输出的第二运算结果,将接入的第二运算结果作为输入。
50.在具体运算过程中,上述dw卷积模块每周期进行一个输出通道分片(dw卷积模块包括tm2个输出通道)上的单个r2×
s2卷积窗口内其中1个数据对应部分和的卷积计算,对应结构可以参考图4所示。图4所示dw卷积模块的工作过程可以划分为如下三级:第一级,对应输入特征图tm2个通道中每r2×
s2卷积窗口分别提供一个输入激活数据,即总共tm2个输入激活数据通过单播网络被发送到tm2个第二乘法器121,而tm2个第二乘法器121分别对应的权重中每个r2×
s2卷积窗口分别提供一个权重数据,即总共tm2个权重数据通过单播网络被发送到第二乘法器121,tm2个第二乘法器121同时进行运算,得到输出部分和。第二级,上级中tm2个第二乘法器121输出得到的部分和与tm2个输出部分和第二中间存储器123中先前存储的值(第二中间数据)相加,若相加后第二中间存储器123中获得的值为部分和完全累积后的最终卷积计算结果(即所有卷积核中r2×
s2卷积窗口中的对应数据已经全部完成运算),则将第二中间存储器123中的值传递给设于下一级的第二非线性激活单元124,并且发送信号告知下一级当前传输的值即为卷积运算结果,清空第二中间存储器123,否则,累加后的值仍为非最终结果的部分和,将存储在第二中间存储器123中等待下一周期的第二乘法器121输出,不会被传递给下一级,也不会发送信号给下一级。第三级,对上一级第二中间存储器123中的输出数据进行处理,第三级运算后的结果将直接作为dw卷积模块的输出。可选地,第二非线性激活单元124可以采用累加偏置,非线性激活函数处理等过程激活表征当前层最终卷积结果的相加结果。
51.在一个实施例中,所述pw卷积模块包括tm3×
tn3个第三乘法器131、第三加法器132、第三中间存储器133、以及第三非线性激活单元134,tm3表示所述pw卷积模块的卷积核个数,tn3表示所述pw卷积模块中输入通道尺度上的分片大小。具体地,如图5所示,tm3×
tn3个第三乘法器131可以分为tm3组第三乘法器,各组第三乘法器分别包括tn3个乘法器,tm3组第三乘法器分别具有对应的第三加法器132。具体地,tm3×
tn3个第三乘法器131、第三加法器132、第三中间存储器133、以及第三非线性激活单元134可以形成pw卷积模块的第三运算单元。
52.所述tm3×
tn3个第三乘法器131用于对所述第二运算结果中对应通道的数据分别进行乘法运算,得到第三乘积,以实现各个第三乘法器131之间的并行运算,提高运算效率;所述第三加法器132用于分别对tm3组第三乘法器输出的第三乘积进行相加,并从所述第三中间存储器132读取当前的第三中间数据,将所述当前的第三中间数据与第三乘积对应的相加结果进行累加,依据累加结果更新所述第三中间数据,将更新后的所述第三中间数据存入所述第三中间存储器132;所述第三非线性激活单元134用于激活表征当前层最终卷积结果的累加结果,得到所述第三运算结果。可选地,tm3×
tn3个第三乘法器131可以分别从外
部控制设备或者存储设备获取对应权重,以采用获取的权重输入数据中对应通道的数据进行乘法运算,保证所得第三乘积的准确性。可选地,上述第三非线性激活单元134可以采用relu函数激活对应相加结果。可选地,第三加法器132可以包括第一级加法器和第二级加法器,第一级加法器用于对用于分别对tm3组第三乘法器输出的第三乘积进行相加,第二级加法器连接在第一级加法器和第三中间存储器133之间,用于从所述第三中间存储器132读取当前的第三中间数据,将所述当前的第三中间数据与第三乘积对应的相加结果进行累加。
53.在一个示例中,参考图5所示,图5中,input表示输入,output表示输出,所述pw卷积模块还包括tn3个第二输入存储器135;所述tn3个第二输入存储器135用于存储后续运算中需要用到的卷积窗口中的第二输入激活数据,以便所述tm3×
tn3个第三乘法器131读取所述第二输入激活数据,使tm3×
tn3个第三乘法器131能够复用第二输入存储器135存储的第二输入激活数据,提高第二输入存储器135的利用率;所述第二输入激活数据来源于所述第二运算结果。
54.在具体运算过程中,上述pw卷积模块每周期进行一个输入通道分片(pw卷积模块包含tn3个输入通道)及一个输出通道分片(包含tm3个输出通道)上的单个1
×
1卷积窗口内数据对应部分和的卷积计算,对应结构可以参考图5所示。图5所示pw卷积模块的工作过程可以包括如下五级:第一级,由于输入激活存在时间重用性,该模块将上层dw卷积模块的输出存储到第二输入存储器135中,被存储的数据为模块输入特征图中单个输入通道分片中每1
×
1卷积窗口内,总共tn3个数据,以避免后续运算过程中的重复加载。第二级,由于输入激活存在空间重用性,模块输入特征图中tn3个输入通道每1
×
1卷积窗口分别提供一个输入激活数据,即总共tn3个输入激活数据通过多播(multicast)网络被发送到乘法器单元,而tm3个模块权重中,每个权重中tn3个通道下每个1
×
1卷积窗口分别提供一个权重数据,即总共tm3×
tn3个权重数据通过单播网络被发送到第三乘法器131,tm3×
tn3个第三乘法器131同时进行运算,得到输出部分和。第三级,tm3×
tn3个第三乘法器131的输出结果每tn3个为一组,通过tm3个加法树,输出得到tm3个输出通道对应的部分和。第四级,上级中得到的tm3个部分和与tm3个输出部分和第三中间存储器133中先前存储的值相加,若相加后第三中间存储器133中获得的值为部分和完全累积后的最终卷积计算结果(即所有输入通道下的1
×
1卷积窗口中的对应数据已经全部完成运算),则将第三中间存储器133中的值传递给下一级的第三非线性激活单元134,并且发送信号告知下一级当前传输的值即为卷积运算结果,清空第三中间存储器133,否则,累加后的值仍为非最终结果的部分和,将存储在第三中间存储器133中等待下一周期的加法树输出,不会被传递给下一级,也不会发送信号给下一级。第五级,对上一级第三中间存储器133中的输出数据进行激活处理,第五级运算后的结果将直接作为述pw卷积模块的输出。可选地,上述激活处理包含累加偏置,非线性激活函数处理等处理过程。
55.在一个实施例中,参考图6所示,所述输出层卷积模块包括tn4个第四乘法器141、第四加法器142、第四中间存储器143、以及第四非线性激活单元144,tn4表示所述输出层卷积模块中输入通道尺度上的分片大小;具体地,tn4个第四乘法器141、第四加法器142、第四非线性激活单元144可以形成输出层卷积模块的第四运算单元。
56.所述tn4个第四乘法器141用于所述第三运算结果中对应通道的数据分别进行乘法运算,得到第四乘积,以实现各个第四乘法器141之间的并行运算,提高运算效率;所述第
四加法器142用于分别对tn4个第四乘法器141输出的第四乘积进行相加,并从所述第四中间存储器143读取当前的第四中间数据,将所述当前的第四中间数据与第四乘积对应的相加结果进行累加,依据累加结果更新所述第四中间数据,将更新后的所述第四中间数据存入所述第四中间存储器143;所述第四非线性激活单元144用于激活表征当前层最终卷积结果的相加结果,得到所述第四运算结果。可选地,tn4个第四乘法器141可以分别从外部控制设备或者存储设备获取对应权重,以采用获取的权重输入数据中对应通道的数据进行乘法运算,保证所得第四乘积的准确性。可选地,上述第四非线性激活单元144可以采用relu函数激活对应相加结果。可选地,第四加法器142可以包括第三级加法器和第四级加法器,第三级加法器用于对用于分别对tm3组第三乘法器输出的第三乘积进行相加,第四级加法器连接在第三级加法器和第四中间存储器143之间,用于从所述第四中间存储器143读取当前的第四中间数据,将所述当前的第四中间数据与第四乘积对应的相加结果进行累加。
57.在具体运算过程中,上述输出层卷积模块每周期进行一个输入通道分片(输出层卷积模块包含tn4个输入通道)上的单个r4×
s4卷积窗口内其中1个数据对应部分和的卷积计算,对应结构可以参考图6所示。图6所示输出层卷积模块的工作过程可以包括如下四级:第一级,对应输入特征图中tn4个通道下每个r4×
s4卷积窗口分别提供一个输入激活数据,即总共tn4个输入激活数据通过单播网络被发送到乘法器单元,权重中tn4个通道下每个r4×
s4卷积窗口分别提供一个权重数据,即总共tn4个权重数据通过单播网络被发送到第四乘法器141,tn4个第四乘法器141同时进行运算,得到输出部分和。第二级,tn4个第四乘法器141的输出结果通过加法树,输出得到累积后的部分和。第三级,上级中得到的部分和与输出部分和第四中间存储器143中先前存储的值相加,若相加后第四中间存储器143中获得的值为部分和完全累积后的最终卷积计算结果(即所有输入通道下的r4×
s4卷积窗口中的对应数据已经全部完成运算),则将第四中间存储器143中的值传递给下一级的第四非线性激活单元144,并且发送信号告知下一级第四非线性激活单元144当前传输的值即为卷积运算结果,清空第四中间存储器143,否则,累加后的值仍为非最终结果的部分和,将存储在第四中间存储器143中等待下一周期的加法树输出,不会被传递给下一级,也不会发送信号给下一级。第四级,对上一级第四中间存储器143中的输出数据进行处理,第四级运算后的结果将直接作为模块输出。可选地,上述激活处理包含累加偏置,非线性激活函数处理等处理过程。
58.在一个示例中,所述第一非线性激活单元114、所述第二非线性激活单元124、所述第三非线性激活单元134和所述第四非线性激活单元144分别包括:加法器组和比较器组;所述加法器组用于对表征当前层最终卷积结果的相加结果进行累加偏置处理;所述比较器组用于对累加偏置处理的结构进行非线性激活处理,得到对应的运算结果。本示例提供的非线性激活单元可以稳定地对相加结果进行非线性激活处理,提高卷积运算电路的可靠性。
59.在一个实施例中,所述中间存储器(如第一中间存储器至第四中间存储器等等)包括静态随机存取存储器(sram),以提高中间存储器存储、更新或者擦除对应中间数据的效率,从而提高对应的卷积运算效率。
60.以上卷积运算电路中,多个运算模块分别包括用于缓存中间数据的中间存储器,以存储对应的中间数据,供后续运算过程取用,使对应运算模块不需要在运算时多次从片
外加载中间数据,节约了片内外数据传输的能量损耗与传输时间,能够提高卷积运算过程中的运算速度,降低相应执行功耗。上述各个运算模块适用于基于层融合(fused layer)架构实现的卷积神经网络硬件加速器,可以高效执行应用层融合架构情况下的卷积神经网络运算,加速算子可以采用深度可分离卷积中的两种底层算子:dw卷积以及pw卷积,均可以在加速器中被加速;可以适用层融合架构下的数据重用要求,可以对多种算子综合应用的情况进行很好地加速处理,可以高速完成卷积神经网路的运算任务,运算过程中为流水线设计,硬件利用率高;各个运算模块的计算将被展开进行硬件映射,不同运算模块分别负责不同算子的加速,在卷积神经网络运算过程中,每个运算模块均一直处于满载状态,能够进一步提高硬件利用率。
61.本技术第二方面提供一种卷积运算方法,应用于上述任一实施例提供的卷积运算电路,包括:
62.接收输入数据,对所述输入数据进行对应的卷积运算,将卷积运算过程的中间数据缓存至中间存储器;
63.从所述中间存储器读取当前的中间数据供对应卷积运算采用,并根据最新的中间数据更新所述中间存储器缓存的中间数据,输出对应运算模块的卷积运算结果。
64.上述卷积运算方法应用于上述任一实施例提供的卷积运算电路,具有上述任一实施例提供的卷积运算电路的所有技术效果,在此不再赘述。
65.本技术第三方面提供一种图像处理设备,包括上述任一实施例所述的卷积运算电路,图像处理设备可以采用该卷积运算电路进行图像去噪等处理,提高去噪效果,从而提高对应的图像处理效果。
66.尽管已经相对于一个或多个实现方式示出并描述了本技术,但是本领域技术人员基于对本说明书和附图的阅读和理解将会想到等价变型和修改。本技术包括所有这样的修改和变型,并且仅由所附权利要求的范围限制。特别地关于由上述组件执行的各种功能,用于描述这样的组件的术语旨在对应于执行所述组件的指定功能(例如其在功能上是等价的)的任意组件(除非另外指示),即使在结构上与执行本文所示的本说明书的示范性实现方式中的功能的公开结构不等同。
67.即,以上所述仅为本技术的实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,例如各实施例之间技术特征的相互结合,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
68.另外,对于特性相同或相似的结构元件,本技术可采用相同或者不相同的标号进行标识。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括一个或者更多个特征。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
69.在本技术中,“示例性”一词是用来表示“用作例子、例证或说明”。本技术中被描述为“示例性”的任何一个实施例不一定被解释为比其它实施例更加优选或更加具优势。为了使本领域任何技术人员能够实现和使用本技术,本技术给出了以上描述。在以上描述中,为了解释的目的而列出了各个细节。应当明白的是,本领域普通技术人员可以认识到,在不使
用这些特定细节的情况下也可以实现本技术。在其它实施例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本技术的描述变得晦涩。因此,本技术并非旨在限于所示的实施例,而是与符合本技术所公开的原理和特征的最广范围相一致。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1