一种基于FPGA的二值神经网络加速方法及系统技术方案

技术编号:22565778 阅读:51 留言:0更新日期:2019-11-16 12:19
本发明专利技术公开了一种基于FPGA的二值神经网络加速系统,其利用FPGA形成的卷积核参数获取模块、二值化卷积神经网络结构和缓存模块,缓存模块为FPGA的片上内存,各模块通过获取待处理图片的输入特征图、获取卷积计算逻辑规则和相应的进行二值化卷积计算,FPGA依据卷积计算逻辑规则遍历多个线程的卷积计算,得到待处理图像的输出特征图数据,通过该整体架构将二值神经网络中各层的计算量全部卸载到片上内存,而不依赖片外内存与片上内存的交互,从而减少了存储器之间的通信成本,极大地提高了计算效率,提高了待检测图像的检测速度。

A binary neural network acceleration method and system based on FPGA

The invention discloses a binary neural network acceleration system based on FPGA, which uses the convolution kernel parameter acquisition module, binary convolution neural network structure and cache module formed by FPGA. The cache module is the on-chip memory of FPGA. Each module obtains the input characteristic diagram of the image to be processed, obtains the convolution calculation logic rules and conducts binary convolution calculation according to the Convolution calculation logic rules traverse the convolution calculation of multiple threads to get the output characteristic graph data of the image to be processed. Through the overall architecture, the calculation amount of each layer in the binary neural network is unloaded to the on-chip memory without relying on the interaction between the off-chip memory and on-chip memory, thus reducing the communication cost between the memories, greatly improving the calculation efficiency and improving the waiting for inspection Measure the detection speed of the image.

