首页> 中国专利> 目标检测硬件加速器及加速方法

目标检测硬件加速器及加速方法

摘要

本发明涉及数据处理领域,提供了一种目标检测硬件加速器及加速方法,该加速器包括集成有乘法器及加法器的卷积运算器,所述卷积运算器接收预先存储于块随机存储器的卷积权重数据及特征图,所述乘法器对所述卷积权重数据及特征图进行乘法操作得到乘法结果数据和卷积偏移数据,所述加法器对所述乘法结果数据及卷积偏移数据进行移位相加求和处理得到乘累加结果数据;池化操作单元,用于接收所述乘累加结果数据并进行池化操作,输出池化结果数据;RBR操作单元,用于对所述池化结果数据进行批量标准化和量化得到目标特征数据并存储至所述块随机存储器。本发明能够减少加速器进行数据搬运需要的时间和功耗,提升加速器的工作效率。

著录项

  • 公开/公告号CN112230884A

    专利类型发明专利

  • 公开/公告日2021-01-15

    原文格式PDF

  • 申请/专利权人 季华实验室;

    申请/专利号CN202011494636.8

  • 发明设计人 陈迟晓;张锦山;焦博;张立华;

    申请日2020-12-17

  • 分类号G06F7/523(20060101);G06F7/50(20060101);G06N3/063(20060101);

  • 代理机构44553 深圳中创智财知识产权代理有限公司;

  • 代理人文言;田宇

  • 地址 528200 广东省佛山市南海区桂城街道环岛南路28号

  • 入库时间 2023-06-19 09:35:27

说明书

技术领域

本发明涉及数据处理领域,尤其涉及一种目标检测硬件加速器及加速方法。

背景技术

在大数据分析和大规模高速计算平台的支撑下,神经网络技术得到了可足的发展。一方面,神经网络算法不断改进,继CNN(Convolutional Neural Networks,卷积神经网络)之后,诸如RNN(Recurrent Neural Network,循环神经网络)、GAN(GenerativeAdversarial Networks,生成式对抗网络)等新型网络模型层出不穷;另一方面,由于神经网络算法在图像识别、语音分析和自然语言处理等领域表现突出,被广泛地应用到嵌入式系统中。嵌入式系统是一个专用的片上系统,它对系统的性能和功耗有着严格的要求。因此,在片上系统中集成神经网络加速器成为一个研究热点。

随着各类神经网络算法的提出,各式各样的神经网络加速器应运而生。但是,现有的神经网络加速器在进行数据搬移过程中,大多采用DRAM读取数据,需要经过总线传输,总线的带宽有限,大量数据从DRAM中读取的功耗和延时都很大,这大大降低了加速器的工作效率。因此,如何减少加速器进行数据搬运需要的时间和功耗,提升加速器的工作效率成为了亟需解决的技术问题。

发明内容

本发明的主要目的在于提供一种目标检测硬件加速器及加速方法,旨在如何减少加速器进行数据搬运需要的时间和功耗,提升加速器的工作效率的问题。

为实现上述目的,本发明提供的一种目标检测硬件加速器,该加速器包括:

集成有乘法器及加法器的卷积运算器,所述卷积运算器接收预先存储于块随机存储器的卷积权重数据及特征图,所述乘法器对所述卷积权重数据及特征图进行乘法操作得到乘法结果数据和卷积偏移数据,所述加法器对所述乘法结果数据及卷积偏移数据进行移位相加求和处理得到乘累加结果数据;

池化操作单元,用于接收所述乘累加结果数据并进行池化操作,输出池化结果数据;

RBR操作单元,用于对所述池化结果数据进行批量标准化和量化得到目标特征数据并存储至所述块随机存储器。

优选地,所述“乘法器对所述卷积权重数据及特征图进行乘法操作得到乘法结果数据和卷积偏移数据”步骤包括:

对所述卷积权重数据及特征图从并行相乘的3bit×3bit的并行乘法转换为3bit×1bit的串行乘法。

优选地,该加速器还包括主控模块,用于生成所述卷积运算器的卷积操作指令,池化操作单元的池化操作指令及RBR操作单元的RBR操作指令。

优选地,所述批量标准化和量化包括:对所述池化结果数据重新缩放,归一化和ReLU处理。

