CN113610221B - 一种基于fpga的可变膨胀卷积运算硬件系统 - Google Patents

一种基于fpga的可变膨胀卷积运算硬件系统 Download PDF

Info

Publication number
CN113610221B
CN113610221B CN202110731727.7A CN202110731727A CN113610221B CN 113610221 B CN113610221 B CN 113610221B CN 202110731727 A CN202110731727 A CN 202110731727A CN 113610221 B CN113610221 B CN 113610221B
Authority
CN
China
Prior art keywords
data
read
convolution
bidirectional shift
shift buffer
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.)
Active
Application number
CN202110731727.7A
Other languages
English (en)
Other versions
CN113610221A (zh
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.)
Xidian University
Original Assignee
Xidian 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 Xidian University filed Critical Xidian University
Priority to CN202110731727.7A priority Critical patent/CN113610221B/zh
Publication of CN113610221A publication Critical patent/CN113610221A/zh
Application granted granted Critical
Publication of CN113610221B publication Critical patent/CN113610221B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种基于FPGA的可变膨胀卷积运算硬件系统,包括数据重排列单元和卷积流水计算单元,其中,数据重排列单元用于将原始图像中随膨胀率变化的随机空域采样点整理成列向量,数据重排列单元包括多级数据选择器、读写双向移位缓存和有限状态机,有限状态机能够对限定膨胀率范围内的膨胀率进行遍历并控制多级数据选择器对随机空域采样点进行数据选择,读写双向移位缓存用于获取并存储多级数据选择器选择的数据以完成数据重排列;卷积流水计算单元用于根据重排列的数据和卷积核参数进行卷积流水计算,并获得输出数据。本发明利用基于多级MUX和读写双向移位缓存的控制逻辑实现了可变膨胀卷积硬件加速,最大程度地实现了数据高效缓存重排列与卷积并行流水计算。

Description