【技术实现步骤摘要】
一种基于FPGA的二值神经网络加速方法及系统
本专利技术属于图像处理领域,具体涉及一种基于FPGA的二值神经网络加速方法及系统。
技术介绍
人工智能技术的重大进步已经开始惠及人类生活的方方面面。从家居的真空机器人到工厂里的整套智能生产设备,世界上的许多任务都已经达到高度自动化。而深度学习在这场伟大的技术革命中发挥着举足轻重的作用,其在人脸识别、对象检测、图像处理、等领域有着广泛的应用。其中主要采用的算法就是卷积神经网络,这种性能较优的深度学习算法已经在大量的PC端、手机移动端和嵌入式专用加速器中进行了部署,用来实现多种智能计算任务,并取得了较好的加速效果。卷积神经网络(CNN,ConvolutionalNeuralNetwork)作为深度学习发展最重要的分支之一,它的发展是最为成熟的,并广泛应用于各种图形图像视频处理的任务中。卷积神经网络发展如此迅速,除训练数据规模增长和计算能力提升外,还得益于各种卷积神经网络框架。现有的卷积神经网络应用大多是部署在服务器或桌面机平台上,而移动端才是应用最广泛、用户量最多的应用平台,将卷积神经网络应用移动化才能最大限度推动深度学习应用的发展。然而所有这样的移动端和嵌入式计算设备都只能提供有限的计算能力,以及容量并不算大的片上存储。随着卷积神经网络的模型结构越来越复杂、模型层数越来越深、模型参数量越来越大,使得卷积神经网络在移动端和嵌入式端上的部署变得越来越困难。庞大的计算量全部采用32bit浮点数作为操作数运行在轻量级芯片上,无疑是对计算资源的巨大消耗,同时也很难达到比较好的实时效果。
技术实现思路
针对现有技术的以上缺陷或改进需求,本专利技术提供了一种基于FPGA的二值神经网络加速系统,其利用FPGA形成的卷积核参数获取模块、二值化卷积神经网络结构和缓存模块,缓存模块为FPGA的片上内存,各模块依据获取的卷积计算逻辑规则进行相应的二值化卷积计算,通过该整体架构将二值神经网络中各层的计算量全部卸载到片上内存,而不依赖片外内存与片上内存的交互,从而减少了存储器之间的通信成本,极大地提高了计算效率,提高了待检测图像的检测速度。为实现上述目的,按照本专利技术的一个方面,提供了一种基于FPGA的二值神经网络加速系统,该系统包括利用FPGA形成的卷积核参数获取模块、二值化卷积神经网络结构和缓存模块,缓存模块为FPGA的片上内存,卷积核参数获取模块用于获取待处理图片的输入特征图,利用卷积神经网络模型在已有的数据集上进行二值化训练,得到卷积计算逻辑规则和多个卷积核参数,卷积计算逻辑规则包括多个线程的卷积计算;缓存模块用于调取所述卷积计算逻辑规则和多个卷积核参数,依据卷积计算逻辑规则将多个卷积核参数存储于FPGA的片上内存,缓存模块还用于缓存卷积基本计算模块的计算结果和待处理图片数据;二值化卷积神经网络结构用于调取卷积计算逻辑规则生成多个卷积基本计算模块,多个卷积基本计算模块依据卷积计算逻辑规则建立相应的连接关系,一个线程的卷积计算对应多个卷积基本计算模块,多个卷积核参数与多个卷积基本计算模块一一对应;卷积基本计算模块用于依据卷积计算逻辑规则,读取缓存模块中的当前线程的上一卷积基本计算模块的计算结果、当前滑动窗口内的待处理图像的输入特征图和FPGA的片上内存中的对应卷积核数据,依次进行预设的卷积计算顺序得到当前卷积基本计算模块的计算结果,并将当前卷积基本计算模块的计算结果存储于对应的缓存区;所述预设的卷积计算顺序为依次进行卷积、PRelu激活、正则归一化和二值激活计算,或者依次进行卷积、PRelu激活、池化、正则归一化和二值激活计算;FPGA依据卷积计算逻辑规则遍历多个线程的卷积计算,得到待处理图像的输出特征图数据,以提高待检测图像的检测速度。作为本专利技术的进一步改进,FPGA通过ARM端配置相应的控制寄存器,随后经过AXI总线从外部存储器DDR3中加载图像到片上内存的缓冲区;FPGA为一个卷积基本计算模块分配多个处理引擎,处理引擎包括算术运算组件、逻辑运算组件、位运算组件和存储资源。作为本专利技术的进一步改进,依据预设的卷积计算顺序将卷积计算层分类为卷积层、PRelu激活层、池化层、正则归一化层和二值激活层,分别用于卷积、PRelu激活、池化、正则归一化和二值激活计算,利用位于同一个卷积计算层的多个计算引擎形成一个卷积加速阵列,一个卷积加速阵列利用FPGA的一个PE模块实现。作为本专利技术的进一步改进,缓存模块分别为一个卷积计算阵列设置对应的第一缓存区和第二缓冲区,第一缓存区用于存储上一个卷积加速阵列的运算结果,第二缓冲区用于存储对应的卷积加速阵列的运算结果。作为本专利技术的进一步改进,池化层的计算实现过程为:将池化层的滑动窗口对应的列向量进行SIMD向量化,并对所有列向量求各自的最大值后组成一个新的向量,并将新的向量作为输出特征图的数据。作为本专利技术的进一步改进,池化层的不同滑动窗口存在相同的列向量时,将所述相同的列向量的计算结果放入一个LUT暂存,下一个滑动窗口进行所述相同的列向量计算时直接调用LUT中的暂存值。作为本专利技术的进一步改进,FPGA依据卷积计算逻辑规则对每一个卷积计算层设置有一个矩阵向量乘法单元,矩阵向量乘法单元包括多个计算引擎,计算引擎包括多个并行的单指令多数据流通通道,计算引擎用于获取多个并行的单指令多数据流通通道对应的待处理图片的输入特征图,与卷积核参数相对应的不同过滤器进行乘法累加运算。作为本专利技术的进一步改进,该系统进行点积计算的过程为:对滑动窗口内对应位置元素求异或,将异或的结果存放在数组中;通过popcount统计数组中1的个数;依据公式result=-(popcount-(N-popcount))求出最终的卷积计算结果。作为本专利技术的进一步改进,FPGA将卷积计算所需的卷积核参数依据卷积计算逻辑规则排序后打包为参数矩阵,滑动输出窗口依据卷积计算逻辑规则平移覆盖待处理图片的输入特征图得到图像矩阵,所述参数矩阵和图像矩阵相乘得到卷积计算结果。作为本专利技术的进一步改进,卷积基本计算模块通过普通的射函数模式将PRelu激活、正则归一化和二值激活合并为一个简单的二值函数。总体而言,通过本专利技术所构思的以上技术方案与现有技术相比,具有以下有益效果:本专利技术的一种基于FPGA的二值神经网络加速系统,其利用FPGA形成的卷积核参数获取模块、二值化卷积神经网络结构和缓存模块,缓存模块为FPGA的片上内存,各模块依据获取的卷积计算逻辑规则进行相应的二值化卷积计算,通过该整体架构将二值神经网络中各层的计算量全部卸载到片上内存,而不依赖片外内存与片上内存的交互,这样较少了存储器之间的通信成本,极大地提高了计算效率,提高了待检测图像的检测速度。本专利技术的一种基于FPGA的二值神经网络加速系统,其点积运算在二值神经网络里被Xnor逻辑运算和popcount位移运算所代替,由于二值运算为于1bit权重和1bit输入图像参数之间的点积计算,通过这样的运算替换,使得二值卷积计算相较于全精度的卷本文档来自技高网
...

