基于FPGA的卷积神经网络IP核的制作方法

文档序号:17727375发布日期:2019-05-22 02:36阅读:566来源:国知局
基于FPGA的卷积神经网络IP核的制作方法
本发明涉及卷积神经网络硬件加速领域,具体涉及基于fpga的卷积神经网络ip核的设计。
背景技术
:伴随着机器学习、深度学习和人工智能近几年的兴起和完善,人工神经网络(artificialneuralnetwork,ann)不断发展,作为生物科学和计算机科学交叉渗透的人工智能领域,正在被学术界和商业界关注。早期的人工神经网络类似于仿生神经系统结构,在20世纪中期就提出了模拟人类大脑神经元结构的计算结构。将人类神经元结构的树突分支模拟为多个输入数据,轴突模拟为单个输出数据,通过一定的数据变换即线性加权,实现轴突的神经信号输出。通过手动设置阈值以及各种线性加权的权重较为繁琐,且未必能达到最好的结果,20世纪70年代研究者认为感知机模型无法解决线性不可分问题,且当时计算能力低下无法实现多层神经网络模型,神经网络的研究进入低潮。20世纪80年代末,为了解决神经网络复杂的计算问题和线性不可分问题,研究者提出反向传播算法,使得神经网络的计算时间大大降低。直至今天,反向传播算法仍然是神经网络训练的主流算法。由于当时的计算资源还是不够充足,深层神经网络的训练仍然十分困难。1989年,研究者提出第一个具有真正意义上的卷积神经网络(convolutionalneuralnetwork,cnn)lenet-5,卷积神经网络逐渐成为各种深度神经网络中应用最广泛的一种。随着神经网络算法的发展,卷积神经网络被广泛应用于图像及模式识别,目标探测和语义分割等领域。由于卷积神经网络应用广泛,逐渐得到学术界和商业界的重视,其特点在图像处理方面,尤其对于图像尺寸的缩放、提取特征图等方面具有鲜明的优势。为契合工业界的应用,卷积神经网络的学习能力和分类能力不断提升,导致卷积神经网络结构日趋复杂,需大规模和深层次的网络利用大量的样本训练神经网络的参数,因此其训练过程的计算量十分庞大。大规模和深层次的卷积神经网海量的训练参数,需要较高的存储资源、高吞吐量的数据处理和高度的并行性,因此基于传统计算机结构的控制理论并不能发挥卷积神经网络的特点。nvidia的cuda(computeunifieddevicearchitecture)和google的tensorflow框架的发展,支持gpu高性能数值计算,在一定程度上缓解了通用架构cpu的计算压力,但其研究制造成本、能效比等无法满足低功耗、高性能的需求,且囿于体积、其便携性难以支持卷积神经网络在终端上的应用场景。现场可编程逻辑阵列(fieldprogrammablegatearray,fpga)是作为专用集成电路(applicationspecificintegratedcircuit,asic)领域中半定制集成电路而出现的。fpga结合了asic的高性能、高集成度和用户可编程器件的灵活性,其特点在于可重构性、较高的性能和集成度、硬件升级空间大。由于fpga可重构性,在目前没有通用的卷积神经网络专用芯片架构下,fpga契合卷积神经网络高性能数值计算,避免通用架构cpu、gpu单线程处理的低能效比。且fpga产品上市速度快,在神经网络结构日新月异的今天,可以较快的投入市场,避免了asic芯片只能针对特定的算法设计的较差的灵活性。现有的fpga加速方案大致如下:1、采用低功耗的高性能加速器设计,通过堆叠少量的处理单元(processingunit,pe)提高访存带宽,但存在流水线较少导致数据的吞吐量较低,甚至存在卷积过程中冗余的流水线设计。2、采用较小的处理单元(processingelement,pe)搭建不同尺寸的卷积核,避免计算瓶颈的问题,但导致卷积计算延迟时间较长,峰值计算性能被有所限制。3、设计频域处理的加速器,使用可变尺寸的oaa卷积核减少卷积次数并提高不同层级卷积核的通用性,但其oaa由固定尺寸的fft组成,导致卷积处理过程需要0填充fft边缘,并且平铺卷积核导致卷积延迟时间较长。4、采用混合神经网络处理器实现神经网络加速,通过16×16的可重构异构pe,按照需求和配置处理不同的神经网络,并且采用自适应的位宽配置降低功耗提高效率。可重构计算平台主要原因在于目前市面上较少的通用神经网络处理器,基本是针对一种神经网络或神经网络模型设计一种加速器。可重构计算平台可以适应目前大多数的神经网络或神经网络模型,包括cnn、fcn、rnn等,提高了计算平台的能效比。该可重构计算平台固化的神经网络包含cnn、fcn、rnn占用较大的逻辑资源,因此无法更有效地降低平台计算过程功耗,可扩展性较低,对fpga资源及性能要求较高,导致研发成本增加。综上所述,卷积神经网络及其终端应用市场非常广阔,尽管卷积神经网络为应对不同的应用场景转换其网络模型,但卷积神经网络的基本组成部分如卷积、池化、全连接和激活函数等没有太多的变化,因此fpga可应对不同场景的卷积神经网络。一方面,针对卷积神经网络设计的ip核包含卷积神经网络的基本组成部分,且通过veriloghdl语言进行设计,易于部署于不同fpga和嵌入式系统,可移植性强。另一方面,硬件设计、修改及调试对于软件工程师和不熟悉硬件的算法工程师是一个门槛,对企业可能增加成本、延长工时。为解决此类门开,削减企业和研究者的工时成本,针对卷积神经网络设计的ip核包含可调用接口,方便使用者构建不同的卷积神经网络模型于不同的fpga,支持卷积神经网络的硬件加速具有重要意义。技术实现要素:本发明提供一种基于fpga的卷积神经网络ip核,其目的是在fpga快速便捷构建卷积神经网络的硬件结构,实现卷积神经网络的前馈运算加速,降低软件和算法工程师硬件设计门槛,便于算法及各终端产品开发验证。本发明的预期应用场景要求fpga作为加速器硬件平台,可重配置卷积神经网络模型,包含卷积、池化、全连接、激活函数以及卷积神经网络特征图的数据流。在提高运算性能和效率的同时,具有低功耗特性。fpga具有标准的接口配置,支持卷积神经网络的扩展。为实现上述目的,本发明采用如下技术方案:基于fpga的卷积神经网络ip核,其特征在于,具体ip核和组成模块包含卷积运算ip核、池化运算ip核、全连接运算ip核、冒泡法卷积层、冒泡法池化层、全连接层、特征图存储模块和参数存储模块。所述各ip核构成的神经网络层与参数存储模块和特征图存储模块内部互连,共同构成的硬件结构与所需的卷积神经网络算法结构保持一致。所述的基于fpga的卷积神经网络ip核,其特征在于,所述的卷积运算ip核,包含输入特征图缓存器、权值参数缓存器、乘法器、加法器和激活函数模块;1)卷积运算ip核每个时钟周期按行逐个读取特征图内特征点形成数据流。输入特征图缓存器为可配置深度的寄存器组,用于移位缓存输入特征图的数据流,其根据输入特征图的行列数修改寄存器组深度,支持不同规模的卷积神经网络,且固定地址区间的输入特征图数据与乘法器连接。2)权值参数缓存器为可配置深度的寄存器组,用于移位缓存权值参数,当寄存器组被权值参数填满后固定不变。权值参数缓存器的硬件结构与输入特征图缓存器相同,即相同固定地址区间的权值参数数据与乘法器连接。3)与输入特征图缓存器和权值参数缓存器固定地址区间连接的乘法器与加法器组成一个乘法-加法对,特征图内特征点和对应的权值参数共同构成完整的卷积运算。4)卷积运算ip核采用常见的relu激活函数,激活函数模块为mux多路选择器,等同于公式f(x)=max(0,x)。所述的基于fpga的卷积神经网络ip核,其特征在于,所述的池化运算ip核,包含输入特征图缓存器和比较器;1)输入特征图缓存器为可配置深度的寄存器组,用于移位缓存输入特征图数据流,可根据输入特征图的行列数修改寄存器组深度以支持不同规模的卷积神经网络,且固定地址区间的输入特征图数据与比较器连接。2)比较器的输入端口与输入特征图缓存器的4个固定地址区间连接,输出端口为此4个数据中的最大值。所述的基于fpga的卷积神经网络ip核,其特征在于,所述的全连接运算ip核,包含计数器、累加器、乘法器和加法器;1)乘法器分别输入一一对应的输入节点数据和权值参数,完成输入节点和权值参数的乘法运算。2)累加器由一个寄存器和一个加法器构成,乘法器的运算结果输入累加器的寄存器并与下一个时钟周期的乘法结果累加,构成乘累加运算。3)计数器控制乘累加运算的迭代周期,一个迭代周期为所有的输入节点与其对应的权值参数完成乘累加运算,得到一个输出节点的数据。完成一个迭代周期后计数器控制乘累加结果与输出节点对应的偏值参数相加。所述的基于fpga的卷积神经网络ip核,其特征在于,所述的冒泡法卷积层,包含冒泡法控制器和卷积运算ip核;1)冒泡法控制器的三个时钟序列分别为读输入特征图序列、读权值参数序列和卷积过程序列。读输入特征图序列和读权值参数序列的等待区间为输入特征图数据和权值参数数据分别进入卷积运算ip核输入特征图缓存器和权值参数缓存器的时间,该区间卷积结果无效。读权值参数序列的保持区间为权值参数数据填满权值参数缓存器并保持固定的时间,该区间内输入特征图数据流通过输入特征图缓存器,此过程实际为卷积处理过程,该区间卷积结果部分有效。卷积过程序列的等待区间与输入特征图序列和读权值参数序列相同。卷积运算过程的有效区间表示输出特征图的数据有效,即卷积核未跨行产生的有效结果;无效区间表示输出特征图的数据无效,即卷积核跨行产生的无效结果。假设卷积过程为液体,无效区间为气体,则卷积过程的有效结果相当于从液体中排出多余气体,故称为冒泡法。2)通过堆叠与输入特征图深度相同个数的卷积运算ip核构成该卷积层的单个卷积核,实例化该卷积层所需的卷积核,与冒泡法控制器共同构成冒泡法卷积层。所述的基于fpga的卷积神经网络ip核,其特征在于,所述的冒泡法池化层,包含冒泡法控制器和池化运算ip核;1)冒泡法控制器的四个时钟序列分别为读输入特征图序列、列有效序列、行有效序列和池化过程序列。四个时钟序列的等待区间为输入特征图数据进入池化运算ip核输入特征图缓存器的时间,该区间池化结果无效。列有效序列每个有效的池化结果相隔一个无效的池化结果,表示池化滤波列步长为2;行有效序列每段有效行的结果相隔一段无效行的结果,表示池化滤波行步长为2。假设池化过程为液体,列有效序列和行有效序列的无效池化结果为气体,则池化过程相当于从液体中排出多余气体,与冒泡法卷积层控制器类似,故称为冒泡法。2)通过堆叠与输入特征图深度相同个数的池化运算ip核构成池化层的单个池化核,与冒泡法控制器共同构成冒泡法池化层。所述的基于fpga的卷积神经网络ip核,其特征在于,所述的全连接层,包含全连接层控制器和全连接运算ip核;1)全连接层控制器包含权值参数读地址器、偏置参数读地址器、计数器和输入特征图读地址器。输入特征图读地址器和权值参数读地址器每个时钟周期输出一个地址信号,分别读取一一对应的输入节点和权值参数数据进入全连接运算ip核。偏置参数读地址器通过计数器控制,完成第一个输出节点的乘累加后读取第一个输出节点对应的偏置参数。2)全连接层控制器的控制端口与特征图存储模块和参数存储模块对应端口点对点连接,与全连接运算ip核共同构成全连接层。所述的基于fpga的卷积神经网络ip核,其特征在于,所述的特征图存储模块包含对应各维度的全局特征图缓存,内部结构由移位缓存器构成。缓存器深度为特征图行×列所有特征点个数,缓存器的个数为三维特征图的深度。特征图存储模块的输入端口与各层控制器对应的地址端口点对点连接,输出端口与各神经网络层ip核输入端口连接。所述的基于fpga的卷积神经网络ip核,其特征在于,所述的参数存储模块包含该卷积神经网络模型的全局权值参数和偏置参数,与各神经网络层内部互联。附图说明图1为本发明的基于fpga的卷积神经网络ip核的系统结构图;图2为本发明的卷积运算ip核硬件结构及内外部组成模块图;图3为本发明的冒泡法卷积层的时序控制逻辑示意图;图4为本发明的冒泡法卷积层硬件结构及内外部组成模块图;图5为本发明的池化运算ip核硬件结构及内外部组成模块图;图6为本发明的冒泡法池化层的时序控制逻辑示意图;图7为本发明的冒泡法池化层硬件结构及内外部组成模块图;图8为本发明的全连接神经网络结构示意图;图9为本发明的全连接运算ip核硬件结构示意图;图10为本发明的全连接层控制器硬件结构及内外部组成模块图;图11为本发明的全连接层硬件结构及内外部组成模块图;图12为fpga运行时功率测量结果示意图;具体实施方式本发明通过分析卷积神经网络的基本特征,调研目前国内外的研究现状并分析其优劣,结合fpga高并行性、高能效比和可重构性,从卷积神经网络计算密集的卷积、池化和全连接3个方面设计基于fpga的卷积神经网络ip核对卷积神经网络的前馈传播进行运算加速。使用veriloghdl语言设计的ip核可有效使用最少的逻辑资源构建所需的硬件结构,并且易于移植到不同类型的fpga。首先给出如下基本单位定义以便后续具体实施方式及数学式说明:表1本发明的cnn基本单位定义参照图1,基于fpga的卷积神经网络ip核构成的神经网络加速器,其具体ip核和组成模块包含卷积运算ip核、池化运算ip核、全连接运算ip核、冒泡法卷积层、冒泡法池化层、全连接层、特征图存储模块和参数存储模块。图2,具体描述了卷积运算ip核的内部硬件结构及外部组成模块的连接方式。卷积运算ip核,包含输入特征图缓存器、权值参数缓存器、乘法器、加法器和激活函数模块。在卷积运算工作前,首先将训练好的cnn的所有参数存储于bram的参数存储模块,提高参数的访存效率。手动修改卷积运算ip核内的参数(parameter)ic和cr使其符合目前卷积层的尺寸要求。当卷积运算开始,特征图存储模块内特征点像素值以数据流的形式按行逐个通过卷积运算ip核内的输入特征图缓存器。若为第一层卷积层,数据流为经过二值化和按比例缩放的摄像头采集实时图像数据流。cc对应输入特征图缓存器的浅色阴影部分,浅色阴影部分的个数在缓冲器中为cr个,两个相邻的浅色阴影部分相隔ic-cc个单位寄存器。可配置输入特征图缓存器的深度为(cr-1)×ic+cc,通过修改ic适应不同输入特征图尺寸从而支持不同规模的卷积神经网络搭建。同理,参数存储模块的权值参数也以数据流的形式进入ip核内的权值参数缓存器,其缓存器的结构与输入特征图缓存器保持一致。权值参数按照每隔cc个有效权值参数填充(ic-cc)个0进行存储,在卷积过程中顺序读取。权值参数缓存器存储完数据后保持不变,输入特征图缓存器移位继续缓存所有输入特征图数据流,两条移位缓存器固定地址区间:{ic×0+0,ic×0+1,...,ic×0+(cr-1)},{ic×1+0,ic×1+1,...,ic×1+(cr-1)},...,{ic×(cr-1)+0,ic×(cr-1)+1,...,ic×(cr-1)+(cr-1)}。大括号内地址个数为卷积核的列个数,大括号的个数为行个数。两条移位缓存器固定地址区间连接乘加单元可以构成抽象的卷积运算ip核。卷积过程为输入特征图的第一个特征点数据进入输入特征图缓存器至最后一个特征点数据进入缓存器,即卷积核从特征图左上角至右下角移位扫描整幅输入特征图。冒泡法卷积层需要搭配冒泡法控制器,结合图3对冒泡法时序控制逻辑进行详细说明:参照图3(a),冒泡法控制器的三个时钟序列分别为读输入特征图序列,读权值参数序列和卷积过程序列。三个时钟序列的等待区间为输入特征图数据和权值参数数据分别进入卷积运算ip核内的输入特征图缓存器和权值参数缓存器的时间,区间内的卷积结果无效,该过程延迟时钟周期:clkwait=(cr-1)×ic+cc-1。读权值参数序列的保持区间为权值参数数据填满权值参数缓存器并保持固定的时间,该区间内输入特征图数据流通过输入特征图缓存器,此过程实际为卷积处理过程,该区间卷积结果部分有效。卷积过程序列的有效区间表示输出特征图的数据有效,对应图3(b)空白的有效输出特征图数据并即时存储,该过程延迟时钟周期:clkval=ic-cc+1。卷积过程序列的无效区间表示输出特征图的数据无效,即图3(b)卷积核跨行产生的无效数据,对应图3(b)灰色的无效输出特征图数据并被滤去,该过程延迟时钟周期:clkunval=cc-1。假设卷积过程为液体,无效区间为气体,则卷积过程的有效结果相当于从液体中排出多余气体,故称为冒泡法。总的卷积延迟时钟周期:clkconvtolalclkwait+convolutionalprocess=clkwait+{[(ic-cc+1)+(cc-1)]×(ir-cr)+(ic-cc+1)}=ic×ir。参照图4,特征图存储模块已寄存当前卷积层的输入特征图,其深度为id。通过实例化id个通用卷积运算ip核构建虚线框单个卷积核硬件结构,再实例化该卷积层的n个卷积核增加通道数量,实现卷积核并行卷积运算。实例化的卷积运算ip核、卷积核和冒泡法控制器构建不同规模的cnn卷积层。经过卷积运算的特征图仍存储于特征图存储模块。参照图5,池化运算ip核的硬件结构与卷积运算ip核相似,首先将特征图存储模块中存储的上一层输出特征图数据以数据流形式读入池化运算ip核的输入特征图缓存器,缓存器为可配置深度的寄存器组,深度为ic×(cr-1)+cc。手动修改池化运算ip核的参数ic和cr适应不同输入特征图尺寸从而支持不同规模的卷积神经网络搭建。输入特征图数据流持续流入输入特征图缓存器时,实现了池化运算ip核的滑动平移。本发明定义池化过滤器的尺寸为2×2,步长为2,因此移位缓存器的固定地址区间:{ic×0+0,ic×0+1},{ic×1+0,ic×1+1}与比较器的输入端口连接。比较器将4个数据最大值作为输出特征图的特征点存储于特征图存储模块。冒泡法池化层需要搭配冒泡法控制器,结合图6对池化层的冒泡法时序控制逻辑进行详细说明:参照图6,池化层的冒泡法时序控制逻辑有4个时钟序列,分别为读输入特征图序列、列有效序列、行有效序列和池化过程序列。池化层需要从特征图存储模块中按行逐列读取输入特征图的数据进入池化运算ip核。4个时钟序列内等待区间表示输入特征图的数据流正在填满池化运算ip核内的缓存器,延迟时钟周期:clkwait=(cr-1)×ic+cc-1。结合图6,读输入特征图序列阴影区间表示输入特征图数据已填满池化运算ip核的缓存器,池化过程开始。冒泡法控制器使输入特征图按一个时钟周期输入一个数据逐列逐行进入池化运算ip核的缓存器,此过程实际上导致过滤器的覆盖部分移动步长为1,与本发明不符。因此,列有效序列对池化的输出数据进行取舍,从输入特征图数据填满池化运算ip核的缓存器开始,第一个结果为输出特征图的有效数据,下一个时钟周期进入缓存器后得到的结果为无效数据,依次类推。列有效序列阴影区间表示输出特征图的列有效数据。池化过滤器步长为2,当缓存器按照原始时钟周期移位存储数据时,过滤器的覆盖部分的跨行后的步长实际为1,因此跨行后下一行的输出特征图数据为无效数据,参照图6行有效序列内的空白区域。池化过程序列与卷积过程序列类似,结合图6,将池化过程视为液体,将列有效序列中无效数据和行有效序列中的无效数据即空白区间视为气体,池化过程相当于将液体中的空气排出的过程,因此称为冒泡法。池化过程序列的阴影区间表示有效数据,存入特征图存储模块中。冒泡法池化层的硬件结构参照图7,冒泡法池化层包含一个池化核和一个冒泡法控制器。实例化id个池化运算ip核构建池化过滤器,实例化冒泡法控制器控制池化过滤器对输入特征图处理。池化过滤器在cnn只有1个,但构建池化过滤器的池化运算ip核数量并不固定,原因在于池化层一般跟随卷积层,特征图通过卷积层后产生的输出特征图深度并不固定,因此需人为修改池化过滤器内的池化运算ip核的个数。实例化的池化运算ip核、池化过滤器和冒泡法控制器构建不同规模的cnn池化层。经过池化运算的特征图仍存储于特征图存储模块。cnn模型最后一层通常为全连接层,全连接层的算法模型参照图8。图8(a)表示单层全连接神经网络,有n个输入节点和m个输出节点。x代表输入节点的数值,y代表输出节点的数值。图8(b)以y1输出节点为例,任意一个输出节点的数值结果根据下式计算:cnn前馈过程中,全连接层起到“分类器”的作用。卷积层、池化层等操作是将原始数据映射到特征空间,全连接层将学到的“分布式特征表示”映射到样本标记空间。全连接层的结果通过softmax函数进行概率分布计算,即可得到有效的图像分类,该分类可实现最终的图像识别。图9,具体描述了全连接运算ip核的内部硬件结构。全连接运算ip核负责权值参数和输入节点数据的运算,并将运算结果通过outnode端口输出,结果为输出节点的数值。全连接运算ip核包含计数器、累加器、乘法器和加法器。每一个输入节点与任何一个输出节点均有一一对应的权值参数,每个输出节点均有一一对应的偏置参数。结合图8(b),第一个输出节点的数值由n个输入节点和n×m个权值参数的前n个参数进行一一对应的乘加计算并与偏置相加,同理第二个输入节点数值仍然由n个输入节点和n×m个权值参数的第二组n个参数进行运算并与偏置相加。参照图9,输入节点的n个数据需要进行m次循环读取,权值参数数据进行顺序读取,可以保证每个输入节点的数据和权值参数一一对应。第一个时钟周期全连接运算ip核分别通过fdata和w_data端口输入第一对输入节点数据x1和权值参数w1,x1和w1首先进行乘法计算将结果输入累加器暂存;第二个时钟周期输入x2和w2进行乘法计算并与累加器中x1×w1的结果进行累加,累加结果暂存于累加器中。以此类推,当n个时钟周期后累加器完成了n次乘法累加运算,计数器控制门开关打开输出累加结果再与偏置参数(bias)相加,最后的结果通过outnode端口输出。该结果由下式计算得到:y1=x1×w1+x2×w2+…+xn×wn+bias1n个时钟周期可以得到输出节点中第一个节点的结果。同理,第二个输出节点需要重新读入输入节点数据和权值参数,经过n个时钟周期计算完成第二个输出节点的结果。由于输出节点个数为m个,因此需要n×m个时钟周期才可得到所有输出节点的结果。全连接运算ip核负责输入节点数据和对应权值参数并计算,最后m个输出节点数据只需要判断数据的大小,最终完成全连接层前馈过程。参照图10,具体描述了全连接层控制器的硬件结构,结合图8对全连接层控制器的时序控制逻辑进行详细描述:全连接层控制器负责输入节点的数据、权值参数和偏置参数访存等操作。全连接层控制器的硬件结构参照图10所示。输入特征图读地址器和权值参数读地址器每个时钟周期输出一个地址信号,分别从特征图存储模块和参数存储模块各读取一个数据同时进入全连接运算ip核。偏置参数读地址器需要通过计数器控制,当读完第一个输出节点所有输入节点参数和权值参数后读取第一个输出节点对应的偏置参数。结合图8,假设全连接层的输入节点个数为n个,输出节点个数为m个,输入特征图读地址器循环周期为n个时钟周期,权值参数读地址器循环周期为n×m个时钟周期,偏置参数读地址器为每n个时钟周期读一个数据。全连接层完成计算所需时间为n×m个时钟周期。参照图11,实例化的全连接运算ip核、全连接层控制器构建不同规模的cnn池化层。图11(a)是单层全连接神经网络原理图,图11(b)是该层全连接神经网络硬件结构图。其中x1,x2,...,xn表示全连接层有n个输入节点,y1表示多个输出节点的其中一个,w1,w2,...,wn表示计算y1输出节点的权值参数。cnn网络结构中全连接层的上一层通常为池化层或卷积层,因此需要将二维或三维的输出特征图转化为一维的数据流进行存储。全连接层控制需从特征图存储模块中循环读取n个输入特征图的数据并通过f_data端口进入全连接运算ip核。同时全连接层的n×m个权值参数和m个偏置参数分别修改为(n×m,1)和(m,1)的一维矩阵形式,全连接层控制器从参数存储器中顺序读取权值参数和偏置参数数据,分别通过w_data和bias端口进入全连接运算ip核。全连接神经网络在训练过程中需要softmax层进行概率分布计算,但在cnn前馈过程中,只需要分辨结果的大小,即可将不同的图片进行分类,因此硬件结构中不需要softmax层。通过以上步骤,使用基于fpga的卷积神经网络ip核可构建任意规模的卷积神经网络硬件结构对卷积神经网络前馈过程进行加速,但仍需要周边模块支持该卷积神经网络加速器。周边模块包括特征图存储模块和参数存储模块。特征图存储模块缓存各维度的全局特征图,内部结构由可配置深度的寄存器组组成的移位缓存器构成。单个移位缓存器缓存三维特征图中一个单位深度的二维特征图,缓存器深度为特征图行×列所有特征点个数,缓存器的个数为三维特征图的深度。特征图存储模块的输入端口与各层控制器对应的地址端口点对点连接,输出端口与各神经网络层ip核输入端口连接。参数存储模块由只读存储器构成,将pc端训练完成的各神经网络层的权值参数、偏置参数作为只读存储器的初始文件存储于参数存储模块,其输入端口与各层控制器对应的地址端口连接访问数据,输出端口与各层ip核对应数据输入端口连接读出数据。搭建完成的卷积神经网络硬件加速器需要外部设备微控制单元(microcontrollerunit,mcu)对卷积过程调控。结合图1,对mcu控制系统进行详细描述:表2mcu控制状态状态说明idle空闲状态,也是mcu内状态机的初始状态start开始状态,控制各卷积层及特征图存储模块内寄存器数据归零conv1第一层卷积层使能信号拉高,进行卷积运算pool1第一层卷积层使能信号拉低,跟随第一层卷积层的池化层使能信号拉高,进行池化运算fcn神经网络内卷积层和池化层的使能信号拉低,全连接层使能信号拉高,进行全连接运算表3表示mcu状态跳转条件及汇编指令协议现态次胎跳转条件idlestartfpga外部switcher拉高,表示图像开始进入卷积神经网络加速器startconv1片上存储完成图像二值化并存储,汇编指令为[00...0001],位宽为神经网络层个数conv1pool1经过ic×ir个时钟周期完成卷积运算,汇编指令为[00...0010]pool1conv2经过ic×ir个时钟周期完成卷积运算,汇编指令为[00...0100]conv2pool2经过ic×ir个时钟周期完成卷积运算,汇编指令为[00...1000].........poolxfcn完成最后一层池化层运算后,进行全连接层运算,汇编指令为[10...0000]本发明以mnist手写数字集作为验证数据集,cnn模型结构由表4表示。分别在e3-1230v2cpu、nvidiaquadro4000gpu和de2i-150fpga上原型验证其延迟时间、性能和效率。表4cnn模型神经网络层12345id1336-n3161-ic=ir2824128-cc=cr5252-步长1212-状态卷积最大值池化卷积最大值池化全连接表5各硬件平台卷积神经网络前馈过程延迟时间对比神经网络层本设计gpucpu第一层(占用率)7.84×10-6s(31.0%)8.52×10-3s(31.4%)1.13×10-2s(30.4%)第二层(占用率)5.76×10-6s(22.8%)6.63×10-3s(24.4%)1.25×10-2s(33.7%)第三层(占用率)1.44×10-6s(5.7%)9.00×10-3s(33.2%)0.74×10-2s(19.9%)第四层(占用率)0.64×10-6s(2.5%)2.58×10-3s(9.5%)0.56×10-2s(15.1%)第五层(占用率)96×10-6s(38.0%)0.40×10-3s(1.5%)0.03×10-2s(0.9%)耗时25.28×10-6s(100%)27.13×10-3s(100%)3.71×10-2s(100%)比例1.00x1073.18x1468.35x表6基于fpga的卷积神经网络ip核构成的加速器性能表7基于fpga的卷积神经网络ip核构成的加速器功耗及效率参照图12,基于fpga的卷积神经网络ip核构建的硬件加速器在fpga上实测功率。采用tecman公司的tm9型号微型电力检测仪测量功率。单张图片进行图像识别时fpga的功率为1.69w,与表7中的数据对应。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1