实现神经网络的FPGA加速装置、方法和系统制造方法及图纸

技术编号:20623832 阅读:33 留言:0更新日期:2019-03-20 15:00
本申请公开了用于实现神经网络的FPGA加速装置、方法和系统,该装置包括至少一存储单元,用于存储操作指令、运算数据和组成神经网络的n个子网络的权重数据,所述n为大于1的整数;多个计算单元,用于根据所述操作指令、所述运算数据、所述权重数据以及所述n个子网络的执行顺序j,执行所述神经网络计算中向量乘加操作,所述j的初始值为1,执行顺序为j的子网络的最终计算结果作为执行顺序为j+1的子网络的输入;以及控制单元,与所述至少一存储单元、所述多个计算单元相连,用于经由所述至少一存储单元获得所述操作指令,并且解析所述操作指令以控制所述多个计算单元。利用FPGA实现加速神经网络的运算过程,相对于通用处理器和图形处理器有高性能、低功耗的特点。

Acceleration Device, Method and System of FPGA for Realizing Neural Network

The present application discloses an acceleration device, method and system for realizing a neural network based on FPGA. The device includes at least one storage unit for storing operation instructions, operation data and weight data of N sub-networks constituting the neural network, the N being an integer greater than 1, and a plurality of computing units for according to the operation instructions, the operation data, the weight data and the description. The execution order J of N sub-networks executes vector multiplication and addition operation in the calculation of the neural network. The initial value of the j is 1, and the final result of the sub-network with the execution order J is the input of the sub-network with the execution order j+1; and the control unit, which is connected with at least one storage unit and the plurality of computing units, is used to obtain the said information through at least one storage unit. The operation instructions are parsed to control the plurality of computing units. Compared with general purpose processor and graphics processor, it has the characteristics of high performance and low power consumption.

【技术实现步骤摘要】
实现神经网络的FPGA加速装置、方法和系统
本申请涉及深度学习
,特别涉及实现神经网络的FPGA加速装置、方法和系统。
技术介绍
随着机器学习技术的不断发展,深度神经网络已经成为认知与识别任务的最佳解决方案,在识别检测和计算机视觉领域引起了广泛关注,尤其在图像识别领域,深度神经网络已达到甚至超越人类的辨识准确度。深度学习所得到的深度网络结构是一种运算模型,其中包含大量数据节点,每个数据节点与其他数据节点相连,各个节点间的连接关系用权重表示,主流的神经网络处理硬件通常是采用通用处理器(CPU)或者图形处理器(GPU)来实现,其中,随着GPU的大规模并行架构支持的不断推进,检测模型在GPU系统上的运行速度相较于单核CPU往往提升几十倍乃至上千倍,但GPU的高能耗对其应用造成了一定的限制。相比于GPU,FPGA在功耗方面具有很大的优势。
技术实现思路
鉴于以上问题,本专利技术的实施例提供一种实现神经网络的FPGA加速装置、方法和系统。按照本专利技术的实施例的用于实现神经网络的FPGA加速装置,包括:至少一存储单元,用于存储操作指令、运算数据和组成神经网络的n个子网络的权重数据,所述n为大于1的整数;多个计算单元,用于根据所述操作指令、所述运算数据、所述权重数据以及所述n个子网络的执行顺序j,执行所述神经网络计算中向量乘加操作,所述j的初始值为1,执行顺序为j的子网络的最终计算结果作为执行顺序为j+1的子网络的输入;以及控制单元,与所述至少一存储单元、所述多个计算单元相连,用于经由所述至少一存储单元获得所述操作指令,并且解析所述操作指令以控制所述多个计算单元。按照本专利技术的实施例的基于FPGA实现神经网络的方法,包括:设置至少一存储单元,存储操作指令、运算数据和组成神经网络的n个子网络的权重数据,所述n为大于1的整数;设置多个计算单元,根据所述操作指令、所述运算数据、所述权重数据以及所述n个子网络的执行顺序j,执行所述神经网络计算中向量乘加操作,所述j的初始值为1,执行顺序为j的子网络的最终计算结果作为执行顺序为j+1的子网络的输入;以及设置控制单元,与所述至少一存储单元、所述多个计算单元相连,所述控制单元经由所述至少一存储单元获得所述操作指令,并且解析所述操作指令以控制所述多个计算单元。按照本专利技术的实施例的基于FPGA实现神经网络的硬件加速系统,包括处理器和前述的FPGA加速装置;其中,所述处理器,用于执行一组程序,向所述FPGA加速装置发送用于计算的初始数据;所述FPGA加速装置,用于根据所述处理器发送的初始数据,执行神经网络的计算,得到计算结果,将所述计算结果返给所述处理器。从以上的描述可以看出,本专利技术的实施例的方案利用FPGA实现加速由多个子网络组成的神经网络的运算过程,相对于通用处理器和图形处理器有高性能、低功耗的特点。附图说明图1按照本专利技术的一实施例的实现神经网络的FPGA加速装置的示意图;图1a为RNN-ResNet的一实施例的神经网络基本单元的结构示意图;图1b为目标/背景判别网络一实施例的结构示意图;图1c为目标分类回归网络一实施例的结构示意图;图2为按照本专利技术的一实施例的基于FPGA实现神经网络的硬件加速系统的示意图。具体实施方式现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本公开内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其他例子中也可以进行组合。如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。本专利技术实施例提供的实现神经网络的FPGA加速装置包括:至少一存储单元,用于存储操作指令、运算数据和组成神经网络的n个子网络的权重数据,所述n为大于1的整数;多个计算单元,用于根据所述操作指令、所述运算数据、所述权重数据以及所述n个子网络的执行顺序j,执行所述神经网络计算中向量乘加操作,所述j的初始值为1,执行顺序为j的子网络的最终计算结果作为执行顺序为j+1的子网络的输入;以及控制单元,与所述至少一存储单元、所述多个计算单元相连,用于经由所述至少一存储单元获得所述操作指令,并且解析所述操作指令以控制所述多个计算单元。为了使本专利技术的目的、技术方案及优点更加清楚明了,以下结合附图通过具体实施例对本专利技术进一步详细说明,本专利技术提供的实现神经网络的FPGA加速装置基于存储-控制-计算的结构:存储结构用于存储参与计算的数据及操作指令;控制结构包括译码电路,用于解析操作指令,生成控制信号以控制片上数据的调度与存储以及神经网络计算过程;计算结构包括算数逻辑单元,用于参与神经网络计算操作,数据在计算结构中实现计算操作。图1示出了按照本专利技术的一个实施例的实现神经网络的FPGA加速装置的示意图,该装置100由七个部分构成,包括输入数据存储单元102、权重存储单元104、指令存储单元106、计算单元108、输出数据存储单元110以及控制单元112。输入数据存储单元102用于存储参与计算的运算数据,该运算数据包括原始特征图数据、子网络中间计算结果或子网络最终计算结果。本实施例神经网络由n个子网络组成,其中,n为大于1的整数。例如包括第1子网络、第2子网络、…、第n子网络,n个子网络按执行顺序j进行运行,j的初始值为1,执行顺序为j的子网络的最终计算结果作为执行顺序为j+1的子网络的输入。例如第1子网络的执行顺序为1,第2子网络的执行顺序为2,…,第n子网络的执行顺序为n,则原始特征图数据输入第1子网络执行计算,第1子网络的最终计算结果输入第2子网络执行计算,以此类推,第n-1子网络的最终计算结果输入第n子网络执行计算。权重存储单元104用于存储神经网络n个子网络的权重数据,例如第1子网络的第一权重,第2子网络的第二权重,…,第n子网络的第N权重。其中,该神经网络是先前已经在预置的训练样本上被训练,并且已训练得到使神经网络的精度满足预设精度的神经网络结构权重。在一实施方式中,所述权重数据是利用遗传算法对已经训练好的神经网络进行片下离线压缩后获得的,并将经压缩后的权重数据存储于权重存储单元104中。具体地,压缩后的神经网络基于预置的训练样本的精度不低于预设精度。本实施例采用遗传算法对用于织物疵点检测神经网络执行压缩处理,其实现的原理是根据遗传算法“优胜劣汰”的原理,在兼顾神经网络精度的情况下,以“压缩神经网络”作为准则,对已训练好的神经网络执行各种遗传操作,最后获得结构最简化的神经网络,从而实现对神经网络的压缩处理。本实施例通过离线压缩的方式本文档来自技高网...

