利用卷积硬件对特征数据进行反卷积处理的方法和装置转让专利

申请号 : CN202110288755.6

文献号 : CN112686377B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赵卓然余凯黄畅王振江李建军李德林张祎男

申请人 : 北京地平线机器人技术研发有限公司

摘要 :

本公开涉及利用卷积硬件对特征数据进行反卷积处理的方法和装置。提供的方法包括:将特征图和反卷积核读入到片上存储器中,并对特征图进行补零处理;基于反卷积核确定多个卷积核;去除每个卷积核中全部元素为无效权重的行和/或列以获得优化卷积核,并去除补零后的特征图中的对应的行和/或列以获得与每个优化卷积核对应的优化特征图;利用乘加阵列对各个优化卷积核和对应的优化特征图进行卷积处理以获得多个卷积输出;以及对多个卷积输出进行交织合成处理以获得交织合成输出,其至少包括与特征图和反卷积核对应的反卷积输出。本公开可以减小硬件复杂度,节省芯片面积开销和功耗开销;通过优化处理减少大量的无效运算,提升卷积硬件的运行效率。

权利要求 :

1.一种利用专用卷积硬件对特征图进行反卷积处理的方法,所述专用卷积硬件包括乘加阵列和片上存储器,所述方法包括:将特征图和反卷积核读入到片上存储器中,并对所述特征图进行补零处理;

基于所述反卷积核确定多个卷积核;

去除每个卷积核中全部元素为无效权重的行和/或列以获得优化卷积核,并且去除补零后的特征图中的对应的行和/或列以获得与每个优化卷积核对应的优化特征图;

利用所述乘加阵列对各个优化卷积核和对应的优化特征图进行卷积处理,以获得多个卷积输出;以及

对所述多个卷积输出进行交织合成处理,以获得交织合成输出,所述交织合成输出包括与所述特征图和所述反卷积核对应的反卷积输出,其中,基于所述反卷积核确定多个卷积核包括:确定与所述反卷积核对应的卷积核的数量和尺寸,其中卷积核的数量等于用于反卷积运算的高度方向步长和宽度方向步长的乘积,卷积核的高度尺寸是所述反卷积核的高度尺寸以及用于反卷积运算的高度方向步长和高度方向补零参数的函数,卷积核的宽度尺寸是所述反卷积核的宽度尺寸以及用于反卷积运算的宽度方向步长和宽度方向补零参数的函数;以及

对于每个卷积核中的每个位置,基于该卷积核在高度和宽度方向上的二维索引、该卷积核的高度尺寸和宽度尺寸、该位置的二维坐标值、以及用于反卷积运算的高度方向步长、宽度方向步长和高度方向补零参数、宽度方向补零参数,确定所述反卷积核中的对应位置的二维坐标值,并且将所述对应位置的权重值作为所述卷积核中的该位置的权重值,其中,当所确定的所述反卷积核中的对应位置的二维坐标值超出所述反卷积核中的位置坐标范围时,确定所述卷积核的该位置处的权重为具有零值的无效权重。

2.如权利要求1所述的方法,其中,所述乘加阵列中包括的乘法器的数量大于或等于每个优化卷积核中包括的权重值的数量。

3.如权利要求1所述的方法,其中,对所述特征图进行补零处理包括:基于所述反卷积核的高度尺寸以及用于反卷积运算的高度方向步长和高度方向补零参数,确定所述特征图的上侧补零数量和下侧补零数量,其中所述下侧补零数量比所述上侧补零数量多一行;以及

基于所述反卷积核的宽度尺寸以及用于反卷积运算的宽度方向步长和宽度方向补零参数,确定所述特征图的左侧补零数量和右侧补零数量,其中所述右侧补零数量比所述左侧补零数量多一列。

4.如权利要求1所述的方法,其中,对所述多个卷积输出进行交织合成处理包括:以用于反卷积运算的高度方向步长和宽度方向步长为填充步长,以卷积核在高度和宽度方向上的二维索引为填充偏移量,将每个卷积输出中的各个元素填充到合成矩阵中。

5.如权利要求1所述的方法,还包括:对所述交织合成输出进行剪裁,以获得与所述特征图和所述反卷积核对应的反卷积输出。

6.如权利要求5所述的方法,其中,对所述交织合成输出进行剪裁包括:对所述交织合成输出的右侧和下侧进行剪裁,直到剪裁后的尺寸对应于所述特征图和所述反卷积核的反卷积输出的尺寸。

7.一种利用专用卷积硬件对特征图进行反卷积处理的装置,所述专用卷积硬件包括乘加阵列和片上存储器,所述装置包括:读取模块,用于将特征图和反卷积核读入到片上存储器中;

补零模块,用于对所述特征图进行补零处理;

卷积核生成模块,用于基于所述反卷积核生成多个卷积核;

优化模块,用于去除每个卷积核中全部元素为无效权重的行和/或列以获得优化卷积核,并且去除补零后的特征图中对应的行和/或列以获得与每个优化卷积核对应的优化特征图;

卷积模块,用于利用所述乘加阵列对各个优化卷积核和对应的优化特征图进行卷积处理,以获得多个卷积输出;以及

交织合成模块,用于对所述多个卷积输出进行交织合成处理,以获得交织合成输出,所述交织合成输出包括与所述特征图和所述反卷积核对应的反卷积输出,其中,基于所述反卷积核确定多个卷积核包括:确定与所述反卷积核对应的卷积核的数量和尺寸,其中卷积核的数量等于用于反卷积运算的高度方向步长和宽度方向步长的乘积,卷积核的高度尺寸是所述反卷积核的高度尺寸以及用于反卷积运算的高度方向步长和高度方向补零参数的函数,卷积核的宽度尺寸是所述反卷积核的宽度尺寸以及用于反卷积运算的宽度方向步长和宽度方向补零参数的函数;以及

对于每个卷积核中的每个位置,基于该卷积核在高度和宽度方向上的二维索引、该卷积核的高度尺寸和宽度尺寸、该位置的二维坐标值、以及用于反卷积运算的高度方向步长、宽度方向步长和高度方向补零参数、宽度方向补零参数,确定所述反卷积核中的对应位置的二维坐标值,并且将所述对应位置的权重值作为所述卷积核中的该位置的权重值,其中,当所确定的所述反卷积核中的对应位置的二维坐标值超出所述反卷积核中的位置坐标范围时,确定所述卷积核的该位置处的权重为具有零值的无效权重。

8.一种电子设备,包括:

专用卷积硬件,包括乘加阵列和片上存储器;

至少一个片外存储器,其上存储有指令;以及至少一个处理器,

