CN109948777A - 基于fpga实现的卷积神经网络以及基于fpga实现卷积神经网络的实现方法 - Google Patents

基于fpga实现的卷积神经网络以及基于fpga实现卷积神经网络的实现方法 Download PDF

Info

Publication number
CN109948777A
CN109948777A CN201910147655.4A CN201910147655A CN109948777A CN 109948777 A CN109948777 A CN 109948777A CN 201910147655 A CN201910147655 A CN 201910147655A CN 109948777 A CN109948777 A CN 109948777A
Authority
CN
China
Prior art keywords
convolution
module
selector
input picture
pond
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910147655.4A
Other languages
English (en)
Inventor
罗龙宝
胡勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen University
Original Assignee
Shenzhen University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen University filed Critical Shenzhen University
Publication of CN109948777A publication Critical patent/CN109948777A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)
  • Image Analysis (AREA)

Abstract

本申请提供基于FPGA实现的卷积神经网络以及其实现方法,所述卷积神经网络包括:主处理器;AXI4互联总线;片外存储单元;以及CNN运算单元,其受控于主处理器,其包括:卷积模块,其用于将接收到的输入图像进行卷积运算,其与主处理器通过控制总线以及数据总线进行互联;池化模块,其用于进行池化运算,其连接卷积模块;激活函数模块,其用于按照预设方式进行运算,并将其运算得到的结果输出至片外存储单元中进行存储,其连接池化模块以及片外存储单元;其中,主处理器配置卷积模块中卷积核的数量使得其与卷积神经网络的不同层的输入图像和输出图像的数量能够匹配。本申请能够提升进行卷积运算的效率、降低系统功耗以及满足不同平台的设计要求。

Description