【技术保护点】
1.用于实现神经网络的FPGA加速装置,包括:至少一存储单元,用于存储操作指令、运算数据和组成神经网络的n个子网络的权重数据,所述n为大于1的整数;多个计算单元,用于根据所述操作指令、所述运算数据、所述权重数据以及所述n个子网络的执行顺序j,执行所述神经网络计算中向量乘加操作,所述j的初始值为1,执行顺序为j的子网络的最终计算结果作为执行顺序为j+1的子网络的输入;以及控制单元,与所述至少一存储单元、所述多个计算单元相连,用于经由所述至少一存储单元获得所述操作指令,并且解析所述操作指令以控制所述多个计算单元。

【技术特征摘要】
1.用于实现神经网络的FPGA加速装置,包括:至少一存储单元,用于存储操作指令、运算数据和组成神经网络的n个子网络的权重数据,所述n为大于1的整数;多个计算单元,用于根据所述操作指令、所述运算数据、所述权重数据以及所述n个子网络的执行顺序j,执行所述神经网络计算中向量乘加操作,所述j的初始值为1,执行顺序为j的子网络的最终计算结果作为执行顺序为j+1的子网络的输入;以及控制单元,与所述至少一存储单元、所述多个计算单元相连,用于经由所述至少一存储单元获得所述操作指令,并且解析所述操作指令以控制所述多个计算单元。2.根据权利要求1所述的FPGA加速装置,其中,所述n为2,所述组成神经网络的子网络按执行顺序的先后依次包括:背景识别网络和目标/背景判别网络。3.根据权利要求1所述的FPGA加速装置,其中,所述n为3,所述组成神经网络的子网络按执行顺序的先后依次包括:背景识别网络、目标/背景判别网络和目标分类回归网络,或,候选区域生成网络、背景识别网络和目标/背景判别网络。4.根据权利要求1所述的FPGA加速装置,其中,所述n个子网络的权重数据是利用遗传算法对已经训练好的所述神经网络进行片下离线压缩后获得的。5.基于FPGA实现神经网络的方法,包括:设置至少一存储单元,存储操作指令、运算数据和组成神经网络的n个子网络的权重数据,所述n为大于1的整数;设置多个计算单元,根据所述操作指令、所述...

【专利技术属性】
技术研发人员:金玲玲饶东升
申请(专利权)人:深圳灵图慧视科技有限公司
类型:发明
国别省市:广东,44

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

1