一种基于FPGA的可变膨胀卷积运算硬件系统
技术领域
本发明属于数字图像处理技术领域,具体涉及一种基于FPGA的可变膨胀卷积运算硬件系统,可用于基于可变膨胀卷积神经网络的图像处理任务中。
背景技术
可变膨胀卷积作为一种新型的卷积模型,通过从目标任务中学习膨胀率并利用膨胀率改变空域图像采样位置,已经被证实了其可以有效的提高卷积神经网络的性能,基于可变膨胀卷积的卷积神经网络模型已经被广泛应用到了图像分类、图像分割、目标检测以及图像处理等领域。但是由于可变膨胀卷积模型的空域采样位置被膨胀率随机改变,导致可变膨胀卷积模型的硬件实现相比于传统卷积模型变得更加复杂。
当前对于传统卷积的硬件加速的主流手段有im2col方法和Line buffer方法,im2col方法把卷积输入数据转换为适用于矩阵乘法的形式,并利用矩阵乘法进行计算进而得到卷积运算结果,im2col方法要求数据排布具有一定的规律,而可变膨胀卷积的数据排布依靠学习到的膨胀率变化,没有规律性,因此利用im2col方法无法实现可变膨胀卷积;Line buffer方法预先对卷积输入数据进行行缓存,对于利用该方法实现的传统卷积仅需2行缓存即可,然而,若利用line buffer方法实现可变膨胀卷积,即便限制膨胀率为4也需要9行缓存才有可能实现,极大地浪费了硬件资源。
发明内容
为了解决现有技术中存在的上述问题,本发明提供了一种基于FPGA的可变膨胀卷积运算硬件系统。本发明要解决的技术问题通过以下技术方案实现:
本发明提供了一种基于FPGA的可变膨胀卷积运算硬件系统,包括数据重排列单元和卷积流水计算单元,其中,
所述数据重排列单元用于将原始图像中随膨胀率变化的随机空域采样点整理成列向量,所述数据重排列单元包括多级数据选择器、读写双向移位缓存和有限状态机,所述有限状态机能够对限定膨胀率范围内的膨胀率进行遍历并控制所述多级数据选择器对所述随机空域采样点进行数据选择,所述读写双向移位缓存用于获取并存储多级数据选择器选择的数据以完成数据重排列;
所述卷积流水计算单元用于根据所述重排列的数据和卷积核参数进行卷积流水计算,并获得输出数据。
在本发明的一个实施例中,所述多级数据选择器为n组k列多级数据选择器,用于根据所述随机空域采样点的中心点膨胀率从原始图像的一行n个像素点中选择中心点所需的k个空域采样点,其中,k为可变膨胀卷积的卷积核尺寸,n为所述卷积运算单元的列并行度;
所述n组k列多级数据选择器的选择端为中心点的膨胀率,输入端用于输入对应膨胀率范围下的空域采样点。
在本发明的一个实施例中,所述读写双向移位缓存包括n组k行k列个寄存器,其中,
每组寄存器之间相互独立;
在一组寄存器中,写方向由第m行中k列寄存器分别指向第m-1行中对应的k列寄存器,其中m为2~k中的任意实数,读方向由第m个寄存器指向第m-1个寄存器,其中m为2~k×k中的任意实数;
所述读写双向移位缓存第k行的n组k列寄存器的输入与所述n组k列多级数据选择器的输出连接,并由所述有限状态机控制传输通路是否开启。
在本发明的一个实施例中,所述有限状态机包括IDLE状态、RD_DILATION状态、DILATION状态和CONV_CALCU状态,其中,
IDLE状态为初始状态,等待数据重排列开始信号;RD_DILATION状态用于读取一行n个中心点的膨胀率;DILATION状态用于依次完成限定膨胀率范围内所有膨胀率下空域采样点数据的选择并将选择后的数据传入读写双向移位缓存中以完成数据重排列;CONV_CALCU状态用于读取所述读写双向移位缓存中的数据以进行卷积计算。
在本发明的一个实施例中,所述卷积流水计算单元包括n×m个数字信号处理子单元,所述n×m个数字信号处理子单元均连接所述读写双向移位缓存和权重缓存,能够同时获取存放在所述读写双向移位缓存中列并行度为n的特征图像数据的对应值以及存放在权重缓存中输出并行度为m的卷积核参数的对应值,以进行并行度为n×m的数据乘加运算。
在本发明的一个实施例中,所述数字信号处理子单元执行数据乘加运算的运算公式为A*B+C,其中,A为像素点,B为对应的卷积核参数,C为前一次A*B+C的计算结果,且第一次计算时C取0。
在本发明的一个实施例中,所述读写双向移位缓存包括第一读写双向移位缓存单元和第二读写双向移位缓存单元,所述第一读写双向移位缓存单元和所述第二读写双向移位缓存单元基于乒乓缓存的机制运行。
在本发明的一个实施例中,基于乒乓缓存的机制具体包括:
对所述第一读写双向移位缓存单元进行写入,完成后所述有限状态机通知所述卷积流水计算单元读取所述第一读写双向移位缓存单元中的数据,并向所述第二读写双向移位缓存单元写入数据,完成后等待所述卷积流水计算单元读完所述第一读写双向移位缓存单元中的数据再向所述第一读写双向移位缓存单元中写入数据,同时卷积流水计算单元读取所述第二读写双向移位缓存单元中的数据,直至输入数据完全重排列完成。
与现有技术相比,本发明的有益效果在于:
1、本发明基于FPGA提出了一种高效处理可变膨胀卷积运算的硬件系统,包含基于多级MUX选择和读写双向移位缓存的数据重排列单元和高并行卷积流水计算单元。相较于其他硬件系统,本实施例的系统能够更高效快速的实现可变膨胀卷积,可以根据不同的输入膨胀率实现传统卷积、膨胀卷积以及多尺度卷积等多种卷积,适用性更广,本实施例还基于乒乓缓存的机制,使得数据重排列单元和卷积流水计算单元同时工作,充分隐藏数据重排列时间,大幅度提高了DSP资源的使用效率,进一步提升了可变膨胀卷积处理性能。
2、本发明的可变膨胀卷积运算硬件系统利用基于多级MUX和读写双向移位缓存的控制逻辑实现了可变膨胀卷积硬件加速,可以以较少的资源和较快的速度依据图像中各个像素点的膨胀率对数据进行重排列,最大程度地实现数据高效缓存重排列与卷积并行流水计算。
3、本发明提出的可变膨胀卷积运算系统能够通过改变膨胀率兼容传统卷积、膨胀卷积以及多尺度卷积等多种卷积运算,并通过读写双向移位缓存的方式减少逻辑资源的使用并充分提高缓存资源的利用效率。
以下将结合附图及实施例对本发明做进一步详细说明。
附图说明
图1是本发明实施例提供的一种基于FPGA的可变膨胀卷积运算硬件系统的模块图;
图2是本发明实施例提供的一种可变膨胀卷积计算所需的空域采样点的示意图;
图3是本发明实施例提供的一种n组k列多级MUX的结构示意图;
图4是本发明实施例提供的一种读写双向移位缓存的结构示意图;
图5是本发明实施例提供的一种多级MUX与读写双向移位缓存的连接结构示意图;
图6是本发明实施例提供的一种FSM的状态转移图;
图7是本发明实施例提供的一种FSM与多级MUX联合工作过程示意图;
图8是本发明实施例提供的一种卷积流水计算单元的结构示意图;
图9是本发明实施例提供的一种三维权重展开图;
图10是本发明实施例提供的一种可变碰撞卷积单元的结构示意图。
具体实施方式
为了进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及具体实施方式,对依据本发明提出的一种基于FPGA的可变膨胀卷积运算硬件系统进行详细说明。
有关本发明的前述及其他技术内容、特点及功效,在以下配合附图的具体实施方式详细说明中即可清楚地呈现。通过具体实施方式的说明,可对本发明为达成预定目的所采取的技术手段及功效进行更加深入且具体地了解,然而所附附图仅是提供参考与说明之用,并非用来对本发明的技术方案加以限制。
应当说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。
请参见图1,图1是本发明实施例提供的基于FPGA的可变膨胀卷积运算硬件系统的模块图。该可变膨胀卷积运算硬件系统为一层卷积的硬件实现过程,输入图为低级特征图,输出图为高级特征图,经过卷积之后特征被进一步加工提取。
本实施例的可变膨胀卷积运算硬件系统包括数据重排列单元1和卷积流水计算单元2,其中,数据重排列单元1用于将随膨胀率变化的随机空域采样点整理成顺序整齐的列向量,该数据重排列单元1包括多级数据选择器11、读写双向移位缓存12和有限状态机13,有限状态机13能够对限定膨胀率范围内的膨胀率进行遍历并控制多级数据选择器11对所述随机空域采样点进行数据选择,读写双向移位缓存12用于获取并存储多级数据选择的数据以完成数据重排列;卷积流水计算单元2用于根据重排列的数据和卷积核参数进行卷积流水计算,并获得输出数据。
数据重排列单元1的主要作用是把原始图像中随膨胀率变化的随机空域采样点整理成顺序整齐的列向量,以利于随后卷积流水计算单元2从缓存中顺序读取数据进行计算,把低效的随机访存转化为高效的顺序访存。本实施例的数据重排列单元1由多级MUX(multiplexer,数据选择器)11、读写双向移位缓存12和FSM(Finite State Machine,有限状态机)13构成,FSM13和多级MUX 11联合工作完成对输入的随机空域采样点行列选择,并缓存到读写双向移位缓存12中,同时FSM 13控制读写双向移位缓存12读写方向通路的开关,以完成数据重排列和卷积流水计算单元2的运算。
本实施例的多级数据选择器11为n组k列多级数据选择器,其中,k为可变膨胀卷积的卷积核尺寸,n为所述卷积运算单元的列并行度。请参见图2,图2是本发明实施例提供的一种可变膨胀卷积计算所需的空域采样点的示意图,其中,黑色代表中心点,1号框、2号框、3号框分别代表膨胀率为1、2和3时所需的k×k-1个空域采样点,其中,k为可变膨胀卷积的卷积核尺寸。在一个时钟周期内仅读入原始数字图像中1行n个像素点的值,n组k列多级MUX的作用在于根据空域采样点的中心点膨胀率从原始图像一行像素点中选择出中心点所需的k个空域采样点,其中n为卷积运算单元的列并行度。在本实施例中对这些参数的设置为:n=128、k=3。需要说明的是,这些参数可根据要处理的数字图像大小和硬件平台资源灵活配置,以最大程度发挥平台算力。n组k列多级MUX架构仅完成对一行像素点的列选择功能,不考虑读入行中不存在一个中心点所需的k个空域采样点的情况。请参见图3,图3是本发明实施例提供的一种n组k列多级MUX结构的示意图。在本实施例中限定了膨胀率最大为4。该n组k列多级MUX的选择端为中心点的膨胀率,输入端用于输入限定膨胀率范围下对应的空域采样点。具体地,选取第i组多级MUX进行说明,图中i-1,i,i+1位置为膨胀率是1的膨胀卷积所需的空域采样点,i-2,i,i+2位置为膨胀率是2的膨胀卷积所需的空域采样点,i-3,i,i+3位置为膨胀率是3的膨胀卷积所需的空域采样点,i-4,i,i+4位置为膨胀率是4的膨胀卷积所需的空域采样点。
读写双向移位缓存12用于存储被重排列的输入数据,在本实施例中,读写双向移位缓存12的数据读写方向分离,以满足一个周期可以写入k个数据以及在一个周期读出1个数据。读写双向移位缓存12由n组k行k列个寄存器组成,请参见图4,图4是本发明实施例提供的一种卷积核大小k=3的条件下读写双向移位缓存的结构示意图,其中,写方向由实箭头表示,读方向由虚箭头表示,每组寄存器缓存之间相互独立,在一组寄存器中,写方向由第m行中k列寄存器分别指向第m-1行中对应的k列寄存器,其中m为2~k中的任意实数;读方向由第m个寄存器指向第m-1个寄存器,其中m为2~k×k中的任意实数。读写双向移位缓存第k行的n组k列寄存器的输入与n组k列多级MUX的输出连接,并由有限状态机FSM控制传输通路是否开启,如图5所示。
进一步地,本实施例利用FSM 13实现对限定膨胀率范围内膨胀率的遍历,以完成所需空域采样点的数据重排列。有限状态机FSM 13包括多个状态:IDLE、RD_DILATION、DILATION、CONV_CALCU,其中,IDLE状态为初始状态,等待数据重排列开始信号;RD_DILATION状态用于读取一行n个中心点的膨胀率;DILATION状态用于依次完成限定膨胀率范围内所有膨胀率下空域采样点数据的选择并将选择后的数据传入读写双向移位缓存中以完成数据重排列;CONV_CALCU状态用于读取读写双向移位缓存12中的数据进行卷积计算。
具体地,请参见图6,图6是本发明实施例提供的一种FSM的状态转移图。在本实施例中限定了膨胀率最大为4。本实施例的FSM完成数据重排列功能需要7个状态,分别为IDLE、RD_DILATION、DILATION_1、DILATION_2、DILATION_3、DILATION_4,CONV_CALCU,其中,IDLE状态为初始状态,等待数据重排列开始信号;RD_DILATION状态负责读取一行n个中心点的膨胀率;DILATION_1状态负责完成膨胀率为1的膨胀卷积所需数据的重排列;DILATION_2状态负责完成膨胀率为2的膨胀卷积所需数据的重排列;DILATION_3状态负责完成膨胀率为3的膨胀卷积所需数据的重排列;DILATION_4状态负责完成膨胀率为4的膨胀卷积所需数据的重排列;CONV_CALCU状态负责读取双向移位缓存中的数据进行卷积计算。
进一步地,请参见图7,图7是本发明实施例提供的一种FSM与多级MUX联合工作过程示意图。FSM在初始IDLE状态下收到数据重排列开始信号进入RD_DILATION状态,从外部存储的膨胀率地址dilation_addr读取一行n个中心点的膨胀率数据dilation_data,n个膨胀率数据dilation_data与n组k列多级MUX的选择端对应相连接。完成操作后,FSM进入DILATION_1状态。
在DILATION_1状态下,数据重排列单元从feature map存储中读取要重排列的数据,feature map存储中每个地址下存储了数字图像中一行n个像素点的值,由于一行中心点膨胀率的地址与中心点的地址是一一对应的,FSM可以根据膨胀率的地址dilation_addr计算出将要读取输入feature map存储的k个地址值,若卷积核大小k为3,则地址值分别为dilation_addr-1,dilation_addr,dilation_addr+1。FSM依次读取k个地址下的featuremap存储中的数据,从feature map存储的输出端得到一行n个像素点的值img_row_data,feature map存储的数据输出端与n组多级MUX的数据输入端连接,n组k列多级MUX根据膨胀率dilation_data对输入端数据img_row_data进行选择并传输到输出端,n组k列多级MUX完成了对输入行数据的列选择,FSM会开启所有dilation_data=1的MUX输出与读写双向移位缓存12之间的通路,关闭其他MUX输出与读写双向移位缓存12之间的通路,把dilation_data=1的MUX的输出值传输到读写双向移位缓存12中,FSM完成了对输入数据行的选择,通过FSM对输入行和多级MUX对列的k次选择后,dilation_data=1的中心点所需空域采样点已经被全部传入读写双向移位缓存中。完成操作后,FSM进入DILATION_2状态。
DILATION_2状态与DILATION_1状态进行的操作类似,FSM根据膨胀率的地址dilation_addr计算出将要读取输入feature map存储的k个地址值,若卷积核大小k为3,则地址值分别为dilation_addr-2,dilation_addr,dilation_addr+2,FSM依次读取k个地址下的feature map存储中的数据,n组k列多级MUX完成对输入端数据img_row_data的列选择,FSM开启所有dilation_data=2的MUX输出与读写双向移位缓存之间的通路,关闭其他MUX输出与读写双向移位缓存之间的通路,把dilation_data=2的MUX的输出值传输到读写双向移位缓存中,FSM完成了对输入数据行的选择,传输k次后,FSM进入DILATION_3状态。
在DILATION_3状态下,FSM根据膨胀率的地址dilation_addr计算出将要读取输入feature map存储的k个地址值,若卷积核大小k为3,则地址值分别为dilation_addr-3,dilation_addr,dilation_addr+3,FSM依次读取k个地址下的feature map存储中的数据,n组k列多级MUX完成对输入端数据img_row_data的列选择,FSM开启所有dilation_data=3的MUX输出与读写双向移位缓存之间的通路,关闭其他MUX输出与读写双向移位缓存之间的通路,把dilation_data=3的MUX的输出值传输到读写双向移位缓存中,FSM完成了对输入数据行的选择,传输k次后,FSM进入DILATION_4状态。
在DILATION_4状态下,FSM根据膨胀率的地址dilation_addr计算出将要读取输入feature map存储的k个地址值,若k卷积核大小为3,则地址值分别为dilation_addr-4,dilation_addr,dilation_addr+4,FSM依次读取k个地址下的feature map存储中的数据,n组k列多级MUX完成对输入端数据img_row_data的列选择,FSM开启所有dilation_data=4的MUX输出与读写双向移位缓存之间的通路,关闭其他MUX输出与读写双向移位缓存之间的通路,把dilation_data=4的MUX的输出值传输到读写双向移位缓存中,FSM完成了对输入数据行的选择,传输k次后,列并行度为n的卷积所需的空域采样点已经被完全重排列。FSM把膨胀率地址dilation_addr加1,进入CONV_CALCU状态。
上述已经说明FSM在DILATION_1状态、DILATION_2状态、DILATION_3状态和DILATION_4状态下会分别开启膨胀率dilation_data=1、2、3、4对应的所有组多级MUX与读写双向移位缓存的通路,在同一周期内FSM还会开启这些组中所有写方向的通路。第一次写方向通路打开,k列多级MUX的输出会被传输到第k行的k列寄存器缓存中,第二次写方向通路打开,k列多级MUX被更新后的输出会被传输到第k行的k列寄存器缓存中,第k行的k列寄存器缓存中原本数据会被传入到第k-1行的k列寄存器缓存中,依次类推,第k次写方向通路打开,第一次通路打开传入的k个数据会被存到第1行k列寄存器缓存中,k列多级MUX第k次更新后的输出会被传输到第k行的k列寄存器缓存中。当FSM完成DILATION_1、DILATION_2、DILATION_3和DILATION_4状态下的操作,读写双向移位缓存中的所有数据均被更新为列并行度为n的卷积所需的空域采样数据。
进一步地,在FSM 13完成数据重排列后,FSM 13会进入CONV_CALCU状态,打开读写双向移位缓存12的所有读方向通路,并由来自卷积流水计算单元2的外部读使能控制,当读使能有效时,读写双向移位缓存的所有缓存数据均向读方向前进,并把n组第一行第一列缓存中的数据读出。读使能有效k×k个周期后,读写双向移位缓存12中的数据被全部读出,FSM 13进入RD_DILATION状态,再次执行上述过程,直到所有输入数据被处理完成,FSM回归到IDLE初始状态,等待下次数据重排列信号的到来。
接着,卷积流水计算单元2根据所述重排列的数据和卷积核参数进行卷积流水计算,并获得输出图像。在本实施例中,卷积流水计算单元2能够实现数据高并行,以高效处理卷积运算。卷积流水计算单元2包括n×m个数字信号处理子单元,所述n×m个数字信号处理子单元均连接读写双向移位缓存12和权重缓存,能够同时获取存放在读写双向移位缓存12中列并行度为n的特征图像数据的对应值以及存放在权重缓存中输出并行度为m的卷积核参数的对应值,以进行并行度为n×m的数据乘加运算,如图8所示。
需要说明的是,该卷积流水计算单元2是把卷积核除输出维度Cout外所有维度的数据展开成一维向量,长度为Cin×K×K,在该维度上进行流水计算,如图9所示。所述数字信号处理子单元执行乘法和加法运算,具体地为A*B+C,其中,A是像素点,B是权重(卷积核参数),C是前一次A*B+C的计算结果,且第一次计算时C是0。
卷积流水计算单元2一个周期计算得到n*m个结果,该计算结果缓存在寄存器中,并连接到DSP乘加运算单元的加数端,直到在流水维度上进行Cin×K×K次计算后,完成了一块卷积计算得到n×m个卷积结果,该步骤再重复次,计算得到所有卷积结果,其中,Cin、Cout、K、H、W、m分别为卷积操作的输入通道维度、输出通道维度、卷积核尺寸大小、特征图高度、特征图宽度、输出维度并行度。需要说明的是,在本实施例中,这些参数可根据要处理的具体网络结构和硬件平台资源灵活配置,以最大程度发挥平台算力。
此外,通过步骤S1和S2可知,在实际处理过程中,卷积流水计算单元2需要等待数据重排列单元1完成对读写双向移位缓存的写入才能开始,数据重排列单元1又需要等待读写双向移位缓存的数据被卷积流水计算单元2读完才能继续写入,这就导致数据重排列单元1和卷积流水计算单元2有一半的时间是在空闲状态,使得可变膨胀卷积处理效率较低。
为了解决这个问题,本实施例的读写双向移位缓存12包括第一读写双向移位缓存单元和第二读写双向移位缓存单元,所述第一读写双向移位缓存单元和所述第二读写双向移位缓存单元基于乒乓缓存的机制运行。
具体地,数据重排列单元1首先对第一读写双向移位缓存单元进行写入,完成后数据重排列单元1中的FSM会通知卷积流水计算单元读取第一读写双向移位缓存单元中的数据,并向第二读写双向移位缓存单元写入数据,完成后等待卷积流水计算单元读完第一读写双向移位缓存单元中的数据再向该块读写双向移位缓存中写入数据,同时卷积流水计算单元读取所述第一读写双向移位缓存单元中的数据,直到输入数据完全重排列完成,如图10所示。卷积流水计算单元得到数据重排列单元传来的信号,会读取第一读写双向移位缓存单元,读取完成后会通知数据重排列单元并读第二读写双向移位缓存单元,只要保证数据重排列单元对读写双向移位缓存单元写入的速度比卷积流水计算单元快,卷积流水计算单元就会一直处于工作状态,使得卷积流水计算单元中计算资源DSP的使用效率近乎达到100%。本实施例通过把数据重排列单元和卷积流水计算单元进行整合,让数据重排列单元和卷积流水计算单元并行工作以达到最高效的卷积计算速度。
本实施例基于FPGA提出了一种高效处理可变膨胀卷积运算的硬件系统,包含基于多级MUX选择和读写双向移位缓存的数据重排列单元和高并行卷积流水计算单元。相较于其他硬件系统,本实施例的系统能够更高效快速的实现可变膨胀卷积,可以根据不同的输入膨胀率实现传统卷积、膨胀卷积以及多尺度卷积等多种卷积,适用性更广,本实施例还基于乒乓缓存的机制,使得数据重排列单元和卷积流水计算单元同时工作,充分隐藏数据重排列时间,大幅度提高了DSP资源的使用效率,进一步提升了可变膨胀卷积处理性能。
本发明实施例的效果可以通过以下仿真实验进一步说明。
下面通过单张特征图的处理时间来量化对照本发明实施例中的硬件处理系统和基于line buffer的可变膨胀卷积硬件结构的性能。具体地,均对128×128×32特征图进行可变膨胀卷积操作处理,输出通道均为32,普通卷积核尺寸为3×3。两种方法主频均为200Mhz,实验结果如表1所示。
表1硬件结构性能对比表
基于line buffer的方法 本发明实施例的方法
处理时间 20.9ms 0.737ms
由表1可见,经本发明实施例提出的可变膨胀卷积运算硬件系统处理可变碰撞卷积的时间明显小于其他基于line buffer的可变膨胀卷积硬件结构,说明经本发明实施例的可变膨胀卷积运算硬件系统实现的可变膨胀卷积运算的性能更优,速度更快。
综上,本实施例的可变膨胀卷积运算硬件系统利用基于多级MUX和读写双向移位缓存的控制逻辑实现了可变膨胀卷积硬件加速,可以以较少的资源和较快的速度依据图像中各个像素点的膨胀率对数据进行重排列,最大程度地实现数据高效缓存重排列与卷积并行流水计算。本实施例提出的可变膨胀卷积运算系统能够通过改变膨胀率兼容传统卷积、膨胀卷积以及多尺度卷积等多种卷积运算,并通过读写双向移位缓存的方式减少逻辑资源的使用并充分提高缓存资源的利用效率。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (4)