其中,所述指令在被所述处理器运行时,使得所述电子设备执行权利要求1至6中的任一项所述的方法。

9.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被电子设备的处理器运行时,使得所述电子设备执行权利要求1至6中的任一项所述的方法,其中所述电子设备还包括专用卷积硬件,所述专用卷积硬件包括乘加阵列和片上存储器。

说明书 :

利用卷积硬件对特征数据进行反卷积处理的方法和装置

技术领域

[0001] 本公开涉及人工智能技术领域,尤其涉及一种利用专用卷积硬件对特征数据进行反卷积处理的方法、装置、设备和存储介质。

背景技术

[0002] 卷积神经网络(CNN)算法凭借其优异的数据集拟合能力和泛化能力被越来越多地用于分析现实世界中的视觉、语音、传感器感知信息以及高层次语义信息。反卷积是一种对
图像或特征数据(也称为“特征图”)进行插值或者上采样的操作,其随着深度学习理论创新
和应用发展,被越来越多地应用于各种新颖的卷积神经网络系统中,以将低分辨率图像还
原到高分辨率图像,或者基于高维度特征图生成低维度特征图。可以预期的是,反卷积处理
将在图像风格迁移、超高分辨率、目标检测、语义分割、实例分割、关键点(包括但不限于人
体骨骼关键点)检测、深度估计等领域有着广泛的应用。
[0003] 通用处理器例如中央处理单元(CPU)或图形处理单元(GPU)可用于对特征图进行反卷积处理,其可以采用列到图像(col2im)转换方法,该方法的示例示于图1中。参照图1,
在该示例中,反卷积核K为3×3矩阵,输入特征图X为2×2矩阵,二者可分别展开为一维矩阵
A和B。将一维矩阵A转置并与一维矩阵B相乘,可得到9×4矩阵C。然后,根据列到图像转换方
法,将矩阵C的每一列转换为3×3矩阵表示的二维图像,并且各个矩阵按照宽度方向预定步
长sw和高度方向预定步长sh进行拼接,重叠部分进行叠加,得到输出特征图。在该示例中,拼
接步长sw和步长sh均为2,为了便于理解,在矩阵C中用相同的下角标指示了在拼接时将会彼
此叠加的各个像素,所得到的输出特征图为5×5矩阵。最后,还可以根据高度(h)和宽度(w)
方向的补零参数ph、pw以及输出补零参数oph、opw,对输出特征图进行剪裁,上侧裁去pw行像
素,左侧裁去ph列像素,下侧裁去(pw‑opw)行像素,右侧裁去(ph‑oph)列像素,从而得到最终
的反卷积输出特征图。
[0004] 虽然图1的方法可利用通用处理器来执行,但是通用处理器的硬件架构设计并不适合于神经网络模型中大量包括的卷积、池化、反卷积等处理,运行效率非常低。为了提高
性能,一般要求通用处理器具有高的计算性能和大容量缓存及内存,这又会导致非常高的
能耗和硬件成本,因此通用处理器并不适于用在终端设备中。为了克服通用处理器的这些
缺点,目前已经开发了专用的硬件加速器,其适于以滑动窗口(sliding window)的方式来
执行卷积、池化和反卷积等处理,运行效率高,而且功耗很低,非常适合用在终端设备中。
[0005] 图2示出了一种适合使用专用硬件加速器执行的对特征图进行反卷积处理的方法。在图2的示例中,特征图和反卷积核均为3×3矩阵,该方法包括将特征图中的每个数值
分别与反卷积核相乘,得到多个(kh, kw)大小的输出矩阵,其中kh是反卷积核的高度尺寸,
kw是反卷积核的宽度尺寸。然后,将所得到的多个输出矩阵按照高度方向步长sh和宽度方向
步长sw进行拼接,在该示例中步长sh和sw均为2,其中,对重叠部分进行累加,得到7×7大小
的组合特征图。例如,在图2的示例中,特征图第一行第一列的数值“7”与反卷积核第一行第
三列的权重值“3”的乘积、以及特征图第一行第二列的数值“3”与反卷积核第一行第一列的
权重值“‑1”的乘积将会在按照步长sh=2、sw=2进行拼接时相累加,得到组合特征图中第一行
第三列的数值“18”;特征图第一行第一列的数值“7”与反卷积核第三行第三列的权重值“1”
的乘积、特征图第一行第二列的数值“3”与反卷积核第三行第一列的权重值“1”的乘积、特
征图第二行第一列的数值“1”与反卷积核第一行第三列的权重值“3”的乘积、以及特征图第
二行第二列的数值“0”与反卷积核第一行第一列的权重值“‑1”的乘积将会在按照步长sh=
2、sw=2进行拼接时相累加,得到组合特征图中第三行第三列的数值“13”;特征图中的其他
数值可以按照类似的方式与反卷积核进行相乘计算和拼接,这里不再一一描述。然后,根据
高度和宽度方向的补零参数ph、pw和输出补零参数oph、opw,对组合特征图进行剪裁,得到最
终的反卷积输出特征图。在该示例中,补零参数ph、pw和输出补零参数oph、opw均为1,因此上
侧裁去pw=1行像素,左侧裁去ph=1行像素,下侧裁去(pw‑opw)= 0行像素,右侧裁去(ph‑oph)= 
0行像素,得到的反卷积输出特征图为6×6大小的矩阵。
[0006] 图2所示的方法可以使用专用硬件加速器来执行。但是,专用硬件加速器一般是针对特定的计算过程来设计的。由于图2所示的反卷积处理与一般的卷积处理不同,因此当采
用专用硬件加速器来执行图2的方法时,需要设计与卷积硬件不同的专用反卷积硬件,其中
乘法器和加法器构成的阵列(一般称为乘加阵列MAC)和用于该阵列的片上缓存(一般为静
态随机存取存储器SRAM)需要设计为适于上面参照图2描述的处理过程。也就是说,专用硬
件加速器上需要设计单独的卷积模块和反卷积模块,这会提高硬件复杂度,带来额外的芯
片面积开销和功耗开销。
[0007] 因此,期望能够使用简单的硬件来处理卷积运算和反卷积运算二者。图3示出了一种基于滑动窗口卷积运算来实现反卷积处理的方法,由于该反卷积处理方法仅涉及卷积运
算,因此可以使用专用卷积硬件来执行,而不需要专门的反卷积硬件或模块。在图3的方法
中,作为示例,特征图尺寸h×w为3×3,卷积核尺寸kh×kw为3×3,滑动步长sh和sw均为2,补
零数量ph和pw均为1,输出补零oph和opw均为1。
[0008] 参照图3,首先,特征图被稀疏化处理。具体而言,可以在特征图行间添加(sh‑1)=1行零像素,列间添加(sw‑1)=1列零像素,上侧添加(kh‑1‑ph)=1行零像素,左侧添加(kw‑1‑pw)
=1列零像素,下侧添加(kh‑1‑ph+oph)=2行零像素,右侧添加(kw‑1‑pw+opw)=2列零像素。并
且,反卷积核中的权重值被颠倒,即以中心像素为中心,交换位置对称的权重值。然后,利用
颠倒后的反卷积核,对稀疏化的特征图进行步长(1, 1)的卷积运算,所得输出结果即为反
卷积计算结果。
[0009] 图3的反卷积处理方法虽然可以使用卷积硬件来执行,不需要专门的反卷积加速模块,但是由于在稀疏化处理中插入了大量的零值像素,因此仅大约1/(sh*sw)的计算是有
效的,而大约(sh*sw‑1)/(sh*sw)的计算都是无效的。以sh=sw=2为例,大约有75%的计算都是
无效的,这导致硬件加速器的延迟和能耗都很大。而且,图3的方法至少需要特征图尺寸
(sh*sw)倍以上的片上缓存SRAM空间,对硬件要求较高。
[0010] 因此,仍期望提供一种改进的反卷积处理方案,其能够基于卷积硬件来实施,而不需要专门的反卷积硬件,并且能进一步提高相关硬件的运行效率。
[0011] 上面描述了一些相关技术作为本发明的背景,但是应理解,这里并不意味着这些背景技术属于本发明的现有技术。

