一种基于FPGA的轻量卷积神经网络可重构部署方法技术

技术编号:26343584 阅读:34 留言:0更新日期:2020-11-13 20:47
本发明专利技术提出了一种基于FPGA的轻量卷积神经网络可重构部署方法,在部署时通过配置卷积窗口列数与输出通道数等参数实现对不同资源状况的FPGA平台的适配,在运行前通过配置不同卷积层卷积核尺寸、池化步长、输入输出特征图尺寸、输入输出通道数实现对不同网络层的适配,构建基于FPGA的轻量卷积神经网络加速器实现网络可重构部署,轻量卷积神经网络加速器包括片外DDR数据交互单元、片上存储缓冲处理单元、计算引擎和中心控制单元。可以实现针对不同的FPGA平台,选择不同的实现方案进行部署,以最大程度地利用FPGA平台的现有资源,充分发挥FPGA平台的高并行度、高吞吐率与低功耗的特性,在较低功耗的情况下,高效快速地实现卷积神经网络推理加速。

Reconfigurable deployment method of lightweight convolutional neural network based on FPGA

【技术实现步骤摘要】
一种基于FPGA的轻量卷积神经网络可重构部署方法
本专利技术涉及人工智能
,更具体的说是涉及一种基于FPGA的轻量卷积神经网络可重构部署方法。
技术介绍
目前,由于CPU平台不能提供足够的计算能力,GPU凭借强大的计算性能,成为了首选神经网络处理平台。但是,GPU功耗较大,在对功耗要求较高的嵌入式平台部署比较困难。基于FPGA的神经网络推理加速器,已经成为新的研究热点,有望在计算速度和能效方面超越GPU平台。当前的卷积神经网络FPGA部署方案面临两个方面的挑战:首先,通常FPGA的工作频率为100~300MHz,远低于CPU和GPU的工作频率,同时由于FPGA的片上资源有限,只进行简单的设计很难达到较高的计算性能和能效。其次,由于开发基于FPGA的应用,缺乏像Caffe和Tensorflow这样的开发框架,因此,与CPU和GPU相比,开发FPGA应用要困难很多。而且神经网络算法的计算和存储复杂性都很高,权衡模型规模和算法精度是一个开放性问题。大规模的网络很难应用在对能耗和延时有严格要求的应用场景下。因此,如何解决卷积神经网络部署于计算资源、存储资源以及访存带宽受限的FPGA平台是本领域技术人员亟需解决的问题。
技术实现思路
有鉴于此,本专利技术提供了一种基于FPGA的轻量卷积神经网络可重构部署方法,在部署时通过配置卷积窗口列数与输出通道数等参数实现对不同资源状况的FPGA平台的适配,在运行前通过配置不同卷积层卷积核尺寸、池化步长、输入输出特征图尺寸、输入输出通道数实现对不同网络层的适配。基于FPGA硬件实现卷积神经网络推理过程中常用的卷积计算、量化计算、ReLU激活计算与最大池化计算过程,构建基于FPGA的轻量卷积神经网络加速器实现网络可重构部署,轻量卷积神经网络加速器包括片外DDR数据交互单元、片上存储缓冲处理单元、计算引擎和中心控制单元。可以实现针对不同的FPGA平台,选择不同的实现方案进行部署,以最大程度地利用FPGA平台的现有资源,充分发挥FPGA平台的高并行度、高吞吐率与低功耗的特性,在较低功耗的情况下,高效快速地实现卷积神经网络推理加速。为了实现上述目的,本专利技术采用如下技术方案:基于FPGA的轻量卷积神经网络可重构部署方法,包括以下具体步骤:步骤1:进行片上计算资源可重构:在部署时,根据部署的FPGA平台的可用DSP数量,综合要部署的轻量卷积神经网络卷积窗口大小,选择部署方案,进行所述片上计算资源的可重构;卷积计算窗口的列数为X,输出通道数为M,则卷积计算单元和量化计算单元均会占用所述列数X与所述输出通道数M乘积数量的DSP,部署的所述FPGA平台的所述可用DSP数量大于2倍的所述列数X与所述输出通道数M乘积数量;其中,所述列数X小于16,所述输出通道数M为16、32或64;步骤2:进行片上存储资源可重构:在运行前,根据要部署的轻量卷积神经网络结构,更改配置参数单元中的卷积层相关参数,以实现所述片上存储资源可重构;其中,在所述配置参数单元添加相应数量卷积层的配置参数,令偏置BRAM与量化参数BRAM足够存储所有所述卷积层的偏置与量化参数;卷积核尺寸为1或3,分别代表所述卷积核尺寸为1×1与3×3的所述卷积层;池化步长为0、1或2,分别代表池化核尺寸为2×2不池化、步长1池化与步长2池化的最大值池化层;首层输入特征图尺寸为部署卷积计算窗口列数X的偶数倍,其余各层输入特征图尺寸是上一层输入特征图经卷积池化处理后的输出特征图尺寸,每个输入特征图BRAM足够存储每一层卷积层全部输入通道X列数据的输入特征图,所述输入特征图尺寸的最小值是部署卷积计算窗口列数X;首层输入通道数为3,其余各层所述输入通道数与上一层所述输出通道数保持一致,每个权重BRAM足够存储每一层所述卷积层的全部输入通道与M个输出通道的权重;所述卷积层设置所述输出通道数为部署卷积计算窗口输出通道数M的倍数,最大为1024,每个所述输入特征图BRAM足够存储所述卷积层全部所述输入通道的所述X列输入特征图;步骤3:根据所述卷积窗口大小和所述配置参数构建基于FPGA的轻量卷积神经网络加速器,利用所述轻量卷积神经网络加速器进行所述轻量卷积神经网络可重构部署。优选的,所述轻量卷积神经网络加速器包括片外DDR数据交互单元、片上存储缓冲处理单元、计算引擎和中心控制单元;所述片外DDR数据交互单元从片外DDR读取输入特征图数据、权重数据、偏置数据与量化参数数据,并向所述片外DDR写入输出特征图数据;所述片上存储缓冲单元存储所述输入特征图数据、所述权重数据、所述偏置数据、所述量化参数数据与所述输出特征图数据;所述计算引擎进行所述输入特征图数据、所述权重数据、所述偏置数据与所述量化参数数据的卷积计算;所述中心控制单元根据当前卷积层参数,控制所述输入特征图数据、所述权重数据、所述偏置数据与所述量化参数的预加载,输出卷积结果数据的缓冲写入以及所述计算引擎的计算过程。优选的,所述片上存储缓冲处理单元包括输入特征图缓冲处理单元、权重缓冲处理单元、偏置与量化参数缓冲处理单元和输出特征图缓冲处理单元。优选的,根据所述卷积计算窗口的所述列数X与所述输出通道数M构建所述计算引擎,所述的计算引擎由M个单输出通道计算单元构成,M为卷积计算窗口输出通道数;所述单输出通道计算单元由X列2行卷积计算单元、X列量化计算单元、X列ReLU激活计算单元、最大池化计算单元、卷积计算部分和FIFO与池化结果缓存FIFO构成;所述X列2行卷积计算单元由X*2个卷积计算单元构成;所述卷积计算单元由1个乘法器、1个加法器、1个中间和Reg构成;在所述卷积计算单元先利用所述乘法器将所述8bit输入特征图数据与所述8bit权重数据相乘获得16bit结果,再利用所述加法器将所述16bit结果与所述中间和Reg暂存的24bit中间和相加,加法器结果作为卷积计算结果存入所述中间和Reg;所述X列量化计算单元由X个量化计算单元构成;所述量化计算单元由1个乘法器、1个移位计算器和1个8bit量化结果Reg构成;先利用所述乘法器将所述卷积计算结果与16bit量化参数中的高8bit的Scale_M参数相乘,再利用所述位移计算器将乘法器结果经移位运算向右移位,移位数是所述16bit量化参数中的低8bit的Scale_N参数,最后将移位结果中的低8bit作为量化计算结果,存入所述8bit量化结果Reg;所述X列ReLU激活计算单元由X个ReLU激活计算单元构成;所述ReLU激活计算单元由1个比较器与1个8bitReLU激活结果Reg构成;将所述量化计算结果与0进行比较,较大者作为ReLU激活计算结果,存入所述8bitReLU激活计算结果Reg;所述最大池化计算单元由1个X+1列1行缓冲Buffer、3*(X+1)/2个比较器和1个(X+1)/2列1行池化结果Reg组成;先将X列所述ReLU激活计算结果中的第0行经补列后存入所述X+1列1行缓冲Buffer,再对经补列后的第1行与所述X+1列1行缓冲Buffer中的X+1列第0行R本文档来自技高网...