1.一种基于FPGA的可变膨胀卷积运算硬件系统,其特征在于,包括数据重排列单元(1)和卷积流水计算单元(2),其中,
所述数据重排列单元(1)用于将原始图像中随膨胀率变化的随机空域采样点整理成列向量,所述数据重排列单元(1)包括多级数据选择器(11)、读写双向移位缓存(12)和有限状态机(13),所述有限状态机(13)能够对限定膨胀率范围内的膨胀率进行遍历并控制所述多级数据选择器(11)对所述随机空域采样点进行数据选择,所述读写双向移位缓存(12)用于获取并存储多级数据选择的数据以完成数据重排列;
所述卷积流水计算单元(2)用于根据所述重排列的数据和卷积核参数进行卷积流水计算,并获得输出数据;
所述多级数据选择器(11)为n组k列多级数据选择器,用于根据所述随机空域采样点的中心点膨胀率从原始图像的一行n个像素点中选择中心点所需的k个空域采样点,其中,k为可变膨胀卷积的卷积核尺寸,n为所述卷积运算单元的列并行度;
所述n组k列多级数据选择器的选择端为中心点的膨胀率,输入端用于输入对应膨胀率范围下的空域采样点;
所述有限状态机(13)包括IDLE状态、RD_DILATION状态、DILATION状态和CONV_CALCU状态,其中,
IDLE状态为初始状态,等待数据重排列开始信号;RD_DILATION状态用于读取一行n个中心点的膨胀率;DILATION状态用于依次完成限定膨胀率范围内所有膨胀率下空域采样点数据的选择并将选择后的数据传入读写双向移位缓存中以完成数据重排列;CONV_CALCU状态用于读取所述读写双向移位缓存中的数据以进行卷积计算;
所述卷积流水计算单元(2)包括n×m个数字信号处理子单元,所述n×m个数字信号处理子单元均连接所述读写双向移位缓存(12)和权重缓存,能够同时获取存放在所述读写双向移位缓存(12)中列并行度为n的特征图像数据的对应值以及存放在权重缓存中输出并行度为m的卷积核参数的对应值,以进行并行度为n×m的数据乘加运算;
所述数字信号处理子单元执行数据乘加运算的运算公式为A*B+C,其中,A为像素点,B为对应的卷积核参数,C为前一次A*B+C的计算结果,且第一次计算时C取0。
2.根据权利要求1所述的基于FPGA的可变膨胀卷积运算硬件系统,其特征在于,所述读写双向移位缓存(12)包括n组k行k列个寄存器,其中,
每组寄存器之间相互独立;
在一组寄存器中,写方向由第m行中k列寄存器分别指向第m-1行中对应的k列寄存器,其中m为2~k中的任意实数,读方向由第m个寄存器指向第m-1个寄存器,其中m为2~k×k中的任意实数;
所述读写双向移位缓存(12)第k行的n组k列寄存器的输入与所述n组k列多级数据选择器的输出连接,并由所述有限状态机(13)控制传输通路是否开启。
3.根据权利要求1或2所述的基于FPGA的可变膨胀卷积运算硬件系统,其特征在于,所述读写双向移位缓存(12)包括第一读写双向移位缓存单元和第二读写双向移位缓存单元,所述第一读写双向移位缓存单元和所述第二读写双向移位缓存单元基于乒乓缓存的机制运行。
4.根据权利要求3所述的基于FPGA的可变膨胀卷积运算硬件系统,其特征在于,基于乒乓缓存的机制具体包括:
对所述第一读写双向移位缓存单元进行写入,完成后所述有限状态机通知所述卷积流水计算单元读取所述第一读写双向移位缓存单元中的数据,并向所述第二读写双向移位缓存单元写入数据,完成后等待所述卷积流水计算单元读完所述第一读写双向移位缓存单元中的数据再向所述第一读写双向移位缓存单元中写入数据,同时卷积流水计算单元读取所述第二读写双向移位缓存单元中的数据,直至输入数据完全重排列完成。
CN202110731727.7A 2021-06-29 2021-06-29 一种基于fpga的可变膨胀卷积运算硬件系统 Active CN113610221B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110731727.7A CN113610221B (zh) 2021-06-29 2021-06-29 一种基于fpga的可变膨胀卷积运算硬件系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110731727.7A CN113610221B (zh) 2021-06-29 2021-06-29 一种基于fpga的可变膨胀卷积运算硬件系统

