一种基于FPGA的卷积神经网络加速系统技术方案

技术编号:19904591 阅读:23 留言:0更新日期:2018-12-26 03:15
本发明专利技术公开了一种基于FPGA的卷积神经网络加速系统,基于OpenCL编程框架对FPGA上的卷积神经网络进行加速,该卷积神经网络加速系统包括数据预处理模块、数据后处理模块、卷积神经网络计算模块、数据存储模块和网络模型配置模块;其中卷积神经网络计算模块包括卷积计算子模块、激活函数计算子模块、池化计算子模块和全连接计算子模块;本发明专利技术提供的该加速系统在使用过程中可以根据FPGA的硬件资源情况设置计算并行度从而适配不同的FPGA和不同的卷积神经网络,能够在FPGA上高效并行流水化方式运行卷积神经网络,并且能有效地降低系统功耗和大大提高卷积神经网络的处理速度,满足实时性要求。

【技术实现步骤摘要】
一种基于FPGA的卷积神经网络加速系统
本专利技术属于神经网络计算
,具体涉及一种基于FPGA的卷积神经网络加速系统。
技术介绍
随着深度学习技术的不断成熟,卷积神经网络被广泛用于计算机视觉、语音识别、自然语言处理等领域,并且在人脸检测、语音识别等实际应用场景中取得了不错的效果。近年来,由于规模不断壮大的可训练数据集和不断创新的神经网络结构,卷积神经网络的准确度和性能都得到了显着提高,但是随着卷积神经网络网络结构变得越来越复杂,在实际应用场景中对高实时性、低成本的要求越来越高,对于运行神经网络的硬件的计算能力和能耗的要求也越来越高。FPGA具有计算资源丰富、灵活性较高和能源效率高等特点,而且与传统数字电路系统相比,具有可编程、高集成度、高速和高可靠性等优点,已不断被尝试用来加速神经网络。OpenCL是基于传统C语言的异构计算语言,可运行在CPU、GPU、PFGA和DSP等加速处理器上,具有较高的语言抽象层次,程序员不必了解硬件电路及底层细节就可以开发出高性能的应用程序,大大减少了编程过程的复杂性。2012年11月,Altera公司正式推出了集FPGA的强大并行体系结构以及OpenCL并行编程模型于一体,用于在FPGA上进行OpenCL开发的软件开发套件(SDK),熟悉C语言的程序员利用该软件开发套件能够很快的适应并掌握在OpenCL高级语言环境下实现高性能、低功耗、高功效的开发FPGA应用的方法。采用AlteraOpenCLSDK在FPGA上加速卷积神经网络的计算,FPGA作为宿主机的外部加速器,能够实现宿主机与外部FPGA加速器的协同工作。专利技术内容针对现有技术的以上缺陷或改进需求中的至少一点,本专利技术提供了一种基于FPGA的卷积神经网络加速系统,其目的在于对已有的卷积神经网络计算结构进行重新调整以充分挖掘卷积神经网络在计算过程当中的并行性以及各计算层之间的流水性,提高卷积神经网络的处理速度。为实现上述目的,按照本专利技术的一个方面,提供了一种基于FPGA的卷积神经网络加速系统,包括数据预处理模块、卷积神经网络计算模块、数据后处理模块、数据存储模块和网络模型配置模块;其中,数据预处理模块、卷积神经网络计算模块和数据后处理模块基于FPGA实现,数据存储模块基于FPGA的片外存储实现,网络模型配置模块基于FPGA的片上存储实现;其中,数据预处理模块用于根据当前所处的计算阶段从数据存储模块中读取相应的卷积核参数和输入特征图,并对卷积核参数和输入特征图进行预处理:将4维卷积核参数整理成3维,并对输入特征图利用滑动窗口展开并复制,使得滑动窗口中的局部特征图与卷积核参数一一对应,获得便于直接计算的卷积核参数序列和局部特征图系列;预处理完成后将处理好的卷积核参数和输入特征图发送到卷积神经网络计算模块;网络模型配置模块用于对卷积神经网络计算模块进行参数配置;所述卷积神经网络计算模块将卷积神经网络中的卷积层、激活函数层、池化层和全连接层独立设置,通过参数配置来构建多种不同的网络结构,并根据配置参数对接收自数据预处理模块的卷积核参数和输入特征图进行卷积、激化、池化和全连接计算的层间流水处理,层内则为并行处理;处理结果发送到数据后处理模块;数据后处理模块用于将卷积神经网络计算模块的输出数据写入到数据存储模块中;数据存储模块用于存储卷积神经网络的模型参数caffemodel、中间特征图计算结果和最终计算结果,数据存储模块模块通过PCIe接口与外部宿主机进行数据交换。优选的,上述的卷积神经网络加速系统,其卷积神经网络计算模块包括卷积计算子模块、激活函数计算子模块、池化计算子模块和全连接计算子模块,卷积神经网络计算模块内部的这些子模块之间根据网络模型配置模块预定义的网络模型配置参数来连接;卷积神经网络计算模块接收到数据预处理模块发送的卷积核参数和特征图后,根据配置参数组织好的各个子模块即开始进行处理,处理完成后将结果发送到数据后处理模块;具体地,卷积计算子模块利用输入的卷积核参数和特征图进行卷积计算,将结果发送到激活函数计算子模块;激活函数计算子模块根据网络模型参数配置模块预定义的激活函数配置参数选择激活函数,利用选定的激活函数对特征图进行激活计算,完成后根据参数配置将结果发送到池化计算子模块或者全连接计算子模块中;池化计算子模块用于对接收的特征图进行池化计算,并根据网络模型配置模块预定义的配置参数将池化结果发送到全连接计算模块,或直接发送到数据后处理模块;全连接计算子模块用于对接收的特征图进行全连接计算,将全连接结果发送到数据后处理模块。优选地,上述的卷积神经网络加速系统,其数据预处理模块包括数据传输子模块、卷积核参数预处理子模块和特征图预处理子模块;其中,数据传输子模块用于控制特征图和卷积核参数在数据存储模块与卷积神经网络计算模块之间的传输;卷积核参数预处理子模块用于对卷积核参数进行重排、整理处理;特征图预处理子模块用于对特征图进行展开、复制和整理处理。优选地,上述的卷积神经网络加速系统,其数据存储模块包括卷积核参数存储子模块、特征图存储子模块,卷积核参数存储子模块用于存储卷积核参数,特征图存储子模块用于存储输入特征图和计算过程中的临时特征图;这些存储子模块优选均由与FPGA连接的DDR存储器划分而成,在OpenCL编程框架中,数据存储模块被作为全局内存来使用。优选地,上述的卷积神经网络加速系统,其数据传输子模块包括DDR控制器、数据传输总线和存储缓存;其中,DDR控制器用于控制数据在DDR与FPGA中间的数据传输,数据传输总线连接DDR与FPGA,是数据传输的通道;存储缓存用于暂存数据、减少FPGA对DDR的读取,提高数据传输速度。优选地,上述的卷积神经网络加速系统,其卷积计算子模块包括一个或多个矩阵乘法计算子模块;矩阵乘法计算子模块的数量由网络模型配置模块预定义的配置参数设定;各个矩阵乘法计算子模块之间的计算是并行执行的;矩阵乘法计算子模块使用Winograd最小滤波算法来加速运算,用于计算获取单个卷积核与对应的局部特征图之间的矩阵乘法。优选地,上述的卷积神经网络加速系统,其激活函数计算子模块包括激活函数选择子模块、Sigmoid函数计算子模块、Tanh函数计算子模块和ReLU函数计算子模块;激活函数选择子模块分别与Sigmoid函数计算子模块、Tanh函数计算子模块和ReLU函数计算子模块相连,特征图的数据发送到这三个计算子模块中的一个;其中,激活函数选择子模块用于设定卷积神经网络中特征图的激活计算方式;Sigmoid函数计算子模块用于进行Sigmoid函数的计算;Tanh函数计算子模块用于进行Tanh函数的计算;ReLU函数计算子模块用于进行ReLU函数的计算。优选地,上述的卷积神经网络加速系统,其池化计算子模块包括由两个FPGA片上存储构成的双缓存;用于存储池化计算过程中的临时特征图数据,缓冲区大小由网络模型参数配置模块预定义的网络配置参数设定,不同池化层的缓冲区大小不一样,通过这种双缓存区结构来实现乒乓读写操作,实现池化计算的流水处理。优选地,上述的卷积神经网络加速系统,其网络模型参数配置模块由FPGA片上存储实现,用于存储网络模型配置参数,包括网络输入特征图的尺寸大小、卷积计算子模块中卷积核参数的本文档来自技高网...

