一种可重构卷积神经网络的硬件互连架构的制作方法

文档序号:15638994发布日期:2018-10-12 21:50阅读:215来源:国知局

本发明属于图像处理算法的硬件设计技术领域,具体涉及一种可重构卷积神经网络的硬件互连架构。



背景技术:

随着人工智能的兴起,深度学习被广泛应用于计算机视觉、语音识别以及其它一些大数据的应用上,受到了越来越广泛的应用。卷积神经网络作为深度学习中的一个重要的算法模型,目前得到了广泛的应用,例如在图像分类、人脸识别、视频检测、语音识别等方面。

随着图像识别精度的提高,卷积神经网络也变得越来越复杂,同时也增多了更多的计算需求。这使得存在大量冗余资源的传统通用处理器在处理大型的卷积神经网络时性能较低,不能满足许多场景中的实际需求。因此,在工程中使用硬件平台对卷积神经网络进行加速逐渐成为一种主流的方法,如果采用并行流水方式的硬件架构来实现算法,可以获得很好的加速效果从而达到实时处理的效果。

虽然硬件平台的性能要远远高于传统的通用处理器,但随着卷积神经网络的网络结构日益复杂并且需要面临各种大小的卷积核,硬件结构灵活性低的特点会使硬件处理器只提高某些特定的网络的加速效果,而对其他网络的加速效率不高。因此,对于可适用于任意大小的卷积核以及各类网络结构的可重构卷积神经网络硬件架构的需求变得越来越迫切。

对于可重构的卷积神经网络硬件实现,目前的主要研究难点有两个方面,一是,如何使用固定的硬件结构配置不同大小的卷积核,二是如何使硬件结构对任意卷积核都能达到很高的效率。在现有技术中,先设计一个实现最常见的3×3卷积模板的硬件结构作为基础单元,然后通过基础单元之间的互连来传递数据,利用多个基础单元来实现其他类型的卷积核,例如需要5个基础单元来实现3个5×5的卷积模板。在这种方案下,由于硬件中的基础单元的数量是一定的但实现一个卷积核所需要的基础单元数量是不定的,会使实现某些大小的卷积时存在一部分基础单元处于不工作的状态,无法保证百分之百的利用率。并且在这种方案下不是所有的基础单元都能产生有效的输出,需要先将所有的输出缓存,再选取有效的数据,产生大量的额外存储资源的浪费。

在现有技术中,许多图像处理硬件加速器会为某一种算法设计最优的硬件结构,然后通过互连的方式支持其他算法。由于算法的多样性,以及硬件规模固定的限制,当网络模型发生变化或者计算种类发生变化或者计算种类发生变化时,就会降低资源的利用率以及计算性能。而且,在图像处理领域中,尤其是神经网络算法中,除了计算单元的利用率之外,带宽也是一个影响计算性能的关键。

亟需一种通过结构互连提升数据复用能力的同时,能够降低带宽的需求。



技术实现要素:

本发明的目的是提供一种通过结构互连提升数据复用能力的同时,能够降低带宽需求的可重构卷积神经网络的硬件互连架构。

本发明提供的可重构卷积神经网络的硬件互连架构,应用在图像处理领域,所述硬件互连架构包括:

数据和参数片外缓存模块,分别用于缓存输入的待处理图片中的像素数据和缓存进行卷积神经网络计算时输入的参数;

基础计算单元阵列模块,分别与所述数据片外缓存模块和所述参数片外缓存模块连接;所述基础计算单元阵列模块用于实现卷积神经网络的核心计算;所述基础计算单元阵列模块按照二维阵列的方式互连,在行方向上,基础计算单元阵列共享输入数据,通过使用不同的参数数据实现并行计算;在列方向上,基础计算单元阵列的计算结果逐行传递,作为下一行的输入参与运算;

算术逻辑单元计算模块,与所述基础计算单元阵列模块连接,所述算术逻辑单元计算模块用于处理所述基础计算单元阵列的计算结果,实现对下采样层、激活函数以及部分和累加;

在计算卷积神经网络时,基础计算单元阵列模块的每一列独立计算一个输出特征图时,对于不同大小的卷积核按照卷积窗口位置分割输入特征图多次输入的方式来进行映射;