【技术保护点】
1.一种基于FPGA的轻量卷积神经网络可重构部署方法,其特征在于,包括以下具体步骤:/n步骤1:进行片上计算资源可重构;在部署时,根据部署的FPGA平台的可用DSP数量,综合要部署的轻量卷积神经网络卷积窗口大小,选择不同卷积计算窗口的列数X与输出通道数M,达到所述片上计算资源可重构;/n步骤2:进行片上存储资源可重构;在运行前,根据要部署的轻量卷积神经网络结构,更改配置参数中的卷积层数、卷积核尺寸、池化步长、输入特征图尺寸、输入通道数和输出通道数,达到所述片上存储资源可重构;/n步骤3:根据所述卷积窗口大小和所述配置参数构建基于FPGA的轻量卷积神经网络加速器,利用所述轻量卷积神经网络加速器进行所述轻量卷积神经网络可重构部署。/n

【技术特征摘要】
1.一种基于FPGA的轻量卷积神经网络可重构部署方法,其特征在于,包括以下具体步骤:
步骤1:进行片上计算资源可重构;在部署时,根据部署的FPGA平台的可用DSP数量,综合要部署的轻量卷积神经网络卷积窗口大小,选择不同卷积计算窗口的列数X与输出通道数M,达到所述片上计算资源可重构;
步骤2:进行片上存储资源可重构;在运行前,根据要部署的轻量卷积神经网络结构,更改配置参数中的卷积层数、卷积核尺寸、池化步长、输入特征图尺寸、输入通道数和输出通道数,达到所述片上存储资源可重构;
步骤3:根据所述卷积窗口大小和所述配置参数构建基于FPGA的轻量卷积神经网络加速器,利用所述轻量卷积神经网络加速器进行所述轻量卷积神经网络可重构部署。