【技术保护点】
1.一种基于FPGA的卷积神经网络加速系统,其特征在于,包括数据预处理模块、卷积神经网络计算模块、数据后处理模块、数据存储模块和网络模型配置模块;所述数据预处理模块、卷积神经网络计算模块和数据后处理模块基于FPGA实现,数据存储模块基于FPGA片外存储实现,网络模型配置模块基于FPGA的片上存储实现;所述数据预处理模块用于根据当前所处的计算阶段从数据存储模块中读取相应的卷积核参数和输入特征图,并对卷积核参数和输入特征图进行预处理:将4维卷积核参数整理成3维,并对输入特征图利用滑动窗口展开并复制,使得滑动窗口中的局部特征图与卷积核参数一一对应,获得便于直接计算的卷积核参数序列和局部特征图系列;预处理完成后将处理好的卷积核参数和输入特征图发送到卷积神经网络计算模块;所述网络模型配置模块用于对卷积神经网络计算模块进行参数配置;所述卷积神经网络计算模块将卷积神经网络中的卷积层、激活函数层、池化层和全连接层独立设置,通过参数配置来构建多种不同的网络结构,并根据配置参数对接收自数据预处理模块的卷积核参数和输入特征图进行卷积、激化、池化和全连接计算的层间流水处理,处理结果发送到数据后处理模块;所述数据后处理模块用于将卷积神经网络计算模块的输出数据写入到数据存储模块中;所述数据存储模块用于存储卷积神经网络的模型参数caffemodel、中间特征图计算结果和最终计算结果,该模块通过PCIe接口与外部宿主机进行数据交换。...