Publications (2)

Publication Number Publication Date
CN113610221A CN113610221A (zh) 2021-11-05
CN113610221B true CN113610221B (zh) 2024-02-13

Family

ID=78336979

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110731727.7A Active CN113610221B (zh) 2021-06-29 2021-06-29 一种基于fpga的可变膨胀卷积运算硬件系统

Country Status (1)

Country Link
CN (1) CN113610221B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116152307B (zh) * 2023-04-04 2023-07-21 西安电子科技大学 一种基于fpga的sar图像配准预处理装置

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104240240A (zh) * 2014-09-04 2014-12-24 南京理工大学 一种基于fpga的红外小目标检测方法及系统
JP2015090592A (ja) * 2013-11-06 2015-05-11 日本電産エレシス株式会社 画像処理装置、画像処理方法および画像処理プログラム
CN105512684A (zh) * 2015-12-09 2016-04-20 江苏大为科技股份有限公司 基于主成分分析卷积神经网络的车标自动识别方法
CN106940895A (zh) * 2017-01-12 2017-07-11 北京理工大学 一种应用于无线层析成像系统的降质函数的估计方法
CN107516296A (zh) * 2017-07-10 2017-12-26 昆明理工大学 一种基于fpga的运动目标检测跟踪系统及方法
WO2020061924A1 (zh) * 2018-09-27 2020-04-02 华为技术有限公司 运算加速器和数据处理方法
CN110969020A (zh) * 2019-11-21 2020-04-07 中国人民解放军国防科技大学 基于cnn和注意力机制的中文命名实体识别方法、系统及介质
CN111695053A (zh) * 2020-06-12 2020-09-22 上海智臻智能网络科技股份有限公司 序列标注方法、数据处理设备、可读存储介质
CN112069328A (zh) * 2020-09-08 2020-12-11 中国人民解放军国防科技大学 一种基于多标签分类的实体关系联合抽取模型的建立方法
WO2021069211A1 (en) * 2019-10-11 2021-04-15 Robert Bosch Gmbh Method of and apparatus for processing data of a deep neural network
CN112905526A (zh) * 2021-01-21 2021-06-04 北京理工大学 一种多种类型卷积的fpga实现方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11017125B2 (en) * 2016-12-13 2021-05-25 University Of Florida Research Foundation, Incorporated Uniquified FPGA virtualization approach to hardware security
WO2019236251A1 (en) * 2018-06-04 2019-12-12 Lightmatter, Inc. Convolutional layers for neural networks using programmable nanophotonics

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015090592A (ja) * 2013-11-06 2015-05-11 日本電産エレシス株式会社 画像処理装置、画像処理方法および画像処理プログラム
CN104240240A (zh) * 2014-09-04 2014-12-24 南京理工大学 一种基于fpga的红外小目标检测方法及系统
CN105512684A (zh) * 2015-12-09 2016-04-20 江苏大为科技股份有限公司 基于主成分分析卷积神经网络的车标自动识别方法
CN106940895A (zh) * 2017-01-12 2017-07-11 北京理工大学 一种应用于无线层析成像系统的降质函数的估计方法
CN107516296A (zh) * 2017-07-10 2017-12-26 昆明理工大学 一种基于fpga的运动目标检测跟踪系统及方法
WO2020061924A1 (zh) * 2018-09-27 2020-04-02 华为技术有限公司 运算加速器和数据处理方法
WO2021069211A1 (en) * 2019-10-11 2021-04-15 Robert Bosch Gmbh Method of and apparatus for processing data of a deep neural network
CN110969020A (zh) * 2019-11-21 2020-04-07 中国人民解放军国防科技大学 基于cnn和注意力机制的中文命名实体识别方法、系统及介质
CN111695053A (zh) * 2020-06-12 2020-09-22 上海智臻智能网络科技股份有限公司 序列标注方法、数据处理设备、可读存储介质
CN112069328A (zh) * 2020-09-08 2020-12-11 中国人民解放军国防科技大学 一种基于多标签分类的实体关系联合抽取模型的建立方法
CN112905526A (zh) * 2021-01-21 2021-06-04 北京理工大学 一种多种类型卷积的fpga实现方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Memory-Efficient Deformable Convolution Based Joint Denoising and Demosaicing for UHD Images;Juntao Guan , Rui Lai , Member, IEEE, Yang Lu, Yangang Li, Huanan Li , Lichen Feng;IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY;第32卷(第11期);全文 *
Total Variation Regularized Iterative Back-projection Method for Single Frame Image Super Resolution;LAI Rui, YANG Yin-tang, ZHOU Hui-xin, QIN Han-lin, and WANG Bing-jian;ICSP Proceedings;全文 *
基于深度学习的CFA图像复原方法及硬 件加速技术研究;卢阳;中国优秀硕士论文电子期刊;全文 *
智能化图像信号处理器关键技术研究;官俊涛;中国优秀博士论文电子期刊;全文 *
高能效深度神经网络加速芯片设计与研究;徐昆然;中国优秀博士论文电子期刊;全文 *

