适用于边缘计算平台的Spark卷积神经网络系统及其电路的制作方法

文档序号:20582084发布日期:2020-04-29 01:32阅读:399来源:国知局
适用于边缘计算平台的Spark卷积神经网络系统及其电路的制作方法

本申请涉及神经网络技术领域,特别是涉及适用于边缘计算平台的spark卷积神经网络系统及其电路。



背景技术:

随着计算机硬件与传感器技术的飞速发展,人工智能的一个领域——深度学习已经出现,并证明了它在解决以前不可能解决的复杂学习问题方面的有效性,特别是卷积神经网络(convolutionalneuralnetworks,cnns)已经被广泛运用在图像检测和识别任务中。

随着神经网络的不断发展,诞生了诸如vgg-16、resnet、googlenet等新的网络结构,其中所具有的权重参数数量和计算量也在不断增加,对运行平台的计算能力和存储空间的要求也不断提高,因此在移动端部署传统的神经网络会耗费比较多的资源。

目前,卷积神经网络主要基于通用处理器实现,但基于软件方式无法充分挖掘卷积神经网络的并行性,它们需要密集的cpu操作和内存带宽,这使得一般的cpu无法达到预期的性能水平,在实时性和功耗方面都不能满足应用的需求。虽然图形处理器(gpu)被广泛应用于cnn的训练以及分类任务中,然而它们过高的功耗并不适用于计算资源有限的嵌入式平台。当前主流的fpga芯片中具备可重构性高、开发周期短、能效收益高等优点,使得fpga成为实现计算密集型应用加速的一种非常重要的选择。因此,使用特定应用集成电路、现场可编程门阵列(fpga)和图形处理单元的硬件加速器被用来提高cnns的吞吐量。更准确地说,fpga最近被用于加速深度学习网络的实现,因为它们能够最大化并行性和能源效率。

但是使用fpga来加速cnn仍然存在很多挑战,主要是受限于有限的计算资源和昂贵的片外存储访问。然而在目前主流的cnn模型中,存在大量的计算操作(>1g)和大量的参数(>50m),这会消耗大量的能量。随着技术的发展,cnn的层数和卷积结构会变得越来越复杂,更将加剧这种情况,因此,需要在电路架构层面设计一个高能效的cnn加速器。

与此同时,为了能够将神经网络部署到可移动的硬件平台中,需要采用一定的方法对卷积神经网络进行压缩,在保持网络精度没有太大损失的前提之下,降低网络模型的参数数量和计算量。传统方法主要采用修枝剪枝和参数量化的方法减小网络结构的复杂度和参数数量,但是这种先训练再微调的过程本身比较复杂,并且并没有从根本上减少传统神经网络架构的计算模式。

因此,如何针对cnn在fpga上实现一种无需进行网络剪枝和参数量化的轻量级的网络架构,成为本领域亟需解决的技术问题。

申请内容

鉴于以上所述现有技术的缺点,本申请的目的在于提供适用于边缘计算平台的spark卷积神经网络系统及其电路,用于解决现有技术中的问题。

为实现上述目的及其他相关目的,本申请的第一方面提供一种适用于边缘计算平台的spark卷积神经网络系统,包括:fire模块,其包括:压缩层,用于对输入模块的特征图进行通道层面的组合以降低特征图的通道数量;所述压缩层包括多个第一尺寸的第一卷积核;扩展层,用于对所述特征图的通道数量进行扩展;所述扩展层包括数量相同的第一尺寸的第一卷积核以及第二尺寸的第二卷积核;其中,所述第二卷积核为深度可分离卷积核。

于本申请的第一方面的一些实施例中,所述第一卷积核的尺寸为1×1;所述第二卷积核的尺寸为3×3。

于本申请的第一方面的一些实施例中,若作为深度可分离卷积核的第二卷积核的尺寸为dk×dk×m,则该深度可分离卷积核能分离出尺寸为1×1×m的卷积核以及尺寸为dk×dk×1的卷积核。

于本申请的第一方面的一些实施例中,所述spark卷积神经网络系统包括:卷积层、激活层、池化层。

于本申请的第一方面的一些实施例中,所述spark卷积神经网络系统包括:6层spark结构、2层卷积模型、及3层池化层。

于本申请的第一方面的一些实施例中,所述卷积模型包括尺寸为3×3卷积,其步长为1,输入数据张量为32×32的三通道图像。

于本申请的第一方面的一些实施例中,所述池化层包括尺寸为2×2的最大池化层,其窗口滑动步长为2。。