基于FPGA实现的卷积神经网络以及基于FPGA实现卷积神经网 络的实现方法
技术领域
本申请涉及图像处理领域,尤其涉及基于FPGA实现的卷积神经网络以及基于FPGA实现卷积神经网络的实现方法。
背景技术
卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元能够响应覆盖范围内的周围单元,对于大尺寸图像处理有出色表现。它包括卷积层(convolutional layer)和池化层(pooling layer)两部分。CNN主要用来识别位移、缩放、倾斜及其他形式扭曲不变的二维图形,具有高度的适应性。近年来,CNN网络向多个方向扩展,在面部识别、语音识别、运动分析等方面均有所突破,尤其在机器视觉、视频监控、人脸面部识别等领域得到越来越广泛的应用。
目前,CNN网络的实现方式大致分为五种,基于通用处理器(CPU)、通用计算图形处理器(GPGPU)、ASIC和现场可编程逻辑器件(FPGA)。CNN算法对运算能力的需求很大,CPU执行卷积神经网络的效率并不高,因此,通用计算图形处理器(GPGPU)进入了人们的视野[3]。GPGPU提供了大量的并行运算单元用于图像渲染,常适合用于CNN算法加速。但过大的功耗以及对于PC平台的依赖限制了GPGPU用于CNN加速的场景。
随着深度学习应用的井喷,目前已经有一些用于加速神经网络的定制芯片开始商用。TPU(Tensor Processing Unit,张量处理器),是谷歌打造的专为机器学习量身定做的处理器,执行每个操作及计算所需的晶体管数相比于GPGPU及FPGA更少,同时TPU上集成大量的MAC单元和极大的片上存储,因而效率更高,功耗更低,且芯片相对面积更小。但由于TPU是专门用在TensorFlow中执行特性功能的ASIC,因此它只能在TensorFlow中执行推理,灵活性差。此外,苹果、海思、寒武纪等公司推出了NPU(Neural-network Processing Unit)协处理器,由于NPU解决了冯·诺依曼结构中存储和分离式结构的制约,因此大大提高了网络前向传播的效率,同时降低功耗。但NPU作为商业协处理器,相对比较封闭,难以被一些嵌入式平台所采用。
发明内容
本申请提供一种基于FPGA实现的卷积神经网络以及基于FPGA实现卷积神经网络的实现方法,能够在解决现在实现CNN网络的几种芯片存在效率不高、功耗过大、灵活性查或者无法适用于一些特定的嵌入式平台的问题。
根据本申请的第一方面,本申请提供一种基于FPGA实现的卷积神经网络,所述卷积神经网络包括:主处理器,其用于配置卷积神经网络、划分任务以及任务调度;AXI4互联总线,其包括控制总线和数据总线,控制总线和数据总线均连接主处理器,控制总线使用AXI4-Lite协议,数据总线使用AXI-Master协议;片外存储单元,其用于存储输入图像以及输出图像,其与主处理器通过数据总线进行互联;以及CNN运算单元,其受控于主处理器,其与主处理器通过控制总线进行互联,其包括:卷积模块,其用于将接收到的输入图像进行卷积运算,其与主处理器通过控制总线以及数据总线进行互联;池化模块,其用于将卷积模块运算得到的值进行池化运算,其连接卷积模块;激活函数模块,其用于在判断当前的池化单元的运算结果满足预设条件时将池化单元的运算结果按照预设方式进行运算,并将其运算得到的结果输出至片外存储单元中进行存储,其连接池化模块以及片外存储单元;其中,主处理器根据配置信息配置CNN运算单元,主处理器配置卷积模块中卷积核的数量使得其与卷积神经网络的不同层的输入图像和输出图像的数量能够匹配,主处理器控制CNN运算单元读取片外存储单元中的输入图像,CNN运算单元的卷积模块对输入图像依次进行卷积运算,池化模块对卷积模块输出的值进行池化运算,激活函数模块将池化模块输出的值按照预设方式进行运算并将运算得到的图像数据输出到片外存储单元中作为输出图像进行保存。
优选地,主控制器配置卷积神经网络可接收的输入图像的数量为n,可形成的输出图像的数量为m,则输入图像依次标记为X1、X2...Xn,输出图像依次标记为Y1、Y2...Ym;主控制器配置卷积模块,卷积模块包括:m组卷积子模块,其中,第m组卷积子模块包括:n个第一选择器,其用于根据片选信号输出输入图像的像素值,第一选择器依次标记为A1m、A2m、A3m...Anm,其中第一选择器A1m、A2m、A3m...Anm分别接收输入图像X1、X2...Xn,其中,当片选信号被配置为1时,输出输入图像的像素值,当片选信号被配置为0时,输出的值为0;n个卷积核,其用于对第一选择器输出的像素值进行卷积运算,卷积核依次标记为K1m、K2m、K3m...Knm,卷积核K1m连接第一选择器A1m,卷积核K2m连接第一选择器A2m,依此类推,卷积核Knm连接第一选择器Anm;n个第二选择器,其用于根据片选信号输出卷积核的运算结果,第二选择器依次标记为B1m、B2m、B3m...Bnm,第二选择器B1m连接卷积核K1m,第二选择器B2m连接卷积核K2m,依此类推,第二选择器Bnm连接卷积核Knm,其中,当片选信号被配置为1时,输出卷积核的运算结果,当片选信号被配置为0时,输出的值为0;累加器,其用于将卷积子模块的第二选择器的输出值进行累加运算并输出累加值作为卷积子模块的输出值,其连接第二选择器;其中,每组卷积子模块均连接池化模块,池化模块连接激活函数模块,卷积子模块的输出值经过池化模块的池化运算以及经过激活函数模块按照预设方式运算后输出的数据作为输出图像Y1、Y2...Ym的像素值。
优选地,CNN运算单元还包括:第一FIFO存储器,其用于在卷积模块从片外存储单元读取输入图像的数据时用于缓存输入图像,其通过数据总线与片外存储单元实现连接;第二FIFO存储器,其用于在池化模块以及激活函数模块进行运算时缓存池化模块以及激活函数模块的运算数据,其连接卷积模块、池化模块以及激活函数模块。
优选地,卷积子模块基于VivadoHLS高级综合工具进行设计。
优选地,激活函数模块采用函数LReLU,则设定条件为接收到数值小于0,预设方式运算为将小于0的数值与设置值进行乘法运算以及将大于0的数值保持不变的数值进行输出。
优选地,输入图像的数量n和输出图像的数量m受FPGA资源的约束,则输入图像的数量的最大值Nmax和输出图像Mmax的数量的最大值根据公式:即可获得,卷积核的数量的最大值kmax根据公式:kmax=Nmax×Mmax获得,其中,PW为片外存储单元的带宽,RW为输入图像的像素位宽,SW为输出图像的像素位宽。
根据本申请的第二方面,本申请提供一种基于FPGA实现的卷积神经网络的实现方法,所述方法包括:设置主处理器,其用于配置卷积神经网络、划分任务以及任务调度;设置AXI4互联总线,其包括控制总线和数据总线,控制总线和数据总线均连接主处理器,控制总线使用AXI4-Lite协议,数据总线使用AXI-Master协议;设置片外存储单元,其用于存储输入图像以及输出图像,其与主处理器通过数据总线进行互联;以及设置CNN运算单元,其受控于主处理器,其与主处理器通过控制总线进行互联,其包括:设置卷积模块,其用于将接收到的输入图像进行卷积运算,其与主处理器通过控制总线以及数据总线进行互联;设置池化模块,其用于将卷积模块运算得到的值进行池化运算,其连接卷积模块;设置激活函数模块,其用于在判断当前的池化单元的运算结果满足预设条件时将池化单元的运算结果按照预设方式进行运算,并将其运算得到的结果输出至片外存储单元中进行存储,其连接池化模块以及片外存储单元;其中,主处理器根据配置信息配置CNN运算单元,主处理器配置卷积模块中卷积核的数量使得其与卷积神经网络的不同层的输入图像和输出图像的数量能够匹配,主处理器控制CNN运算单元读取片外存储单元中的输入图像,CNN运算单元的卷积模块对输入图像依次进行卷积运算,池化模块对卷积模块输出的值进行池化运算,激活函数模块将池化模块输出的值按照预设方式进行运算并将运算得到的图像数据输出到片外存储单元中作为输出图像进行保存。
优选地,在设置CNN运算单元的步骤中,包括:主控制器配置卷积神经网络可接收的输入图像的数量为n,可形成的输出图像的数量为m,则输入图像依次标记为X1、X2...Xn,输出图像依次标记为Y1、Y2...Ym;主控制器配置卷积模块,卷积模块包括:m组卷积子模块,其中,第m组卷积子模块包括:n个第一选择器,其用于根据片选信号输出输入图像的像素值,第一选择器依次标记为A1m、A2m、A3m...Anm,其中第一选择器A1m、A2m、A3m...Anm分别接收输入图像X1、X2...Xn,其中,当片选信号被配置为1时,输出输入图像的像素值,当片选信号被配置为0时,输出的值为0;n个卷积核,其用于对第一选择器输出的像素值进行卷积运算,卷积核依次标记为K1m、K2m、K3m...Knm,卷积核K1m连接第一选择器A1m,卷积核K2m连接第一选择器A2m,依此类推,卷积核Knm连接第一选择器Anm;n个第二选择器,其用于根据片选信号输出卷积核的运算结果,第二选择器依次标记为B1m、B2m、B3m...Bnm,第二选择器B1m连接卷积核K1m,第二选择器B2m连接卷积核K2m,依此类推,第二选择器Bnm连接卷积核Knm,其中,当片选信号被配置为1时,输出卷积核的运算结果,当片选信号被配置为0时,输出的值为0;累加器,其用于将卷积子模块的第二选择器的输出值进行累加运算并输出累加值作为卷积子模块的输出值,其连接第二选择器;其中,每组卷积子模块均连接池化模块,池化模块连接激活函数模块,卷积子模块的输出值经过池化模块的池化运算以及经过激活函数模块按照预设方式运算后输出的数据作为输出图像Y1、Y2...Ym的像素值。
优选地,在设置CNN运算单元的步骤中,还包括:设置CNN运算单元包括:第一FIFO存储器,其用于在卷积模块从片外存储单元读取输入图像的数据时用于缓存输入图像,其通过数据总线与片外存储单元实现连接;第二FIFO存储器,其用于在池化模块以及激活函数模块进行运算时缓存池化模块以及激活函数模块的运算数据,其连接卷积模块、池化模块以及激活函数模块。
优选地,卷积子模块基于Vivado HLS高级综合工具进行设计。
优选地,在设置激活函数模块的步骤中,包括:设置激活函数模块采用函数LReLU,则设定条件为接收到数值小于0,预设方式运算为将小于0的数值与设置值进行乘法运算以及将大于0的数值保持不变的数值进行输出。
优选地,输入图像的数量n和输出图像的数量m受FPGA资源的约束,则输入图像的数量的最大值Nmax和输出图像Mmax的数量的最大值根据公式:即可获得,卷积核的数量的最大值kmax根据公式:kmax=Nmax×Mmax获得,其中,PW为片外存储单元的带宽,RW为输入图像的像素位宽,SW为输出图像的像素位宽。
本申请的有益效果在于:本申请通过配置CNN运算单元中卷积模块的模板,该卷积模块的模板的卷积核的数量能够与卷积神经网络不同层的输入图像和输出图像的数量能够匹配,使用这个模板可以实现现有常见的神经网络卷积运算,不同的网络即使有不同的网络层数只要复用该模板即可,这样就能够使设计卷积神经网络更为简单方便,并且提升了系统CNN网络运算的运算效率,减少了系统的功耗,也能够适用于不同的嵌入式平台,使得产品适用范围更为广泛。
附图说明
图1是本申请基于FPGA实现的卷积神经网络的原理图;
图2是本申请的CNN运算单元的原理图;
图3是本申请的卷积子模块采用HLS设计后进行性能评估和资源占用评估的示意图;
图4是本申请的基于FPGA实现的卷积神经网络的工作流程图;
图5是本申请的采用不同数量输入图像时CNN运算单元资源利用率的示意图;以及
图6是本申请基于FPGA实现的卷积神经网络的实现方法的示意图。
附图标记说明:主处理器1片外存储单元2CNN运算单元3卷积模块31池化模块32激活函数模块33第一FIFO存储器34第二FIFO存储器35。
具体实施方式
下面通过具体实施方式结合附图对本申请作进一步详细说明。
本申请的构思是:通过配置CNN运算单元中卷积模块的模板,能够使得设计卷积神经网络更为简单方便,并且提升了系统CNN网络运算的运算效率,也能够适用于不同的嵌入式平台。
请参阅图1至图6,本申请提出一种基于FPGA实现的卷积神经网络,其包括:主处理器1、AXI4互联总线、片外存储单元2以及CNN运算单元3。
请继续参阅图1,主处理器1,其用于配置卷积神经网络、划分任务以及任务调度;AXI4互联总线,其包括控制总线和数据总线,控制总线和数据总线均连接主处理器1,控制总线使用AXI4-Lite协议,数据总线使用AXI-Master协议;片外存储单元2,其用于存储输入图像以及输出图像,其与主处理器1通过数据总线进行互联;以及CNN运算单元3,其受控于主处理器1,其与主处理器1通过控制总线进行互联,其包括:卷积模块31,其用于将接收到的输入图像进行卷积运算,其与主处理器1通过控制总线以及数据总线进行互联;池化模块32,其用于将卷积模块31运算得到的值进行池化运算,其连接卷积模块31;激活函数模块33,其用于在判断当前的池化单元的运算结果满足预设条件时将池化单元的运算结果按照预设方式进行运算,并将其运算得到的结果输出至片外存储单元2中进行存储,其连接池化模块32以及片外存储单元2;其中,主处理器1根据配置信息配置CNN运算单元3,主处理器1配置卷积模块31中卷积核的数量使得其与卷积神经网络的不同层的输入图像和输出图像的数量能够匹配,主处理器1控制CNN运算单元3读取片外存储单元2中的输入图像,CNN运算单元3的卷积模块31对输入图像依次进行卷积运算,池化模块32对卷积模块31输出的值进行池化运算,激活函数模块33将池化模块32输出的值按照预设方式进行运算并将运算得到的图像数据输出到片外存储单元2中作为输出图像进行保存。
本实施例中,主处理器1负责划分任务、任务调度与性能评估等工作。主处理器1采用已经开源的Xilinx公司提供的Microblaze处理器作为系统的主处理器1。
本实施例中,主处理器1根据配置信息配置CNN运算单元3,配置信息包括:卷积子模块中卷积核参与卷积运算的数量、第一选择器和第二选择器的数量、卷积核的权重、工作模式、使用激活函数模块33的预设条件以及激活函数模块33运算时使用的函数。
请参阅图2,主控制器配置卷积模块31,卷积模块31包括:m组卷积子模块,其中,第m组卷积子模块包括:
n个第一选择器,其用于根据片选信号输出输入图像的像素值,第一选择器依次标记为A1m、A2m、A3m...Anm,其中第一选择器A1m、A2m、A3m...Anm分别接收输入图像X1、X2...Xn,其中,当片选信号被配置为1时,输出输入图像的像素值,当片选信号被配置为0时,输出的值为0;
n个卷积核,其用于对第一选择器输出的像素值进行卷积运算,卷积核依次标记为K1m、K2m、K3m...Knm,卷积核K1m连接第一选择器A1m,卷积核K2m连接第一选择器A2m,依此类推,卷积核Knm连接第一选择器Anm;
n个第二选择器,其用于根据片选信号输出卷积核的运算结果,第二选择器依次标记为B1m、B2m、B3m...Bnm,第二选择器B1m连接卷积核K1m,第二选择器B2m连接卷积核K2m,依此类推,第二选择器Bnm连接卷积核Knm,其中,当片选信号被配置为1时,输出卷积核的运算结果,当片选信号被配置为0时,输出的值为0;
累加器,其用于将卷积子模块的第二选择器的输出值进行累加运算并输出累加值作为卷积子模块的输出值,其连接第二选择器;
其中,每组卷积子模块均连接池化模块32,池化模块32连接激活函数模块33,卷积子模块的输出值经过池化模块32的池化运算以及经过激活函数模块33按照预设方式运算后输出的数据作为输出图像Y1、Y2...Ym的像素值。
本实施例中,第一选择器和第二选择器均为三输入选择器,其中,第一选择器包括接收输入图像的像素值的第一输入端口、接收片选信号“0”值的第二输入端口、接收片选信号“1”值时的第三输入端口和输出端口,当第二输入端口接收到片选信号“1”值时,第一选择器的输出端口输出输入图像的像素值,当第二输入端口接收到片选信号“0”值时,第一选择器的输出端口输出的值为0;第二选择器包括接收卷积核的运算结果的第一输入端口、接收片选信号“0”值的第二输入端口、接收片选信号“1”值时的第三输入端口和输出端口,当第二输入端口接收到片选信号“1”值时,第一选择器的输出端口输出卷积核的运算结果,当第二输入端口接收到片选信号“0”值时,第一选择器的输出端口输出的值为0。
举例如下:请参阅图2,假设输入图片的数量有三张X1、X2、X3,输出图片的数量有一张Y1,则需要选通X1、X2、X3及Y1,此时第一选择器A11、A21、A31和第二选择器B11、B21、B31需要将片选信号配置为1,亦既是第一选择器A11、A21、A31和第二选择器B11、B21、B31的第三输入端口均接收片选信号“1”值,其它选择器的片选信号配置为0。这样置为1的选择器输出输入图像像素通过,片选信号置为0的选择器输出一个0值,亦既是,第一选择器A11和第二选择器B11输出输入图像X1的像素值,第一选择器A21和第二选择器B21输出输入图像X2的像素值,第一选择器A31和第二选择器B31输出输入图像X3的像素值。
假设输入图像的数量有三张X1、X2、X3,输出图像的数量有两张Y1、Y2时,则需要选通X1、X2、X3、Y1、Y2,此时,第一选择器A11、A21、A31、A12、A22、A32、A13、A23、A33需要将片选信号配置为1,第二选择器B11、B21、B31、B12,B22、B32需要将片选信号配置为1,亦既是第一选择器A11、A21、A31、A12、A22、A32、A13、A23、A33和第二选择器B11、B21、B31、B12,B22、B32的第三输入端口均接收到片选信号“1”值。
假设输入图像的数量有五张X1、X2、X3、X4、X5,输出图像的数量有两张Y1、Y2时,第一选择器A11、A21、A31、A41、A51、A12、A22、A32、A42、A52需要将片选信号配置为1,第二选择器B11、B21、B31、B41、B51、B12、B22、B32、B42、B52需要将片选信号配置为1,亦既是第一选择器A11、A21、A31、A12、A22、A32、A13、A23、A33和第二选择器B11、B21、B31、B12,B22、B32的第三输入端口均接收到片选信号“1”值。
可以看到,本申请的卷积模块31采用的并行的卷积神经网络模板,输入图像表示为X1...Xn,输出图像表示Y1...Ym,卷积核基本计算单元表示为K11,K21...Kn1,K1m,K2m...Knm。
本实施例中,为充分开发卷积神经网络的并行性及充分利用FPGA的可配置性与逻辑资源,输入图像的数量n和输出图像的数量m受FPGA资源的约束,则输入图像的数量的最大值Nmax和输出图像的数量的最大值Mmax,根据公式:即可获得,其中,PW为片外存储单元2的带宽,RW为输入图像的像素位宽,SW为输出图像的像素位宽。而卷积核的数量的最大值kmax根据公式:kmax=Nmax×Mmax获得。比如,如果片外存储单元2的带宽PW=256bit,输入图像的像素位宽RW=32bit,输出图像的像素位宽SW=32bit时,则输入图像的数量的最大值Nmax和输出图像Mmax的数量:Nmax=Mmax=8。可接收的输入图像的数量为n≤输入图像的数量的最大值Nmax,可接收的输入图像的数量为m≤输出图像的数量的最大值Mmax。为保证计算效率,取n=m=6,则此时卷积核的数量为36。亦既是说,当片外存储单元2的带宽PW=256bit,输入图像的像素位宽RW=32bit,输出图像的像素位宽SW=32bit时,为了保证计算的效率,可以控制输入图像和输出图像的数量均为6,配置卷积核的数量为36。
因此,本实施例中,当片外存储单元2的带宽PW=256bit,输入图像的像素位宽RW=32bit,输出图像的像素位宽SW=32bit时,输入图像可标记为X1、X2、X3、X4、X5、X6,输出图像可标记为Y1、Y2、Y3、Y4、Y5、Y6,卷积核可标记为K11、K21、K31...K61,K12、K22、K32...K62,...K16、K26、K36...K66。第一选择器标记为A11、A21...A61,A12、A22、A32...A62,...A16、A26、A36...A66,第二选择器标记为B11、B21...B61,B12、B22、B32...B62,...B16、B26、B36...B66。
通过配置卷积核的数量能够与卷积神经网络不同层的输入图像和输出图像的数量能够匹配。使用这个模板可以实现现有常见的神经网络卷积运算,不同的网络有不同的网络层数,每层有不同的卷积核数量,只要复用该模板即可。
本实施例中,卷积子模块基于Vivado HLS高级综合工具进行设计。使用HLS工具可以从粗优化、精优化、总线化3个方面对设计进行优化,实现算法从串行运算到并行运算的转换,从而提高对数据的处理速度,优化完成后,对卷积算法再进行综合。请参阅图3,图3为卷积子模块采用HLS设计后进行性能评估和资源占用评估的示意图,可以看到s_default为未优化时的延迟时间,s_axi为优化后的延迟时间,优化后的延迟时间(Latency)是远小于未优化的延迟时间的。因此,使用Vivado HLS高级综合工具来实现卷积IP核优势在于便于优化,同时大大减少工作量,缩短FPGA开发周期。
进一步地,请继续参阅图1,CNN运算单元3还包括:第一FIFO存储器34,其用于在卷积模块31从片外存储单元2读取输入图像的数据时用于缓存输入图像,其通过数据总线与片外存储单元2实现连接;第二FIFO存储器35,其用于在池化模块32以及激活函数模块33进行运算时缓存池化模块32以及激活函数模块33的运算数据,其连接卷积模块31、池化模块32以及激活函数模块33。
本实施例中,池化模块32的池化运算是计算输入图像中的一个区域某个特定特征的最大值,这样就能够降低图像分辨率。
本实施例中,激活函数模块33采用函数LReLU,则设定条件为接收到数值小于0,预设方式运算为将小于0的数值与设置值进行乘法运算以及将大于0的数值保持不变的数值进行输出。亦既是说,当激活函数模块33的函数检测到输入图像的像素值大于0时,输出保持不变,否则输出为到输入图像的像素值与设定值进行相乘的积作为所述激活函数模块33的输出,其中,设定值=0.2。进一步地,根据工作模式的不同,主处理器1配置是否激活函数模块33进行运算。
本实施例中,片外存储单元2为DDR存储器。该DDR存储器通过DDR InterfaceController与AXI连接。
下面结合图1至图5来对本申请的基于FPGA实现的卷积神经网络的工作原理进行说明。
首先,主处理器1读入配置信息,该配置信息包括卷积子模块中卷积核参与卷积运算的数量、第一选择器和第二选择器的数量、卷积核的权重、工作模式、使用激活函数模块33的预设条件以及激活函数模块33运算时使用的函数。
主处理器1根据配置信息配置卷积子模块中卷积核的数量、第一选择器和第二选择器的数量以形成用于进行卷积运算的CNN运算单元3。其中,当输入图像的数量为n,输出图像的数量为m时,卷积核的数量为n*m,主处理器1根据输入图像和输出图像的数量配置第一选择器和第二选择器的片选信号。
接着,主处理器1从DDR存储器中读取输入图像的像素值,将读取到的像素值存入至第一FIFO存储器34中进行缓存。
主处理器1控制卷CNN运算单元3读取第一FIFO存储器34中的输入图像的像素值和存放在BRAM中的卷积核的权值,CNN运算单元3进行卷积运算。
累加器将不同卷积子模块的运算结果进行乘累加,并判断累加是否结束,若累加结束,则池化模块32将累加的值输出值进行池化运算。接着主处理器1根据当前的工作模式的配置判断是否需要使用激活函数模块33,如果当前的工作模式workmode为1时,则使用激活函数模块33,激活函数模块33采用函数LReLU,则设定条件为接收到数值小于0,预设方式运算为将小于0的数值与设置值进行乘法运算以及将大于0的数值保持不变的数值进行输出,最后将激活函数模块33运算得到的数据写第二FIFO存储器35中,第二FIFO存储器35再输出至片外存储器DDR中,如果当前的工作模式workmode为0时,直接将池化模块32运算得到的数据写回到DDR中。
下面对本申请的卷积神经网络性配置实验环境来进行仿真验证。
实验环境是:使用Xilinx公司的Vivado与HLS工具进行硬件开发,FPGA使用XC7Z010系列,摄像头采用CMOS镜头。采用数字识别库采用MNIST数据集进行测试,测试集仅采用50幅图像,每幅图像的像素大小为28×28的灰度图像,灰度值由0~255表示。用CPU平台与FPGA平台做对比,CNN模型与在FPGA平台下完全一致。CPU采用Intel Corei7-5500,基准主频为2.4GHz。
首先,对CNN基本运算单元仿真,其中,输入图像的大小为40×40时,Vivado完成布局布线后,CNN网络基本单元的资源利用情况如表1所示。通过表1可以看到DSP(DigitalSignal Processing,数字信号处理)、FF(Flip Flop,触发器)、LUT(Look-Up-Table,查找表)的使用情况。
资源 DSP FF LUT
使用资源 36 3979 4093
表1CNN单元资源利用
表2展示了本申请的基本运算单元与其他文献设计的基本运算单元在FPGA中的资源利用情况对比。文献[1]和文献[2]均采用手写数字字符识别网络,该网络包括两个卷积层,与本申请相同,采用平均池化进行子抽样,输入图像的大小均为28×28。其中,文献1是“A CNNAccelerator with Flexible Buffering to Minimize Off-Chip Transfer”,文献2是“方睿,刘加贺,薛志辉,&杨广文.(2015).卷积神经网络的fpga并行加速方案设计”,等效的一个基本运算单元为含有一个卷积核的卷积单元。
表2基本运算单元在FPGA中资源使用情况
从表2中可以看出,CNN网络每个基本运算单元,本申请的设计资源占用的更少,即能支持更多的卷积核统时计算。这是因为本申请的卷积模块31使用HLS中设计,能够更好的进行资源优化,因此本申请设计的运算单元资源占用更少。
请参阅图5,图5是不同数量输入图像的资源利用率,图5表示随输入图像数量增加,FPGA资源利用情况。横轴表示输入图像数量,纵轴表示资源利用率。可以看到随着输入图像数量的增多,DSP、FF、LUT的资源利用率是越来越高的。然后,对CNN网络进行测试。200MHz工作频率下FPGA前向传播的计算速度如表3所示。对单幅输入图像识别速率,忽略图像的传输时间,仅统计原生的计算速度。在FPGA中仅需0.177ms,而在通用处理器中单次运算的耗时为1.13ms,FPGA加速了6倍以上。使用MNIST测试集进行批量测量,将输入图像大小修改为28×28,每个像素的取值在0~255的整数范围内,对该数据进行了初始化,使得输入网络的数值范围变为[-1,1],网络结构如表4所示。FPGA处理50幅图像的总时间为7.396ms,平均时间为0.148ms;而在CPU中耗时45.81ms,平均时间为0.916ms,加速比为6.2。
数量 FPGA CPU 加速比
平均时间 1 0.148ms 0.916ms 6.18
总时间 50 7.396ms 45.81ms 6.2
表3计算速度对比
表4网络结构
通过Xilinx的Xpower工具,得到FPGA的运行功耗大致为1.258W;通用CPU功耗为48W,相比之下,FPGA功耗为通用CPU的2.62%。
可以得出结论:本申请提出可配置的CNN网络加速器,设计了一个可以被SOC集成的轻量级CNN加速单元以降低系统的功耗,具有通用性。通过流水线结构和对卷积子模块的基本优化,提升了卷积运算的并行度及运算效率,在单个时钟周期内可以完成25次乘累加运算。实验结果表明,本申请的设计有效的提高了运算速度,并减少功耗。
请参阅图6,本申请还提供一种基于FPGA实现的卷积神经网络的实现方法,该方法包括:
步骤S601:设置主处理器,其用于配置卷积神经网络、划分任务以及任务调度;
步骤S602:设置AXI4互联总线,其包括控制总线和数据总线,控制总线和数据总线均连接主处理器,控制总线使用AXI4-Lite协议,数据总线使用AXI-Master协议;设置片外存储单元,其用于存储输入图像以及输出图像,其与主处理器通过数据总线进行互联;
步骤S603:设置CNN运算单元,其受控于主处理器,其与主处理器通过控制总线进行互联,其包括:设置卷积模块,其用于将接收到的输入图像进行卷积运算,其与主处理器通过控制总线以及数据总线进行互联;设置池化模块,其用于将卷积模块运算得到的值进行池化运算,其连接卷积模块;设置激活函数模块,其用于在判断当前的池化单元的运算结果满足预设条件时将池化单元的运算结果按照预设方式进行运算,并将其运算得到的结果输出至片外存储单元中进行存储,其连接池化模块以及片外存储单元;其中,主处理器根据配置信息配置CNN运算单元,主处理器控制CNN运算单元读取片外存储单元中的输入图像,CNN运算单元的卷积模块对输入图像依次进行卷积运算,池化模块对卷积模块输出的值进行池化运算,激活函数模块将池化模块输出的值按照预设方式进行运算并将运算得到的图像数据输出到片外存储单元中作为输出图像进行保存。
在步骤S603中,包括:主控制器配置卷积神经网络可接收的输入图像的数量为n,可形成的输出图像的数量为m,则输入图像依次标记为X1、X2...Xn,输出图像依次标记为Y1、Y2...Ym;主控制器配置卷积模块,卷积模块包括:m组卷积子模块,其中,第m组卷积子模块包括:n个第一选择器,其用于根据片选信号输出输入图像的像素值,第一选择器依次标记为A1m、A2m、A3m...Anm,其中第一选择器A1m、A2m、A3m...Anm分别接收输入图像X1、X2...Xn,其中,当片选信号被配置为1时,输出输入图像的像素值,当片选信号被配置为0时,输出的值为0;n个卷积核,其用于对第一选择器输出的像素值进行卷积运算,卷积核依次标记为K1m、K2m、K3m...Knm,卷积核K1m连接第一选择器A1m,卷积核K2m连接第一选择器A2m,依此类推,卷积核Knm连接第一选择器Anm;n个第二选择器,其用于根据片选信号输出卷积核的运算结果,第二选择器依次标记为B1m、B2m、B3m...Bnm,第二选择器B1m连接卷积核K1m,第二选择器B2m连接卷积核K2m,依此类推,第二选择器Bnm连接卷积核Knm,其中,当片选信号被配置为1时,输出卷积核的运算结果,当片选信号被配置为0时,输出的值为0;累加器,其用于将卷积子模块的第二选择器的输出值进行累加运算并输出累加值作为卷积子模块的输出值,其连接第二选择器;其中,每组卷积子模块均连接池化模块,池化模块连接激活函数模块,卷积子模块的输出值经过池化模块的池化运算以及经过激活函数模块按照预设方式运算后输出的数据作为输出图像Y1、Y2...Ym的像素值。
在步骤S603中,还包括:设置CNN运算单元包括:第一FIFO存储器,其用于在卷积模块从片外存储单元读取输入图像的数据时用于缓存输入图像,其通过数据总线与片外存储单元实现连接;第二FIFO存储器,其用于在池化模块以及激活函数模块进行运算时缓存池化模块以及激活函数模块的运算数据,其连接卷积模块、池化模块以及激活函数模块。
本实施例中,卷积子模块基于Vivado HLS高级综合工具进行设计。
在设置激活函数模块的步骤中,包括:设置激活函数模块采用函数LReLU,则设定条件为接收到数值小于0,预设方式运算为将小于0的数值与设置值进行乘法运算以及将大于0的数值保持不变的数值进行输出。
输入图像的数量n和输出图像的数量m受FPGA资源的约束,则输入图像的数量的最大值Nmax和输出图像Mmax的数量的最大值根据公式:即可获得,卷积核的数量的最大值kmax根据公式:kmax=Nmax×Mmax获得,其中,PW为片外存储单元的带宽,RW为输入图像的像素位宽,SW为输出图像的像素位宽。
本申请的有益效果在于:本申请通过配置CNN运算单元中卷积模块的模板,该卷积模块的模板的卷积核的数量能够与卷积神经网络不同层的输入图像和输出图像的数量能够匹配,使用这个模板可以实现现有常见的神经网络卷积运算,不同的网络即使有不同的网络层数只要复用该模板即可,这样就能够使设计卷积神经网络更为简单方便,并且提升了系统CNN网络运算的运算效率,并且减少了系统的功耗,也能够适用于不同的嵌入式平台,使得产品适用范围更为广泛。
本领域技术人员可以理解,上述实施方式中各种方法的全部或部分步骤可以通过程序来指令相关硬件完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存取存储器、磁盘或光盘等。
以上内容是结合具体的实施方式对本申请所作的进一步详细说明,不能认定本申请的具体实施只局限于这些说明。对于本申请所属技术领域的普通技术人员来说,在不脱离本申请发明构思的前提下,还可以做出若干简单推演或替换。

