利用卷积硬件对特征数据进行反卷积处理的方法和装置转让专利
申请号 : CN202110288755.6
文献号 : CN112686377B
文献日 : 2021-07-02
发明人 : 赵卓然 , 余凯 , 黄畅 , 王振江 , 李建军 , 李德林 , 张祎男
申请人 : 北京地平线机器人技术研发有限公司
摘要 :
权利要求 :
1.一种利用专用卷积硬件对特征图进行反卷积处理的方法,所述专用卷积硬件包括乘加阵列和片上存储器,所述方法包括:将特征图和反卷积核读入到片上存储器中,并对所述特征图进行补零处理;
基于所述反卷积核确定多个卷积核;
去除每个卷积核中全部元素为无效权重的行和/或列以获得优化卷积核,并且去除补零后的特征图中的对应的行和/或列以获得与每个优化卷积核对应的优化特征图;
利用所述乘加阵列对各个优化卷积核和对应的优化特征图进行卷积处理,以获得多个卷积输出;以及
对所述多个卷积输出进行交织合成处理,以获得交织合成输出,所述交织合成输出包括与所述特征图和所述反卷积核对应的反卷积输出,其中,基于所述反卷积核确定多个卷积核包括:确定与所述反卷积核对应的卷积核的数量和尺寸,其中卷积核的数量等于用于反卷积运算的高度方向步长和宽度方向步长的乘积,卷积核的高度尺寸是所述反卷积核的高度尺寸以及用于反卷积运算的高度方向步长和高度方向补零参数的函数,卷积核的宽度尺寸是所述反卷积核的宽度尺寸以及用于反卷积运算的宽度方向步长和宽度方向补零参数的函数;以及
对于每个卷积核中的每个位置,基于该卷积核在高度和宽度方向上的二维索引、该卷积核的高度尺寸和宽度尺寸、该位置的二维坐标值、以及用于反卷积运算的高度方向步长、宽度方向步长和高度方向补零参数、宽度方向补零参数,确定所述反卷积核中的对应位置的二维坐标值,并且将所述对应位置的权重值作为所述卷积核中的该位置的权重值,其中,当所确定的所述反卷积核中的对应位置的二维坐标值超出所述反卷积核中的位置坐标范围时,确定所述卷积核的该位置处的权重为具有零值的无效权重。
2.如权利要求1所述的方法,其中,所述乘加阵列中包括的乘法器的数量大于或等于每个优化卷积核中包括的权重值的数量。
3.如权利要求1所述的方法,其中,对所述特征图进行补零处理包括:基于所述反卷积核的高度尺寸以及用于反卷积运算的高度方向步长和高度方向补零参数,确定所述特征图的上侧补零数量和下侧补零数量,其中所述下侧补零数量比所述上侧补零数量多一行;以及
基于所述反卷积核的宽度尺寸以及用于反卷积运算的宽度方向步长和宽度方向补零参数,确定所述特征图的左侧补零数量和右侧补零数量,其中所述右侧补零数量比所述左侧补零数量多一列。
4.如权利要求1所述的方法,其中,对所述多个卷积输出进行交织合成处理包括:以用于反卷积运算的高度方向步长和宽度方向步长为填充步长,以卷积核在高度和宽度方向上的二维索引为填充偏移量,将每个卷积输出中的各个元素填充到合成矩阵中。
5.如权利要求1所述的方法,还包括:对所述交织合成输出进行剪裁,以获得与所述特征图和所述反卷积核对应的反卷积输出。
6.如权利要求5所述的方法,其中,对所述交织合成输出进行剪裁包括:对所述交织合成输出的右侧和下侧进行剪裁,直到剪裁后的尺寸对应于所述特征图和所述反卷积核的反卷积输出的尺寸。
7.一种利用专用卷积硬件对特征图进行反卷积处理的装置,所述专用卷积硬件包括乘加阵列和片上存储器,所述装置包括:读取模块,用于将特征图和反卷积核读入到片上存储器中;
补零模块,用于对所述特征图进行补零处理;
卷积核生成模块,用于基于所述反卷积核生成多个卷积核;
优化模块,用于去除每个卷积核中全部元素为无效权重的行和/或列以获得优化卷积核,并且去除补零后的特征图中对应的行和/或列以获得与每个优化卷积核对应的优化特征图;
卷积模块,用于利用所述乘加阵列对各个优化卷积核和对应的优化特征图进行卷积处理,以获得多个卷积输出;以及
交织合成模块,用于对所述多个卷积输出进行交织合成处理,以获得交织合成输出,所述交织合成输出包括与所述特征图和所述反卷积核对应的反卷积输出,其中,基于所述反卷积核确定多个卷积核包括:确定与所述反卷积核对应的卷积核的数量和尺寸,其中卷积核的数量等于用于反卷积运算的高度方向步长和宽度方向步长的乘积,卷积核的高度尺寸是所述反卷积核的高度尺寸以及用于反卷积运算的高度方向步长和高度方向补零参数的函数,卷积核的宽度尺寸是所述反卷积核的宽度尺寸以及用于反卷积运算的宽度方向步长和宽度方向补零参数的函数;以及
对于每个卷积核中的每个位置,基于该卷积核在高度和宽度方向上的二维索引、该卷积核的高度尺寸和宽度尺寸、该位置的二维坐标值、以及用于反卷积运算的高度方向步长、宽度方向步长和高度方向补零参数、宽度方向补零参数,确定所述反卷积核中的对应位置的二维坐标值,并且将所述对应位置的权重值作为所述卷积核中的该位置的权重值,其中,当所确定的所述反卷积核中的对应位置的二维坐标值超出所述反卷积核中的位置坐标范围时,确定所述卷积核的该位置处的权重为具有零值的无效权重。
8.一种电子设备,包括:
专用卷积硬件,包括乘加阵列和片上存储器;
至少一个片外存储器,其上存储有指令;以及至少一个处理器,
其中,所述指令在被所述处理器运行时,使得所述电子设备执行权利要求1至6中的任一项所述的方法。
9.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被电子设备的处理器运行时,使得所述电子设备执行权利要求1至6中的任一项所述的方法,其中所述电子设备还包括专用卷积硬件,所述专用卷积硬件包括乘加阵列和片上存储器。
说明书 :
利用卷积硬件对特征数据进行反卷积处理的方法和装置
技术领域
背景技术
图像或特征数据(也称为“特征图”)进行插值或者上采样的操作,其随着深度学习理论创新
和应用发展,被越来越多地应用于各种新颖的卷积神经网络系统中,以将低分辨率图像还
原到高分辨率图像,或者基于高维度特征图生成低维度特征图。可以预期的是,反卷积处理
将在图像风格迁移、超高分辨率、目标检测、语义分割、实例分割、关键点(包括但不限于人
体骨骼关键点)检测、深度估计等领域有着广泛的应用。
在该示例中,反卷积核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)列像素,从而得到最终
的反卷积输出特征图。
性能,一般要求通用处理器具有高的计算性能和大容量缓存及内存,这又会导致非常高的
能耗和硬件成本,因此通用处理器并不适于用在终端设备中。为了克服通用处理器的这些
缺点,目前已经开发了专用的硬件加速器,其适于以滑动窗口(sliding window)的方式来
执行卷积、池化和反卷积等处理,运行效率高,而且功耗很低,非常适合用在终端设备中。
分别与反卷积核相乘,得到多个(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大小的矩阵。
用专用硬件加速器来执行图2的方法时,需要设计与卷积硬件不同的专用反卷积硬件,其中
乘法器和加法器构成的阵列(一般称为乘加阵列MAC)和用于该阵列的片上缓存(一般为静
态随机存取存储器SRAM)需要设计为适于上面参照图2描述的处理过程。也就是说,专用硬
件加速器上需要设计单独的卷积模块和反卷积模块,这会提高硬件复杂度,带来额外的芯
片面积开销和功耗开销。
算,因此可以使用专用卷积硬件来执行,而不需要专门的反卷积硬件或模块。在图3的方法
中,作为示例,特征图尺寸h×w为3×3,卷积核尺寸kh×kw为3×3,滑动步长sh和sw均为2,补
零数量ph和pw均为1,输出补零oph和opw均为1。
=1列零像素,下侧添加(kh‑1‑ph+oph)=2行零像素,右侧添加(kw‑1‑pw+opw)=2列零像素。并
且,反卷积核中的权重值被颠倒,即以中心像素为中心,交换位置对称的权重值。然后,利用
颠倒后的反卷积核,对稀疏化的特征图进行步长(1, 1)的卷积运算,所得输出结果即为反
卷积计算结果。
效的,而大约(sh*sw‑1)/(sh*sw)的计算都是无效的。以sh=sw=2为例,大约有75%的计算都是
无效的,这导致硬件加速器的延迟和能耗都很大。而且,图3的方法至少需要特征图尺寸
(sh*sw)倍以上的片上缓存SRAM空间,对硬件要求较高。
发明内容
或列。使用优化后的多个卷积核和对应的特征图进行卷积运算,并且将所得到的多个卷积
输出特征图进行交织组合和剪裁,以获得反卷积输出结果。本公开的方案可以利用卷积硬
件来执行,不需要专用的反卷积硬件,减小了硬件复杂度,节省了芯片面积开销和功耗开
销。而且,本公开的方案通过优化处理步骤去除了大量的无效权重,可以大幅度提高相关硬
件的运行效率,从而改善了硬件的延迟性能和能耗特性。
核读入到片上存储器中,并对所述特征图进行补零处理;基于所述反卷积核确定多个卷积
核;去除每个卷积核中全部元素为无效权重的行和/或列以获得优化卷积核,并且去除补零
后的特征图中的对应的行和/或列以获得与每个优化卷积核对应的优化特征图;利用所述
乘加阵列对各个优化卷积核和对应的优化特征图进行卷积处理,以获得多个卷积输出;以
及对所述多个卷积输出进行交织合成处理,以获得交织合成输出,所述交织合成输出包括
与所述特征图和所述反卷积核对应的反卷积输出。
特征图和反卷积核读入到片上存储器中;补零模块,用于对所述特征图进行补零处理;卷积
核生成模块,用于基于所述反卷积核生成多个卷积核;优化模块,用于去除每个卷积核中全
部元素为无效权重的行和/或列以获得优化卷积核,并且去除补零后的特征图中对应的行
和/或列以获得与每个优化卷积核对应的优化特征图;卷积模块,用于利用所述乘加阵列对
各个优化卷积核和对应的优化特征图进行卷积处理,以获得多个卷积输出;以及交织合成
模块,用于对所述多个卷积输出进行交织合成处理,以获得交织合成输出,所述交织合成输
出包括与所述特征图和所述反卷积核对应的反卷积输出。
令在被所述处理器运行时,使得所述电子设备执行上面描述的方法。
其中,所述电子设备还包括专用卷积硬件,所述专用卷积硬件包括乘加阵列和片上存储器。
附图说明
书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,
相同的参考标号通常代表相同部件或步骤。
具体实施方式
示例实施例的限制。
模型时,虽然能够大幅度提升效率,但是一般需要针对特定的处理设计特定的硬件,例如需
要针对卷积处理和反卷积处理设计单独的卷积模块和反卷积模块,导致硬件复杂度高,并
且带来额外的芯片面积开销和功耗开销。虽然目前已经提出了使用卷积硬件来执行反卷积
处理的方法,但是其包括大量的无效运算,导致硬件加速器的延迟和能耗都很大,而且需要
额外的片上缓存空间,对硬件要求较高。
优化处理,以去除其中的无效权重,获得优化卷积核。此外,还对特征图进行相应的优化,以
获得与各个优化卷积核对应的优化特征图。利用各个优化卷积核和特征图进行卷积运算,
得到多个卷积输出。可以对多个卷积输出进行交织合成,可选地还进行剪裁后,即可得到期
望大小的反卷积输出特征图。
了大量的无效运算,进一步提升了硬件加速器的运行效率,改善了延迟和能耗特性,并且降
低了对片上缓存空间的需求,有助于降低硬件成本。
下面将详细描述的那样,卷积硬件可包括乘加阵列MAC和片上存储器SRAM。这里,为了描述
方便,预先定义与该反卷积运算相关的参数,包括输入特征图尺寸(h,w)、反卷积核尺寸
(kh,kw)、滑动步长(sh,sw),补零(ph,pw)、输出补零(oph,opw),其中h指示特征图的高度维度,
w指示特征图的宽度维度。
矩阵,当然这仅是示例尺寸,本公开不限于此。可以采用各种灵活的方式对特征图进行补零
处理,例如在将特征图读入到片上存储器中的同时对其进行补零,或者在将特征图读入到
片上存储器中之后,再对其进行补零,或者在从片上存储器读出特征图以用于例如卷积运
算或其他处理时,再对其进行补零。
度方向补零参数来确定特征图的上侧补零数量 和下侧补零数量 ,其中下侧补零数
量 比上侧补零数量 多一行。类似地,可以基于反卷积核的宽度尺寸、用于反卷积运
算的宽度方向步长和宽度方向补零参数来确定特征图的左侧补零数量 和右侧补零数量
,其中右侧补零数量 比左侧补零数量 多一列。例如,可以基于下面的公式1‑4分
别计算特征图的上侧补零数量 、左侧补零数量 、下侧补零数量 和右侧补零数量
,其中floor是向下取整函数,ceil是向上取整函数,kh和kw分别是反卷积核的高度尺寸
和宽度尺寸,sh和sw分别是用于反卷积运算的在高度方向上的步长和在宽度方向上的步长,
ph和pw分别是用于反卷积运算的高度补零参数和宽度补零参数,
右侧的补零数量是1。因此,补零后的特征图成为4×4矩阵,如图5中所示。
sh和宽度方向步长sw的乘积sh×sw,并且可以为每个卷积核分配高度方向和宽度方向的二
维索引(ish,isw)。在图5的示例中,由于sh=sw=2,因此可以确定与反卷积核对应的卷积核的
数量为4,这4个卷积核可分别分配有二维索引(0, 0)、(0, 1)、(1, 0)和(1, 1)。
的尺寸 可基于反卷积核的宽度尺寸kw以及用于反卷积运算的宽度方向步长sw和宽度方
向补零参数pw来确定。例如,每个卷积核的高度和宽度尺寸( , )可由下面的公式5‑6确
定,其中ceil是向上取整函数,%是取余运算符。在图5的示例中,利用上面定义的参数值可
以计算确定每个卷积核的尺寸为 =2, =2,
的二维索引、卷积核的高度和宽度尺寸、该位置的二维坐标值、以及用于反卷积运算的高度
和宽度方向步长、高度和宽度方向补零参数,来确定反卷积核中的对应位置的二维坐标值,
并且将该对应位置的权重值作为卷积核中的该位置的权重值。例如,对于每个卷积核( ,
)中的每个位置( , ),可以根据下面的公式7‑8确定反卷积核中的对应位置(ikh,
ikw),并将该位置的权重值作为卷积核的位置( , )处的权重值,其中ish和isw分别是
每个卷积核在高度和宽度方向的索引, 和 分别是卷积核中的高度方向位置坐标和
宽度方向位置坐标,ikh和ikw分别是反卷积核中的高度方向位置坐标和宽度方向位置坐标。
其中,当所确定的反卷积核中的对应位置(ikh,ikw)超出反卷积核中的位置坐标范围时,在
卷积核的位置( , )处插入零值,即该处的权重为零值无效权重,
和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)并且与该卷积核分开存储。
得优化卷积核,并且相应地去除补零处理后的特征图中对应的行和/或列以获得与各个优
化卷积核对应的优化特征图。例如,当如上所述为卷积核中的每个零值权重设置了指示比
特时,可以首先判断卷积核中的一行或者一列权重值是否全部为零值。如果一行或一列包
括至少一个非零权重值,则该行或列不能被优化去除;如果一行或一列中的权重值全部为
零,则可以基于与该零值相关联的指示标记来确定其是有效零值还是无效零值。只有当一
行或一列中的权重全部为无效零值时,该行或列可以被优化去除。在另一些实施例中,如果
为卷积核中的每个权重(包括零值权重和非零值权重)都设置了指示其是否为有效权重的
指示比特,则可以直接根据这些指示比特来判断卷积核中的一行或一列权重是否全部为无
效权重;当卷积核中的一行或一列权重全部为无效权重时,该行或列可以被优化去除。可以
看出,在步骤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的优化处理,能够几乎完全
消除反卷积处理中的无效运算,从而提高相关硬件的运行效率,改善延迟和能耗。
那样,卷积核中的每个权重值和其对应的特征图中的特征数据被提供到乘加阵列中的乘法
器,在乘法器中完成乘法运算,然后其结果被输出到加法器,与其他乘法器的输出进行累
加。可选地,累加得到的结果还可以用该卷积核的偏置值来进行线性调整,所得到的调整后
的值可以作为卷积运算的输出值存储在片上存储器SRAM中。在一些实施例中,可以基于滑
动窗口(sliding window)方法,将卷积核依次与特征图上的对应窗口中的特征数据进行卷
积,计算得到输出特征图中的各个特征数据。在步骤S140中,优选地,卷积硬件的乘加阵列
中的乘法器的数量大于或等于每个优化卷积核中包括的权重值的数量,从而可以一次完成
一个滑动窗口的卷积运算,确保高的计算效率。还应注意,乘加阵列中的乘法器数量可以小
于反卷积核中的权重值数量,也就是说,本实施例可以利用相对少的硬件资源实现相对大
的反卷积处理。例如在图5所示的示例中,反卷积核包括9个权重值,而对应的卷积核最多包
括4个权重值,因此乘法器的数量可以为4个或更多。继续参照图5的示例,通过步骤S140中
的卷积运算可获得四个输出特征图(0, 0)‑(1, 1),其每个都是3×3矩阵。可以理解,虽然
每个优化卷积核可能具有不同的尺寸,但是其对应的特征图也进行了相应的优化,因此每
个优化卷积核对应的卷积输出特征图与优化前相同,并且各个卷积输出特征图具有相同的
尺寸。
积核在高度和宽度方向上的二维索引为填充偏移量,将每个卷积输出中的各个元素填充到
合成矩阵中,其可以用下面的公式9‑10来表示,其中,ihfo和iwfo分别是合成矩阵中的高度
坐标和宽度坐标,ish和isw是卷积输出特征图的二维索引,也就是其对应的卷积核的二维索
引,ih和iw分别是卷积输出特征图中的高度坐标和宽度坐标,sh和sw分别是高度方向和宽度
方向上的填充步长,
如,参照图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矩阵的交织合成特征图。
卷积核和特征图的反卷积输出;在另一些实施例中,则还可以对交织合成进行剪裁,以获得
反卷积输出。因此,方法100还可选地包括步骤S160,对交织输出进行剪裁,以获得与反卷积
核和初始输入特征图对应的反卷积输出。
的尺寸ho和wo,
一列像素和下侧一行像素,即可得到反卷积输出。可以理解,在一些实施例中,如果计算得
到了交织输出尺寸等于反卷积输出尺寸,则可以省略剪裁步骤S160。
复杂度,节省了芯片面积开销和功耗开销。而且,该方法不需要对输入特征图进行稀疏化处
理,还通过优化处理去除了大量零值无效权重,由此可以大大减少无效运算,从而提高硬件
运行效率,改善了相关硬件的延迟和能耗特性,并且降低了对片上缓存空间的需求,有助于
进一步降低硬件成本。
法100中的各个步骤,因此下面将仅对各个模块进行简要描述,其具体细节可参照上面描述
的方法100。
积处理的硬件加速器,其可包括乘法器和加法器构成的乘加阵列以及片上存储器。特征图
和反卷积核可以从例如用作内存的动态随机存取存储器DRAM或者从诸如闪存或电可擦除
可编程只读存储器EEPROM之类的非易失性存储器读入到卷积硬件的片上存储器中。
征图读入到片上存储器中的同时对其进行补零,或者在将特征图读入到片上存储器中之
后,再对其进行补零,或者在从片上存储器读出特征图以用于例如卷积运算或其他处理时,
再对其进行补零。
进而确定每个卷积核中的每个位置的权重值。具体而言,卷积核生成模块230可以针对每个
卷积核中的每个位置,基于该卷积核在高度和宽度方向上的二维索引、卷积核的高度和宽
度尺寸、该位置的二维坐标值、以及用于反卷积运算的高度和宽度方向步长、高度和宽度方
向补零参数,来确定反卷积核中的对应位置的二维坐标值,并且将该对应位置的权重值作
为卷积核中的该位置的权重值。当所确定的反卷积核中的对应位置超出反卷积核中的位置
坐标范围时,卷积核生成模块230可以在卷积核的该位置处插入零值,即该处的权重为零值
无效权重。在一些实施例中,为了区别插入的零值无效权重和反卷积核中初始包括的零值
有效权重,卷积核生成模块230还可以对插入的零值无效权重附加一标记,以指示其是无效
权重。
卷积核对应的优化特征图,如上面关于步骤S130详细描述的那样。可以看出,优化模块240
关于各个优化卷积核确定的优化特征图可以是彼此不同的。
积模块250可以以滑动窗口的方式,将卷积核中的每个权重值和其对应的特征图中的特征
数据提供到乘法器,在乘法器中完成乘法运算,然后其结果被输出到加法器,与其他乘法器
的输出进行累加,所得到的和可以存储在片上存储器SRAM中。
以用于反卷积运算的高度方向步长和宽度方向步长为填充步长,以卷积核在高度和宽度方
向上的二维索引为填充偏移量,将每个卷积输出中的各个元素填充到合成矩阵中,由此产
生的交织合成输出可至少包括与初始提供的反卷积核和特征图对应的反卷积输出。例如,
在一些实施例中,交织合成模块260获得的交织合成输出就是初始提供的反卷积核和特征
图的反卷积输出。
的那样。具体而言,剪裁模块270可以对交织合成输出的右侧和下侧进行剪裁,直到剪裁后
的尺寸对应于反卷积输出的尺寸。
接。
器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程
逻辑器件、晶体管逻辑器件、硬件部件或其任意组合。处理器310可以运行与之关联的存储
器320中的指令和/或与之交换数据,从而控制通过总线系统350耦接的其他部件来协同操
作,执行上面描述的方法、步骤或功能。
缓冲存储器(cache)等。所述非易失性存储器例如可以包括电可擦除可编程只读存储器
(EEPROM)、硬盘、闪速存储器等。可读写存储介质例如可以包括但不限于电、磁、光、电磁、红
外线、或半导体的系统、装置或器件,或者任意以上的组合。存储器320中可以存储有计算机
可执行指令,所述指令可以由处理器310运行以控制通过总线系统350耦接的其他部件来协
同操作,执行上面描述的方法、步骤或功能。
列332和片上存储器334。可以理解,相对于片上存储器334而言,上面描述的存储器320也可
以称为片外存储器。乘加阵列332可包括多个乘法器和多个加法器构成的阵列,用于对特征
图和卷积核执行卷积处理。片上存储器334可包括例如静态随机存取存储器SRAM,用于缓存
将要提供给乘加阵列332以进行卷积运算的数据以及乘加阵列332所生成的数据。
解,可以根据实际应用需要来提供各种I/O接口340。
总线、PIC(外设互连)或PCI‑E(快速外设互连)总线、I2C(集成电路间)总线、SPI(串行外围
接口)总线、UART(通用异步串行口)总线等。
性的,根据需要,电子设备300也可以具有其他组件和结构。
件加速器400可包括接口单元410、特征图缓存单元420、卷积核缓存单元430、乘法器阵列
440、加法树单元450、偏置单元460和输出缓存单元470,其中特征图缓存单元420、卷积核缓
存单元430和输出缓存单元470可以合称为片上缓存,乘法器阵列440和加法树单元450可以
合称为乘加阵列。
后获得的输出数据。在一些实施例中,接口单元410可实施为片上网络(NoC),其具有扩展性
好、功耗低、通信效率和可靠性高等优点,非常适合于用在神经网络加速器中。当然,接口单
元410也可以包括适于与例如图7所示的总线系统350通信连接的其他接口。
是神经网络中的上一层输出的特征图,其一般可表示为矩阵的形式。
且根据上面结合图4‑6描述的方法通过卷积运算来执行反卷积处理。在该方法中,反卷积核
可以被拆分为多个卷积核,如参照图4所示的步骤S120详细描述的那样。卷积核和反卷积核
可包括一个或多个权重值,其一般可以表示为二维矩阵,并且任选地可包括一偏置值,其用
于对卷积运算的输出值进行线性调整。
特征图缓存单元420、卷积核缓存单元430和输出缓存单元470可以实施为静态随机存取存
储器SRAM,其可以具有预定位宽。
进行乘法运算,并且输出二者的积。
的和值。
置单元460输出的值可以作为卷积运算输出值存储在输出缓存单元470中。可以以滑动窗口
的方式重复上述步骤,从而得到整个输入特征图和对应的卷积核的卷积运算结果,即输出
特征图,其可以存储在缓存单元470中以供后续处理。
卷积运算的卷积控制单元和用于搬运数据的数据控制单元等,这些单元的功能和原理等也
是本领域已知的,因此不再赘述。还应理解,图8所示的卷积硬件加速器400的组件和结构只
是示例性的,而非限制性的,根据上面论述的方法步骤,卷积硬件加速器400也可以具有其
他组件和结构。
术效果。例如,通过避免稀疏化处理可以节省芯片面积开销和功耗开销,而且通过优化处理
减少了大量的无效运算,进一步提升了硬件运行效率,改善了延迟和能耗特性,并且降低了
对通用处理器中的片上缓存空间的需求,有助于降低硬件成本。
执行本说明书上述“示例性方法”部分中描述的根据本公开各实施例的对特征图进行反卷
积处理的方法。
Java、C++、phyon等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语
言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立
的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算
设备或服务器上执行。
法”部分中描述的根据本公开各种实施例的反卷积处理方法。
磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的
例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储
器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘
只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作
用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。而是,本领域
技术人员在本公开的教导下,容易想到许多形式和细节上的变化,这些变化都应落入本公
开的权利要求所限定的范围内。
的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具
有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇
“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使
用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在
此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
术人员将认识到其某些变型、修改、改变、添加和子组合。