2.根据权利要求1所述的一种基于FPGA的轻量卷积神经网络可重构部署方法,其特征在于,所述轻量卷积神经网络加速器包括:片外DDR数据交互单元、片上存储缓冲处理单元、计算引擎和中心控制单元;所述片外DDR数据交互单元从片外DDR读取输入特征图数据、权重数据、偏置数据与量化参数数据,并向所述片外DDR写入输出特征图数据;所述片上存储缓冲单元存储所述输入特征图数据、所述权重数据、所述偏置数据、所述量化参数数据与所述输出特征图数据;所述计算引擎进行所述输入特征图数据、所述权重数据、所述偏置数据与所述量化参数数据的卷积计算;所述中心控制单元根据当前卷积层参数,控制所述输入特征图数据、所述权重数据、所述偏置数据与所述量化参数的预加载,输出卷积结果数据的缓冲写入以及所述计算引擎的计算过程。


3.根据权利要求2所述的一种基于FPGA的轻量卷积神经网络可重构部署方法,其特征在于,所述片上存储缓冲处理单元包括输入特征图缓冲处理单元、权重缓冲处理单元、偏置与量化参数缓冲处理单元和输出特征图缓冲处理单元。


4.根据权利要求2所述的一种基于FPGA的轻量卷积神经网络可重构部署方法,其特征在于,根据所述卷积计算窗口的所述列数X与所述输出通道数M构建所述计算引擎,所述的计算引擎由M个单输出通道计算单元构成,其中,M为卷积计算窗口输出通道数;
所述单输出通道计算单元由X列2行卷积计算单元、X列量化计算单元、X列ReLU激活计算单元、最大池化计算单元、卷积计算部分和FIFO与池化结果缓存FIFO构成;
所述X列2行卷积计算单元由X*2个卷积计算单元构成;所述卷积计算单元由1个乘法器、1个加法器、1个中间和Reg构成;在所述卷积计算单元先利用所述乘法器将所述8bit输入特征图数据与所述8bit权重数据相乘获得16bit结果,再利用所述加法器将所述16bit结果与所述中间和Reg暂存的24bit中间和相加,加法器结果作为卷积计算结果存入所述中间和Reg;
所述X列量化计算单元由X个量化计算单元构成;所述量化计算单元由1个乘法器、1个移位计算器和1个8bit量化结果Reg构成;先利用所述乘法器将所述卷积计算结果与16bit量化参数中的高8bit的Scale_M参数相乘,再利用所述位移计算器将乘法器结果经移位运算向右移位,移位数是所述16bit量化参数中的低8bit的Scale_N参数,最后将移位结果中的低8bit作为量化计算结果,存入所述8bit量化结果Reg;
所述X列ReLU激活计算单元由X个ReLU激活计算单元构成;所述ReLU激活计算单元由1个比较器与1个8bitReLU激活结果Reg构成;将所述量化计算结果与0进行比较,较大者作为ReLU激活计算结果,存入所述8bitReLU激活计算结果Reg;
所述最大池化计算单元由1个X+1列1行缓冲Buffer、3*(X+1)/2个比较器和1个(X+1)/2列1行池化结果Reg组成;先将X列所述ReLU激活计算结果中的第0行经补列后存入所述X+1列1行缓冲Buffer,再对经补列后的第1行与所述X+1列1行缓冲Buffer中的X+1列第0行ReLU激活计算结果进行2×2最大池化计算,较大者作为池化结果,存入(X+1)/2列1行池化结果Reg;
所述卷积计算部分和FIFO暂存部分输入通道X列2行的卷积计算24bit中间和,位宽为24*X,在存入前,将X列2行中间和转串行为X列1行;
所述池化结果缓存FIFO暂存前一个(X+1)/2列1行的最大池化计算结果,位宽为8*(X+1)/2。