Claims (10)

1.一种基于FPGA实现的卷积神经网络,其特征在于,所述卷积神经网络包括:
主处理器,其用于配置所述卷积神经网络、划分任务以及任务调度;
AXI4互联总线,其包括控制总线和数据总线,所述控制总线和数据总线均连接所述主处理器,所述控制总线使用AXI4-Lite协议,所述数据总线使用AXI-Master协议;
片外存储单元,其用于存储输入图像以及输出图像,其与所述主处理器通过所述数据总线进行互联;以及
CNN运算单元,其受控于所述主处理器,其与所述主处理器通过所述控制总线进行互联,其包括:
卷积模块,其用于将接收到的输入图像进行卷积运算,其与所述主处理器通过所述控制总线以及数据总线进行互联;
池化模块,其用于将所述卷积模块运算得到的值进行池化运算,其连接所述卷积模块;
激活函数模块,其用于在判断当前的所述池化单元的运算结果满足预设条件时将所述池化单元的运算结果按照预设方式进行运算,并将其运算得到的结果输出至所述片外存储单元中进行存储,其连接所述池化模块以及片外存储单元;
其中,所述主处理器根据配置信息配置所述CNN运算单元,所述主处理器配置所述卷积模块中卷积核的数量使得其与所述卷积神经网络的不同层的输入图像和输出图像的数量能够匹配,所述主处理器控制所述CNN运算单元读取所述片外存储单元中的输入图像,所述CNN运算单元的卷积模块对所述输入图像依次进行卷积运算,所述池化模块对所述卷积模块输出的值进行池化运算,所述激活函数模块将所述池化模块输出的值按照预设方式进行运算并将运算得到的图像数据输出到所述片外存储单元中作为所述输出图像进行保存。
2.如权利要求1所述的卷积神经网络,其特征在于,所述主控制器配置所述卷积神经网络可接收的所述输入图像的数量为n,可形成的所述输出图像的数量为m,则所述输入图像依次标记为X1、X2...Xn,所述输出图像依次标记为Y1、Y2...Ym;
所述主控制器配置所述卷积模块,所述卷积模块包括:m组卷积子模块,其中,第m组所述卷积子模块包括:
n个第一选择器,其用于根据片选信号输出所述输入图像的像素值,所述第一选择器依次标记为A1m、A2m、A3m...Anm,其中所述第一选择器A1m、A2m、A3m...Anm分别接收所述输入图像X1、X2...Xn,其中,当片选信号被配置为1时,输出所述输入图像的像素值,当片选信号被配置为0时,输出的值为0;
n个卷积核,其用于对所述第一选择器输出的像素值进行卷积运算,所述卷积核依次标记为K1m、K2m、K3m...Knm,所述卷积核K1m连接所述第一选择器A1m,所述卷积核K2m连接所述第一选择器A2m,依此类推,所述卷积核Knm连接所述第一选择器Anm;
n个第二选择器,其用于根据片选信号输出所述卷积核的运算结果,所述第二选择器依次标记为B1m、B2m、B3m...Bnm,所述第二选择器B1m连接所述卷积核K1m,所述第二选择器B2m连接所述卷积核K2m,依此类推,所述第二选择器Bnm连接所述卷积核Knm,其中,当片选信号被配置为1时,输出所述卷积核的运算结果,当片选信号被配置为0时,输出的值为0;
累加器,其用于将所述卷积子模块的第二选择器的输出值进行累加运算并输出累加值作为所述卷积子模块的输出值,其连接所述第二选择器;
其中,每组所述卷积子模块均连接所述池化模块,所述池化模块连接所述激活函数模块,所述卷积子模块的输出值经过所述池化模块的池化运算以及经过所述激活函数模块按照预设方式运算后输出的数据作为所述输出图像Y1、Y2...Ym的像素值。
3.如权利要求1或2所述的卷积神经网络,其特征在于,所述CNN运算单元还包括:
第一FIFO存储器,其用于在所述卷积模块从所述片外存储单元读取所述输入图像的数据时用于缓存所述输入图像,其通过所述数据总线与所述片外存储单元实现连接;
第二FIFO存储器,其用于在所述池化模块以及激活函数模块进行运算时缓存所述池化模块以及激活函数模块的运算数据,其连接所述卷积模块、池化模块以及激活函数模块。
4.如权利要求2所述的卷积神经网络,其特征在于,所述卷积子模块基于Vivado HLS高级综合工具进行设计。
5.如权利要求2所述的卷积神经网络,其特征在于,所述激活函数模块采用函数LReLU,则所述设定条件为接收到数值小于0,所述预设方式运算为将所述小于0的数值与设置值进行乘法运算以及将所述大于0的数值保持不变的数值进行输出。
6.如权利要求2所述的卷积神经网络,其特征在于,所述输入图像的数量n和输出图像的数量m受所述FPGA资源的约束,则所述输入图像的数量的最大值Nmax和输出图像Mmax的数量的最大值根据公式:即可获得,
所述卷积核的数量的最大值kmax根据公式:kmax=Nmax×Mmax获得,其中,PW为所述片外存储单元的带宽,RW为所述输入图像的像素位宽,SW为所述输出图像的像素位宽。
7.一种基于FPGA实现的卷积神经网络的实现方法,其特征在于,所述方法包括:
设置主处理器,其用于配置所述卷积神经网络、划分任务以及任务调度;
设置AXI4互联总线,其包括控制总线和数据总线,所述控制总线和数据总线均连接所述主处理器,所述控制总线使用AXI4-Lite协议,所述数据总线使用AXI-Master协议;
设置片外存储单元,其用于存储输入图像以及输出图像,其与所述主处理器通过所述数据总线进行互联;以及
设置CNN运算单元,其受控于所述主处理器,其与所述主处理器通过所述控制总线进行互联,其包括:
设置卷积模块,其用于将接收到的输入图像进行卷积运算,其与所述主处理器通过所述控制总线以及数据总线进行互联;
设置池化模块,其用于将所述卷积模块运算得到的值进行池化运算,其连接所述卷积模块;
设置激活函数模块,其用于在判断当前的所述池化单元的运算结果满足预设条件时将所述池化单元的运算结果按照预设方式进行运算,并将其运算得到的结果输出至所述片外存储单元中进行存储,其连接所述池化模块以及片外存储单元;
其中,所述主处理器根据配置信息配置所述CNN运算单元,所述主处理器配置所述卷积模块中卷积核的数量使得其与所述卷积神经网络的不同层的输入图像和输出图像的数量能够匹配,所述主处理器控制所述CNN运算单元读取所述片外存储单元中的输入图像,所述CNN运算单元的卷积模块对所述输入图像依次进行卷积运算,所述池化模块对所述卷积模块输出的值进行池化运算,所述激活函数模块将所述池化模块输出的值按照预设方式进行运算并将运算得到的图像数据输出到所述片外存储单元中作为所述输出图像进行保存。
8.如权利要求7所述的卷积神经网络的实现方法,其特征在于,在所述设置CNN运算单元的步骤中,包括:
所述主控制器配置所述卷积神经网络可接收的所述输入图像的数量为n,可形成的所述输出图像的数量为m,则所述输入图像依次标记为X1、X2...Xn,所述输出图像依次标记为Y1、Y2...Ym;
所述主控制器配置所述卷积模块,所述卷积模块包括:m组卷积子模块,其中,第m组所述卷积子模块包括:
n个第一选择器,其用于根据片选信号输出所述输入图像的像素值,所述第一选择器依次标记为A1m、A2m、A3m...Anm,其中所述第一选择器A1m、A2m、A3m...Anm分别接收所述输入图像X1、X2...Xn,其中,当片选信号被配置为1时,输出所述输入图像的像素值,当片选信号被配置为0时,输出的值为0;
n个卷积核,其用于对所述第一选择器输出的像素值进行卷积运算,所述卷积核依次标记为K1m、K2m、K3m...Knm,所述卷积核K1m连接所述第一选择器A1m,所述卷积核K2m连接所述第一选择器A2m,依此类推,所述卷积核Knm连接所述第一选择器Anm;
n个第二选择器,其用于根据片选信号输出所述卷积核的运算结果,所述第二选择器依次标记为B1m、B2m、B3m...Bnm,所述第二选择器B1m连接所述卷积核K1m,所述第二选择器B2m连接所述卷积核K2m,依此类推,所述第二选择器Bnm连接所述卷积核Knm,其中,当片选信号被配置为1时,输出所述卷积核的运算结果,当片选信号被配置为0时,输出的值为0;
累加器,其用于将所述卷积子模块的第二选择器的输出值进行累加运算并输出累加值作为所述卷积子模块的输出值,其连接所述第二选择器;
其中,每组所述卷积子模块均连接所述池化模块,所述池化模块连接所述激活函数模块,所述卷积子模块的输出值经过所述池化模块的池化运算以及经过所述激活函数模块按照预设方式运算后输出的数据作为所述输出图像Y1、Y2...Ym的像素值。
9.如权利要求7或8所述的卷积神经网络的实现方法,其特征在于,在所述设置CNN运算单元的步骤中,还包括:
设置所述CNN运算单元包括:
第一FIFO存储器,其用于在所述卷积模块从所述片外存储单元读取所述输入图像的数据时用于缓存所述输入图像,其通过所述数据总线与所述片外存储单元实现连接;
第二FIFO存储器,其用于在所述池化模块以及激活函数模块进行运算时缓存所述池化模块以及激活函数模块的运算数据,其连接所述卷积模块、池化模块以及激活函数模块。
10.如权利要求7所述的卷积神经网络的实现方法,其特征在于,所述卷积子模块基于Vivado HLS高级综合工具进行设计。
CN201910147655.4A 2018-11-14 2019-02-27 基于fpga实现的卷积神经网络以及基于fpga实现卷积神经网络的实现方法 Pending CN109948777A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2018113555425 2018-11-14
CN201811355542 2018-11-14