优选地,该加速器还包括重排序缓冲单元,设于所述RBR操作单元与所述块随机存储器之间,用于对构成所述目标特征数据的数据单元按照卷积顺序进行排序后,依次存储至所述块随机存储器。

优选地,所述乘法操作基于FPGA的LUT单元实现。

优选地,所述移位相加求和处理基于FPGA的DSP单元实现。

为实现上述目的,本发明还进一步提供一种目标检测硬件加速器的加速方法,包括:

接收预先存储于块随机存储器的卷积权重数据及特征图,对所述卷积权重数据及特征图进行乘法操作得到乘法结果数据和卷积偏移数据,对所述乘法结果数据及卷积偏移数据进行移位相加求和处理得到乘累加结果数据;

接收所述乘累加结果数据并进行池化操作,输出池化结果数据;

对所述池化结果数据进行批量标准化和量化得到目标特征数据并存储至所述块随机存储器。

优选地,所述“对所述卷积权重数据及特征图进行乘法操作得到乘法结果数据和卷积偏移数据”步骤包括:

对所述卷积权重数据及特征图从并行相乘的3bit×3bit的并行乘法转换为3bit×1bit的串行乘法。

优选地,该方法还包括排序步骤:对构成所述目标特征数据的数据单元按照卷积顺序进行排序后,依次存储至所述块随机存储器。

本发明提出的目标检测硬件加速器及加速方法,包括集成有乘法器及加法器的卷积运算器,所述卷积运算器接收预先存储于块随机存储器的卷积权重数据及特征图,所述乘法器对所述卷积权重数据及特征图进行乘法操作得到乘法结果数据和卷积偏移数据,所述加法器对所述乘法结果数据及卷积偏移数据进行移位相加求和处理得到乘累加结果数据;池化操作单元,用于接收所述乘累加结果数据并进行池化操作,输出池化结果数据;RBR操作单元,用于对所述池化结果数据进行批量标准化和量化得到目标特征数据并存储至所述块随机存储器。本发明能够减少加速器进行数据搬运需要的时间和功耗,提升加速器的工作效率。

附图说明

图1为本发明一实施例提供的目标检测硬件加速器的结构示意图;

图2为本发明一实施例提供的加速方法的流程示意图。

附图说明:1、卷积运算器;2、乘法器;3、加法器;4、池化操作单元;5、RBR操作单元;6、主控模块;7、块随机存储器;8、重排序缓冲单元。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明,本发明实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。

还需要说明的是,当元件被称为“固定于”或“设置于”另一个元件上时,它可以直接在另一个元件上或者可能同时存在居中元件。当一个元件被称为是“连接”另一个元件,它可以是直接连接另一个元件或者可能同时存在居中元件。

另外,在本发明中涉及“第一”“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

本发明一方面提供了一种目标检测硬件加速器。

请参考图1,为本发明提供的一种目标检测硬件加速器的整体结构示意图。该加速器包括:集成有乘法器2及加法器3的卷积运算器1,所述卷积运算器1接收预先存储于块随机存储器7的卷积权重数据及特征图,所述乘法器2对所述卷积权重数据及特征图进行乘法操作得到乘法结果数据和卷积偏移数据,所述加法器3对所述乘法结果数据及卷积偏移数据进行移位相加求和处理得到乘累加结果数据;池化操作单元4,用于接收所述乘累加结果数据并进行池化操作,输出池化结果数据;RBR操作单元5,用于对所述池化结果数据进行批量标准化和量化得到目标特征数据并存储至所述块随机存储器7。

为了解决现有神经网络加速器(例如Eyeriss)在进行数据传输时存在时间和功耗的浪费的问题,本发明根据此技术问题提出了一种新型的神经网络加速器。在本发明中,对现有神经网络加速器的数据搬运和存放方式进行了改进,将原先需要存储在动态随机存取存储器(DRAM)的卷积权重数据及特征图改成存储在块随机存储器7(BRAM)中,因为采用DRAM读取数据需要经过总线传输,总线的带宽有限,大量数据从DRAM中读取的功耗和延时都很大。从BRAM里读不用经过总线,存储和计算是连在一起的,功耗低速度快,从而提升加速器的计算速度。