5.根据权利要求2所述的一种基于FPGA的轻量卷积神经网络可重构部署方法,其特征在于,根据所述配置参数构建所述中心控制单元,所述的中心控制单元包括参数配置单元和控制中心单元;
所述参数配置单元,预存每层卷积层的配置参数,包括卷积核尺寸,池化步长,输入特征图尺寸,输入通道数量,输出通道数量,下一层的卷积核尺寸,根据当前卷积计算状态加载不同卷积层的配置参数;
所述控制中心单元,根据所述参数配置单元的所述当前卷积层参数,分别对所述片外DDR数据交互单元、所述片上存储缓冲处理单元与所述计算引擎进行动态配置,控制所述输入特征图数据、所述权重数据、所述偏置数据与所述量化参数从所述片外DDR的读取加载,所述输出卷积结果数据向所述片外DDR的写入以及卷积计算过程。


6.根据权利要求3所述的一种基于FPGA的轻量卷积神经网络可重构部署方法,其特征在于,所述的输入特征图缓冲处理单元包括输入特征图BRAM存储层、输入特征图Buffer存储层和输入特征图Reg存储层;
所述输入特征图BRAM存储层由4个输入特征图BRAM读写单元、1个输入特征图BRAM更新控制单元和1个输入特征图BRAM读取控制单元构成;所述输入特征图BRAM读写单元实现输入特征图BRAM实例,输入特征图BRAM采用双端口,更新与读取同时进行,存储当前层全部输入通道的X列8bit输入特征图数据,位宽为8*X,X为卷积计算窗口输入特征图列数;所述输入特征图BRAM更新控制单元根据待加载卷积层的输入特征图尺寸和输入通道数量,计算得到读片外DDR的所述突发传输次数与所述读DDR地址,传入所述读片外DDR控制单元,接收所述读片外DDR控制单元读取到的所述输入特征图数据,更新所述中心控制单元生成的待更新BRAM编号对应的输入特征图数据BRAM地址;所述输入特征图BRAM读取控制单元同时读取4个所述输入特征图BRAM的所述输入特征图数据,传入输入特征图Buffer存储层;
所述输入特征图Buffer存储层由输入特征图Buffer、输入特征图Buffer更新控制单元与输入特征图Buffer移位控制单元构成;所述输入特征图Buffer存储当前X+2列8bit所述输入特征图数据,位宽为8*(X+2),接收从所述输入特征图BRAM读取控制单元读取到的共4个X列8bit所述输入特征图数据;所述输入特征图Buffer更新控制单元根据当前所述中心控制单元生成的所述BRAM编号,分别确定X+2列8bit所述输入特征图数据中的左1列数据、中间X列数据与右1列数据,更新当前所述输入特征图Buffer;所述输入特征图Buffer移位控制单元对所述输入特征图Buffer进行移位处理,生成用于卷积计算的X列2行8bit所述输入特征图数据传入所述输入特征图Reg存储层;
所述输入特征图Reg存储层由2*X个输入特征图Reg与1个输入特征图...

【专利技术属性】
技术研发人员:李波刘晓戬姜宏旭张永华
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京;11

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

1