控制模块,分别与所述基础计算单元阵列模块和所述算术逻辑单元计算模块连接,所述控制模块用于根据不同的参数实现任意大小的卷积核和多种计算模式。

可选的,所述算术逻辑单元计算模块和所述基础计算单元阵列模块在计算卷积神经网络时,分割后的每张输入特征图只需要卷积核的一个参数。

可选的,所述基础计算单元阵列模块内部采用互连的方式组成,能够通过改变所述基础计算单元阵列模块内部的互连方式和数据通路,用于支持不同种类、不同位宽的计算。

可选的,所述硬件互连架构采用现场可编程门阵列和集成电路中的任意一种方式实现。

根据本发明提供的具体实施例,本发明具有以下技术效果:本发明使用新的映射方式映射卷积神经网络,将不同神经网络模型的自由度由空间层面转化为时间层面,从而使固定的硬件互连架构能够对任意卷积神经网络保持百分之百的资源利用率。同时所述基础计算单元模块内部充分利用数字信号处理单元,并且采用灵活的互连结构以支持不同的计算模式、数据位宽可变的计算需求。并且采用行间流水线并行计算,列间复用输入数据的方式降低了输入数据与输出带宽的需求。

附图说明

图1为本发明提供的卷积神经网络的硬件互连架构的结构示意图。

图2为本发明提供的映射方式的具体映射的示意图。

图3为本发明提供的所述基础计算模块的内部结构示意图。

具体实施方式

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

本发明的目的是提供一种通过结构互连提升数据复用能力的同时,能够降低带宽的需求的卷积神经网络的硬件互连架构。

一种可重构卷积神经网络的硬件互连架构,所述互连架构应用在图像处理领域,所述互连架构包括:

数据和参数片外缓存模块,用于缓存输入的待处理图片中的像素数据和缓存进行卷积神经网络计算时输入的参数;

基础计算单元阵列模块分别与所述数据片外缓存模块和所述参数片外缓存模块连接,所述基础计算单元阵列模块用于实现图像处理核心--卷积神经网络的计算,所述基础计算模块按照二维阵列的方式互连,在行方向上,所述基础计算单元阵列模块共享输入数据,通过使用不同的参数数据实现并行计算;在列方向上,所述基础计算模块的计算结果逐行传递,作为下一行的输入参与运算;

在计算卷积神经网络时,基础计算单元阵列模块的每一列独立计算一个输出特征图时,对于不同大小的卷积核按照卷积窗口位置分割输入特征图多次输入的方式来进行映射;

算术逻辑单元计算模块与所述基础计算模块连接,所述算数逻辑单元计算模块用于处理所述基础计算单元阵列的计算结果,实现对下采样层、激活函数以及部分和累加;

控制模块分别与所述基础计算模块和所述算数逻辑单元计算模块连接,所述控制模块用于根据不同的参数实现任意大小的卷积核和多种计算模式,能够针对图像处理方法中的不同网络结构的卷积神经网络、距离计算、向量计算以及数字信号处理类计算设计高效、灵活的计算单元与互连结构。

可选的,所述算数逻辑单元计算模块和所述基础计算模块在计算卷积神经网络时,分割后的每张输入特征图只需要卷积核的一个参数。

可选的,所述基础计算模块内部采用互连的方式组成,能够通过改变所述基础计算模块内部的互连方式和数据通路,用于支持不同种类、不同位宽的计算。

可选的,所述架构采用现场可编程门阵列和集成电路中的任意一种方式实现。

如图1所示,数据片外缓存模块与参数片外缓存模块1,其被配置为:外部输入的图像数据和参数首先缓存在该模块中,等待被所述基础计算单元阵列模块读取出来;以及计算得到的结果缓存在该模块中,等待被算术逻辑单元计算模块再次调用或者等待输出。数据与参数片外缓存模块相当于一个较大的现场可编程门阵列,用以应对所述基础计算单元阵列模块的处理速度与外部输入速度相差较大的情况,否则如果外部直接发送数据到内部的所述基础计算单元阵列模块,将需要比较复杂的握手信号,以确保当两者速度不匹配的时候没有数据漏发或者重发等情况。