为实现上述目的及其他相关目的,本申请的第二方面提供一种基于spark卷积神经网络模型的加速器电路,其包括:多个计算引擎,映射至同一个fpga芯片上,且每个所述计算引擎对应如权利要求1所述的spark卷积神经网络模型中的一层网络的计算;片上缓存单元,用于输入特征图缓存、权重值缓存、中间值缓存、及输出特征图缓存;流水线控制单元,用于控制所述计算引擎不同网络层的流水线式工作;片外存储单元;位于所述fpga芯片外;存储控制单元,其设有内存存取接口,用于实现片外存储单元和片上缓存单元之间的数据交互。

于本申请的第二方面的一些实施例中,所述片上缓存单元分为读和写两组,用以将前一级的写操作和后一级的读操作分开。

于本申请的第二方面的一些实施例中,在所述加速器电路开始工作时,所述存储控制单元将第一层网络运行所需的权重参数和输入图像从所述片外存储单元读取到所述片上存缓存元中,以供所述计算引擎根据权重参数和输入图像进行第一层网络的卷积计算。

如上所述,本申请的适用于边缘计算平台的spark卷积神经网络系统及其电路,具有以下有益效果:本发明提出的卷积神经网络的基本构建模块吸取了squeezenet的基本模块构建思路,模块分为压缩层和扩展层两个前后相连的网络层。输入卷积模块的特征图张量在通道方向也需要进行先压缩后扩展的过程,以此降低卷积层的参数数量和进行卷积操作时的计算量。所不同的是在扩展层中,本发明并未采用传统的标准卷积核,而是吸取了mobilenet卷积神经网络模型的精髓,采用了轻量级的深度可分离卷积核进行网络层的构建。深度可分离卷积的引入,可以进一步降低卷积层的参数数量和计算量。

附图说明

图1显示为本申请一实施例中spark卷积神经网络系统的结构示意图。

图2显示为本申请一实施例中squeeze卷积神经网络模型的结构示意图。

图3a显示为本申请一实施例中mobile卷积神经网络模型的标准卷积核的结构示意图。

图3b显示为本申请一实施例中mobile卷积神经网络模型的分解卷积核的结构示意图。

图4显示为本申请一实施例中嵌入式场景下的轻量级卷积神经网络架构sparknet的结构示意图。

图5显示为本申请一实施例中轻量级卷积神经网络架构sparknet的参数示意图。

图6显示为本申请一实施例中基于spark卷积神经网络模型的加速器电路的结构示意图。

具体实施方式

以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,在下述描述中,参考附图,附图描述了本申请的若干实施例。应当理解,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在所述的特征、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“a、b或c”或者“a、b和/或c”意味着“以下任一个:a;b;c;a和b;a和c;b和c;a、b和c”。仅当元件、功能或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。

针对现有技术中的问题,本发明的目的是提供一种适用于移动端、嵌入式等边缘计算平台的轻量级的卷积神经网络架构,该架构能够显著地减少神经网络的权重参数数量,使其在fpga硬件加速时能显著地减少存储需求。另外,针对本发明所提出的轻量级的卷积神经网络架构,本发明还提出了一种fpga电路实现架构,使其能够满足前向卷积神经网络的实时计算需求。

为了使本发明的目的、技术方案及优点更加清楚明白,通过下述实施例并结合附图,对本发明实施例中的技术方案的进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定发明。

实施例一

如图1所示,展示了本申请一实施例中的spark卷积神经网络系统的结构示意图。本实施例提供的spark卷积神经网络系统是一种全新的轻量级的卷积神经网络模型,它充分吸收了收squeezenet和mobilenet两种网络架构核心模块优点,结合mobilenets的微观卷积核结构和squeezenet宏观卷积神经网络结构而成,进一步提高了卷积神经网络模型的压缩比率,降低神经网络模型对硬件运行平台的资源需求,扩大基于神经网络应用的应用范围。

squeezenet卷积神经网络模型的核心结构是一种称为fire的基本模块,与传统的卷积神经网络不同的是,squeezenet的基本模块不再是统一的卷积层,而是不同尺寸的卷积核精心组合的一种超级卷积层,其结构示意图如图2所示,fire模块主要分为压缩层和扩展层。

压缩层主要由一定数量的小尺寸卷积核构成,图中采用的是1×1大小的卷积核,压缩层的作用是对输入模块的特征图进行通道层面的组合,降低输入的特征图的通道数量,这样的好处在于特征图通道数量的降低,可以使得扩展层中的卷积运算数量成比例的减少,同时也降低了卷积层中的神经元与输入特征图之间的连接数量,给神经网络模型引入了稀疏特性。