在本实施例中,目标检测硬件加速器包括卷积运算器1、池化操作单元4及RBR操作单元5。

具体地,卷积运算器1用于接收预先存储在块随机存储器7中的卷积权重数据及待提取特征的特征图。卷积运算器1上集成有乘法器2和加法器3。通过乘法器2对卷积权重数据及特征图进行乘法操作得到乘法结果数据和卷积偏移数据。在本实施例中,乘法操作基于FPGA的LUT单元实现,FPGA器件属于专用集成电路中的一种半定制电路,是可编程的逻辑列阵,能够有效的解决从而节省DSP(数字信号处理器)的资源。通过将传统采用DSP进行乘法操作的方式改为通过LUT(FPGA的基本逻辑单元,数量远远多于DSP)进行乘法操作,解决原有的DSP器件门电路数较少的问题。但是由于LUT只能处理简单的逻辑功能,因此,在本实施例中,通过对卷积权重数据及特征图从并行相乘的3bit×3bit的并行乘法转换为处理逻辑更加简单的3bit×1bit的串行乘法。

再通过加法器3对乘法器2输出的乘法结果数据和卷积偏移数据进行移位相加求和处理得到乘累加结果数据。移位相加求和处理基于FPGA的DSP单元实现。

需要解释的是,通常情况下乘法操作是用DSP实现,但是用DSP很浪费且DSP数量很少,不能大规模使用。所以把3 bit × 3 bit拆成多组1 bit × 1 bit,实质上就是and逻辑,可以通过LUT就很简单地实现。把多组1 bit × 1 bit的结果可以用很少的DSP作移位相加完成累和,即完成了乘法操作和乘累加操作,又可以把数量有限的DSP用在运算精度更高的乘累加操作中。

为方便理解,通过下述步骤对本发明的加速器计算过程进行详细说明:

1)固定卷积核的第1行,输入特征图的第1行元素逐个输入,进行卷积权重固定的一维卷积,得到输出特征图的第1行元素部分和,并逐个输出;

2)固定卷积核的第2行,输入特征图的第2行元素逐个输入,进行卷积权重固定的一维卷积,得到输出特征图的第1行元素部分和,逐个与之前求得的部分和相加,形成新的部分和输出;

3)固定卷积核的第3行,输入特征图的第3行元素逐个输入,进行卷积权重固定的一维卷积,得到输出特征图的第1行元素部分和,逐个与之前求得的部分和相加,作为完整元素输出;

以此类推,按行计算输出特征图结果。每计算一行输出,都需要依次分别固定卷积核的三行,并且按顺序输入该行卷积对应的输入特征向量。

本发明还采用乒乓操作的技巧处理输入特征图的缓存分配,节省缓存空间,完成数据的无缝缓冲和计算。即在第1层中,缓存A将第1层输入特征图输出给计算加速模块,得到第2层输入特征图并存入缓存B中;第1层运算结束并开始第2层运算时,缓存B将第2层输入特征图输出给计算加速模块,并将第3层输入特征图存回到缓存A中。缓存C在缓存A和缓存B容量不足时作为补充缓存。

池化操作单元4,用于接收乘累加结果数据并进行池化操作,输出池化结果数据。池化操作单元4从前面卷积计算得出的多个乘累加结果数据中选择一个最大的,舍弃其他乘累加结果数据。

在本发明中将DRAM改成了BRAM,虽然能够提升加速器的运算速度,但是BRAM的存储空间远不如DRAM,可能无法满足存储大量特征数据,因此,在本实施例中,该加速器还包括了RBR操作单元5,用于对池化结果数据进行批量标准化和量化得到目标特征数据,将原本占用资源大的特征数据拆成占用资源小的3bit后存储至块随机存储器7。批量标准化和量化包括:对所述池化结果数据重新缩放,归一化和ReLU处理。

进一步地,池化操作单元4与RBR操作单元5之间还插入有附加的缓冲块。先通过这个缓冲块可以减少RBR的工作量。它可以降低RBR块在这些层之后是最大池化层的活动率。

本发明进一步较佳实施例中,如图1所示,该加速器还包括主控模块6,用于生成所述卷积运算器1的卷积操作指令,池化操作单元4的池化操作指令及RBR操作单元5的RBR操作指令。