Publications (1)

Publication Number Publication Date
CN109948777A true CN109948777A (zh) 2019-06-28

Family

ID=67006925

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910147655.4A Pending CN109948777A (zh) 2018-11-14 2019-02-27 基于fpga实现的卷积神经网络以及基于fpga实现卷积神经网络的实现方法

Country Status (1)

Country Link
CN (1) CN109948777A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110738317A (zh) * 2019-10-17 2020-01-31 中国科学院上海高等研究院 基于fpga的可变形卷积网络运算方法、装置和系统
CN111126309A (zh) * 2019-12-26 2020-05-08 长沙海格北斗信息技术有限公司 基于fpga的卷积神经网络架构方法及其人脸识别方法
CN111814675A (zh) * 2020-07-08 2020-10-23 上海雪湖科技有限公司 基于fpga支持动态分辨率的卷积神经网络特征图组装系统
CN112261308A (zh) * 2020-10-10 2021-01-22 深圳市海雀科技有限公司 一种具有片内模式识别的感光集成电路
CN113298712A (zh) * 2021-05-21 2021-08-24 安谋科技(中国)有限公司 图像处理方法、电子设备及其可读介质
CN115049885A (zh) * 2022-08-16 2022-09-13 之江实验室 一种存算一体卷积神经网络图像分类装置及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110029471A1 (en) * 2009-07-30 2011-02-03 Nec Laboratories America, Inc. Dynamically configurable, multi-ported co-processor for convolutional neural networks
CN106875012A (zh) * 2017-02-09 2017-06-20 武汉魅瞳科技有限公司 一种基于fpga的深度卷积神经网络的流水化加速系统
CN108229670A (zh) * 2018-01-05 2018-06-29 中国科学技术大学苏州研究院 基于fpga的深度神经网络加速平台

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110029471A1 (en) * 2009-07-30 2011-02-03 Nec Laboratories America, Inc. Dynamically configurable, multi-ported co-processor for convolutional neural networks
CN106875012A (zh) * 2017-02-09 2017-06-20 武汉魅瞳科技有限公司 一种基于fpga的深度卷积神经网络的流水化加速系统
CN108229670A (zh) * 2018-01-05 2018-06-29 中国科学技术大学苏州研究院 基于fpga的深度神经网络加速平台

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘志成等: "基于FPGA 的卷积神经网络并行加速结构设计", 《微电子与计算机》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110738317A (zh) * 2019-10-17 2020-01-31 中国科学院上海高等研究院 基于fpga的可变形卷积网络运算方法、装置和系统
CN111126309A (zh) * 2019-12-26 2020-05-08 长沙海格北斗信息技术有限公司 基于fpga的卷积神经网络架构方法及其人脸识别方法
CN111814675A (zh) * 2020-07-08 2020-10-23 上海雪湖科技有限公司 基于fpga支持动态分辨率的卷积神经网络特征图组装系统
CN111814675B (zh) * 2020-07-08 2023-09-29 上海雪湖科技有限公司 基于fpga支持动态分辨率的卷积神经网络特征图组装系统
CN112261308A (zh) * 2020-10-10 2021-01-22 深圳市海雀科技有限公司 一种具有片内模式识别的感光集成电路
CN113298712A (zh) * 2021-05-21 2021-08-24 安谋科技(中国)有限公司 图像处理方法、电子设备及其可读介质
CN115049885A (zh) * 2022-08-16 2022-09-13 之江实验室 一种存算一体卷积神经网络图像分类装置及方法
CN115049885B (zh) * 2022-08-16 2022-12-27 之江实验室 一种存算一体卷积神经网络图像分类装置及方法