扩展层由数量相同、尺寸不同的两种卷积核组成,如图2所示两种卷积和的尺寸分别为1×1和3×3。扩展层中卷积核的参数数量比压缩层中的卷积核的参数数量多,可以用来对特征图的通道数量进行扩展,避免网络模型精度的过度损失。

mobilenet卷积神经网络模型的核心是引入了深度可分离卷积这种特殊的卷积形式,深度可分离卷积和传统卷积有所不同。标准的卷积神经网络中的卷积卷积核一般是3d卷积核。卷积核对输入网络层的特征图不仅在通道内的单张图做卷积操作,还在通道间也进行卷积操作,这两个层次的卷积操作可在一步之内完成。而深度可分离卷积则不是采用这种计算方式。深度可分离卷积将这两个层次上的卷积操作分为了两个独立的步骤。这两个独立的步骤在卷积核的结构上对应着两个独立的卷积层。

如图3a和3b所示,深度可分离卷积核将传统意义上的标准卷积核进行拆分,标准卷积核如图3a所示,包括n个尺寸为dk×dk×m的卷积模块,将该卷积核分解成了如图3b所示的由n个宽而薄的卷积模块(尺寸为dk×dk×1)所组成的深度卷积(dw_conv)以及由n个窄而高的卷积模块(尺寸为1×1×m)所组成的逐点卷积(pw_conv)。以这两种卷积核分别构建为两个卷积层,用来对输入的特征图的数据依次进行处理。这种形式的卷积核的权重参数数量只有传统意义上的3d卷积核的八分之一左右。因此,基于深度可分离卷积的mobilenet的网络模型压缩比率达到了8到9倍,压缩效果明显。

本发明提出的卷积神经网络的基本构建模块吸取了squeezenet的基本模块构建思路,模块分为压缩层和扩展层两个前后相连的网络层。输入卷积模块的特征图张量在通道方向也需要进行先压缩后扩展的过程,以此降低卷积层的参数数量和进行卷积操作时的计算量。所不同的是在扩展层中,本发明并未采用传统的标准卷积核,而是吸取了mobilenet卷积神经网络模型的精髓,采用了轻量级的深度可分离卷积核进行网络层的构建。深度可分离卷积的引入,可以进一步降低卷积层的参数数量和计算量。具体的,再回到图1中展示的本申请的spark卷积神经网络模型,其优势在于:

首先,spark卷积神经网络模型采用了大量尺寸为1×1的卷积模块来替代尺寸为3×3的卷积模块;由于1x1卷积模块的参数数量只有3x3卷积模块参数数量的九分之一,因此这种替换可以极大地减小网络模型的参数数量。

其次,使用一种由一定数量1x1卷积核组成的压缩层降低了输入特征图的通道数量,从而能够大大降低卷积计算时的计算量。

需说明的是,根据不同的应用场景,可以spark模块为基础,构建不同的网络模型,关键在于spark模块和pooling模块的组合有序堆叠。同时在每个spark模块内,可根据综合考虑应用场景的需求和电路实现的便捷性,适当组合1×1卷积和3×3深度可分离卷积的数量,特别地,在1×1卷积完全替换时,可得到简化变形的网络,每个网络层的激活函数采用leakyrelu激活函数,加速收敛的同时便于硬件实现。

实施例二

如图4所示,展示了本发明一实施例中的嵌入式场景下的轻量级卷积神经网络架构sparknet的结构示意图。本实施例的神经网络架构是面向移动端和嵌入式场景所构建的目标检测网络架构,该网络架构的参数基于cifar-10数据集,具体如图5所示。

结合图4和5可知,对cifar-10数据集,本发明构建的sparknet的具体模型架构的核心结构是由6层spark结构和2层普通卷积模型组成的网络,该模型包含了各种常见的卷积结构。针对本数据集的特点,本发明实施了spark网络结构的一个特例,即将扩展层中的1×1卷积和3×3标准卷积同时替换成3×3的深度可分离卷积。spark网络的前端包含1个标准的3×3卷积(conv1),其步长为1,输入数据张量为32×32的三通道图像;池化层采用了比较常用的2×2尺寸的最大值池化(maxpool),窗口的滑动步长为2。

在本实施例中,以标准的卷积层和最大池化层作为网络模型的开始,这样的安排方式有如下原因:首先是因为位于网络模型开始的卷积层的参数数量和计算量均不是很大,对于这一部分的卷积层进行压缩的必要性不是很大;其次更重要的原因在于位于网络模型开始的卷积层提取的是输入数据比较低层次的特征,这些低层次的特征是之后网络层提取高级特征的依据所在。因此,保持底层网络提取的低级特征的完整性和丰富性对于保持卷积神经网络模型的精度是非常重要的。所以,从保持网络模型精度方面考虑,网络开始的卷积层不进行压缩是一种更好的选择。之后便是新设计的网络基本模块的有序连接。在一定数量的基本模块之间插入最大池化层,以降低特征图张量的维度,降低计算量和参数数量。最后,网络模型以标准卷积层(全连接)结束,以对特征图的空间信息提供更好的稳定性。

