一种基于FPGA的通用卷积神经网络加速器实现方法技术

技术编号:37362495 阅读:8 留言:0更新日期:2023-04-27 07:10
本发明专利技术涉及深度学习、嵌入式机器视觉领域,特别是涉及一种基于FPGA的通用卷积神经网络加速器实现方法,包括处理器系统和可编程逻辑两部分,硬件平台采用XILINX的ZYNQ系列FPGA,在FPGA的处理器系统侧设计控制算法,在FPGA的可编程逻辑侧设计RTL卷积神经网络加速器IP,硬件系统中包含摄像头和VGA接口,对摄像头采集的图像进行识别,并将结果通过VGA接口输出到外接屏幕。本发明专利技术根据FPGA资源做了细粒度的优化,并且在精度满足要求的情况下,大量节约了资源,极大的提高了卷积神经网络的前向推理速度,具有更高的能效比。可根据本方法的架构进行拓展和裁剪,以便于对应更高和更低资源的FPGA。源的FPGA。源的FPGA。

【技术实现步骤摘要】
一种基于FPGA的通用卷积神经网络加速器实现方法


[0001]本专利技术涉及深度学习、嵌入式机器视觉领域,特别是涉及一种基于FPGA的通用卷积神经网络加速器实现方法。

技术介绍

[0002]目前,深度学习特别是卷积神经网络在目标检测和识别领域得到了广泛应用。随着卷积神经网络模型结构的复杂性增加和识别精度的提高,对部署平台的算力提出了挑战。目前,该类算法的部署几乎都以GPU为主,而难以在嵌入式平台以及低端的CPU运行,从而导致高性能的模型难以在基于嵌入式设备的移动端实现。另一方面,尽管ASIC芯片具有高算力,高能效等优点,可以在特定领域内代替GPU,但是ASIC的开发周期长,而神经网络的架构更新较快,导致硬件的迭代周期无法满足算法的要求。因此,FPGA以其并行性和计算结构的可快速重构性,以及低功耗,高能效的优点,为深度学习算法的部署提供了新的思路。同时卷积神经网络具有计算单一性的特点,这使得FPGA可以很容易做并行加速,从而满足高算力的要求。

技术实现思路

[0003]为解决上述问题,本专利技术提供一种基于FPGA的通用卷积神经网络加速器实现方法,其特征是异构计算,可拓展。所述异构即本专利技术所述方法采用软硬协同的方式设计了一种通用的卷积神经网络加速器架构,在FPGA的处理器系统侧设计了控制算法,在FPGA的可编程逻辑侧设计了RTL卷积神经网络加速器IP,通过配置可实现对不同网络模型的加速。
[0004]本专利技术的技术方案:
[0005]一种基于FPGA的通用卷积神经网络加速器实现方法,包括处理器系统(PL)和可编程逻辑(PL)两部分,硬件平台采用XILINX的ZYNQ系列FPGA,在FPGA的处理器系统侧设计控制算法,在FPGA的可编程逻辑侧设计RTL卷积神经网络加速器IP,硬件系统中包含摄像头和VGA接口,对摄像头采集的图像进行识别,并将结果通过VGA接口输出到外接屏幕。
[0006]所述处理器系统包括CORTEX