Similar Documents

Publication Publication Date Title
CN109948777A (zh) 基于fpga实现的卷积神经网络以及基于fpga实现卷积神经网络的实现方法
CN111459877B (zh) 基于FPGA加速的Winograd YOLOv2目标检测模型方法
Bai et al. A CNN accelerator on FPGA using depthwise separable convolution
Li et al. A high performance FPGA-based accelerator for large-scale convolutional neural networks
Wang et al. Efficient hardware architectures for deep convolutional neural network
Guo et al. FBNA: A fully binarized neural network accelerator
CN109284817B (zh) 深度可分离卷积神经网络处理架构/方法/系统及介质
CN109409511B (zh) 一种用于动态可重构阵列的卷积运算数据流调度方法
Wu et al. A flexible and efficient FPGA accelerator for various large-scale and lightweight CNNs
CN111898733B (zh) 一种深度可分离卷积神经网络加速器架构
Li et al. Efficient depthwise separable convolution accelerator for classification and UAV object detection
US11604975B2 (en) Ternary mode of planar engine for neural processor
Khabbazan et al. Design and implementation of a low-power, embedded cnn accelerator on a low-end fpga
Ding et al. A FPGA-based accelerator of convolutional neural network for face feature extraction
CN113222130A (zh) 一种基于fpga的可重构卷积神经网络加速器
Xu et al. An ultra-low power tinyml system for real-time visual processing at edge
Chen et al. A 68-mw 2.2 tops/w low bit width and multiplierless DCNN object detection processor for visually impaired people
US12079724B2 (en) Texture unit circuit in neural network processor
Kala et al. UniWiG: Unified winograd-GEMM architecture for accelerating CNN on FPGAs
US11853868B2 (en) Multi dimensional convolution in neural network processor
CN110598844A (zh) 一种基于fpga的并行卷积神经网络加速器及加速方法
Duan et al. Energy-efficient architecture for FPGA-based deep convolutional neural networks with binary weights
Li et al. A hardware-efficient computing engine for FPGA-based deep convolutional neural network accelerator
Kim et al. A Low-Latency FPGA Accelerator for YOLOv3-Tiny With Flexible Layerwise Mapping and Dataflow
Yin et al. FPGA-based high-performance CNN accelerator architecture with high DSP utilization and efficient scheduling mode

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20190628

RJ01 Rejection of invention patent application after publication