实施例三

如图6所示,展示了本发明一实施例中基于spark卷积神经网络模型的加速器电路的结构示意图。本实施例的加速器电路包括:片外ddr4存储器(externalmemory)、内存存取接口(ddr4memoryinterface)、多个计算引擎(neuralcore)、用于输入数据和权重的片上缓存单元(input/outputbuffer,weightbuffer)、流水线控制单元(pipelinecontrol)、及存储控制单元(memorycontroller)。每一个计算引擎(neuralcore)对应卷积神经网络中一层的计算,其包括:卷积层(mac)、激活层(relu)、池化层(pooler)。

在本实施例中,所有的计算引擎(neuralcore)都映射到同一个fpga芯片上,这样不同的层能够以流水线的方式同时工作。权值数据和原始的输入数据都存储在芯片外的ddr4存储器中,在计算的过程中它们将被预取到相应的权值缓冲区和输入缓冲区内,而层间的计算是一个流水线的计算方式,能够实现数据的流式处理。片上缓存包括输入特征图缓存、权重值缓存、中间值缓存和输出特征图缓存。片上缓存采用分散存储的策略,即为不同的层分配不同的片上存储资源。内存存取接口实现片外ddr4存储器的数据存取。在片上存储中,本实施例执行的是乒乓操作机制,即把每一层对应的片上缓存单元分为读和写两组,这样就可以把前一级的写和后一级的读分开,以此来提高流水线的效率和系统的性能。

具体而言,在部署到fpga芯片上的网络开始工作时,存储控制模块将第一层网络运行所需要的权重参数和输入图像从片外的ddr4读取到fpga片上缓存模块中,然后计算引擎根据权重参数和输入图像进行第一层的卷积计算。与此同时,存储控制模块将第二层的权重参数读取到乒乓缓存中的另一组片上缓存上,以降低系统的阻塞时间。计算引擎完成一层的计算后将特征图存到输出缓存模块,以备第二层网络层的计算使用。然后开始第二层网络层的计算,以此类推,直至整个网络模型计算完毕。

因此,本发明的技术方案采用fpga加速该网络的整体系统架构,合理地进行片上缓存系统的电路设计,提高了数据吞吐率和计算能效。

实施例四

为验证本发明提出的sparknet模型的压缩效果,本实施例以squeezenet模型为参照基准来进行分析。

在本实施例中,设定输入网络层的特征图张量的形状为df×df×m,输出网络层的特征图的张量的形状为dg×dg×n,网络层中卷积核的2d尺寸为dk×dk,本发明采用的卷积核尺寸在两个维度上均为3。另外设定压缩层的输出的特征图的通道数量为s,本发明设定

因此,sparknet模型和squeezenet模型的基本模块的计算量分别如下式(1.1)和(1.3)所示,参数数量分别如下式(1.2)和(1.4)所示,网络压缩比率如下式(1.5)所示。

cspark=m×s×df×df+s×n×df×df+dk×dk×s×df×df;公式1.1)

nspark=m×s+s×n+dk×dk×s;公式1.2)

按照本发明的设定,网络压缩比率r通过计算可以得到约为通过计算可知,本发明设计的轻量级的卷积神经网络模型的参数数量和计算量比squeezenet网络模型均降低了3.7倍左右。而squeezenet的参数数量和计算量只有标准cnn的由此可知,本发明设计的新型卷积神经网络的压缩比率可以到达接近200的数值。

综上所述,本申请提供适用于边缘计算平台的spark卷积神经网络系统及其电路,本发明提出的卷积神经网络的基本构建模块吸取了squeezenet的基本模块构建思路,模块分为压缩层和扩展层两个前后相连的网络层。输入卷积模块的特征图张量在通道方向也需要进行先压缩后扩展的过程,以此降低卷积层的参数数量和进行卷积操作时的计算量。所不同的是在扩展层中,本发明并未采用传统的标准卷积核,而是吸取了mobilenet卷积神经网络模型的精髓,采用了轻量级的深度可分离卷积核进行网络层的构建。深度可分离卷积的引入,可以进一步降低卷积层的参数数量和计算量。所以,本申请有效克服了现有技术中的种种缺点而具高度产业利用价值。

上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本申请。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。

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