发明内容

[0012] 针对上述技术问题,提出了本公开。本公开提供一种对特征图进行反卷积处理的方案,其将反卷积核拆分成多个卷积核,并对卷积核进行优化以去除其中的无效权重行和/
或列。使用优化后的多个卷积核和对应的特征图进行卷积运算,并且将所得到的多个卷积
输出特征图进行交织组合和剪裁,以获得反卷积输出结果。本公开的方案可以利用卷积硬
件来执行,不需要专用的反卷积硬件,减小了硬件复杂度,节省了芯片面积开销和功耗开
销。而且,本公开的方案通过优化处理步骤去除了大量的无效权重,可以大幅度提高相关硬
件的运行效率,从而改善了硬件的延迟性能和能耗特性。
[0013] 根据本公开的一个方面,提供一种利用专用卷积硬件对特征图进行反卷积处理的方法,所述专用卷积硬件包括乘加阵列和片上存储器。所述方法可包括:将特征图和反卷积
核读入到片上存储器中,并对所述特征图进行补零处理;基于所述反卷积核确定多个卷积
核;去除每个卷积核中全部元素为无效权重的行和/或列以获得优化卷积核,并且去除补零
后的特征图中的对应的行和/或列以获得与每个优化卷积核对应的优化特征图;利用所述
乘加阵列对各个优化卷积核和对应的优化特征图进行卷积处理,以获得多个卷积输出;以
及对所述多个卷积输出进行交织合成处理,以获得交织合成输出,所述交织合成输出包括
与所述特征图和所述反卷积核对应的反卷积输出。
[0014] 根据本公开的另一方面,提供一种利用专用卷积硬件对特征图进行反卷积处理的装置,所述专用卷积硬件包括乘加阵列和片上存储器。所述装置可包括:读取模块,用于将
特征图和反卷积核读入到片上存储器中;补零模块,用于对所述特征图进行补零处理;卷积
核生成模块,用于基于所述反卷积核生成多个卷积核;优化模块,用于去除每个卷积核中全
部元素为无效权重的行和/或列以获得优化卷积核,并且去除补零后的特征图中对应的行
和/或列以获得与每个优化卷积核对应的优化特征图;卷积模块,用于利用所述乘加阵列对
各个优化卷积核和对应的优化特征图进行卷积处理,以获得多个卷积输出;以及交织合成
模块,用于对所述多个卷积输出进行交织合成处理,以获得交织合成输出,所述交织合成输
出包括与所述特征图和所述反卷积核对应的反卷积输出。
[0015] 根据本公开的另一方面,提供一种电子设备,包括:专用卷积硬件,包括乘加阵列和片上存储器;至少一个片外存储器,其上存储有指令;以及至少一个处理器,其中,所述指
令在被所述处理器运行时,使得所述电子设备执行上面描述的方法。
[0016] 根据本公开的另一方面,提供一种计算机可读存储介质,其上存储有计算机程序。所述计算机程序在被电子设备的处理器运行时,使得所述电子设备执行上面描述的方法。
其中,所述电子设备还包括专用卷积硬件,所述专用卷积硬件包括乘加阵列和片上存储器。
[0017] 本公开的上述和其他特征和优点将通过下面结合附图对示例性实施例的描述而变得显而易见。

附图说明

[0018] 通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明
书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,
相同的参考标号通常代表相同部件或步骤。
[0019] 图1示出一种适于使用通用硬件对特征图进行反卷积处理的方法的示意图。
[0020] 图2示出一种适于使用反卷积硬件对特征图进行反卷积处理的方法的示意图。
[0021] 图3示出一种适于使用卷积硬件对特征图进行反卷积处理的方法的示意图。
[0022] 图4示出根据一示例性实施例的利用卷积硬件对特征图进行反卷积处理的方法的流程图。
[0023] 图5示出根据图4所示的方法对特征图进行反卷积处理的示意图。
[0024] 图6示出根据一示例性实施例的用于对特征图进行反卷积处理的装置的功能框图。
[0025] 图7示出根据一示例性实施例的电子设备的结构框图。
[0026] 图8示出根据一示例性实施例的可用于图7的电子设备中的卷积硬件加速器的结构框图。

具体实施方式