【技术特征摘要】
1.一种基于FPGA的卷积神经网络加速系统,其特征在于,包括数据预处理模块、卷积神经网络计算模块、数据后处理模块、数据存储模块和网络模型配置模块;所述数据预处理模块、卷积神经网络计算模块和数据后处理模块基于FPGA实现,数据存储模块基于FPGA片外存储实现,网络模型配置模块基于FPGA的片上存储实现;所述数据预处理模块用于根据当前所处的计算阶段从数据存储模块中读取相应的卷积核参数和输入特征图,并对卷积核参数和输入特征图进行预处理:将4维卷积核参数整理成3维,并对输入特征图利用滑动窗口展开并复制,使得滑动窗口中的局部特征图与卷积核参数一一对应,获得便于直接计算的卷积核参数序列和局部特征图系列;预处理完成后将处理好的卷积核参数和输入特征图发送到卷积神经网络计算模块;所述网络模型配置模块用于对卷积神经网络计算模块进行参数配置;所述卷积神经网络计算模块将卷积神经网络中的卷积层、激活函数层、池化层和全连接层独立设置,通过参数配置来构建多种不同的网络结构,并根据配置参数对接收自数据预处理模块的卷积核参数和输入特征图进行卷积、激化、池化和全连接计算的层间流水处理,处理结果发送到数据后处理模块;所述数据后处理模块用于将卷积神经网络计算模块的输出数据写入到数据存储模块中;所述数据存储模块用于存储卷积神经网络的模型参数caffemodel、中间特征图计算结果和最终计算结果,该模块通过PCIe接口与外部宿主机进行数据交换。2.如权利要求1所述的卷积神经网络加速系统,其特征在于,所述卷积神经网络计算模块包括卷积计算子模块、激活函数计算子模块、池化计算子模块和全连接计算子模块;卷积神经网络计算模块内部的这些子模块之间根据所述网络模型配置模块预定义的网络模型配置参数来连接;所述卷积计算子模块利用输入的卷积核参数和特征图进行卷积计算,完成后将结果发送到激活函数计算子模块;所述激活函数计算子模块根据网络模型参数配置模块预定义的激活函数配置参数选择激活函数;利用选定的激活函数对特征图进行激活计算,完成后根据参数配置将结果发送到池化计算子模块或者全连接计算子模块中;所述池化计算子模块用于对接收的特征图进行池化计算,并根据网络模型配置模块预定义的配置参数将池化结果发送到全连接计算模块,或直接发送到数据后处理模块;所述全连接计算子模块用于对接收的特征图进行全连接计算,将全连接结果发送到数据后处理模块。3.如权利要求2所述的卷积神经网络加速系统,其特征在于,所述卷积神经网络计算模块由卷积计算子模块、激活函数计算子模块、池化计算子模块、全连接计算子模块根据网络模型配置参数级联而成,这些子模块间使用OpenCLChannel进行数据传输,这些子模块内的计算是并行执行的,这些子模块间的计算是流水进行的。4.如权利要求2或3所述的卷积神经网络加速系统,其特征在于,所述卷积计算子模块包...

【专利技术属性】
技术研发人员:李开邹复好孙浩李全祁迪贺坤坤
申请(专利权)人:武汉魅瞳科技有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1