[发明专利]一种基于FPGA的轻量级CNN模型计算加速器有效
申请号: | 202010214304.3 | 申请日: | 2020-03-24 |
公开(公告)号: | CN111488983B | 公开(公告)日: | 2023-04-28 |
发明(设计)人: | 彭宇;姬森展;马宁;于希明;彭喜元 | 申请(专利权)人: | 哈尔滨工业大学 |
主分类号: | G06N3/082 | 分类号: | G06N3/082;G06F9/38;G06F15/78;G06N3/0464 |
代理公司: | 哈尔滨市松花江专利商标事务所 23109 | 代理人: | 刘强 |
地址: | 150001 黑龙*** | 国省代码: | 黑龙江;23 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 fpga 轻量级 cnn 模型 计算 加速器 | ||
1.一种基于FPGA的轻量级CNN模型计算加速器,其特征在于包括:权值缓存区、归一化层、卷积层、池化层、全连接层和Softmax分类器;
所述权值缓存区用于缓存卷积运算过程中的权值参数;
所述归一化层用于对特征图数据进行归一化处理;
所述卷积层用于对归一化后的数据和权值缓存区的权值参数数据进行卷积操作;
所述池化层用于对卷积后的数据进行平均池化;
所述全连接层和Softmax分类器用于对池化后的数据进行分类;
所述卷积层包括输入行缓冲区、PE单元、BN单元和激活函数单元,
所述输入行缓冲区用于存储从输入FIFO通道读取的数据,然后将数据传递到PE单元;
所述PE单元用于对数据进行乘累加操作,然后发送给BN单元;
所述BN单元用于对数据进行批量归一化处理,然后将数据传给激活函数单元;
所述激活函数单元用于对数据进行线性整流函数处理并将结果通过输出FIFO通道输出;
所述加速器还包括PE单元加速设计,所述PE单元加速设计包括行缓冲区设计和层内流水策略:
所述行缓冲区设计用于保证卷积层能够实现数据输入和输出的同步进行,行缓冲区的个数和深度由卷积核大小和输入特征图的尺寸决定,当卷积核的尺寸是K×K时,所述行缓冲区的个数为K个,在前K-1个行缓冲区缓存输入特征图块中每个通道的前K-1行数据,然后当第K个缓冲区缓存到第1个通道的第K个数据的时候启动PE单元进行计算;
某时刻输入的是第i个通道第m行第n列的数据,且mK,nk,此时PE单元需要分别读取K个行缓冲区的第n-k+1列到第n列一共K*K个数据进行卷积运算,同时需要对行缓冲区第n-k列的数据进行更新,前K-1个行缓冲区依次存储下一个行缓冲区对应位置,即第n-k列的数据,第K个行缓冲区清空该位置的数据,等待新数据输入;
所述卷积层采用层融合策略,所述层融合策略将卷积神经网络中的BN层和激活函数层作为独立的功能单元合并到统一的卷积层中,每当卷积层的PE单元计算出一个输出结果后,数据通过BN单元和激活单元进行相应的批量化归一化处理和激活处理,之后再将数据存储到存储器。
2.根据权利要求1所述的一种基于FPGA的轻量级CNN模型计算加速器,其特征在于所述PE单元包括乘法单元和加法单元,所述乘法单元用于从输入行缓冲区和权值参数缓存区分别读取参数进行相乘,所述加法单元用于将相乘之后的结果进行累加然后传给BN单元。
3.根据权利要求2所述的一种基于FPGA的轻量级CNN模型计算加速器,其特征在于所述BN单元批量归一化处理的公式为:
其中,,γ是缩放因子,β是平移因子,ε是接近0的极小值,yconv是卷积层的输出结果,Var(x)是数据的方差值,E(x)是此次批量数据的均值;
所述激活函数单元的激活函数为Relu函数,函数表达式为:f(x) = max(0,x)。
4.根据权利要求1所述的一种基于FPGA的轻量级CNN模型计算加速器,其特征在于所述卷积层设有流水策略单元,所述流水策略单元将卷积层内不同循环层次操作进行交叠,形成高效的循环流水线,并根据数组分块指令对行缓冲区的数据进行分块。
5.根据权利要求1所述的一种基于FPGA的轻量级CNN模型计算加速器,其特征在于所述卷积层为标准卷积、深度卷积或逐点卷积。
6.根据权利要求1所述的一种基于FPGA的轻量级CNN模型计算加速器,其特征在于所述加速器还包括数据流区域模块,所述数据流区域模块用于将卷积层、池化层和归一化层连接在一起,并使数据以数据流的形式通过。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工业大学,未经哈尔滨工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010214304.3/1.html,转载请声明来源钻瓜专利网。