[0027] 下面,将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的
示例实施例的限制。
[0028] 申请概述
[0029] 如前所述,通用处理器的硬件架构设计并不适合于神经网络模型中大量包括的卷积、池化、反卷积等处理,运行效率非常低。另一方面,使用专用硬件加速器来运行神经网络
模型时,虽然能够大幅度提升效率,但是一般需要针对特定的处理设计特定的硬件,例如需
要针对卷积处理和反卷积处理设计单独的卷积模块和反卷积模块,导致硬件复杂度高,并
且带来额外的芯片面积开销和功耗开销。虽然目前已经提出了使用卷积硬件来执行反卷积
处理的方法,但是其包括大量的无效运算,导致硬件加速器的延迟和能耗都很大,而且需要
额外的片上缓存空间,对硬件要求较高。
[0030] 本公开提出了一种对特征图进行反卷积处理的方法,其能够解决上述问题中的一个或多个。在本公开的方案中,可以将反卷积核拆分成多个卷积核,并且对每个卷积核进行
优化处理,以去除其中的无效权重,获得优化卷积核。此外,还对特征图进行相应的优化,以
获得与各个优化卷积核对应的优化特征图。利用各个优化卷积核和特征图进行卷积运算,
得到多个卷积输出。可以对多个卷积输出进行交织合成,可选地还进行剪裁后,即可得到期
望大小的反卷积输出特征图。
[0031] 本公开的方法可以利用卷积硬件来执行,不需要实施专用的反卷积硬件,因此减小了硬件复杂度,节省了芯片面积开销和功耗开销。而且,本公开的方法通过优化处理减少
了大量的无效运算,进一步提升了硬件加速器的运行效率,改善了延迟和能耗特性,并且降
低了对片上缓存空间的需求,有助于降低硬件成本。
[0032] 示例性方法
[0033] 图4示出根据本公开一示例性实施例的利用卷积硬件对特征图进行反卷积处理的方法100的流程图,图5示出根据图4所示的方法100对特征图进行反卷积处理的示意图。如
下面将详细描述的那样,卷积硬件可包括乘加阵列MAC和片上存储器SRAM。这里,为了描述
方便,预先定义与该反卷积运算相关的参数,包括输入特征图尺寸(h,w)、反卷积核尺寸
(kh,kw)、滑动步长(sh,sw),补零(ph,pw)、输出补零(oph,opw),其中h指示特征图的高度维度,
w指示特征图的宽度维度。
[0034] 参照图4,方法100可包括步骤S110,将特征图和反卷积核读入到片上存储器中,并对特征图进行补零处理。在图5的示例中,特征图表示为3×3矩阵,反卷积核也表示为3×3
矩阵,当然这仅是示例尺寸,本公开不限于此。可以采用各种灵活的方式对特征图进行补零
处理,例如在将特征图读入到片上存储器中的同时对其进行补零,或者在将特征图读入到
片上存储器中之后,再对其进行补零,或者在从片上存储器读出特征图以用于例如卷积运
算或其他处理时,再对其进行补零。
[0035] 在一示例性实施例中,不同于常用的对称补零,可以在四个方向上对特征图分别进行补零。具体而言,可以基于反卷积核的高度尺寸、用于反卷积运算的高度方向步长和高
度方向补零参数来确定特征图的上侧补零数量 和下侧补零数量 ,其中下侧补零数
量 比上侧补零数量 多一行。类似地,可以基于反卷积核的宽度尺寸、用于反卷积运
算的宽度方向步长和宽度方向补零参数来确定特征图的左侧补零数量 和右侧补零数量
,其中右侧补零数量 比左侧补零数量 多一列。例如,可以基于下面的公式1‑4分
别计算特征图的上侧补零数量 、左侧补零数量 、下侧补零数量 和右侧补零数量
,其中floor是向下取整函数,ceil是向上取整函数,kh和kw分别是反卷积核的高度尺寸
和宽度尺寸,sh和sw分别是用于反卷积运算的在高度方向上的步长和在宽度方向上的步长,
ph和pw分别是用于反卷积运算的高度补零参数和宽度补零参数,
[0036] 。
[0037] 在图5的示例中,相关参数的值分别为h=w=3,kh=kw=3,sh=sw=2,ph=pw=1,oph=opw=0。根据上面的公式1‑4可以计算确定,上侧和左侧的补零数量为零,即不需要补零,而下侧和
右侧的补零数量是1。因此,补零后的特征图成为4×4矩阵,如图5中所示。
[0038] 在步骤S120中,基于反卷积核确定多个卷积核。首先,可确定与反卷积核对应的卷积核的数量和尺寸。具体而言,卷积核的数量可以确定为用于反卷积运算的高度方向步长
sh和宽度方向步长sw的乘积sh×sw,并且可以为每个卷积核分配高度方向和宽度方向的二
维索引(ish,isw)。在图5的示例中,由于sh=sw=2,因此可以确定与反卷积核对应的卷积核的
数量为4,这4个卷积核可分别分配有二维索引(0, 0)、(0, 1)、(1, 0)和(1, 1)。
[0039] 每个卷积核在高度方向上的尺寸 可基于反卷积核的高度尺寸kh以及用于反卷积运算的高度方向步长sh和高度方向补零参数ph来确定;类似地,每个卷积核在宽度方向上
的尺寸 可基于反卷积核的宽度尺寸kw以及用于反卷积运算的宽度方向步长sw和宽度方
向补零参数pw来确定。例如,每个卷积核的高度和宽度尺寸( , )可由下面的公式5‑6确
定,其中ceil是向上取整函数,%是取余运算符。在图5的示例中,利用上面定义的参数值可
以计算确定每个卷积核的尺寸为 =2, =2,
[0040]   。
[0041] 在步骤S120中,在确定卷积核的数量和尺寸之后,还进一步确定每个卷积核中的权重值。具体而言,可以针对每个卷积核中的每个位置,基于该卷积核在高度和宽度方向上
的二维索引、卷积核的高度和宽度尺寸、该位置的二维坐标值、以及用于反卷积运算的高度
和宽度方向步长、高度和宽度方向补零参数,来确定反卷积核中的对应位置的二维坐标值,
并且将该对应位置的权重值作为卷积核中的该位置的权重值。例如,对于每个卷积核( ,
)中的每个位置( , ),可以根据下面的公式7‑8确定反卷积核中的对应位置(ikh,
ikw),并将该位置的权重值作为卷积核的位置( , )处的权重值,其中ish和isw分别是
每个卷积核在高度和宽度方向的索引, 和 分别是卷积核中的高度方向位置坐标和
宽度方向位置坐标,ikh和ikw分别是反卷积核中的高度方向位置坐标和宽度方向位置坐标。
其中,当所确定的反卷积核中的对应位置(ikh,ikw)超出反卷积核中的位置坐标范围时,在
卷积核的位置( , )处插入零值,即该处的权重为零值无效权重,
[0042] 。
[0043] 例如,参照图5的示例,在计算卷积核(ish=0, isw=0)中的权重值时,对于位置(=0, =0),将相关参数ish=isw=0、 = =0、 = =2、sh=sw=2,ph=pw=1代入上述公式7
和8,可以计算得到对应的反卷积核中的位置为(ikh =1,ikw =1),该位置处的权重值为“2”,
因此卷积核(0,0)中的位置(0,0)处的权重值是“2”;对于位置( =0, =1),将相关参数
ish=isw=0、 =0、 =1、 = =2、sh=sw=2,ph=pw=1代入上述公式7和8,可以计算得到对应
的反卷积核中的位置为(ikh =1,ikw =‑1),由于该坐标值超出了反卷积核的坐标范围(在图
5的示例中,行坐标范围为0至2,列坐标范围为0至2),因此在该位置处插入零值无效权重;
类似地,在位置( =1, =0)和( =1, =1)处,计算得到的反卷积核中的对应坐标位
置分别为(ikh =‑1,ikw =1)和(ikh =‑1,ikw =‑1),均超出了反卷积核的坐标范围,因此在
这些位置处也插入零值无效权重,由此得到图5中所示的卷积核(0,0)的各个权重值。类似
地,在卷积核(ish=0, isw=1)中,对于位置( =0, =0),根据公式7‑8计算得到的对应的
反卷积核中的位置为(ikh =1,ikh =2),该位置处的权重值为“‑5”;对于位置( =0, =
1),计算得到的对应的反卷积核中的位置为(ikh =1,ikw =0),该位置处的权重值为“0”;对
于位置( =1, =0)和( =1, =1),计算得到的反卷积核中的对应坐标位置分别为
(ikh =‑1,ikw =2)和(ikh =‑1,ikw =0),均超出了反卷积核的坐标范围,因此在这些位置处
插入零值无效权重,由此得到图5中所示的卷积核(0,1)的各个权重值。类似地,在卷积核
(ish=1, isw=0)中,第一列的两个权重值“‑3, 0”是通过上述计算从反卷积核中的对应位置
确定的权重值,第二列的两个权重值是因计算得到的坐标值超出反卷积核的坐标范围而插
入的零值无效权重;在卷积核(ish=1, isw=1)中,四个权重值“1, 1, 3, ‑1”都是通过上述
计算从反卷积核中的对应位置确定的权重值,而没有插入零值无效权重。这里应注意的是,
从反卷积核确定的零值权重(即,反卷积核本身包括的零值权重)是有效权重,而仅因计算
得到的位置坐标超范围而插入的零值权重是无效权重。在一些实施例中,为了区别插入的
零值无效权重和反卷积核中初始包括的零值有效权重,还可以对插入的零值无效权重附加
一标记,以指示其是无效权重。或者,也可以对卷积核中的每个权重值附加一标记,以指示
其是有效权重还是无效权重。作为示例,该标记可以为一比特,其“0”值指示对应的权重为
无效权重,“1”值指示对应的权重为有效权重,或者反之亦可。该指示比特可以和对应的权
重值一起存储,例如作为权重值的附加最低位比特或者最高位比特;或者可以形成比特图
(bit map)并且与该卷积核分开存储。
[0044] 这里,基于反卷积核确定了多个卷积核。应理解的是,当反卷积核包括有偏置值时,基于其确定的多个卷积核可具有相同的偏置值。
[0045] 在上面确定的多个卷积核中,可能包括有大量的无效权重,因此在步骤S130中,进一步对每个卷积核进行优化,以去除每个卷积核中全部元素为无效权重的行和/或列以获
得优化卷积核,并且相应地去除补零处理后的特征图中对应的行和/或列以获得与各个优
化卷积核对应的优化特征图。例如,当如上所述为卷积核中的每个零值权重设置了指示比
特时,可以首先判断卷积核中的一行或者一列权重值是否全部为零值。如果一行或一列包
括至少一个非零权重值,则该行或列不能被优化去除;如果一行或一列中的权重值全部为
零,则可以基于与该零值相关联的指示标记来确定其是有效零值还是无效零值。只有当一
行或一列中的权重全部为无效零值时,该行或列可以被优化去除。在另一些实施例中,如果
为卷积核中的每个权重(包括零值权重和非零值权重)都设置了指示其是否为有效权重的
指示比特,则可以直接根据这些指示比特来判断卷积核中的一行或一列权重是否全部为无
效权重;当卷积核中的一行或一列权重全部为无效权重时,该行或列可以被优化去除。可以
看出,在步骤S130中,针对各个优化卷积核确定的优化特征图可能是彼此不同的。例如,参
照图5的示例,对于卷积核(0, 0),其右侧一列和下侧一行均为零值无效权重,被优化去除,
只留下“2”一个有效权重值。对应地,补零后的特征图的右侧一列和下侧一行被优化去除,
得到用于卷积核(0, 0)的优化特征图(0, 0),其是3×3矩阵。对于卷积核(0, 1),其下侧一
行仅包括零值无效权重,因此被优化去除,只留下第一行的“‑5,0”两个有效权重值。对应
地,补零后的特征图的下侧一行被优化去除,得到用于卷积核(0, 1)的优化特征图(0, 1),
其是3×4矩阵。对于卷积核(1, 0),其右侧一列仅包括零值无效权重,因此被优化去除,只
留下第一列的“‑3,0”两个有效权重值。对应地,补零后的特征图的右侧一列被优化去除,得
到用于卷积核(1, 0)的优化特征图(1, 0),其是4×3矩阵。对于卷积核(1, 1),其不包括任
何零值无效权重,因此没有行或列被优化去除,其对应的特征图(1, 1)也没有行或列被去
除,为补零后的特征图,其是4×4矩阵。可以看出,通过步骤S130的优化处理,能够几乎完全
消除反卷积处理中的无效运算,从而提高相关硬件的运行效率,改善延迟和能耗。
[0046] 接下来在步骤S140中,可以通过卷积硬件的乘加阵列对各个优化卷积核和对应的优化特征图进行卷积运算,以获得相应的各个卷积输出。例如,如后面参照图8具体描述的
那样,卷积核中的每个权重值和其对应的特征图中的特征数据被提供到乘加阵列中的乘法
器,在乘法器中完成乘法运算,然后其结果被输出到加法器,与其他乘法器的输出进行累
加。可选地,累加得到的结果还可以用该卷积核的偏置值来进行线性调整,所得到的调整后
的值可以作为卷积运算的输出值存储在片上存储器SRAM中。在一些实施例中,可以基于滑
动窗口(sliding window)方法,将卷积核依次与特征图上的对应窗口中的特征数据进行卷
积,计算得到输出特征图中的各个特征数据。在步骤S140中,优选地,卷积硬件的乘加阵列
中的乘法器的数量大于或等于每个优化卷积核中包括的权重值的数量,从而可以一次完成
一个滑动窗口的卷积运算,确保高的计算效率。还应注意,乘加阵列中的乘法器数量可以小
于反卷积核中的权重值数量,也就是说,本实施例可以利用相对少的硬件资源实现相对大
的反卷积处理。例如在图5所示的示例中,反卷积核包括9个权重值,而对应的卷积核最多包
括4个权重值,因此乘法器的数量可以为4个或更多。继续参照图5的示例,通过步骤S140中
的卷积运算可获得四个输出特征图(0, 0)‑(1, 1),其每个都是3×3矩阵。可以理解,虽然
每个优化卷积核可能具有不同的尺寸,但是其对应的特征图也进行了相应的优化,因此每
个优化卷积核对应的卷积输出特征图与优化前相同,并且各个卷积输出特征图具有相同的
尺寸。
[0047] 在步骤S150中,对各个卷积输出特征图进行交织合成处理,以获得交织合成输出。交织合成处理可包括以用于反卷积运算的高度方向步长和宽度方向步长为填充步长,以卷
积核在高度和宽度方向上的二维索引为填充偏移量,将每个卷积输出中的各个元素填充到
合成矩阵中,其可以用下面的公式9‑10来表示,其中,ihfo和iwfo分别是合成矩阵中的高度
坐标和宽度坐标,ish和isw是卷积输出特征图的二维索引,也就是其对应的卷积核的二维索
引,ih和iw分别是卷积输出特征图中的高度坐标和宽度坐标,sh和sw分别是高度方向和宽度
方向上的填充步长,
[0048] ihfo=ih×sh+ish  (公式9)
[0049] iwfo= iw×sw+isw  (公式10)。
[0050] 可以利用公式9‑10将各个卷积输出特征图中的位置坐标转换为合成矩阵中的位置坐标,从而将各个卷积输出特征图中的数据填充到合成矩阵中,完成交织合成处理。例
如,参照图5所示的示例,卷积输出特征图(0, 0)中的各个特征数据按照高度填充步长sh=
2、宽度填充步长sw=2、高度和宽度方向上的偏移均为零,填充到合成矩阵中。如图所示,卷
积输出特征图(0, 0)中第一行三个位置(0,0)、(0,1)和(0,2)处的特征数据“14、6、8”分别
填充到根据上述公式9‑10计算确定的合成矩阵中的位置(0,0)、(0,2)和(0,4)处,第三行三
个位置(2,0)、(2,1)和(2,2)处的特征数据“‑4、2、2”分别填充到计算确定的合成矩阵中的
位置(4,0)、(4,2)和(4,4)处。卷积输出特征图(0, 1)中的各个特征数据同样按照高度步长
sh=2、宽度步长sw=2填充到合成矩阵中,但是其相对于卷积输出特征图(0, 0),在高度方向
上的偏移为零,在宽度方向上的偏移为1。如图所示,卷积输出特征图(0,1)中第一行三个位
置(0,0)、(0,1)和(0,2)处的特征数据“‑35、‑15、‑20”分别填充到根据上述公式9‑10计算确
定的合成矩阵中的位置(0,1)、(0,3)和(0,5)处,第三行三个位置(2,0)、(2,1)和(2,2)处的
特征数据“10、‑5、‑5”分别填充到计算确定的合成矩阵中的位置(4,1)、(4,3)和(4,5)处。卷
积输出特征图(1, 0)中的各个特征数据同样按照高度步长sh=2、宽度步长sw=2填充到合成
矩阵中,但是其相对于卷积输出特征图(0, 0),在高度方向上的偏移为1,在宽度方向上的
偏移为0。如图所示,卷积输出特征图(1, 0)中第一行三个位置(0,0)、(0,1)和(0,2)处的特
征数据“‑21、‑9、‑12”分别填充到根据上述公式9‑10计算确定的合成矩阵中的位置(1,0)、
(1,2)和(1,4)处,第三行三个位置(2,0)、(2,1)和(2,2)处的特征数据“6、‑3、‑3”分别填充
到计算确定的合成矩阵中的位置(5,0)、(5,2)和(5,4)处。卷积输出特征图(1, 1)中的各个
特征数据则按照高度步长sh=2、宽度步长sw=2、高度方向偏移为1、宽度方向偏移为1,填充到
合成矩阵中。如图所示,卷积输出特征图(1,1)中第一行三个位置(0,0)、(0,1)和(0,2)处的
特征数据“13、9、‑2”分别填充到根据上述公式9‑10计算确定的合成矩阵中的位置(1,1)、
(1,3)和(1,5)处,第三行三个位置(2,0)、(2,1)和(2,2)处的特征数据“‑1、2、1”分别填充到
计算确定的合成矩阵中的位置(5,1)、(5,3)和(5,5)处。这样,如图5所示,四个3×3矩阵表
示的卷积输出特征图可以交织成一个6×6矩阵的交织合成特征图。
[0051] 步骤S150所获得的交织合成输出可至少包括与初始提供的反卷积核和特征图对应的反卷积输出。例如,在一些实施例中,步骤S150获得的交织合成输出就是初始提供的反
卷积核和特征图的反卷积输出;在另一些实施例中,则还可以对交织合成进行剪裁,以获得
反卷积输出。因此,方法100还可选地包括步骤S160,对交织输出进行剪裁,以获得与反卷积
核和初始输入特征图对应的反卷积输出。
[0052] 具体而言,在步骤S160中,可以对交织合成输出的右侧和下侧进行剪裁,直到剪裁后的尺寸对应于反卷积输出的尺寸。例如,可以根据下面的公式11‑12计算确定反卷积输出
的尺寸ho和wo,
[0053]      (公式11)
[0054]    (公式12)。
[0055] 并且,可以根据公式13‑16计算确定交织合成输出的尺寸hfo和wfo,其中 和 是每个优化卷积核的卷积输出尺寸,
[0056]     (公式13)
[0057]     (公式14)
[0058]     (公式15)
[0059]     (公式16)。
[0060] 因此,在步骤S160中,可以在交织输出的右侧裁去(wfo‑wo)列,下侧裁去(hfo‑ho)行,从而得到尺寸为(ho,wo)的反卷积输出。
[0061] 在图5的示例中,根据上述公式计算得到的卷积输出尺寸为3×3,交织合成输出的尺寸为6×6,反卷积输出的尺寸为5×5,因此在剪裁步骤S160中,去除交织合成输出的右侧
一列像素和下侧一行像素,即可得到反卷积输出。可以理解,在一些实施例中,如果计算得
到了交织输出尺寸等于反卷积输出尺寸,则可以省略剪裁步骤S160。
[0062] 从上面参照图4和图5进行的描述可以理解,利用上述实施例的方法,可以使用卷积硬件来对特征图执行反卷积处理,而不需要提供专门的反卷积硬件,因此可以降低硬件
复杂度,节省了芯片面积开销和功耗开销。而且,该方法不需要对输入特征图进行稀疏化处
理,还通过优化处理去除了大量零值无效权重,由此可以大大减少无效运算,从而提高硬件
运行效率,改善了相关硬件的延迟和能耗特性,并且降低了对片上缓存空间的需求,有助于
进一步降低硬件成本。
[0063] 示例性装置
[0064] 图6示出根据一示例性实施例的用于对特征图进行反卷积处理的装置200的功能框图。可以理解的是,装置200中的各个功能模块可以用于执行上面参照图4和图5描述的方
法100中的各个步骤,因此下面将仅对各个模块进行简要描述,其具体细节可参照上面描述
的方法100。
[0065] 如图6所示,装置200可包括读取模块210、补零模块220、卷积核生成模块230、优化模块240、卷积模块250和交织合成模块260。
[0066] 读取模块210可用于将特征图和反卷积核读入到卷积硬件的片上存储器例如动态随机存取存储器SRAM中,如上面关于步骤S110描述的那样。卷积硬件可以是专用于执行卷
积处理的硬件加速器,其可包括乘法器和加法器构成的乘加阵列以及片上存储器。特征图
和反卷积核可以从例如用作内存的动态随机存取存储器DRAM或者从诸如闪存或电可擦除
可编程只读存储器EEPROM之类的非易失性存储器读入到卷积硬件的片上存储器中。
[0067] 补零模块220可用于对特征图进行补零处理,如上面也在步骤S110中描述的那样。在一些实施例中,如上所述,可以采用各种灵活的方式对特征图进行补零处理,例如在将特
征图读入到片上存储器中的同时对其进行补零,或者在将特征图读入到片上存储器中之
后,再对其进行补零,或者在从片上存储器读出特征图以用于例如卷积运算或其他处理时,
再对其进行补零。
[0068] 卷积核生成模块230可用于基于反卷积核生成多个卷积核,如上面关于步骤S120描述的那样。例如,卷积核生成模块230可以确定与反卷积核对应的卷积核的数量和尺寸,
进而确定每个卷积核中的每个位置的权重值。具体而言,卷积核生成模块230可以针对每个
卷积核中的每个位置,基于该卷积核在高度和宽度方向上的二维索引、卷积核的高度和宽
度尺寸、该位置的二维坐标值、以及用于反卷积运算的高度和宽度方向步长、高度和宽度方
向补零参数,来确定反卷积核中的对应位置的二维坐标值,并且将该对应位置的权重值作
为卷积核中的该位置的权重值。当所确定的反卷积核中的对应位置超出反卷积核中的位置
坐标范围时,卷积核生成模块230可以在卷积核的该位置处插入零值,即该处的权重为零值
无效权重。在一些实施例中,为了区别插入的零值无效权重和反卷积核中初始包括的零值
有效权重,卷积核生成模块230还可以对插入的零值无效权重附加一标记,以指示其是无效
权重。
[0069] 优化模块240可用于去除每个卷积核中全部元素为无效权重的行和/或列以获得优化卷积核,并且相应地去除补零处理后的特征图中对应的行和/或列以获得与各个优化
卷积核对应的优化特征图,如上面关于步骤S130详细描述的那样。可以看出,优化模块240
关于各个优化卷积核确定的优化特征图可以是彼此不同的。
[0070] 卷积模块250可以利用卷积硬件的乘加阵列对各个优化卷积核和对应的优化特征图进行卷积运算,以获得相应的各个卷积输出,如上面关于步骤S140描述的那样。例如,卷
积模块250可以以滑动窗口的方式,将卷积核中的每个权重值和其对应的特征图中的特征
数据提供到乘法器,在乘法器中完成乘法运算,然后其结果被输出到加法器,与其他乘法器
的输出进行累加,所得到的和可以存储在片上存储器SRAM中。
[0071] 交织合成模块260可以对卷积模块250产生的多个卷积输出特征图进行交织合成处理,以获得交织合成输出,如上面关于步骤S150描述的那样。例如,交织合成模块260可以
以用于反卷积运算的高度方向步长和宽度方向步长为填充步长,以卷积核在高度和宽度方
向上的二维索引为填充偏移量,将每个卷积输出中的各个元素填充到合成矩阵中,由此产
生的交织合成输出可至少包括与初始提供的反卷积核和特征图对应的反卷积输出。例如,
在一些实施例中,交织合成模块260获得的交织合成输出就是初始提供的反卷积核和特征
图的反卷积输出。
[0072] 在一些实施例中,可选地,装置200还可以包括剪裁模块270,其可以对交织合成模块260产生的交织合成输出特征图进行剪裁,以获得反卷积输出,如上面关于步骤S160描述
的那样。具体而言,剪裁模块270可以对交织合成输出的右侧和下侧进行剪裁,直到剪裁后
的尺寸对应于反卷积输出的尺寸。
[0073] 示例性电子设备
[0074] 图7示出根据一示例性实施例的电子设备300的结构框图,电子设备300可用于执行上面结合图4‑6描述的通过卷积操作来实施反卷积处理的方法。
[0075] 如图7所示,电子设备300可包括一个或多个处理器310、一个或多个存储器320、卷积硬件加速器330、以及一个或多个输入输出(I/O)接口340,它们通过总线系统350彼此连
接。
[0076] 处理器310可以是具有数据处理能力和/或指令执行能力的任何形式的处理单元,其示例包括但不限于中央处理器(CPU)、ARM处理器、微处理单元(MCU)、通用处理器、控制
器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程
逻辑器件、晶体管逻辑器件、硬件部件或其任意组合。处理器310可以运行与之关联的存储
器320中的指令和/或与之交换数据,从而控制通过总线系统350耦接的其他部件来协同操
作,执行上面描述的方法、步骤或功能。
[0077] 存储器320可以包括各种形式的计算机可读写存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括动态随机存取存储器(DRAM)和/或高速
缓冲存储器(cache)等。所述非易失性存储器例如可以包括电可擦除可编程只读存储器
(EEPROM)、硬盘、闪速存储器等。可读写存储介质例如可以包括但不限于电、磁、光、电磁、红
外线、或半导体的系统、装置或器件,或者任意以上的组合。存储器320中可以存储有计算机
可执行指令,所述指令可以由处理器310运行以控制通过总线系统350耦接的其他部件来协
同操作,执行上面描述的方法、步骤或功能。
[0078] 卷积硬件加速器330,也可以称为卷积神经网络硬件加速器或者专用卷积硬件,可以是设计来执行卷积相关处理的专用硬件。如图7所示,卷积硬件加速器330可包括乘加阵
列332和片上存储器334。可以理解,相对于片上存储器334而言,上面描述的存储器320也可
以称为片外存储器。乘加阵列332可包括多个乘法器和多个加法器构成的阵列,用于对特征
图和卷积核执行卷积处理。片上存储器334可包括例如静态随机存取存储器SRAM,用于缓存
将要提供给乘加阵列332以进行卷积运算的数据以及乘加阵列332所生成的数据。
[0079] I/O接口340可包括用于连接到各种输入和输出装置的通信接口,例如摄像头接口、雷达接口、触摸显示屏接口、网络接口、以及支持特定通信协议的控制器接口等。应理
解,可以根据实际应用需要来提供各种I/O接口340。
[0080] 总线系统350可以是能够连接电子设备300中的各个部件并且支持它们之间的通信的任何总线系统,其示例包括但不限于CAN(区域网络控制器)总线、ISA(工业标准架构)
总线、PIC(外设互连)或PCI‑E(快速外设互连)总线、I2C(集成电路间)总线、SPI(串行外围
接口)总线、UART(通用异步串行口)总线等。
[0081] 当然,为了简化,图7仅示出了电子设备300中与本公开有关的组件中的一些,而省略了许多其他组件。应注意,图7所示的电子设备300的组件和结构只是示例性的,而非限制
性的,根据需要,电子设备300也可以具有其他组件和结构。
[0082] 图8示出根据一示例性实施例的卷积硬件加速器400的结构框图,图8所示的卷积硬件加速器400可用作例如图7的电子设备300中的卷积硬件加速器330。如图8所示,卷积硬
件加速器400可包括接口单元410、特征图缓存单元420、卷积核缓存单元430、乘法器阵列
440、加法树单元450、偏置单元460和输出缓存单元470,其中特征图缓存单元420、卷积核缓
存单元430和输出缓存单元470可以合称为片上缓存,乘法器阵列440和加法树单元450可以
合称为乘加阵列。
[0083] 参照图8,接口单元410可包括与外界通信连接的各种接口,以接收外界输入的数据例如特征图数据和卷积核数据以及向外界提供输出数据例如对特征图进行卷积运算之
后获得的输出数据。在一些实施例中,接口单元410可实施为片上网络(NoC),其具有扩展性
好、功耗低、通信效率和可靠性高等优点,非常适合于用在神经网络加速器中。当然,接口单
元410也可以包括适于与例如图7所示的总线系统350通信连接的其他接口。
[0084] 特征图缓存单元420可以通过接口单元410接收并且存储特征图数据。这里,特征图可以是摄像头采集并且经过预处理例如剪裁、采样等处理后的最初输入特征图,也可以
是神经网络中的上一层输出的特征图,其一般可表示为矩阵的形式。
[0085] 卷积核缓存单元430可以通过接口单元410接收并且存储卷积核或反卷积核数据。例如,卷积硬件加速器400可以接收卷积核以执行常规的卷积处理,也可以接收反卷积核并
且根据上面结合图4‑6描述的方法通过卷积运算来执行反卷积处理。在该方法中,反卷积核
可以被拆分为多个卷积核,如参照图4所示的步骤S120详细描述的那样。卷积核和反卷积核
可包括一个或多个权重值,其一般可以表示为二维矩阵,并且任选地可包括一偏置值,其用
于对卷积运算的输出值进行线性调整。
[0086] 可以理解,特征图缓存单元420和卷积核缓存单元430、以及后面描述的输出缓存单元470,可以是单独的缓存器件,或者可以是同一缓存器件中的不同存储区域。作为示例,
特征图缓存单元420、卷积核缓存单元430和输出缓存单元470可以实施为静态随机存取存
储器SRAM,其可以具有预定位宽。
[0087] 乘法器阵列440可包括多个乘法器441,每个乘法器441可以从特征图缓存单元420接收一特征数据,从卷积核缓存单元430接收卷积核中的一权重值,对该特征数据和权重值
进行乘法运算,并且输出二者的积。
[0088] 加法树单元450可以包括多个加法器451,其布置为树状结构。加法树单元450可以从乘法器阵列440接收每个乘法器441的输出值,并且将这些输出值累加,得到并输出它们
的和值。
[0089] 偏置单元460可以从卷积核缓存单元430接收一偏置值,从加法树单元450接收其输出值,并且利用该偏置值对加法树单元450的输出值进行线性调整,输出调整后的值。偏
置单元460输出的值可以作为卷积运算输出值存储在输出缓存单元470中。可以以滑动窗口
的方式重复上述步骤,从而得到整个输入特征图和对应的卷积核的卷积运算结果,即输出
特征图,其可以存储在缓存单元470中以供后续处理。
[0090] 可以理解的是,为了简化,图8仅示出了卷积硬件加速器400中与本公开紧密相关的组件中的一些,而省略了许多其他组件。例如,卷积硬件加速器400还可以包括用于控制
卷积运算的卷积控制单元和用于搬运数据的数据控制单元等,这些单元的功能和原理等也
是本领域已知的,因此不再赘述。还应理解,图8所示的卷积硬件加速器400的组件和结构只
是示例性的,而非限制性的,根据上面论述的方法步骤,卷积硬件加速器400也可以具有其
他组件和结构。
[0091] 虽然上面结合专用加速器论述了利用卷积运算来执行反卷积处理的方法,但是应理解,本公开的原理也可以利用通用硬件例如CPU或GPU来实现,并且其可以实现类似的技
术效果。例如,通过避免稀疏化处理可以节省芯片面积开销和功耗开销,而且通过优化处理
减少了大量的无效运算,进一步提升了硬件运行效率,改善了延迟和能耗特性,并且降低了
对通用处理器中的片上缓存空间的需求,有助于降低硬件成本。
[0092] 示例性计算机程序产品和计算机可读存储介质
[0093] 除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时,能够控制卷积神经网络加速器来
执行本说明书上述“示例性方法”部分中描述的根据本公开各实施例的对特征图进行反卷
积处理的方法。
[0094] 所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如
Java、C++、phyon等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语
言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立
的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算
设备或服务器上执行。
[0095] 此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方
法”部分中描述的根据本公开各种实施例的反卷积处理方法。
[0096] 所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电
磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的
例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储
器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘
只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0097] 以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的
各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作
用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。而是,本领域
技术人员在本公开的教导下,容易想到许多形式和细节上的变化,这些变化都应落入本公
开的权利要求所限定的范围内。
[0098] 本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到
的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具
有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇
“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使
用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
[0099] 还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
[0100] 提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义
的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在
此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
[0101] 为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技
术人员将认识到其某些变型、修改、改变、添加和子组合。