本发明进一步较佳实施例中,如图1所示,该加速器还包括重排序缓冲单元8,设于所述RBR操作单元5与所述块随机存储器7之间,用于对构成所述目标特征数据的数据单元按照卷积顺序进行排序后,依次存储至所述块随机存储器7。

在本实施例中,由于池化操作单元4输出的目标特征数据一共有64个单元,64个单元输出的64个数代表64个输出通道,而因为加速器的带宽较窄,在将目标特征数据存储到块随机存储及中时一次只能计算16个通道,所以这64个通道要拆成4个16通道分开存放,而且用于存储的BRAM带宽有限,出结果的那个周期来不及一次性全部存放进去,所以用一个重排序缓冲单元8,允许分多个周期写回,并且重排顺序写回到指定的地址。

本发明另一方面提供了一种采用如上述的目标检测硬件加速器的加速方法,如图2所示,该方法包括以下步骤:

S1:接收预先存储于块随机存储器7的卷积权重数据及特征图,对所述卷积权重数据及特征图进行乘法操作得到乘法结果数据和卷积偏移数据,对所述乘法结果数据及卷积偏移数据进行移位相加求和处理得到乘累加结果数据;

S2:接收所述乘累加结果数据并进行池化操作,输出池化结果数据;

S3:对所述池化结果数据进行批量标准化和量化得到目标特征数据并存储至所述块随机存储器7。

在本实施例中,该加速器包括:集成有乘法器2及加法器3的卷积运算器1,所述卷积运算器1接收预先存储于块随机存储器7的卷积权重数据及特征图,所述乘法器2对所述卷积权重数据及特征图进行乘法操作得到乘法结果数据和卷积偏移数据,所述加法器3对所述乘法结果数据及卷积偏移数据进行移位相加求和处理得到乘累加结果数据;池化操作单元4,用于接收所述乘累加结果数据并进行池化操作,输出池化结果数据;RBR操作单元5,用于对所述池化结果数据进行批量标准化和量化得到目标特征数据并存储至所述块随机存储器7。

为了解决现有神经网络加速器(例如Eyeriss)在进行数据传输时存在时间和功耗的浪费的问题,本发明根据此技术问题提出了一种新型的神经网络加速器。在本发明中,对现有神经网络加速器的数据搬运和存放方式进行了改进,将原先需要存储在动态随机存取存储器(DRAM)的卷积权重数据及特征图改成存储在块随机存储器7(BRAM)中,因为采用DRAM读取数据需要经过总线传输,总线的带宽有限,大量数据从DRAM中读取的功耗和延时都很大。从BRAM里读不用经过总线,存储和计算是连在一起的,功耗低速度快,从而提升加速器的计算速度。

在本实施例中,目标检测硬件加速器包括卷积运算器1、池化操作单元4及RBR操作单元5。

具体地,卷积运算器1用于接收预先存储在块随机存储器7中的卷积权重数据及待提取特征的特征图。卷积运算器1上集成有乘法器2和加法器3。通过乘法器2对卷积权重数据及特征图进行乘法操作得到乘法结果数据和卷积偏移数据。在本实施例中,乘法操作基于FPGA的LUT单元实现,FPGA器件属于专用集成电路中的一种半定制电路,是可编程的逻辑列阵,能够有效的解决从而节省DSP(数字信号处理器)的资源。通过将传统采用DSP进行乘法操作的方式改为通过LUT(FPGA的基本逻辑单元,数量远远多于DSP)进行乘法操作,解决原有的DSP器件门电路数较少的问题。但是由于LUT只能处理简单的逻辑功能,因此,在本实施例中,通过对卷积权重数据及特征图从并行相乘的3bit×3bit的并行乘法转换为处理逻辑更加简单的3bit×1bit的串行乘法。

再通过加法器3对乘法器2输出的乘法结果数据和卷积偏移数据进行移位相加求和处理得到乘累加结果数据。移位相加求和处理基于FPGA的DSP单元实现。

需要解释的是,通常情况下乘法操作是用DSP实现,但是用DSP很浪费且DSP数量很少,不能大规模使用。所以把3 bit × 3 bit拆成多组1 bit × 1 bit,实质上就是and逻辑,可以通过LUT就很简单地实现。把多组1 bit × 1 bit的结果可以用很少的DSP作移位相加完成累和,即完成了乘法操作和乘累加操作,又可以把数量有限的DSP用在运算精度更高的乘累加操作中。