【技术保护点】
1.一种基于FPGA的二值神经网络加速系统,该系统包括利用FPGA形成的卷积核参数获取模块、二值化卷积神经网络结构和缓存模块,所述缓存模块为FPGA的片上内存,其特征在于,/n所述卷积核参数获取模块用于获取待处理图片的输入特征图,利用卷积神经网络模型在已有的数据集上进行二值化训练,得到卷积计算逻辑规则和多个卷积核参数,所述卷积计算逻辑规则包括多个线程的卷积计算;/n所述缓存模块用于调取所述卷积计算逻辑规则和多个卷积核参数,依据卷积计算逻辑规则将多个卷积核参数存储于FPGA的片上内存,缓存模块还用于缓存卷积基本计算模块的计算结果和待处理图片数据;/n所述二值化卷积神经网络结构用于调取卷积计算逻辑规则生成多个卷积基本计算模块,多个卷积基本计算模块依据卷积计算逻辑规则建立相应的连接关系,一个线程的卷积计算对应多个卷积基本计算模块,多个卷积核参数与多个卷积基本计算模块一一对应;/n所述卷积基本计算模块用于依据卷积计算逻辑规则,读取缓存模块中的当前线程的上一卷积基本计算模块的计算结果、当前滑动窗口内的待处理图像的输入特征图和FPGA的片上内存中的对应卷积核数据,依次进行预设的卷积计算顺序得到当前卷积基本计算模块的计算结果,并将当前卷积基本计算模块的计算结果存储于对应的缓存区;所述预设的卷积计算顺序为依次进行卷积、PRelu激活、正则归一化和二值激活计算,或者依次进行卷积、PRelu激活、池化、正则归一化和二值激活计算;/nFPGA依据卷积计算逻辑规则遍历多个线程的卷积计算,得到待处理图像的输出特征图数据,以提高待检测图像的检测速度。/n...

【技术特征摘要】
1.一种基于FPGA的二值神经网络加速系统,该系统包括利用FPGA形成的卷积核参数获取模块、二值化卷积神经网络结构和缓存模块,所述缓存模块为FPGA的片上内存,其特征在于,
所述卷积核参数获取模块用于获取待处理图片的输入特征图,利用卷积神经网络模型在已有的数据集上进行二值化训练,得到卷积计算逻辑规则和多个卷积核参数,所述卷积计算逻辑规则包括多个线程的卷积计算;
所述缓存模块用于调取所述卷积计算逻辑规则和多个卷积核参数,依据卷积计算逻辑规则将多个卷积核参数存储于FPGA的片上内存,缓存模块还用于缓存卷积基本计算模块的计算结果和待处理图片数据;
所述二值化卷积神经网络结构用于调取卷积计算逻辑规则生成多个卷积基本计算模块,多个卷积基本计算模块依据卷积计算逻辑规则建立相应的连接关系,一个线程的卷积计算对应多个卷积基本计算模块,多个卷积核参数与多个卷积基本计算模块一一对应;
所述卷积基本计算模块用于依据卷积计算逻辑规则,读取缓存模块中的当前线程的上一卷积基本计算模块的计算结果、当前滑动窗口内的待处理图像的输入特征图和FPGA的片上内存中的对应卷积核数据,依次进行预设的卷积计算顺序得到当前卷积基本计算模块的计算结果,并将当前卷积基本计算模块的计算结果存储于对应的缓存区;所述预设的卷积计算顺序为依次进行卷积、PRelu激活、正则归一化和二值激活计算,或者依次进行卷积、PRelu激活、池化、正则归一化和二值激活计算;
FPGA依据卷积计算逻辑规则遍历多个线程的卷积计算,得到待处理图像的输出特征图数据,以提高待检测图像的检测速度。


2.根据权利要求1所述的一种基于FPGA的二值神经网络加速系统,其特征在于,FPGA通过ARM端配置相应的控制寄存器,通过AXI总线从外部存储器DDR3中加载图像到片上内存的缓冲区;FPGA为卷积基本计算模块分配多个处理引擎,所述处理引擎包括算术运算组件、逻辑运算组件、位运算组件和存储资源。


3.根据权利要求2所述的一种基于FPGA的二值神经网络加速系统,其特征在于,依据预设的卷积计算顺序将卷积计算层分类为卷积层、PRelu激活层、池化层、正则归一化层和二值激活层,分别用于卷积、PRelu激活、池化、正则归一化和二值激活计算,利用位于同一个卷积计算层的多个计算引擎形成一个卷积加速阵列,一个卷积加速阵列利用FPG...

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

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

1