与数据参数片外缓存模块1连接的所述基础计算单元阵列模块2,用来实现卷积神经网络的核心计算,所述基础计算单元阵列之间的互连方式如图1所示。该互连架构由多级流水线构成,每一级流水线的功能都是相同的,用于计算输入特征图与参数的乘法,并将部分和与上一级流水线得到的结果相加。输入的数据从最前面的第一级流水线开始计算,逐级向后,直到最后一级流水线存入片外缓存模块中,当输入特征图的数量大于计算阵列的行数时,可以把这些计算结果从片外缓存模块中送回算术逻辑单元计算模块中继续完成累加以得到最终的输出特征图。当第一张特征图在第一级流水线中开始计算一个周期后,第二张特征图会在第二级流水线中开始计算,这使得第一级流水线得到结果时刚好能够送入第二级流水线中参与加法运算,当流水线被全部填满时可以实现较高的并行度与较高的处理性能。为了使流水线计算效率较高,应尽可能使计算阵列的行数/列数是输入特征图数/输出特征图数的因子。

与所述基础计算单元阵列模块2连接的所述算术逻辑单元计算模块3,用来实现卷积的部分和累加、下采样层以及激活函数层。其具体配置为,在卷积层中,计算阵列最后一行得到的计算结果存入片外缓存模块中后,如果仍为部分和,这些部分和会从片外缓存模块中读取出来送入所述算术逻辑单元计算模块中与下一组计算阵列最后一行的计算结果进一步累加,再存入片外缓存模块以实现多组输入特征图计算结果的累加;在下采样层中,所述算术逻辑单元计算模块会将上一个卷积层的输出特征图从片外缓存模块中读出,根据下采样层是最大值还是平均值选择其功能为比较器还是加法器以实现下采样操作;在激活函数层中,本实例中为relu函数,所述算术逻辑单元计算模块会使用一个数据选择器mux来实现激活函数。

本发明的可重构卷积神经网络的硬件互连架构,除用于计算卷积神经网络以外,也能够有效支持距离计算、线性代数计算以及图像信号处理类计算。

与上述模块连接的控制模块4,用来产生其余模块的控制信号。其具体配置为,接受外部的指令并译码,生成片外缓存模块向片外读写数据以及计算阵列向片外缓存模块读写数据的使能信号及地址,生成计算单元及所述算术逻辑单元计算模块中的数据及功能选通信号。

在上述的基础计算单元阵列2中,由多级流水线构成。其在映射时将卷积滑动窗口中处于卷积模板同一位置(即对应的参数相同)的图像数据抽取出来组成一个新的输入特征图,这相当于将卷积模板分割为多个1x1的卷积模板,再将这些使用分割后卷积模板计算出的结果累加即可得到原本的卷积结果。以5x5卷积模板为例,其映射方式如图2所示。通过这种方式,任意大小的卷积模板都可以分割为1x1的卷积模板,因此这种结构能够对任意大小的卷积核都保持很高的效率。其次,行间采取流水线的结构在高效利用dsp功能的同时将输出端口数量从计算单元个数降低为计算阵列的列数,这使得除了最后一行之外的计算单元的计算结果不需要额外的缓存空间,降低了片上存储资源的需求。

在上面的所述算术逻辑单元计算模块3,其将下采样层、激活函数层与卷积层连在一起。由于下采样层和激活函数层不需要参数,且运算简单,为了降低外部数据带宽需求,提高计算效率,该架构不将这两层映射到计算阵列中,而是在卷积层结果输出前送入所述算术逻辑单元计算模块中完成比较或是相加或是数据选择的操作。具体方法是在实现最大值时将所述算术逻辑单元计算模块配置为比较器;在实现平均值时提前在上一层卷积层中将权重预先除去分母,这样做平均值就只需要将所述算术逻辑单元计算模块配置为加法器即可;在实现激活函数relu时将所述算术逻辑单元计算模块配置为数据选择器mux。

在上述的所述算术逻辑单元计算模块4,其产生的用于控制计算阵列的控制信号也随数据逐层传递以使得各级流水线的计算时序相匹配。并且控制信号多级延迟之后同一个控制信号需要控制的计算单元数量从计算单元个数降低为列数,这降低了控制信号的扇出,可以提高芯片的工作频率。

本发明采用新的互连结构与新的映射方式实现了可重构的卷积神经网络硬件架构。可以对任意大小的卷积核达到100%的资源利用率,实现较高的性能和较少的硬件资源耗费。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1