为方便理解,通过下述步骤对本发明的加速器计算过程进行详细说明:

1)固定卷积核的第1行,输入特征图的第1行元素逐个输入,进行卷积权重固定的一维卷积,得到输出特征图的第1行元素部分和,并逐个输出;

2)固定卷积核的第2行,输入特征图的第2行元素逐个输入,进行卷积权重固定的一维卷积,得到输出特征图的第1行元素部分和,逐个与之前求得的部分和相加,形成新的部分和输出;

3)固定卷积核的第3行,输入特征图的第3行元素逐个输入,进行卷积权重固定的一维卷积,得到输出特征图的第1行元素部分和,逐个与之前求得的部分和相加,作为完整元素输出;

以此类推,按行计算输出特征图结果。每计算一行输出,都需要依次分别固定卷积核的三行,并且按顺序输入该行卷积对应的输入特征向量。

本发明还采用乒乓操作的技巧处理输入特征图的缓存分配,节省缓存空间,完成数据的无缝缓冲和计算。即在第1层中,缓存A将第1层输入特征图输出给计算加速模块,得到第2层输入特征图并存入缓存B中;第1层运算结束并开始第2层运算时,缓存B将第2层输入特征图输出给计算加速模块,并将第3层输入特征图存回到缓存A中。缓存C在缓存A和缓存B容量不足时作为补充缓存。

池化操作单元4,用于接收乘累加结果数据并进行池化操作,输出池化结果数据。池化操作单元4从前面卷积计算得出的多个乘累加结果数据中选择一个最大的,舍弃其他乘累加结果数据。

在本发明中将DRAM改成了BRAM,虽然能够提升加速器的运算速度,但是BRAM的存储空间远不如DRAM,可能无法满足存储大量特征数据,因此,在本实施例中,该加速器还包括了RBR操作单元5,用于对池化结果数据进行批量标准化和量化得到目标特征数据,将原本占用资源大的特征数据拆成占用资源小的3bit后存储至块随机存储器7。批量标准化和量化包括:对所述池化结果数据重新缩放,归一化和ReLU处理。

进一步地,池化操作单元4与RBR操作单元5之间还插入有附加的缓冲块。先通过这个缓冲块可以减少RBR的工作量。它可以降低RBR块在这些层之后是最大池化层的活动率。

本发明进一步较佳实施例中,如图1所示,该加速器还包括主控模块6,用于生成所述卷积运算器1的卷积操作指令,池化操作单元4的池化操作指令及RBR操作单元5的RBR操作指令。

本发明进一步较佳实施例中,如图1所示,该加速器还包括重排序缓冲单元8,设于所述RBR操作单元5与所述块随机存储器7之间,用于对构成所述目标特征数据的数据单元按照卷积顺序进行排序后,依次存储至所述块随机存储器7。

在本实施例中,由于池化操作单元4输出的目标特征数据一共有64个单元,64个单元输出的64个数代表64个输出通道,而因为加速器的带宽较窄,在将目标特征数据存储到块随机存储及中时一次只能计算16个通道,所以这64个通道要拆成4个16通道分开存放,而且用于存储的BRAM带宽有限,出结果的那个周期来不及一次性全部存放进去,所以用一个重排序缓冲单元8,允许分多个周期写回,并且重排顺序写回到指定的地址。

需要说明的是,对于前述的各实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可能采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,涉及的动作和模块并不一定是本发明所必须的。

本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其他的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或通信连接可以是通过一些接口,装置或单元之间的间接耦合或通信连接,可以是电信或者其它的形式。

上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

以上实施例仅用以说明本发明的技术方案,而非对发明的保护范围进行限制。显然,所描述的实施例仅仅是本发明部分实施例,而不是全部实施例。基于这些实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明所要保护的范围。尽管参照上述实施例对本发明进行了详细的说明,本领域普通技术人员依然可以在不冲突的情况下,不作出创造性劳动对本发明各实施例中的特征根据情况相互组合、增删或作其他调整,从而得到不同的、本质未脱离本发明的构思的其他技术方案,这些技术方案也同样属于本发明所要保护的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号