M0的处理器内核、DMA、DDR控制器、DDR、SDIO控制器,以及处理器运行控制算法和摄像头驱动程序;所述处理器运行控制算法包括在中断服务函数中根据网络层数关系计算对应的参数地址,DMA发送和接收的地址和使能信号,以及对RTL卷积神经网络加速器IP控制寄存器的写操作,所有的参数都保存在各自的数组中,每次计算需要的参数为数组中的一段数据,而参数要通过DMA发送给RTL卷积神经网络加速器IP,所以每次计算前要将所需数据对应的地址给到DMA,DMA把该段地址的数据发送给RTL卷积神经网络加速器IP,另外还要通过AXI_lite协议来配置加速器的计算模式,AXI_lite协议用4个32BIT的寄存器,将寄存器译码成需要的控制信息,传给RTL卷积神经网络加速器IP。
[0007]所述RTL卷积神经网络加速器IP包括矩阵生成模块、padding模块、DSP阵列模块、重量化模块、池化模块、AXI总线模块和多个片上缓存;片上缓存包括输入特征图缓存、权重
缓存、偏置缓存、中间结果缓存和输出特征图缓存,其中权重缓存、输入图像缓存及输出图像缓存均为8BIT,偏置缓存为16BIT,中间结果缓存为32BIT;加速器的输入输出为AXI_lite协议和AXI_stream协议接口;矩阵生成模块是在输入特征图上提取滑动窗口;padding模块采用硬件padding模式,用于在图像周围补零;DSP阵列模块为加速器的计算单元,用于并行加速乘累加操作;重量化模块是将计算完的高BIT数据量化为8BIT,以便下一层直接计算;池化模块即降采样,用于压缩特征图,提取特征;AXI总线模块包含AXI_lite模块和AXI_stream模块,AXI_lite模块用于传递控制信息,AXI_stream模块用于传递数据流;多个片上缓存用于量化后参数的存放以及输入特征图、中间计算结果和输出特征图的缓存。
[0008]所述矩阵生成模块由两个同步FIFO及外围控制电路构成;将FIFO首尾相连,数据依次进入第一个FIFO,第一个FIFO的输出将控制在下一行开始,并将读出的数据写入第二个FIFO,这样由缓存在FIFO中的两行数据以及输入的第三行数据就可以在每个时钟生成一个像素矩阵。
[0009]所述padding模块是为了让卷积输出的特征图尺寸与输入相同,卷积计算前和池化计算前在图像的周围补零;padding模块与输入特征图或者中间层结果缓存区配合工作;在padding模块中,对行列进行计数,根据需要设置的补零格式计算需要补零的位置,计数到对应的补零位置时,将读取使能拉低,而在其余位置将读使能拉高;padding模块支持两种补零格式,其一是在图像周围加一圈零,其二是在图像右侧和底边各加一圈零,比如输入图像的大小是28*28,经过第一种补零之后,尺寸变为30*30,而经过第二种之后,尺寸应变为29*29。
[0010]所述DSP阵列模块输入的数据有8BIT的特征图、8BIT的权重数据和16BIT的偏置数据;其中权重数据和特征图要进行乘累加,最后要加上偏置,所以输出的数据宽度为19BIT,经过重量化模块之后,位宽变为32BIT;在DSP阵列模块中,由于DSP的数据位宽是固定的,卷积的数据均为8BIT,可以利用乘法结合律使得一个DSP做两个乘法,所以用288个DSP做576个乘法,可实现64路卷积并行计算,这里乘法结果是8BIT;在乘法之后,设计加法树对乘法结果累加,比如对于3*3的窗口而言,有9个16BIT数进行累加,累加结果用20BIT保存,这里的数据要进入重量化模块。
[0011]所述重量化模块是为了让上一层计算的20BIT结果变为8BIT,然后8BIT用32BIT保存,后续会截位到8BIT,进而可直接用于下一层的输入,量化的原理与PC端量化原理相同,重量化模块的scale是在PC端量化算法中通过观测得到,只需要通过处理器系统用AXI_lite协议发送给加速器即可;另外由于不同网络之间卷积层数量不同的关系,在重量化之后设置了中间结果缓存区,用于多批次计算结果的累加,重量化模块还要控制中间结果缓存区的读使能,使中间层结果缓存区读出的数据与重量化模块的计算输出数据在时序上对齐,以便于多批次的累加;在重量化计算过程中涉及到舍入操作,选用两种舍入方法供配置,即向偶数舍入和四舍五入,根据软件算法版本不同,舍入不同,可以灵活选择,同时设计低BIT矫正算法,用于硬件实现向偶数舍入。
[0012]所述池化模块是指最大值池化,由一个同步FIFO及外部控制电路构成,原理为将输入的数据逐个比较大小,把结果存入FIFO中,第二行数据做同样的操作,等第二行的结果出现时要和上一行的数据比较,就得到了最大值池化的结果。
[0013]所述多个片上缓存均基于双口BRAM设计;其中,在权重缓存中,将输入权重数据流
进行转置,使其满足并行计算的格式要求;偏置缓存中,每个时钟输入64BIT的数据,即4个偏置参数(4*16BIT),两个是时钟输入一组(8*16BIT),分别存在8个BRAM中;而在输入特征图和输出特征图的缓本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于FPGA的通用卷积神经网络加速器实现方法,其特征在于,包括处理器系统和可编程逻辑两部分,硬件平台采用XILINX的ZYNQ系列FPGA,在FPGA的处理器系统侧设计控制算法,在FPGA的可编程逻辑侧设计RTL卷积神经网络加速器IP,硬件系统中包含摄像头和VGA接口,对摄像头采集的图像进行识别,并将结果通过VGA接口输出到外接屏幕;所述处理器系统包括CORTEX

M0的处理器内核、DMA、DDR控制器、DDR芯片、SDIO控制器,以及处理器运行控制算法和摄像头驱动程序;所述处理器运行控制算法包括在中断服务函数中根据网络层数关系计算对应的参数地址,DMA发送和接收的地址和使能信号,以及对RTL卷积神经网络加速器IP控制寄存器的写操作,所有的参数都保存在各自的数组中,每次计算需要的参数为数组中的一段数据,而参数要通过DMA发送给RTL卷积神经网络加速器IP,所以每次计算前要将所需数据对应的地址给到DMA,DMA把该段地址的数据发送给RTL卷积神经网络加速器IP,另外还要通过AXI_lite协议来配置加速器的计算模式,AXI_lite协议用4个32BIT的寄存器,将寄存器译码成需要的控制信息,传给RTL卷积神经网络加速器IP;所述RTL卷积神经网络加速器IP包括矩阵生成模块、padding模块、DSP阵列模块、重量化模块、池化模块、AXI总线模块和多个片上缓存;片上缓存包括输入特征图缓存、权重缓存、偏置缓存、中间结果缓存和输出特征图缓存,其中权重缓存、输入图像缓存及输出图像缓存均为8BIT,偏置缓存为16BIT,中间结果缓存为32BIT;加速器的输入输出为AXI_lite协议和AXI_stream协议接口;矩阵生成模块是在输入特征图上提取滑动窗口;padding模块采用硬件padding模式,用于在图像周围补零;DSP阵列模块为加速器的计算单元,用于并行加速乘累加操作;重量化模块是将计算完的高BIT数据量化为8BIT,以便下一层直接计算;池化模块即降采样,用于压缩特征图,提取特征;AXI总线模块包含AXI_lite模块和AXI_stream模块,AXI_lite模块用于传递控制信息,AXI_stream模块用于传递数据流;多个片上缓存用于量化后参数的存放以及输入特征图、中间计算结果和输出特征图的缓存;所述矩阵生成模块由两个同步FIFO及外围控制电路构成;将FIFO首尾相连,数据依次进入第一个FIFO,第一个FIFO的输出将控制在下一行开始,并将读出的数据写入第...

【专利技术属性】
技术研发人员:陈聪聪马艳华陈晓明徐琪灿宋泽睿
申请(专利权)人:大连理工大学
类型:发明
国别省市:

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

1