Also Published As

Publication number Publication date
CN113610221A (zh) 2021-11-05

Similar Documents

Publication Publication Date Title
CN108985450B (zh) 面向向量处理器的卷积神经网络运算向量化方法
WO2022007266A1 (zh) 一种卷积神经网络的加速方法及装置
CN108304922A (zh) 用于神经网络计算的计算设备和计算方法
CN107657581A (zh) 一种卷积神经网络cnn硬件加速器及加速方法
CN109711533B (zh) 基于fpga的卷积神经网络加速系统
US5278781A (en) Digital signal processing system
CN107533459A (zh) 使用电阻存储器阵列的数据处理
CN108717571B (zh) 一种用于人工智能的加速方法和装置
CN102652315B (zh) 信息处理设备及其控制方法
CN110738308B (zh) 一种神经网络加速器
CN110796235B (zh) 卷积神经网络Valid卷积的向量化实现方法
JPS6131502B2 (zh)
CN111008040B (zh) 缓存装置及缓存方法、计算装置及计算方法
CN113610221B (zh) 一种基于fpga的可变膨胀卷积运算硬件系统
US11709911B2 (en) Energy-efficient memory systems and methods
WO2018129930A1 (zh) 快速傅里叶变换处理方法、装置和计算机存储介质
JP2008506191A5 (zh)
CN110796236A (zh) 多样本多通道卷积神经网络池化的向量化实现方法
CN109359735B (zh) 深度神经网络硬件加速的数据输入装置与方法
JP2002351858A (ja) 処理装置
CN112396072A (zh) 基于asic与vgg16的图像分类加速方法及装置
WO2022062391A1 (zh) 一种加速rnn网络的系统、方法及存储介质
Joshi FFT architectures: a review
CN103533378B (zh) 基于fpga的三维整数dct变换系统及其变换方法
CN108073548B (zh) 卷积运算装置及卷积运算方法

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
GR01 Patent grant
GR01 Patent grant