[发明专利]基于FPGA和行输出优先的卷积神经网络实现方法、系统及装置有效
申请号: | 201910323955.3 | 申请日: | 2019-04-22 |
公开(公告)号: | CN110097174B | 公开(公告)日: | 2021-04-20 |
发明(设计)人: | 程军;张津锐;梅魁志;李昕;于鹤杰;常蕃;赵英海;张良;张向楠 | 申请(专利权)人: | 西安交通大学 |
主分类号: | G06N3/04 | 分类号: | G06N3/04;G06N3/063 |
代理公司: | 西安通大专利代理有限责任公司 61200 | 代理人: | 徐文权 |
地址: | 710049 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 fpga 输出 优先 卷积 神经网络 实现 方法 系统 装置 | ||
1.一种基于FPGA和行输出优先的卷积神经网络实现方法,其特征在于,包括以下步骤:
初始化FPGA的可编辑资源,生成输入缓存模块、输出缓存模块、PE阵列模块和池化模块;其中,输入缓存模块包括图像缓存模块、权值缓存模块和偏置缓存模块;
通过FPGA的通信模块加载待处理图像数据、权值及偏置,并存储于FPGA的内存存储器;
将卷积计算分组,逐组进行卷积计算并累加,获得整个卷积计算的计算结果;获得的计算结果通过FPGA的通信模块输出;
其中,每组卷积计算包括:
PE阵列模块通过图像缓存模块、权值缓存模块和输入总线,逐行从内存存储器调用图像数据和权值,逐行进行卷积计算并将各行的卷积结果累加,获得该组卷积计算的卷积结果;
通过输出缓存模块存储PE阵列模块输出的中间卷积结果和该组卷积计算的卷积结果;PE阵列模块进行第Q行卷积计算时,将第Q-1行的卷积结果反馈至PE阵列模块进行累加,直至该组卷积计算计算完毕,输出该组卷积计算的卷积结果;
通过偏置缓存模块和输入总线调用偏置;将调用的偏置与输出缓存模块输出的该组卷积计算的卷积结果求和后输入池化模块,通过池化模块进行最大池化处理,获得该组卷积计算的最终卷积结果,并通过输出总线存储于FPGA的内存存储器;
对于待处理图像大小为J*K*N,卷积核大小为W*H*N*C的卷积运算;其中,J表示图像的宽度,K表示图像的高度,N表示帧数,W表示卷积核宽,H表示卷积核高,C表示卷积核组数;
生成PE阵列模块的步骤具体包括:例化W*N*C/α个DSP单元,生成卷积计算PE阵列,其中,α表示卷积计算分组数;其中,W*N*C/αDSPmax,DSPmax表示FPGA内支持的最大DSP单元数;
生成输出缓存模块的步骤具体包括:例化C/α条深度为F*α的缓存FIFO用于卷积计算的中间结果缓存,并将缓存FIFO输出反馈至PE阵列的输入;其中,F表示卷积输出图像的宽度;
逐行卷积计算的步骤具体包括:定义输入图像每个点表示为I(j,k,n),其中j、k、n分别表示输入图像数据的列、行、帧坐标,权值表示为其中w,h,n分别表示权值数据的列、行、帧坐标,c表示权值通道数,缓存FIFO中每个点表示为T(f,c),其中f,c分别表示输出缓存数据的列、帧坐标;
第1行输入图像的计算表达式为:
第1行图像与C组卷积核卷积完成后开始第2行计算;
第2行图像的卷积计算时,读出FIFO中第1行对应坐标的卷积结果缓存与第二行结果相加,并将新的结果重新存储至缓存FIFO中,新的结果表达式为:
以此类推,得到W*H*N*C的卷积结果,表达式为:
2.根据权利要求1所述的一种基于FPGA和行输出优先的卷积神经网络实现方法,其特征在于,生成池化模块的步骤具体包括:例化C/α个容量为D*R*α的SRAM,用于实现CNN模型中池化算法的计算;其中,D和R分别表示池化输出图像的宽度和高度。
3.根据权利要求2所述的一种基于FPGA和行输出优先的卷积神经网络实现方法,其特征在于,将SRAM的地址进行分段,用于输入卷积结果与对应坐标的缓存数据进行比较、更新;其中,低位地址表示图像的列,中间地址表示图像的行,高位地址表示图像的帧数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910323955.3/1.html,转载请声明来源钻瓜专利网。