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

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

Info

Publication number
CN112686377B
CN112686377B CN202110288755.6A CN202110288755A CN112686377B CN 112686377 B CN112686377 B CN 112686377B CN 202110288755 A CN202110288755 A CN 202110288755A CN 112686377 B CN112686377 B CN 112686377B
Authority
CN
China
Prior art keywords
convolution
deconvolution
kernel
feature map
zero
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110288755.6A
Other languages
English (en)
Other versions
CN112686377A (zh
Inventor
赵卓然
余凯
黄畅
王振江
李建军
李德林
张祎男
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Horizon Robotics Technology Research and Development Co Ltd
Original Assignee
Beijing Horizon Robotics Technology Research and Development Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Horizon Robotics Technology Research and Development Co Ltd filed Critical Beijing Horizon Robotics Technology Research and Development Co Ltd
Priority to CN202110288755.6A priority Critical patent/CN112686377B/zh
Publication of CN112686377A publication Critical patent/CN112686377A/zh
Application granted granted Critical
Publication of CN112686377B publication Critical patent/CN112686377B/zh
Priority to US18/247,408 priority patent/US20230409886A1/en
Priority to PCT/CN2022/075891 priority patent/WO2022193877A1/zh
Priority to JP2022558105A priority patent/JP7461081B2/ja
Priority to EP22770233.9A priority patent/EP4120141A4/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

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

Description

利用卷积硬件对特征数据进行反卷积处理的方法和装置
技术领域
本公开涉及人工智能技术领域,尤其涉及一种利用专用卷积硬件对特征数据进行反卷积处理的方法、装置、设备和存储介质。
背景技术
卷积神经网络(CNN)算法凭借其优异的数据集拟合能力和泛化能力被越来越多地用于分析现实世界中的视觉、语音、传感器感知信息以及高层次语义信息。反卷积是一种对图像或特征数据(也称为“特征图”)进行插值或者上采样的操作,其随着深度学习理论创新和应用发展,被越来越多地应用于各种新颖的卷积神经网络系统中,以将低分辨率图像还原到高分辨率图像,或者基于高维度特征图生成低维度特征图。可以预期的是,反卷积处理将在图像风格迁移、超高分辨率、目标检测、语义分割、实例分割、关键点(包括但不限于人体骨骼关键点)检测、深度估计等领域有着广泛的应用。
通用处理器例如中央处理单元(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)列像素,从而得到最终的反卷积输出特征图。
虽然图1的方法可利用通用处理器来执行,但是通用处理器的硬件架构设计并不适合于神经网络模型中大量包括的卷积、池化、反卷积等处理,运行效率非常低。为了提高性能,一般要求通用处理器具有高的计算性能和大容量缓存及内存,这又会导致非常高的能耗和硬件成本,因此通用处理器并不适于用在终端设备中。为了克服通用处理器的这些缺点,目前已经开发了专用的硬件加速器,其适于以滑动窗口(sliding window)的方式来执行卷积、池化和反卷积等处理,运行效率高,而且功耗很低,非常适合用在终端设备中。
图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大小的矩阵。
图2所示的方法可以使用专用硬件加速器来执行。但是,专用硬件加速器一般是针对特定的计算过程来设计的。由于图2所示的反卷积处理与一般的卷积处理不同,因此当采用专用硬件加速器来执行图2的方法时,需要设计与卷积硬件不同的专用反卷积硬件,其中乘法器和加法器构成的阵列(一般称为乘加阵列MAC)和用于该阵列的片上缓存(一般为静态随机存取存储器SRAM)需要设计为适于上面参照图2描述的处理过程。也就是说,专用硬件加速器上需要设计单独的卷积模块和反卷积模块,这会提高硬件复杂度,带来额外的芯片面积开销和功耗开销。
因此,期望能够使用简单的硬件来处理卷积运算和反卷积运算二者。图3示出了一种基于滑动窗口卷积运算来实现反卷积处理的方法,由于该反卷积处理方法仅涉及卷积运算,因此可以使用专用卷积硬件来执行,而不需要专门的反卷积硬件或模块。在图3的方法中,作为示例,特征图尺寸h×w为3×3,卷积核尺寸kh×kw为3×3,滑动步长sh和sw均为2,补零数量ph和pw均为1,输出补零oph和opw均为1。
参照图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)的卷积运算,所得输出结果即为反卷积计算结果。
图3的反卷积处理方法虽然可以使用卷积硬件来执行,不需要专门的反卷积加速模块,但是由于在稀疏化处理中插入了大量的零值像素,因此仅大约1/(sh*sw)的计算是有效的,而大约(sh*sw-1)/(sh*sw)的计算都是无效的。以sh=sw=2为例,大约有75%的计算都是无效的,这导致硬件加速器的延迟和能耗都很大。而且,图3的方法至少需要特征图尺寸(sh*sw)倍以上的片上缓存SRAM空间,对硬件要求较高。
因此,仍期望提供一种改进的反卷积处理方案,其能够基于卷积硬件来实施,而不需要专门的反卷积硬件,并且能进一步提高相关硬件的运行效率。
上面描述了一些相关技术作为本发明的背景,但是应理解,这里并不意味着这些背景技术属于本发明的现有技术。
发明内容
针对上述技术问题,提出了本公开。本公开提供一种对特征图进行反卷积处理的方案,其将反卷积核拆分成多个卷积核,并对卷积核进行优化以去除其中的无效权重行和/或列。使用优化后的多个卷积核和对应的特征图进行卷积运算,并且将所得到的多个卷积输出特征图进行交织组合和剪裁,以获得反卷积输出结果。本公开的方案可以利用卷积硬件来执行,不需要专用的反卷积硬件,减小了硬件复杂度,节省了芯片面积开销和功耗开销。而且,本公开的方案通过优化处理步骤去除了大量的无效权重,可以大幅度提高相关硬件的运行效率,从而改善了硬件的延迟性能和能耗特性。
根据本公开的一个方面,提供一种利用专用卷积硬件对特征图进行反卷积处理的方法,所述专用卷积硬件包括乘加阵列和片上存储器。所述方法可包括:将特征图和反卷积核读入到片上存储器中,并对所述特征图进行补零处理;基于所述反卷积核确定多个卷积核;去除每个卷积核中全部元素为无效权重的行和/或列以获得优化卷积核,并且去除补零后的特征图中的对应的行和/或列以获得与每个优化卷积核对应的优化特征图;利用所述乘加阵列对各个优化卷积核和对应的优化特征图进行卷积处理,以获得多个卷积输出;以及对所述多个卷积输出进行交织合成处理,以获得交织合成输出,所述交织合成输出包括与所述特征图和所述反卷积核对应的反卷积输出。
根据本公开的另一方面,提供一种利用专用卷积硬件对特征图进行反卷积处理的装置,所述专用卷积硬件包括乘加阵列和片上存储器。所述装置可包括:读取模块,用于将特征图和反卷积核读入到片上存储器中;补零模块,用于对所述特征图进行补零处理;卷积核生成模块,用于基于所述反卷积核生成多个卷积核;优化模块,用于去除每个卷积核中全部元素为无效权重的行和/或列以获得优化卷积核,并且去除补零后的特征图中对应的行和/或列以获得与每个优化卷积核对应的优化特征图;卷积模块,用于利用所述乘加阵列对各个优化卷积核和对应的优化特征图进行卷积处理,以获得多个卷积输出;以及交织合成模块,用于对所述多个卷积输出进行交织合成处理,以获得交织合成输出,所述交织合成输出包括与所述特征图和所述反卷积核对应的反卷积输出。
根据本公开的另一方面,提供一种电子设备,包括:专用卷积硬件,包括乘加阵列和片上存储器;至少一个片外存储器,其上存储有指令;以及至少一个处理器,其中,所述指令在被所述处理器运行时,使得所述电子设备执行上面描述的方法。
根据本公开的另一方面,提供一种计算机可读存储介质,其上存储有计算机程序。所述计算机程序在被电子设备的处理器运行时,使得所述电子设备执行上面描述的方法。其中,所述电子设备还包括专用卷积硬件,所述专用卷积硬件包括乘加阵列和片上存储器。
本公开的上述和其他特征和优点将通过下面结合附图对示例性实施例的描述而变得显而易见。
附图说明
通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1示出一种适于使用通用硬件对特征图进行反卷积处理的方法的示意图。
图2示出一种适于使用反卷积硬件对特征图进行反卷积处理的方法的示意图。
图3示出一种适于使用卷积硬件对特征图进行反卷积处理的方法的示意图。
图4示出根据一示例性实施例的利用卷积硬件对特征图进行反卷积处理的方法的流程图。
图5示出根据图4所示的方法对特征图进行反卷积处理的示意图。
图6示出根据一示例性实施例的用于对特征图进行反卷积处理的装置的功能框图。
图7示出根据一示例性实施例的电子设备的结构框图。
图8示出根据一示例性实施例的可用于图7的电子设备中的卷积硬件加速器的结构框图。
具体实施方式
下面,将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
申请概述
如前所述,通用处理器的硬件架构设计并不适合于神经网络模型中大量包括的卷积、池化、反卷积等处理,运行效率非常低。另一方面,使用专用硬件加速器来运行神经网络模型时,虽然能够大幅度提升效率,但是一般需要针对特定的处理设计特定的硬件,例如需要针对卷积处理和反卷积处理设计单独的卷积模块和反卷积模块,导致硬件复杂度高,并且带来额外的芯片面积开销和功耗开销。虽然目前已经提出了使用卷积硬件来执行反卷积处理的方法,但是其包括大量的无效运算,导致硬件加速器的延迟和能耗都很大,而且需要额外的片上缓存空间,对硬件要求较高。
本公开提出了一种对特征图进行反卷积处理的方法,其能够解决上述问题中的一个或多个。在本公开的方案中,可以将反卷积核拆分成多个卷积核,并且对每个卷积核进行优化处理,以去除其中的无效权重,获得优化卷积核。此外,还对特征图进行相应的优化,以获得与各个优化卷积核对应的优化特征图。利用各个优化卷积核和特征图进行卷积运算,得到多个卷积输出。可以对多个卷积输出进行交织合成,可选地还进行剪裁后,即可得到期望大小的反卷积输出特征图。
本公开的方法可以利用卷积硬件来执行,不需要实施专用的反卷积硬件,因此减小了硬件复杂度,节省了芯片面积开销和功耗开销。而且,本公开的方法通过优化处理减少了大量的无效运算,进一步提升了硬件加速器的运行效率,改善了延迟和能耗特性,并且降低了对片上缓存空间的需求,有助于降低硬件成本。
示例性方法
图4示出根据本公开一示例性实施例的利用卷积硬件对特征图进行反卷积处理的方法100的流程图,图5示出根据图4所示的方法100对特征图进行反卷积处理的示意图。如下面将详细描述的那样,卷积硬件可包括乘加阵列MAC和片上存储器SRAM。这里,为了描述方便,预先定义与该反卷积运算相关的参数,包括输入特征图尺寸(h,w)、反卷积核尺寸(kh,kw)、滑动步长(sh,sw),补零(ph,pw)、输出补零(oph,opw),其中h指示特征图的高度维度,w指示特征图的宽度维度。
参照图4,方法100可包括步骤S110,将特征图和反卷积核读入到片上存储器中,并对特征图进行补零处理。在图5的示例中,特征图表示为3×3矩阵,反卷积核也表示为3×3矩阵,当然这仅是示例尺寸,本公开不限于此。可以采用各种灵活的方式对特征图进行补零处理,例如在将特征图读入到片上存储器中的同时对其进行补零,或者在将特征图读入到片上存储器中之后,再对其进行补零,或者在从片上存储器读出特征图以用于例如卷积运算或其他处理时,再对其进行补零。
在一示例性实施例中,不同于常用的对称补零,可以在四个方向上对特征图分别 进行补零。具体而言,可以基于反卷积核的高度尺寸、用于反卷积运算的高度方向步长和高 度方向补零参数来确定特征图的上侧补零数量
Figure 452938DEST_PATH_IMAGE001
和下侧补零数量
Figure 697975DEST_PATH_IMAGE002
,其中下侧补零数 量
Figure 307073DEST_PATH_IMAGE002
比上侧补零数量
Figure 436703DEST_PATH_IMAGE001
多一行。类似地,可以基于反卷积核的宽度尺寸、用于反卷积运 算的宽度方向步长和宽度方向补零参数来确定特征图的左侧补零数量
Figure 719917DEST_PATH_IMAGE003
和右侧补零数量
Figure 401434DEST_PATH_IMAGE004
,其中右侧补零数量
Figure 137309DEST_PATH_IMAGE004
比左侧补零数量
Figure 70630DEST_PATH_IMAGE003
多一列。例如,可以基于下面的公式1-4分 别计算特征图的上侧补零数量
Figure 332984DEST_PATH_IMAGE001
、左侧补零数量
Figure 60768DEST_PATH_IMAGE003
、下侧补零数量
Figure 408573DEST_PATH_IMAGE002
和右侧补零数量
Figure 614426DEST_PATH_IMAGE004
,其中floor是向下取整函数,ceil是向上取整函数,kh和kw分别是反卷积核的高度尺寸 和宽度尺寸,sh和sw分别是用于反卷积运算的在高度方向上的步长和在宽度方向上的步长, ph和pw分别是用于反卷积运算的高度补零参数和宽度补零参数,
Figure 223963DEST_PATH_IMAGE005
在图5的示例中,相关参数的值分别为h=w=3,kh=kw=3,sh=sw=2,ph=pw=1,oph=opw=0。根据上面的公式1-4可以计算确定,上侧和左侧的补零数量为零,即不需要补零,而下侧和右侧的补零数量是1。因此,补零后的特征图成为4×4矩阵,如图5中所示。
在步骤S120中,基于反卷积核确定多个卷积核。首先,可确定与反卷积核对应的卷积核的数量和尺寸。具体而言,卷积核的数量可以确定为用于反卷积运算的高度方向步长sh和宽度方向步长sw的乘积sh×sw,并且可以为每个卷积核分配高度方向和宽度方向的二维索引(ish,isw)。在图5的示例中,由于sh=sw=2,因此可以确定与反卷积核对应的卷积核的数量为4,这4个卷积核可分别分配有二维索引(0, 0)、(0, 1)、(1, 0)和(1, 1)。
每个卷积核在高度方向上的尺寸
Figure 857069DEST_PATH_IMAGE006
可基于反卷积核的高度尺寸kh以及用于反卷 积运算的高度方向步长sh和高度方向补零参数ph来确定;类似地,每个卷积核在宽度方向上 的尺寸
Figure 692170DEST_PATH_IMAGE007
可基于反卷积核的宽度尺寸kw以及用于反卷积运算的宽度方向步长sw和宽度方 向补零参数pw来确定。例如,每个卷积核的高度和宽度尺寸(
Figure 701715DEST_PATH_IMAGE006
Figure 673082DEST_PATH_IMAGE007
)可由下面的公式5-6确 定,其中ceil是向上取整函数,%是取余运算符。在图5的示例中,利用上面定义的参数值可 以计算确定每个卷积核的尺寸为
Figure 477090DEST_PATH_IMAGE006
=2,
Figure 799486DEST_PATH_IMAGE007
=2,
Figure 347142DEST_PATH_IMAGE008
在步骤S120中,在确定卷积核的数量和尺寸之后,还进一步确定每个卷积核中的 权重值。具体而言,可以针对每个卷积核中的每个位置,基于该卷积核在高度和宽度方向上 的二维索引、卷积核的高度和宽度尺寸、该位置的二维坐标值、以及用于反卷积运算的高度 和宽度方向步长、高度和宽度方向补零参数,来确定反卷积核中的对应位置的二维坐标值, 并且将该对应位置的权重值作为卷积核中的该位置的权重值。例如,对于每个卷积核(
Figure 205639DEST_PATH_IMAGE009
Figure 446128DEST_PATH_IMAGE010
)中的每个位置(
Figure 990242DEST_PATH_IMAGE011
Figure 607168DEST_PATH_IMAGE012
),可以根据下面的公式7-8确定反卷积核中的对应位置(ikh, ikw),并将该位置的权重值作为卷积核的位置(
Figure 428493DEST_PATH_IMAGE011
Figure 230096DEST_PATH_IMAGE012
)处的权重值,其中ish和isw分别是 每个卷积核在高度和宽度方向的索引,
Figure 136872DEST_PATH_IMAGE011
Figure 885385DEST_PATH_IMAGE012
分别是卷积核中的高度方向位置坐标和 宽度方向位置坐标,ikh和ikw分别是反卷积核中的高度方向位置坐标和宽度方向位置坐标。 其中,当所确定的反卷积核中的对应位置(ikh,ikw)超出反卷积核中的位置坐标范围时,在 卷积核的位置(
Figure 826796DEST_PATH_IMAGE011
Figure 32256DEST_PATH_IMAGE012
)处插入零值,即该处的权重为零值无效权重,
Figure 426329DEST_PATH_IMAGE013
例如,参照图5的示例,在计算卷积核(ish=0, isw=0)中的权重值时,对于位置(
Figure 509691DEST_PATH_IMAGE011
=0,
Figure 40030DEST_PATH_IMAGE012
=0),将相关参数ish=isw=0、
Figure 58801DEST_PATH_IMAGE011
=
Figure 64803DEST_PATH_IMAGE012
=0、
Figure 827223DEST_PATH_IMAGE006
=
Figure 602281DEST_PATH_IMAGE007
=2、sh=sw=2,ph=pw=1代入上述公式7 和8,可以计算得到对应的反卷积核中的位置为(ikh =1,ikw =1),该位置处的权重值为“2”, 因此卷积核(0,0)中的位置(0,0)处的权重值是“2”;对于位置(
Figure 260795DEST_PATH_IMAGE011
=0,
Figure 895039DEST_PATH_IMAGE012
=1),将相关参数 ish=isw=0、
Figure 556090DEST_PATH_IMAGE011
=0、
Figure 592179DEST_PATH_IMAGE012
=1、
Figure 687174DEST_PATH_IMAGE006
=
Figure 667768DEST_PATH_IMAGE007
=2、sh=sw=2,ph=pw=1代入上述公式7和8,可以计算得到对应 的反卷积核中的位置为(ikh =1,ikw =-1),由于该坐标值超出了反卷积核的坐标范围(在图 5的示例中,行坐标范围为0至2,列坐标范围为0至2),因此在该位置处插入零值无效权重; 类似地,在位置(
Figure 506411DEST_PATH_IMAGE011
=1,
Figure 256061DEST_PATH_IMAGE012
=0)和(
Figure 787537DEST_PATH_IMAGE011
=1,
Figure 865214DEST_PATH_IMAGE012
=1)处,计算得到的反卷积核中的对应坐标位 置分别为(ikh =-1,ikw =1)和(ikh =-1,ikw =-1),均超出了反卷积核的坐标范围,因此在 这些位置处也插入零值无效权重,由此得到图5中所示的卷积核(0,0)的各个权重值。类似 地,在卷积核(ish=0, isw=1)中,对于位置(
Figure 897761DEST_PATH_IMAGE011
=0,
Figure 377284DEST_PATH_IMAGE012
=0),根据公式7-8计算得到的对应的 反卷积核中的位置为(ikh =1,ikh =2),该位置处的权重值为“-5”;对于位置(
Figure 79661DEST_PATH_IMAGE011
=0,
Figure 273663DEST_PATH_IMAGE012
= 1),计算得到的对应的反卷积核中的位置为(ikh =1,ikw =0),该位置处的权重值为“0”;对 于位置(
Figure 719688DEST_PATH_IMAGE011
=1,
Figure 319296DEST_PATH_IMAGE012
=0)和(
Figure 51629DEST_PATH_IMAGE011
=1,
Figure 369478DEST_PATH_IMAGE012
=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中,进一步对每个卷积核进行优化,以去除每个卷积核中全部元素为无效权重的行和/或列以获得优化卷积核,并且相应地去除补零处理后的特征图中对应的行和/或列以获得与各个优化卷积核对应的优化特征图。例如,当如上所述为卷积核中的每个零值权重设置了指示比特时,可以首先判断卷积核中的一行或者一列权重值是否全部为零值。如果一行或一列包括至少一个非零权重值,则该行或列不能被优化去除;如果一行或一列中的权重值全部为零,则可以基于与该零值相关联的指示标记来确定其是有效零值还是无效零值。只有当一行或一列中的权重全部为无效零值时,该行或列可以被优化去除。在另一些实施例中,如果为卷积核中的每个权重(包括零值权重和非零值权重)都设置了指示其是否为有效权重的指示比特,则可以直接根据这些指示比特来判断卷积核中的一行或一列权重是否全部为无效权重;当卷积核中的一行或一列权重全部为无效权重时,该行或列可以被优化去除。可以看出,在步骤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的优化处理,能够几乎完全消除反卷积处理中的无效运算,从而提高相关硬件的运行效率,改善延迟和能耗。
接下来在步骤S140中,可以通过卷积硬件的乘加阵列对各个优化卷积核和对应的优化特征图进行卷积运算,以获得相应的各个卷积输出。例如,如后面参照图8具体描述的那样,卷积核中的每个权重值和其对应的特征图中的特征数据被提供到乘加阵列中的乘法器,在乘法器中完成乘法运算,然后其结果被输出到加法器,与其他乘法器的输出进行累加。可选地,累加得到的结果还可以用该卷积核的偏置值来进行线性调整,所得到的调整后的值可以作为卷积运算的输出值存储在片上存储器SRAM中。在一些实施例中,可以基于滑动窗口(sliding window)方法,将卷积核依次与特征图上的对应窗口中的特征数据进行卷积,计算得到输出特征图中的各个特征数据。在步骤S140中,优选地,卷积硬件的乘加阵列中的乘法器的数量大于或等于每个优化卷积核中包括的权重值的数量,从而可以一次完成一个滑动窗口的卷积运算,确保高的计算效率。还应注意,乘加阵列中的乘法器数量可以小于反卷积核中的权重值数量,也就是说,本实施例可以利用相对少的硬件资源实现相对大的反卷积处理。例如在图5所示的示例中,反卷积核包括9个权重值,而对应的卷积核最多包括4个权重值,因此乘法器的数量可以为4个或更多。继续参照图5的示例,通过步骤S140中的卷积运算可获得四个输出特征图(0, 0)-(1, 1),其每个都是3×3矩阵。可以理解,虽然每个优化卷积核可能具有不同的尺寸,但是其对应的特征图也进行了相应的优化,因此每个优化卷积核对应的卷积输出特征图与优化前相同,并且各个卷积输出特征图具有相同的尺寸。
在步骤S150中,对各个卷积输出特征图进行交织合成处理,以获得交织合成输出。交织合成处理可包括以用于反卷积运算的高度方向步长和宽度方向步长为填充步长,以卷积核在高度和宽度方向上的二维索引为填充偏移量,将每个卷积输出中的各个元素填充到合成矩阵中,其可以用下面的公式9-10来表示,其中,ihfo和iwfo分别是合成矩阵中的高度坐标和宽度坐标,ish和isw是卷积输出特征图的二维索引,也就是其对应的卷积核的二维索引,ih和iw分别是卷积输出特征图中的高度坐标和宽度坐标,sh和sw分别是高度方向和宽度方向上的填充步长,
ihfo=ih×sh+ish (公式9)
iwfo= iw×sw+isw (公式10)。
可以利用公式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矩阵的交织合成特征图。
步骤S150所获得的交织合成输出可至少包括与初始提供的反卷积核和特征图对应的反卷积输出。例如,在一些实施例中,步骤S150获得的交织合成输出就是初始提供的反卷积核和特征图的反卷积输出;在另一些实施例中,则还可以对交织合成进行剪裁,以获得反卷积输出。因此,方法100还可选地包括步骤S160,对交织输出进行剪裁,以获得与反卷积核和初始输入特征图对应的反卷积输出。
具体而言,在步骤S160中,可以对交织合成输出的右侧和下侧进行剪裁,直到剪裁后的尺寸对应于反卷积输出的尺寸。例如,可以根据下面的公式11-12计算确定反卷积输出的尺寸ho和wo
Figure 353614DEST_PATH_IMAGE014
(公式11)
Figure 932363DEST_PATH_IMAGE015
(公式12)。
并且,可以根据公式13-16计算确定交织合成输出的尺寸hfo和wfo,其中
Figure 976543DEST_PATH_IMAGE016
Figure 640742DEST_PATH_IMAGE017
是每 个优化卷积核的卷积输出尺寸,
Figure 428570DEST_PATH_IMAGE018
(公式13)
Figure 2770DEST_PATH_IMAGE019
(公式14)
Figure 578370DEST_PATH_IMAGE020
(公式15)
Figure 605232DEST_PATH_IMAGE021
(公式16)。
因此,在步骤S160中,可以在交织输出的右侧裁去(wfo-wo)列,下侧裁去(hfo-ho)行,从而得到尺寸为(ho,wo)的反卷积输出。
在图5的示例中,根据上述公式计算得到的卷积输出尺寸为3×3,交织合成输出的尺寸为6×6,反卷积输出的尺寸为5×5,因此在剪裁步骤S160中,去除交织合成输出的右侧一列像素和下侧一行像素,即可得到反卷积输出。可以理解,在一些实施例中,如果计算得到了交织输出尺寸等于反卷积输出尺寸,则可以省略剪裁步骤S160。
从上面参照图4和图5进行的描述可以理解,利用上述实施例的方法,可以使用卷积硬件来对特征图执行反卷积处理,而不需要提供专门的反卷积硬件,因此可以降低硬件复杂度,节省了芯片面积开销和功耗开销。而且,该方法不需要对输入特征图进行稀疏化处理,还通过优化处理去除了大量零值无效权重,由此可以大大减少无效运算,从而提高硬件运行效率,改善了相关硬件的延迟和能耗特性,并且降低了对片上缓存空间的需求,有助于进一步降低硬件成本。
示例性装置
图6示出根据一示例性实施例的用于对特征图进行反卷积处理的装置200的功能框图。可以理解的是,装置200中的各个功能模块可以用于执行上面参照图4和图5描述的方法100中的各个步骤,因此下面将仅对各个模块进行简要描述,其具体细节可参照上面描述的方法100。
如图6所示,装置200可包括读取模块210、补零模块220、卷积核生成模块230、优化模块240、卷积模块250和交织合成模块260。
读取模块210可用于将特征图和反卷积核读入到卷积硬件的片上存储器例如动态随机存取存储器SRAM中,如上面关于步骤S110描述的那样。卷积硬件可以是专用于执行卷积处理的硬件加速器,其可包括乘法器和加法器构成的乘加阵列以及片上存储器。特征图和反卷积核可以从例如用作内存的动态随机存取存储器DRAM或者从诸如闪存或电可擦除可编程只读存储器EEPROM之类的非易失性存储器读入到卷积硬件的片上存储器中。
补零模块220可用于对特征图进行补零处理,如上面也在步骤S110中描述的那样。在一些实施例中,如上所述,可以采用各种灵活的方式对特征图进行补零处理,例如在将特征图读入到片上存储器中的同时对其进行补零,或者在将特征图读入到片上存储器中之后,再对其进行补零,或者在从片上存储器读出特征图以用于例如卷积运算或其他处理时,再对其进行补零。
卷积核生成模块230可用于基于反卷积核生成多个卷积核,如上面关于步骤S120描述的那样。例如,卷积核生成模块230可以确定与反卷积核对应的卷积核的数量和尺寸,进而确定每个卷积核中的每个位置的权重值。具体而言,卷积核生成模块230可以针对每个卷积核中的每个位置,基于该卷积核在高度和宽度方向上的二维索引、卷积核的高度和宽度尺寸、该位置的二维坐标值、以及用于反卷积运算的高度和宽度方向步长、高度和宽度方向补零参数,来确定反卷积核中的对应位置的二维坐标值,并且将该对应位置的权重值作为卷积核中的该位置的权重值。当所确定的反卷积核中的对应位置超出反卷积核中的位置坐标范围时,卷积核生成模块230可以在卷积核的该位置处插入零值,即该处的权重为零值无效权重。在一些实施例中,为了区别插入的零值无效权重和反卷积核中初始包括的零值有效权重,卷积核生成模块230还可以对插入的零值无效权重附加一标记,以指示其是无效权重。
优化模块240可用于去除每个卷积核中全部元素为无效权重的行和/或列以获得优化卷积核,并且相应地去除补零处理后的特征图中对应的行和/或列以获得与各个优化卷积核对应的优化特征图,如上面关于步骤S130详细描述的那样。可以看出,优化模块240关于各个优化卷积核确定的优化特征图可以是彼此不同的。
卷积模块250可以利用卷积硬件的乘加阵列对各个优化卷积核和对应的优化特征图进行卷积运算,以获得相应的各个卷积输出,如上面关于步骤S140描述的那样。例如,卷积模块250可以以滑动窗口的方式,将卷积核中的每个权重值和其对应的特征图中的特征数据提供到乘法器,在乘法器中完成乘法运算,然后其结果被输出到加法器,与其他乘法器的输出进行累加,所得到的和可以存储在片上存储器SRAM中。
交织合成模块260可以对卷积模块250产生的多个卷积输出特征图进行交织合成处理,以获得交织合成输出,如上面关于步骤S150描述的那样。例如,交织合成模块260可以以用于反卷积运算的高度方向步长和宽度方向步长为填充步长,以卷积核在高度和宽度方向上的二维索引为填充偏移量,将每个卷积输出中的各个元素填充到合成矩阵中,由此产生的交织合成输出可至少包括与初始提供的反卷积核和特征图对应的反卷积输出。例如,在一些实施例中,交织合成模块260获得的交织合成输出就是初始提供的反卷积核和特征图的反卷积输出。
在一些实施例中,可选地,装置200还可以包括剪裁模块270,其可以对交织合成模块260产生的交织合成输出特征图进行剪裁,以获得反卷积输出,如上面关于步骤S160描述的那样。具体而言,剪裁模块270可以对交织合成输出的右侧和下侧进行剪裁,直到剪裁后的尺寸对应于反卷积输出的尺寸。
示例性电子设备
图7示出根据一示例性实施例的电子设备300的结构框图,电子设备300可用于执行上面结合图4-6描述的通过卷积操作来实施反卷积处理的方法。
如图7所示,电子设备300可包括一个或多个处理器310、一个或多个存储器320、卷积硬件加速器330、以及一个或多个输入输出(I/O)接口340,它们通过总线系统350彼此连接。
处理器310可以是具有数据处理能力和/或指令执行能力的任何形式的处理单元,其示例包括但不限于中央处理器(CPU)、ARM处理器、微处理单元(MCU)、通用处理器、控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、晶体管逻辑器件、硬件部件或其任意组合。处理器310可以运行与之关联的存储器320中的指令和/或与之交换数据,从而控制通过总线系统350耦接的其他部件来协同操作,执行上面描述的方法、步骤或功能。
存储器320可以包括各种形式的计算机可读写存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括动态随机存取存储器(DRAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括电可擦除可编程只读存储器(EEPROM)、硬盘、闪速存储器等。可读写存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。存储器320中可以存储有计算机可执行指令,所述指令可以由处理器310运行以控制通过总线系统350耦接的其他部件来协同操作,执行上面描述的方法、步骤或功能。
卷积硬件加速器330,也可以称为卷积神经网络硬件加速器或者专用卷积硬件,可以是设计来执行卷积相关处理的专用硬件。如图7所示,卷积硬件加速器330可包括乘加阵列332和片上存储器334。可以理解,相对于片上存储器334而言,上面描述的存储器320也可以称为片外存储器。乘加阵列332可包括多个乘法器和多个加法器构成的阵列,用于对特征图和卷积核执行卷积处理。片上存储器334可包括例如静态随机存取存储器SRAM,用于缓存将要提供给乘加阵列332以进行卷积运算的数据以及乘加阵列332所生成的数据。
I/O接口340可包括用于连接到各种输入和输出装置的通信接口,例如摄像头接口、雷达接口、触摸显示屏接口、网络接口、以及支持特定通信协议的控制器接口等。应理解,可以根据实际应用需要来提供各种I/O接口340。
总线系统350可以是能够连接电子设备300中的各个部件并且支持它们之间的通信的任何总线系统,其示例包括但不限于CAN(区域网络控制器)总线、ISA(工业标准架构)总线、PIC(外设互连)或PCI-E(快速外设互连)总线、I2C(集成电路间)总线、SPI(串行外围接口)总线、UART(通用异步串行口)总线等。
当然,为了简化,图7仅示出了电子设备300中与本公开有关的组件中的一些,而省略了许多其他组件。应注意,图7所示的电子设备300的组件和结构只是示例性的,而非限制性的,根据需要,电子设备300也可以具有其他组件和结构。
图8示出根据一示例性实施例的卷积硬件加速器400的结构框图,图8所示的卷积硬件加速器400可用作例如图7的电子设备300中的卷积硬件加速器330。如图8所示,卷积硬件加速器400可包括接口单元410、特征图缓存单元420、卷积核缓存单元430、乘法器阵列440、加法树单元450、偏置单元460和输出缓存单元470,其中特征图缓存单元420、卷积核缓存单元430和输出缓存单元470可以合称为片上缓存,乘法器阵列440和加法树单元450可以合称为乘加阵列。
参照图8,接口单元410可包括与外界通信连接的各种接口,以接收外界输入的数据例如特征图数据和卷积核数据以及向外界提供输出数据例如对特征图进行卷积运算之后获得的输出数据。在一些实施例中,接口单元410可实施为片上网络(NoC),其具有扩展性好、功耗低、通信效率和可靠性高等优点,非常适合于用在神经网络加速器中。当然,接口单元410也可以包括适于与例如图7所示的总线系统350通信连接的其他接口。
特征图缓存单元420可以通过接口单元410接收并且存储特征图数据。这里,特征图可以是摄像头采集并且经过预处理例如剪裁、采样等处理后的最初输入特征图,也可以是神经网络中的上一层输出的特征图,其一般可表示为矩阵的形式。
卷积核缓存单元430可以通过接口单元410接收并且存储卷积核或反卷积核数据。例如,卷积硬件加速器400可以接收卷积核以执行常规的卷积处理,也可以接收反卷积核并且根据上面结合图4-6描述的方法通过卷积运算来执行反卷积处理。在该方法中,反卷积核可以被拆分为多个卷积核,如参照图4所示的步骤S120详细描述的那样。卷积核和反卷积核可包括一个或多个权重值,其一般可以表示为二维矩阵,并且任选地可包括一偏置值,其用于对卷积运算的输出值进行线性调整。
可以理解,特征图缓存单元420和卷积核缓存单元430、以及后面描述的输出缓存单元470,可以是单独的缓存器件,或者可以是同一缓存器件中的不同存储区域。作为示例,特征图缓存单元420、卷积核缓存单元430和输出缓存单元470可以实施为静态随机存取存储器SRAM,其可以具有预定位宽。
乘法器阵列440可包括多个乘法器441,每个乘法器441可以从特征图缓存单元420接收一特征数据,从卷积核缓存单元430接收卷积核中的一权重值,对该特征数据和权重值进行乘法运算,并且输出二者的积。
加法树单元450可以包括多个加法器451,其布置为树状结构。加法树单元450可以从乘法器阵列440接收每个乘法器441的输出值,并且将这些输出值累加,得到并输出它们的和值。
偏置单元460可以从卷积核缓存单元430接收一偏置值,从加法树单元450接收其输出值,并且利用该偏置值对加法树单元450的输出值进行线性调整,输出调整后的值。偏置单元460输出的值可以作为卷积运算输出值存储在输出缓存单元470中。可以以滑动窗口的方式重复上述步骤,从而得到整个输入特征图和对应的卷积核的卷积运算结果,即输出特征图,其可以存储在缓存单元470中以供后续处理。
可以理解的是,为了简化,图8仅示出了卷积硬件加速器400中与本公开紧密相关的组件中的一些,而省略了许多其他组件。例如,卷积硬件加速器400还可以包括用于控制卷积运算的卷积控制单元和用于搬运数据的数据控制单元等,这些单元的功能和原理等也是本领域已知的,因此不再赘述。还应理解,图8所示的卷积硬件加速器400的组件和结构只是示例性的,而非限制性的,根据上面论述的方法步骤,卷积硬件加速器400也可以具有其他组件和结构。
虽然上面结合专用加速器论述了利用卷积运算来执行反卷积处理的方法,但是应理解,本公开的原理也可以利用通用硬件例如CPU或GPU来实现,并且其可以实现类似的技术效果。例如,通过避免稀疏化处理可以节省芯片面积开销和功耗开销,而且通过优化处理减少了大量的无效运算,进一步提升了硬件运行效率,改善了延迟和能耗特性,并且降低了对通用处理器中的片上缓存空间的需求,有助于降低硬件成本。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时,能够控制卷积神经网络加速器来执行本说明书上述“示例性方法”部分中描述的根据本公开各实施例的对特征图进行反卷积处理的方法。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++、phyon等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的反卷积处理方法。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。而是,本领域技术人员在本公开的教导下,容易想到许多形式和细节上的变化,这些变化都应落入本公开的权利要求所限定的范围内。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

Claims (9)

1.一种利用专用卷积硬件对特征图进行反卷积处理的方法,所述专用卷积硬件包括乘加阵列和片上存储器,所述方法包括:
将特征图和反卷积核读入到片上存储器中,并对所述特征图进行补零处理;
基于所述反卷积核确定多个卷积核;
去除每个卷积核中全部元素为无效权重的行和/或列以获得优化卷积核,并且去除补零后的特征图中的对应的行和/或列以获得与每个优化卷积核对应的优化特征图;
利用所述乘加阵列对各个优化卷积核和对应的优化特征图进行卷积处理,以获得多个卷积输出;以及
对所述多个卷积输出进行交织合成处理,以获得交织合成输出,所述交织合成输出包括与所述特征图和所述反卷积核对应的反卷积输出,
其中,基于所述反卷积核确定多个卷积核包括:
确定与所述反卷积核对应的卷积核的数量和尺寸,其中卷积核的数量等于用于反卷积运算的高度方向步长和宽度方向步长的乘积,卷积核的高度尺寸是所述反卷积核的高度尺寸以及用于反卷积运算的高度方向步长和高度方向补零参数的函数,卷积核的宽度尺寸是所述反卷积核的宽度尺寸以及用于反卷积运算的宽度方向步长和宽度方向补零参数的函数;以及
对于每个卷积核中的每个位置,基于该卷积核在高度和宽度方向上的二维索引、该卷积核的高度尺寸和宽度尺寸、该位置的二维坐标值、以及用于反卷积运算的高度方向步长、宽度方向步长和高度方向补零参数、宽度方向补零参数,确定所述反卷积核中的对应位置的二维坐标值,并且将所述对应位置的权重值作为所述卷积核中的该位置的权重值,
其中,当所确定的所述反卷积核中的对应位置的二维坐标值超出所述反卷积核中的位置坐标范围时,确定所述卷积核的该位置处的权重为具有零值的无效权重。
2.如权利要求1所述的方法,其中,所述乘加阵列中包括的乘法器的数量大于或等于每个优化卷积核中包括的权重值的数量。
3.如权利要求1所述的方法,其中,对所述特征图进行补零处理包括:
基于所述反卷积核的高度尺寸以及用于反卷积运算的高度方向步长和高度方向补零参数,确定所述特征图的上侧补零数量和下侧补零数量,其中所述下侧补零数量比所述上侧补零数量多一行;以及
基于所述反卷积核的宽度尺寸以及用于反卷积运算的宽度方向步长和宽度方向补零参数,确定所述特征图的左侧补零数量和右侧补零数量,其中所述右侧补零数量比所述左侧补零数量多一列。
4.如权利要求1所述的方法,其中,对所述多个卷积输出进行交织合成处理包括:
以用于反卷积运算的高度方向步长和宽度方向步长为填充步长,以卷积核在高度和宽度方向上的二维索引为填充偏移量,将每个卷积输出中的各个元素填充到合成矩阵中。
5.如权利要求1所述的方法,还包括:
对所述交织合成输出进行剪裁,以获得与所述特征图和所述反卷积核对应的反卷积输出。
6.如权利要求5所述的方法,其中,对所述交织合成输出进行剪裁包括:
对所述交织合成输出的右侧和下侧进行剪裁,直到剪裁后的尺寸对应于所述特征图和所述反卷积核的反卷积输出的尺寸。
7.一种利用专用卷积硬件对特征图进行反卷积处理的装置,所述专用卷积硬件包括乘加阵列和片上存储器,所述装置包括:
读取模块,用于将特征图和反卷积核读入到片上存储器中;
补零模块,用于对所述特征图进行补零处理;
卷积核生成模块,用于基于所述反卷积核生成多个卷积核;
优化模块,用于去除每个卷积核中全部元素为无效权重的行和/或列以获得优化卷积核,并且去除补零后的特征图中对应的行和/或列以获得与每个优化卷积核对应的优化特征图;
卷积模块,用于利用所述乘加阵列对各个优化卷积核和对应的优化特征图进行卷积处理,以获得多个卷积输出;以及
交织合成模块,用于对所述多个卷积输出进行交织合成处理,以获得交织合成输出,所述交织合成输出包括与所述特征图和所述反卷积核对应的反卷积输出,
其中,基于所述反卷积核确定多个卷积核包括:
确定与所述反卷积核对应的卷积核的数量和尺寸,其中卷积核的数量等于用于反卷积运算的高度方向步长和宽度方向步长的乘积,卷积核的高度尺寸是所述反卷积核的高度尺寸以及用于反卷积运算的高度方向步长和高度方向补零参数的函数,卷积核的宽度尺寸是所述反卷积核的宽度尺寸以及用于反卷积运算的宽度方向步长和宽度方向补零参数的函数;以及
对于每个卷积核中的每个位置,基于该卷积核在高度和宽度方向上的二维索引、该卷积核的高度尺寸和宽度尺寸、该位置的二维坐标值、以及用于反卷积运算的高度方向步长、宽度方向步长和高度方向补零参数、宽度方向补零参数,确定所述反卷积核中的对应位置的二维坐标值,并且将所述对应位置的权重值作为所述卷积核中的该位置的权重值,
其中,当所确定的所述反卷积核中的对应位置的二维坐标值超出所述反卷积核中的位置坐标范围时,确定所述卷积核的该位置处的权重为具有零值的无效权重。
8.一种电子设备,包括:
专用卷积硬件,包括乘加阵列和片上存储器;
至少一个片外存储器,其上存储有指令;以及
至少一个处理器,
其中,所述指令在被所述处理器运行时,使得所述电子设备执行权利要求1至6中的任一项所述的方法。
9.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被电子设备的处理器运行时,使得所述电子设备执行权利要求1至6中的任一项所述的方法,其中所述电子设备还包括专用卷积硬件,所述专用卷积硬件包括乘加阵列和片上存储器。
CN202110288755.6A 2021-03-18 2021-03-18 利用卷积硬件对特征数据进行反卷积处理的方法和装置 Active CN112686377B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN202110288755.6A CN112686377B (zh) 2021-03-18 2021-03-18 利用卷积硬件对特征数据进行反卷积处理的方法和装置
US18/247,408 US20230409886A1 (en) 2021-03-18 2022-02-10 Method and apparatus for performing deconvolution processing on feature data by using convolution hardware
PCT/CN2022/075891 WO2022193877A1 (zh) 2021-03-18 2022-02-10 利用卷积硬件对特征数据进行反卷积处理的方法和装置
JP2022558105A JP7461081B2 (ja) 2021-03-18 2022-02-10 畳み込みハードウェアによる特徴データに対する逆畳み込み処理方法及び装置
EP22770233.9A EP4120141A4 (en) 2021-03-18 2022-02-10 METHOD AND APPARATUS FOR PERFORMING DECONVOLUTION PROCESSING ON CHARACTERISTIC DATA USING CONVOLUTION MATERIAL

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110288755.6A CN112686377B (zh) 2021-03-18 2021-03-18 利用卷积硬件对特征数据进行反卷积处理的方法和装置

Publications (2)

Publication Number Publication Date
CN112686377A CN112686377A (zh) 2021-04-20
CN112686377B true CN112686377B (zh) 2021-07-02

Family

ID=75455692

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110288755.6A Active CN112686377B (zh) 2021-03-18 2021-03-18 利用卷积硬件对特征数据进行反卷积处理的方法和装置

Country Status (5)

Country Link
US (1) US20230409886A1 (zh)
EP (1) EP4120141A4 (zh)
JP (1) JP7461081B2 (zh)
CN (1) CN112686377B (zh)
WO (1) WO2022193877A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112686377B (zh) * 2021-03-18 2021-07-02 北京地平线机器人技术研发有限公司 利用卷积硬件对特征数据进行反卷积处理的方法和装置
CN116152037A (zh) * 2022-12-06 2023-05-23 嘉楠明芯(北京)科技有限公司 图像反卷积方法和设备、存储介质
CN116740476B (zh) * 2023-08-15 2023-11-07 四川互慧软件有限公司 一种基于患者360可视化人体自动标注方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017130036A (ja) 2016-01-20 2017-07-27 富士通株式会社 情報処理装置、演算方法、および演算プログラム
CN108229645B (zh) 2017-04-28 2021-08-06 北京市商汤科技开发有限公司 卷积加速和计算处理方法、装置、电子设备及存储介质
KR20190051697A (ko) 2017-11-07 2019-05-15 삼성전자주식회사 뉴럴 네트워크의 디컨벌루션 연산을 수행하는 장치 및 방법
CN107729994B (zh) * 2017-11-28 2020-05-26 南京地平线机器人技术有限公司 执行卷积神经网络中的卷积层的运算的方法和装置
CN108717569B (zh) * 2018-05-16 2022-03-22 中国人民解放军陆军工程大学 一种膨胀全卷积神经网络装置及其构建方法
US12014262B2 (en) * 2018-10-03 2024-06-18 Synopsys, Inc. Deconvolution by convolutions
US20200234129A1 (en) 2019-01-22 2020-07-23 Nvidia Corporation Techniques for removing masks from pruned neural networks
GB2582352B (en) * 2019-03-20 2021-12-15 Imagination Tech Ltd Methods and systems for implementing a convolution transpose layer of a neural network
US11222092B2 (en) 2019-07-16 2022-01-11 Facebook Technologies, Llc Optimization for deconvolution
CN110399924B (zh) * 2019-07-26 2021-09-07 北京小米移动软件有限公司 一种图像处理方法、装置及介质
CN111428189B (zh) * 2020-04-01 2023-09-22 南京大学 一种用于反卷积运算的数据预处理方法及装置
CN111738433B (zh) * 2020-05-22 2023-09-26 华南理工大学 一种可重配置的卷积硬件加速器
CN111709338B (zh) * 2020-06-08 2024-02-27 苏州超云生命智能产业研究院有限公司 一种用于表格检测的方法、装置及检测模型的训练方法
CN111932437B (zh) * 2020-10-10 2021-03-05 深圳云天励飞技术股份有限公司 图像处理方法、装置、电子设备及计算机可读存储介质
CN112364989A (zh) * 2020-10-10 2021-02-12 天津大学 一种基于快速傅里叶变换的卷积神经网络加速设计方法
CN112686377B (zh) * 2021-03-18 2021-07-02 北京地平线机器人技术研发有限公司 利用卷积硬件对特征数据进行反卷积处理的方法和装置

Also Published As

Publication number Publication date
WO2022193877A1 (zh) 2022-09-22
US20230409886A1 (en) 2023-12-21
JP2023521303A (ja) 2023-05-24
EP4120141A4 (en) 2023-08-09
EP4120141A1 (en) 2023-01-18
JP7461081B2 (ja) 2024-04-03
CN112686377A (zh) 2021-04-20

Similar Documents

Publication Publication Date Title
CN112686377B (zh) 利用卷积硬件对特征数据进行反卷积处理的方法和装置
CN109919311B (zh) 生成指令序列的方法、执行神经网络运算的方法和装置
US11886536B2 (en) Methods and systems for implementing a convolution transpose layer of a neural network
KR102305851B1 (ko) 신경망의 컨볼루션 계산을 위한 방법 및 전자 디바이스
JP6856609B2 (ja) 畳み込みニューラルネットワークの畳み込み層における演算を実行する方法及び装置
CN107622302B (zh) 用于卷积神经网络的超像素方法
CN112214726B (zh) 运算加速器
EP3855367A1 (en) Operation accelerator, processing method, and related device
KR20200091623A (ko) 위노그라드 변환에 기반한 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
JP6713036B2 (ja) 折り畳まれた特徴データに対して畳み込み演算を実行するための方法および装置
CN109996023B (zh) 图像处理方法和装置
JP7475287B2 (ja) ポイントクラウドデータの処理方法、装置、電子機器、記憶媒体及びコンピュータプログラム
US10402196B2 (en) Multi-dimensional sliding window operation for a vector processor, including dividing a filter into a plurality of patterns for selecting data elements from a plurality of input registers and performing calculations in parallel using groups of the data elements and coefficients
CN112435193A (zh) 一种点云数据去噪的方法、装置、存储介质和电子设备
CN111028136B (zh) 一种人工智能处理器处理二维复数矩阵的方法和设备
WO2023122896A1 (zh) 一种数据处理方法和装置
KR20200129957A (ko) 피처맵 데이터에 대한 압축을 수행하는 뉴럴 네트워크 프로세서 및 이를 포함하는 컴퓨팅 시스템
US20220188612A1 (en) Npu device performing convolution operation based on the number of channels and operating method thereof
CN113762472A (zh) 一种神经网络的指令序列生成方法及装置
CN111340182A (zh) 一种输入特征逼近的低复杂度cnn训练方法与装置
WO2023221013A1 (zh) 基于特征融合的小目标检测方法、装置、设备及存储介质
EP4361890A1 (en) Implementing a scatter function on a neural network accelerator
US11842273B2 (en) Neural network processing
CN116108902B (zh) 采样操作实现系统、方法、电子设备及存储介质
CN117974441A (zh) 用于图像处理的方法、设备和计算机程序产品

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant