[发明专利]基于FPGA的深度卷积神经网络实现方法有效
申请号: | 201610615714.2 | 申请日: | 2016-07-30 |
公开(公告)号: | CN106228240B | 公开(公告)日: | 2020-09-01 |
发明(设计)人: | 王展雄;周光朕;冯瑞 | 申请(专利权)人: | 复旦大学 |
主分类号: | G06N3/063 | 分类号: | G06N3/063;G06K9/62;G10L15/16 |
代理公司: | 上海正旦专利代理有限公司 31200 | 代理人: | 陆飞;陆尤 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明方法属于数字图像处理、模式识别技术领域。具体为一种基于FPGA的深度卷积神经网络实现方法。本发明实现的硬件平台是XilinxZYNQ‑7030可编程片上SoC,硬件平台内置FPGA和ARM Cortex A9处理器。本发明首先将训练好的网络模型参数加载到FPGA端,然后在ARM端对输入数据进行预处理,再将结果传输到FPGA端,在FPGA端实现深度卷积神经网络的卷积计算和下采样,形成数据特征向量并传输至ARM端,完成特征分类计算。本发明利用FPGA的快速并行处理和极低功耗的高效能计算特性,实现深度卷积神经网络模型中复杂度最高的卷积计算部分,在保证算法正确率的前提下,大幅提升算法效率,降低功耗。 | ||
搜索关键词: | 基于 fpga 深度 卷积 神经网络 实现 方法 | ||
【主权项】:
一种基于FPGA的深度卷积神经网络实现方法,其特征在于具体步骤为:步骤1、加载训练模型参数(1)在ARM端加载离线训练的深度卷积神经网络模型参数;(2)将训练模型参数传输至FPGA端;(3)FPGA端经过FIFO缓存后存储在块随机存储器中;步骤2、预处理深度卷积神经网络模型(1)对输入数据进行归一化处理,使其满足模型卷积运算要求;(2)利用APB总线将ARM端归一化数据传输至FPGA端;(3)FPGA端将归一化数据经过FIFO缓存后存入块随机存储器;步骤3、卷积和下采样计算设网络模型有H个卷积层和池化层,第h个卷积层输入为T个m×m 32位浮点数矩阵,h=1,2,…,H;输出为S个(m‑n+1)×(m‑n+1)32位浮点数矩阵,卷积核为K个n×n 32位浮点数矩阵,n≤m,输入数据滑动窗尺度为n×n,横向滑动步长为1,纵向滑动步长为1;(1)初始化卷积运算流水线定义n+1个数据缓存寄存器P0,P1,…,Pn‑1,Pn,每个寄存器存放m个数据,其中n个寄存器(P(i‑1)%(n+1)+0,P(i‑1)%(n+1)+1,…,P(i‑1)%(n+1)+n‑1)存放第t个输入数据矩阵的第i个子矩阵(n×m)数据,t=1,2,…,T,i=1,2,…,m‑n+1;用%表示取余数,如果(i‑1)%(n+1)+x>n,则(i‑1)%(n+1)+x=0,(i‑1)%(n+1)+x+1=1,…,其中x=0,1,…,n‑1;如果n<m,P(i‑1)%(n+1)+n寄存器存放输入数据矩阵中的第i+n行数据,在卷积计算过程中实现并行初始化,以减少FPGA空闲周期,提高计算效率;定义1个卷积核矩阵缓存寄存器W,存放第k个n×n个卷积核矩阵权值数据,k=1,2,…,K;(2)第h个卷积层计算完成网络第h个卷积层第t个输入数据矩阵和第k个卷积核的卷积计算,通过Sigmoid函数实现计算结果的激活;在进行每次卷积计算的同时,初始化第i+n个数据缓存寄存器P(i‑1)%(n+1)+n,作为卷积中第i+1个子矩阵卷积计算的缓存输入数据,实现循环卷积;在FPGA端通过浮点IP核构建Sigmoid函数,实现卷积计算结果的激活,Sigmoid函数的表达式为:;具体步骤为:如前所述,输入数据为m×m浮点数矩阵,卷积核为n×n浮点数矩阵,滑动窗尺度为n×n,横向滑动步长为1,纵向滑动步长为1,则卷积结果为(m‑n+1)×(m‑n+1)的浮点数矩阵,矩阵的每个元素加上偏置量b11即离线训练模型参数,利用Sigmoid函数激活后,结果为(m‑n+1)×(m‑n+1)的浮点数矩阵,存入Block RAM;完成1次卷积计算后,重新初始化卷积核矩阵缓存寄存器W,进行下一次卷积计算,往复循环卷积计算,计算结果为S个(m‑n+1)×(m‑n+1)浮点数矩阵,存入Block RAM;(3)第h个池化层计算实现第h个卷积层计算结果的池化计算,结果为S个[(m‑n+1)/2]×[(m‑n+1)/2]浮点数矩阵,存入Block RAM;具体步骤为:设卷积计算结果数据滑动窗尺度为2×2,步长为2,采用平均下采样法实现池化,即逐个2×2浮点数矩阵相加,计算结果取均值,获得S个[(m‑n+1)/2]×[(m‑n+1)/2]浮点数矩阵,作为第h+1个卷积层计算的输入矩阵;步骤4、分类计算将卷积计算和池化计算结果传回ARM端进行分类运算;具体步骤为:FPGA端将Block RAM中的卷积池化计算结果矩阵,通过FIFO缓存,APB总线传输至ARM端,ARM端利用Softmax运算完成数据分类计算,得到输入数据的分类结果并输出。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610615714.2/,转载请声明来源钻瓜专利网。