CN112906886A - 结果复用的可重构bnn硬件加速器及图像处理方法 - Google Patents
结果复用的可重构bnn硬件加速器及图像处理方法 Download PDFInfo
- Publication number
- CN112906886A CN112906886A CN202110181395.XA CN202110181395A CN112906886A CN 112906886 A CN112906886 A CN 112906886A CN 202110181395 A CN202110181395 A CN 202110181395A CN 112906886 A CN112906886 A CN 112906886A
- Authority
- CN
- China
- Prior art keywords
- cache
- calculation
- characteristic diagram
- input
- weight
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种结果复用的可重构BNN硬件加速器及图像处理方法,是利用输入/输出特征图传输控制器从特征图缓存读取一组输入数据,预计算单元将该组输入数据与预计算权重数据进行运算并制作预计算结果查找表,快速计算单元根据权重数据从预计算结果查找表中查找对应的预计算结果作为部分卷积和,部分卷积和传输通道对部分卷积和进行转换,形成中间特征图,累加单元对中间特征图进行循环累加,得到累加结果,激活单元和池化单元对累加结果进行激活和池化操作,得到部分输出特征图,输入/输出特征图传输控制器将部分输出特征图传输给特征图缓存。本发明能降低数据反转功耗、节省预计算单元空闲周期,优化卷积运算的速度。
Description
技术领域
本发明属于集成电路人工智能的硬件设计领域,尤其涉及一种结果复用的可重构BNN硬件加速器及图像处理方法。
背景技术
伴随着移动互联网技术应用与推广的不断加快,移动平台、可穿戴设备、自主机器人以及IoT设备等领域的众多应用场景都对深度学习有着强烈的需求,而受制于这些设备因迁就移动便携特性导致的低功耗和有限的存储资源,具有高昂的深度模型计算功耗和庞大的数据存储量的传统卷积神经网络(Convolutional Neural Network,CNN)无法在这些应用领域内发挥其应有的功效。近年来提出的二值化卷积神经网络(Binary NeuralNetwork,BNN)通过将CNN的数据从全精度的多位宽降低到一位,并以位运算替代标准算术运算,大大降低了存储资源占用和数据传输、计算能耗,因而更能够适应于移动互联网领域硬件设备的特性。
目前针对二值化卷积神经网络,已经做了很多优化工作,比如以XNOR来代替MACs进行卷积运算;利用FPGA,实现比在CPU和GPU上效果更好的神经网络;使用popcount压缩树的方法来减少LUT资源消耗;通过去除批量标准化(BatchNormalization,BN)以提升二值化卷积神经网络的计算速度等。
虽然已经对二值化卷积神经网络做了包括上述工作在内的多方面的优化,但是目前绝大多数的二值化卷积神经网络的正向推导实现方式依旧和传统卷积神经网络一样十分耗费计算周期。因此可以利用二值化数据的特性进行卷积核变换,通过提取重叠量最大的核对,消除卷积计算中的冗余计算量,并利用L-MPC方案优化权重数据的存储机制和读取、计算的控制电路,基于LUT的复用计算方式中低位宽权重组合可能性较少的特点,将三位权重作为一个组合,先计算同一行三个输入数据与三位权重的23=8种可能的情况并存入一个LUT结构中,再通过查找表的方式从上述LUT中查找所有通道对应这三个输入的计算结果。但是这种方法存在如下不足:
(1)在计算过程中对于每一组输入都需要从权重缓存中读取该输入特征图对应的N组权重,并将其作为LUT,这样将会产生大量的读取功耗;
(2)输入数据在不同行的卷积计算时,分别与卷积核中的三行都进行了卷积计算,同一行的输入数据在与不同行卷积核进行计算的时候,其制表过程的提前计算都是一样的,如果反复计算会消耗额外的计算周期以及功耗;
(3)在读取卷积核进行计算之前,必须等待前一个LUT制作完成,才能进行卷积计算,这就导致了周期上的浪费。
发明内容
本发明为了解决上述现有技术存在的不足之处,提出了一种结果复用的可重构BNN硬件加速器及图像处理方法,以期能通过卷积核拆分映射的方式提高冗余计算复用率,优化计算周期,平衡存储资源和性能功耗。
本发明为达到上述目的所采用的技术方案是:
本发明一种结果复用的可重构BNN硬件加速器的特点包括:中央控制器、输入/输出特征图传输控制器、权重传输控制器、译码器、预计算单元、快速计算单元、累加单元、激活单元、池化单元、部分卷积和传输通道、特征图缓存、权重缓存、控制链缓存、预计算权重缓存;
所述控制链缓存用于存储各层的层控制链信息;
所述译码器用于将所述控制链缓存中存储的各层的层控制链信息转译为各个控制器在每一层的控制信息;所述控制信息包括:输入特征图的尺寸A×B、输入特征图的数量、输出特征图的尺寸、输出特征图的数量、池化使能、层权重缓存的初始地址、层偏置的初始地址;
定义二值化卷积神经网络中的当前层数为k;
所述中央控制器根据所述控制链缓存中存储的第k层的层控制链信息,对输入/输出特征图传输控制器、预计算单元、快速计算单元、权重传输控制器、池化单元分别输出相应的控制信号,以控制各个模块的工作,并协调各个模块之间的时序与数据位宽;
所述特征图缓存包括0号特征图缓存和1号特征图缓存,并根据所述中央控制器输入的层RAM读写控制信号,将需要进行计算的二值化输入图片,或者已经完成当前层运算的输出特征图交替地写入或读取到0号特征图缓存和1号特征图缓存中;
所述中央控制器根据控制链缓存中存储的第k层的层控制链信息,分类输出层RAM读写控制信号给所述特征图缓存:
若k=0,则初始化二值化输入图片给所述0号特征图缓存,且所述中央控制器为对所述1号特征图缓存输出写使能信号、对所述0号特征图缓存输出读使能信号;
若k≥1,则所述输入特征图为前一层的输出特征图,且如果k为奇数,则所述中央控制器对所述0号特征图缓存输出写使能信号、对所述1号特征图缓存输出读使能信号,如果k为偶数,则所述中央控制器对所述1号输入特征图输出写使能信号、对所述0号特征图缓存输出读使能信号;
所述预计算权重缓存用于所述预计算单元所需要的预计算权重数据;
所述输入/输出特征图传输控制器用于控制特征图的输入与输出,并根据所述中央控制器输入的控制信号,将输入特征图从所述特征图缓存中取出后,循环次传输给所述预计算单元,每次传输均与所述预计算权重缓存中相应的权重数据进行同或累加计算,得到的预计算结果制成预计算结果查找表,并提供给所述快速计算单元进行数据查找;其中,n表示单次传输输入特征图的通道数;N表示输入特征图的总通道数;
所述权重缓存用于存储所述快速计算单元所需要的权重数据;
所述权重传输控制器根据所述中央控制器的控制信号,将存储在所述权重缓存的权重数据按照个小周期传输给所述快速计算单元,且每次传输n×m个权重数据,从而得到m组权重数据,并经过次循环传输后得到M组权重数据,其中,M表示权重的组数;m表示单次传输的权重组数;
所述部分卷积和传输通道将所述部分卷积和重新组合为中间特征图,即由n个通道、每个通道包含m张特征图分量的通道分量组织转换为m张特征图、每张包含n个通道分量的权重分量组织;
所述激活单元用于将所述累加单元的累加结果进行批量标准化操作和取符号位操作,从而得到二值化离散数据并输出给所述池化单元;
所述池化单元根据池化使能信号对所述二值化离散数据进行处理,若当前层的池化使能信号为“0”,则直接将二值化离散数据作为输出特征图传给输入/输出特征图传输控制器,若当前池化使能信号为“1”,则将二值化离散数据进行最大值池化操作,并将操作结果作为输出特征图传给输入/输出特征图传输控制器。
本发明一种结果复用的可重构BNN硬件加速器的图像处理方法的特点是,所述可重构BNN硬件加速器由中央控制器、输入/输出特征图传输控制器、权重传输控制器、译码器、预计算单元、快速计算单元、累加单元、激活单元、池化单元、部分卷积和传输通道、特征图缓存、权重缓存、控制链缓存、预计算权重缓存所组成,所述特征图缓存包括0号特征图缓存和1号特征图缓存,所述预计算结果查找表包括0号预计算结果查找表、1号预计算结果查找表和2号预计算结果查找表;所述控制链缓存用于存储各层的层控制链信息;所述预计算权重缓存用于所述预计算单元所需要的预计算权重数据;所述权重缓存用于存储所述快速计算单元所需要的权重数据;
所述图像处理方法是按照如下步骤进行图像处理:
步骤1、定义二值化卷积神经网络的当前层数为k,并初始化k=0;
步骤2、所述译码器从控制链缓存中读取第k层的层控制链信息,并对第k层的层控制链进行译码得到由输入特征图尺寸A×B、输入特征图数量、输出特征图尺寸、输出特征图数量、池化使能、层权重缓存初始地址、层偏置初始地址构成的第k层控制信息;
步骤3、所述中央控制器根据k的值对所述特征图缓存输出第k层的层RAM读写控制信号:
若k=0,则将外部输入的二值化输入图片作为输入特征图存入0号特征图缓存中,所述中央控制器对所述1号特征图缓存输出写使能信号,并对所述0号特征图缓存输出读使能信号;
若k≥1,则将前一层的输出特征图作为输入特征图,且如果k为奇数,则所述中央控制器对所述0号特征图缓存输出写使能信号,并对所述1号特征图缓存输出读使能信号;如果k为偶数,则所述中央控制器对所述1号输入特征图输出写使能信号,并对所述0号特征图缓存输出读使能信号;
步骤4、定义所述预计算结果查找表缓存的编号为t,定义滑框向下移动次数为u,定义滑框向右移动次数为v,并初始化t=0;
步骤5、初始化u=0;
步骤6、初始化v=0;
步骤7、滑框按照b位步长从上至下的方向在输入特征图上纵向滑动、且按照a-2位步长从左至右的方向在输入特征图上横向换列滑动,从特征图缓存中读取n个通道在第u次向下移动和第v次向右移动计算所需要的输入特征图中大小为a×b的对应数据作为滑动框选数据;a表示滑框橫向位数,b表示滑框纵向位数;
步骤8、根据当前层数k和滑框向下移动次数值u以及滑框向左移动次数值v进行分类处理:
若k=0且u+v≤1,则执行步骤9;
若k=0且u+v>1或k≥1,则执行步骤10;
步骤9、所述预计算单元制作预计算结果查找表;
步骤9.1、定义输入批计数值为p,并初始化p=0;
步骤9.2、所述预计算单元将所述预计算权重数据按照1位步长从左向右的方向横向滑动、按照1位步长从上向下的方向竖向换行滑动,并与所述滑动框选数据进行同或运算,得到滑动计算结果,其中,预计算权重数据由w位二进制数组成;
步骤9.3、对所述滑动计算结果中的“1”进行计数,得到计数结果:
步骤9.4、将一次滑动计算的计数结果作为预计算结果存入编号为t的预计算结果查找表缓存中,用于制作预计算结果查找表;
步骤10、制作预计算结果查找表,并根据所述预计算结果查找表读取预计算结果:
步骤10.1、初始化输出批计数值r=0;
步骤10.2、初始化预计算结果的批计数值q=0;
步骤10.3、所述预计算单元执行步骤9;
所述快速计算单元以所述权重传输控制器输入的m组包含n个通道的大小为w×w的权重数据作为地址,并根据当前编号为t的预计算结果查找表缓存进行分类处理:
若t=0,则从编号为1和编号为2的预计算结果查找表缓存中读取m组权重数据对应的n个通道的大小为(x-2)×2y的预计算结果,得到一次滑动计算的部分卷积和;
若t=1,则从编号为2和编号为0的预计算结果查找表缓存中读取m组权重数据对应的n个通道的大小为(x-2)×2y的预计算结果,得到一次滑动计算的部分卷积和;
若t=2,则从编号为0和编号为1的预计算结果查找表缓存中读取m组权重数据对应的n个通道的大小为(x-2)×2y的预计算结果,得到一次滑动计算的部分卷积和;
步骤11、所述部分卷积和传输通道将n个通道、每个通道包含m个滑动计算的部分卷积和转换为m张中间特征图、每张中间特征图包含n个通道输入特征图分量,转换方式为从n个通道中提取出一组权重数据所对应的部分卷积和组合成一张中间特征图,m组权重数据提取出对应的部分卷积和组合成m张中间特征图;
步骤12、所述累加单元对m张所述中间特征图的n个通道输入特征图分量的对应位置进行累加操作,形成m张特征图,并进行存储;
步骤13、若q=0,则所述累加单元将m张特征图作为部分累加结果进行存储,并执行步骤14;
若q≥1,则所述累加单元将所存储的部分累加结果与m张特征图的对应位置进行累加操作,形成新的m张特征图作为新的部分累加结果;
步骤15、采用式(1)对所述累加结果y1进行变换,得到累加变换结果y2:
y2=2y1-w×w×N (1)
步骤16、所述激活单元根据中央控制器输入的层偏置初始地址取出层偏置数据,并利用式(2)对所述累加变换结果y2进行批量标准化操作,得到批量标准化操作结果y3后取其符号位,从而完成二值化处理,形成二值化离散数据:
式(2)中,ε为网络训练前预先设定的一个偏移参数,γ为标准化的扩展参数,β为标准化的平移参数,x为训练时一个批次输入的数量,Var[x]为一次网络训练时,批量标准化单元每一批次输入的平均值,E[x]为一次网络训练时,批量标准化单元每一批次输入的方差值;为层偏置;
步骤17、所述池化单元根据所述中央控制器输入的池化使能信号判断是否对二值化离散数据进行池化处理,若所述池化单元接收到所述池化使能信号,则对所述二值化离散数据进行最大池化,得到部分输出特征图,若所述池化单元未接收到所述池化使能信号,则直接将所述二值化离散数据作为部分输出特征图;
步骤18、所述输入/输出特征图传输控制器将所述部分输出特征图写入到处于写使能有效状态的特征图缓存中;
步骤20、若k=0且u+v≤1,则执行步骤21;
步骤21、判断t≥2是否成立,若成立,则令t=0,否则,令t+1赋值给t;
步骤24、令k+1赋值给k,且判断k>K-1是否成立,若成立,则重复执行步骤5至步骤24,否则输出所述输出特征图。
与现有技术相比,本发明的有益技术效果体现在:
1、本发明通过采用预计算单元,对二值化卷积神经网络正向推导过程进行优化。先取一张输入特征图,将这张输入特征图与对应的每行8种可能的权重数据的卷积结果都预先计算出来;然后存储在片上缓存中,作为一个类似LUT的方案;再将同一张输入特征图对应的所有权重数据,按行从片上缓存中读取对应的预计算结果,根据其所在行数来截取对应的数据,将同一个卷积核中的3行的计算结果截取并相加。通过预计算单元和预计算结果查找表的组合可以大大降低了硬件电路的资源浪费,节省了预计算单元的空闲周期,优化了运行速度。
2、本发明通过采取卷积行拆分映射优化,将每一个输入图像在计算过程中会进行的3×8/2=12次数据翻转,压缩至每张输入特征图只进行1次数据翻转,降低了预计算模块的计算重复率和硬件电路数据反转的功耗。
3、本发明通过增加一个预计算结果查找表(PCRLUT),来交叉前后两阶段的计算(乒乓操作),预计算单元先将一张输入特征图的卷积分核计算结果存储在预计算结果查找表0中,然后由快速计算单元来利用预计算结果查找表0中的数据进行快速计算,并且预计算单元在同时计算下一张输入特征图的卷积分核计算结果存储到预计算结果查找表1中,从而优化了高并行性的预计算单元因等待快速计算单元运算而产生的空闲周期,减少了卷积计算资源的浪费。以使用2个预计算单元为例,乒乓操作可以将下一张输入特征图在计算前因需要等待快速计算单元而产生的空闲时间减少了60%。
附图说明
图1为本发明可重构二值化卷积神经网络加速器结构图;
图2为本发明可重构二值化卷积神经网络加速器预计算结果查找表缓存循环周期2的读/
写操作图图;
图3为本发明可重构二值化卷积神经网络加速器的预计算结果查找表读/写周期图;
图4为本发明可重构二值化卷积神经网络加速器的预计算单元同或累加操作图;
图5为本发明可重构二值化卷积神经网络加速器的部分卷积和传输通道转换操作图。
具体实施方式
本实施实例中,二值化卷积神经网络是包括:K层二值化卷积层、K层激活层和若干层池化层,卷积层通过M组N×3×3的卷积核对N张像素为A×B的输入特征图按照步长为1个像素点向右或向下滑动,从而生成M张输出图片;
如图1所示,一种结果复用的可重构BNN硬件加速器包括:中央控制器、输入/输出特征图传输控制器、权重传输控制器、译码器、预计算单元、快速计算单元、累加单元、激活单元、池化单元、部分卷积和传输通道、特征图缓存、权重缓存、控制链缓存、预计算权重缓存;
控制链缓存用于存储各层的层控制链信息;
译码器用于将控制链缓存中存储的各层的层控制链信息转译为各个控制器在每一层的控制信息;控制信息包括:输入特征图的尺寸A×B、输入特征图的数量、输出特征图的尺寸、输出特征图的数量、池化使能、层权重缓存的初始地址、层偏置的初始地址;
定义二值化卷积神经网络中的当前层数为k;
中央控制器根据控制链缓存中存储的第k层的层控制链信息,对输入/输出特征图传输控制器、预计算单元、快速计算单元、权重传输控制器、池化单元分别输出相应的控制信号,以控制各个模块的工作,并协调各个模块之间的时序与数据位宽;
特征图缓存包括0号特征图缓存和1号特征图缓存,并根据中央控制器输入的层RAM读写控制信号,将需要进行计算的二值化输入图片,或者已经完成当前层运算的输出特征图交替地写入或读取到0号特征图缓存和1号特征图缓存中;
中央控制器根据控制链缓存中存储的第k层的层控制链信息,分类输出层RAM读写控制信号给特征图缓存:
若k=0,则初始化二值化输入图片给0号特征图缓存,且中央控制器为对1号特征图缓存输出写使能信号、对0号特征图缓存输出读使能信号;
若k≥1,则输入特征图为前一层的输出特征图,且如果k为奇数,则中央控制器对0号特征图缓存输出写使能信号、对1号特征图缓存输出读使能信号,如果k为偶数,则中央控制器对1号输入特征图输出写使能信号、对0号特征图缓存输出读使能信号;
预计算权重缓存用于预计算单元所需要的预计算权重数据;
输入/输出特征图传输控制器用于控制特征图的输入与输出,并根据中央控制器输入的控制信号,将输入特征图从特征图缓存中取出后,循环次传输给预计算单元,每次传输均与预计算权重缓存中相应的权重数据进行同或累加计算,得到的预计算结果制成预计算结果查找表,并提供给快速计算单元进行数据查找,其中,n表示单次传输输入特征图的通道数;N表示输入特征图的总通道数;
如图4所示,预计算权重取值为000、001、010、011,分别在大小为6×2的滑动框选数据上以1位步长向右滑动,并进行同或运算,得到大小为4×2的一组数据,每行对应4个预计算权重与该行滑动框选数据经过滑动、同或计算得到的32bits预计算结果,并制作一个预计算结果查找表;
如图3所示,在一个循环周期内,由预计算单元对其中一个预计算结果查找表缓存进行写操作,由快速计算单元对另外两个预计算结果查找表缓存进行读操作;
以循环周期2为例,经过循环周期0和循环周期1的计算,预计算单元完成了编号为0和编号为1的预计算结果查找表的制作,每个预计算结果查找表各包含32bits数据,其中,滑动框选数据、预计算权重数据和预计算结果的对应关系如图4所示;快速计算单元读取编号为0和编号为1的预计算结果查找表,同时预计算单元制作编号为2的预计算结果查找表,如图2所示;
权重缓存用于存储快速计算单元所需要的权重数据;
权重传输控制器根据中央控制器的控制信号,将存储在权重缓存的权重数据按照个小周期传输给快速计算单元,且每次传输n×m个权重数据,从而得到m组权重数据,并经过次循环传输后得到M组权重数据,其中,M表示权重的组数;m表示单次传输的权重组数;
部分卷积和传输通道将部分卷积和重新组合为中间特征图,即由n个通道、每个通道包含m张特征图分量的通道分量组织转换为m张特征图、每张包含n个通道分量的权重分量组织,转换方式如图5所示,部分卷积和传输通道提取出一组权重数据在所有部分卷积和里对应的特征图分量,组合成一张中间特征图,m组权重数据提取出对应的特征图分量组合成m张中间特征图;
激活单元用于将累加单元的累加结果进行批量标准化操作和取符号位操作,从而得到二值化离散数据并输出给池化单元;
池化单元根据池化使能信号对二值化离散数据进行处理,若当前层的池化使能信号为“0”,则直接将二值化离散数据作为输出特征图传给输入/输出特征图传输控制器,若当前池化使能信号为“1”,则将二值化离散数据进行最大值池化操作,并将操作结果作为输出特征图传给输入/输出特征图传输控制器。
本实施例中,一种结果复用的可重构BNN硬件加速器的图像处理方法中的可重构BNN硬件加速器由中央控制器、输入/输出特征图传输控制器、权重传输控制器、译码器、预计算单元、快速计算单元、累加单元、激活单元、池化单元、部分卷积和传输通道、特征图缓存、权重缓存、控制链缓存、预计算权重缓存所组成,特征图缓存包括0号特征图缓存和1号特征图缓存,预计算结果查找表包括0号预计算结果查找表、1号预计算结果查找表和2号预计算结果查找表;控制链缓存用于存储各层的层控制链信息;预计算权重缓存用于预计算单元所需要的预计算权重数据;权重缓存用于存储快速计算单元所需要的权重数据;
该图像处理方法是按照如下步骤进行图像处理:
步骤1、定义二值化卷积神经网络的当前层数为k,并初始化k=0;
步骤2、译码器从控制链缓存中读取第k层的层控制链信息,并对第k层的层控制链进行译码得到由输入特征图尺寸A×B、输入特征图数量、输出特征图尺寸、输出特征图数量、池化使能、层权重缓存初始地址、层偏置初始地址构成的第k层控制信息;
步骤3、中央控制器根据k的值对特征图缓存输出第k层的层RAM读写控制信号:
若k=0,则将外部输入的二值化输入图片作为输入特征图存入0号特征图缓存中,中央控制器对1号特征图缓存输出写使能信号,并对0号特征图缓存输出读使能信号;
若k≥1,则将前一层的输出特征图作为输入特征图,且如果k为奇数,则中央控制器对0号特征图缓存输出写使能信号,并对1号特征图缓存输出读使能信号;如果k为偶数,则中央控制器对1号输入特征图输出写使能信号,并对0号特征图缓存输出读使能信号;
步骤4、定义预计算结果查找表缓存的编号为t,定义滑框向下移动次数为u,定义滑框向右移动次数为v,并初始化t=0;
步骤5、初始化u=0;
步骤6、初始化v=0;
步骤7、滑框按照2位步长从上至下的方向在输入特征图上纵向滑动、且按照4位步长从左至右的方向在输入特征图上横向换列滑动,从特征图缓存中读取n个通道在第u次向下移动和第v次向右移动计算所需要的输入特征图中大小为4×2的对应数据作为滑动框选数据;
步骤8、根据当前层数k和滑框向下移动次数值u以及滑框向左移动次数值v进行分类处理:
若k=0且u+v≤1,则执行步骤9;
若k=0且u+v>1或k≥1,则执行步骤10;
步骤9、预计算单元制作预计算结果查找表;
步骤9.1、定义输入批计数值为p,并初始化p=0;
步骤9.2、预计算单元将预计算权重数据按照1位步长从左向右的方向横向滑动、按照1位步长从上向下的方向竖向换行滑动,并与滑动框选数据进行同或运算,得到滑动计算结果,其中,预计算权重数据由3位二进制数组成;
步骤9.3、对滑动计算结果中的“1”进行计数,得到计数结果:
步骤9.4、将一次滑动计算的计数结果作为预计算结果存入编号为t的预计算结果查找表缓存中,用于制作预计算结果查找表;
步骤10、制作预计算结果查找表,并根据预计算结果查找表读取预计算结果:
步骤10.1、初始化输出批计数值r=0;
步骤10.2、初始化预计算结果的批计数值q=0;
步骤10.3、预计算单元执行步骤9;
快速计算单元以权重传输控制器输入的m组包含n个通道的大小为3×3的权重数据作为地址,并根据当前编号为t的预计算结果查找表缓存进行分类处理:
若t=0,则从编号为1和编号为2的预计算结果查找表缓存中读取m组权重数据对应的n个通道的大小为(x-2)×2y的预计算结果,得到一次滑动计算的部分卷积和;
若t=1,则从编号为2和编号为0的预计算结果查找表缓存中读取m组权重数据对应的n个通道的大小为(x-2)×2y的预计算结果,得到一次滑动计算的部分卷积和;
若t=2,则从编号为0和编号为1的预计算结果查找表缓存中读取m组权重数据对应的n个通道的大小为(x-2)×2y的预计算结果,得到一次滑动计算的部分卷积和;
步骤11、部分卷积和传输通道将n个通道、每个通道包含m个滑动计算的部分卷积和转换为m张中间特征图、每张中间特征图包含n个通道输入特征图分量,转换方式为从n个通道中提取出一组权重数据所对应的部分卷积和组合成一张中间特征图,m组权重数据提取出对应的部分卷积和组合成m张中间特征图;
步骤12、累加单元对m张中间特征图的n个通道输入特征图分量的对应位进行累加操作,形成m张特征图,并进行存储;
步骤13、若q=0,则累加单元将m张特征图作为部分累加结果进行存储,并执行步骤14;
若q≥1,则累加单元将所存储的部分累加结果与m张特征图的对应位置进行累加操作,形成新的m张特征图作为新的部分累加结果;
步骤15、采用式(1)对累加结果y1进行变换,得到累加变换结果y2:
y2=2y1-9N (1)
步骤16、激活单元根据中央控制器输入的层偏置初始地址取出层偏置数据,并利用式(2)对累加变换结果y2进行批量标准化操作,得到批量标准化操作结果y3后取其符号位,从而完成二值化处理,形成二值化离散数据:
式(2)中,ε为网络训练前预先设定的一个偏移参数,γ为标准化的扩展参数,β为标准化的平移参数,x为训练时一个批次输入的数量,Var[x]为一次网络训练时,批量标准化单元每一批次输入的平均值,E[x]为一次网络训练时,批量标准化单元每一批次输入的方差值;为层偏置;
步骤17、池化单元根据中央控制器输入的池化使能信号判断是否对二值化离散数据进行池化处理,若池化单元接收到池化使能信号,则对二值化离散数据进行最大池化,得到部分输出特征图,若池化单元未接收到池化使能信号,则直接将二值化离散数据作为部分输出特征图;
步骤18、输入/输出特征图传输控制器将部分输出特征图写入到处于写使能有效状态的特征图缓存中;
步骤20、若k=0且u+v≤1,则执行步骤21;
步骤21、判断t≥2是否成立,若成立,则令t=0,否则,令t+1赋值给t;
步骤24、令k+1赋值给k,且判断k>K-1是否成立,若成立,则重复执行步骤5至步骤24,否则输出输出特征图。
Claims (2)
1.一种结果复用的可重构BNN硬件加速器,其特征包括:中央控制器、输入/输出特征图传输控制器、权重传输控制器、译码器、预计算单元、快速计算单元、累加单元、激活单元、池化单元、部分卷积和传输通道、特征图缓存、权重缓存、控制链缓存、预计算权重缓存;
所述控制链缓存用于存储各层的层控制链信息;
所述译码器用于将所述控制链缓存中存储的各层的层控制链信息转译为各个控制器在每一层的控制信息;所述控制信息包括:输入特征图的尺寸A×B、输入特征图的数量、输出特征图的尺寸、输出特征图的数量、池化使能、层权重缓存的初始地址、层偏置的初始地址;
定义二值化卷积神经网络中的当前层数为k;
所述中央控制器根据所述控制链缓存中存储的第k层的层控制链信息,对输入/输出特征图传输控制器、预计算单元、快速计算单元、权重传输控制器、池化单元分别输出相应的控制信号,以控制各个模块的工作,并协调各个模块之间的时序与数据位宽;
所述特征图缓存包括0号特征图缓存和1号特征图缓存,并根据所述中央控制器输入的层RAM读写控制信号,将需要进行计算的二值化输入图片,或者已经完成当前层运算的输出特征图交替地写入或读取到0号特征图缓存和1号特征图缓存中;
所述中央控制器根据控制链缓存中存储的第k层的层控制链信息,分类输出层RAM读写控制信号给所述特征图缓存:
若k=0,则初始化二值化输入图片给所述0号特征图缓存,且所述中央控制器为对所述1号特征图缓存输出写使能信号、对所述0号特征图缓存输出读使能信号;
若k≥1,则所述输入特征图为前一层的输出特征图,且如果k为奇数,则所述中央控制器对所述0号特征图缓存输出写使能信号、对所述1号特征图缓存输出读使能信号,如果k为偶数,则所述中央控制器对所述1号输入特征图输出写使能信号、对所述0号特征图缓存输出读使能信号;
所述预计算权重缓存用于所述预计算单元所需要的预计算权重数据;
所述输入/输出特征图传输控制器用于控制特征图的输入与输出,并根据所述中央控制器输入的控制信号,将输入特征图从所述特征图缓存中取出后,循环次传输给所述预计算单元,每次传输均与所述预计算权重缓存中相应的权重数据进行同或累加计算,得到的预计算结果制成预计算结果查找表,并提供给所述快速计算单元进行数据查找;其中,n表示单次传输输入特征图的通道数;N表示输入特征图的总通道数;
所述权重缓存用于存储所述快速计算单元所需要的权重数据;
所述权重传输控制器根据所述中央控制器的控制信号,将存储在所述权重缓存的权重数据按照个小周期传输给所述快速计算单元,且每次传输n×m个权重数据,从而得到m组权重数据,并经过次循环传输后得到M组权重数据,其中,M表示权重的组数;m表示单次传输的权重组数;
所述部分卷积和传输通道将所述部分卷积和重新组合为中间特征图,即由n个通道、每个通道包含m张特征图分量的通道分量组织转换为m张特征图、每张包含n个通道分量的权重分量组织;
所述激活单元用于将所述累加单元的累加结果进行批量标准化操作和取符号位操作,从而得到二值化离散数据并输出给所述池化单元;
所述池化单元根据池化使能信号对所述二值化离散数据进行处理,若当前层的池化使能信号为“0”,则直接将二值化离散数据作为输出特征图传给输入/输出特征图传输控制器,若当前池化使能信号为“1”,则将二值化离散数据进行最大值池化操作,并将操作结果作为输出特征图传给输入/输出特征图传输控制器。
2.一种结果复用的可重构BNN硬件加速器的图像处理方法,其特征是,所述可重构BNN硬件加速器由中央控制器、输入/输出特征图传输控制器、权重传输控制器、译码器、预计算单元、快速计算单元、累加单元、激活单元、池化单元、部分卷积和传输通道、特征图缓存、权重缓存、控制链缓存、预计算权重缓存所组成,所述特征图缓存包括0号特征图缓存和1号特征图缓存,所述预计算结果查找表包括0号预计算结果查找表、1号预计算结果查找表和2号预计算结果查找表;所述控制链缓存用于存储各层的层控制链信息;所述预计算权重缓存用于所述预计算单元所需要的预计算权重数据;所述权重缓存用于存储所述快速计算单元所需要的权重数据;
所述图像处理方法是按照如下步骤进行图像处理:
步骤1、定义二值化卷积神经网络的当前层数为k,并初始化k=0;
步骤2、所述译码器从控制链缓存中读取第k层的层控制链信息,并对第k层的层控制链进行译码得到由输入特征图尺寸A×B、输入特征图数量、输出特征图尺寸、输出特征图数量、池化使能、层权重缓存初始地址、层偏置初始地址构成的第k层控制信息;
步骤3、所述中央控制器根据k的值对所述特征图缓存输出第k层的层RAM读写控制信号:
若k=0,则将外部输入的二值化输入图片作为输入特征图存入0号特征图缓存中,所述中央控制器对所述1号特征图缓存输出写使能信号,并对所述0号特征图缓存输出读使能信号;
若k≥1,则将前一层的输出特征图作为输入特征图,且如果k为奇数,则所述中央控制器对所述0号特征图缓存输出写使能信号,并对所述1号特征图缓存输出读使能信号;如果k为偶数,则所述中央控制器对所述1号输入特征图输出写使能信号,并对所述0号特征图缓存输出读使能信号;
步骤4、定义所述预计算结果查找表缓存的编号为t,定义滑框向下移动次数为u,定义滑框向右移动次数为v,并初始化t=0;
步骤5、初始化u=0;
步骤6、初始化v=0;
步骤7、滑框按照b位步长从上至下的方向在输入特征图上纵向滑动、且按照a-2位步长从左至右的方向在输入特征图上横向换列滑动,从特征图缓存中读取n个通道在第u次向下移动和第v次向右移动计算所需要的输入特征图中大小为a×b的对应数据作为滑动框选数据;a表示滑框橫向位数,b表示滑框纵向位数;
步骤8、根据当前层数k和滑框向下移动次数值u以及滑框向左移动次数值v进行分类处理:
若k=0且u+v≤1,则执行步骤9;
若k=0且u+v>1或k≥1,则执行步骤10;
步骤9、所述预计算单元制作预计算结果查找表;
步骤9.1、定义输入批计数值为p,并初始化p=0;
步骤9.2、所述预计算单元将所述预计算权重数据按照1位步长从左向右的方向横向滑动、按照1位步长从上向下的方向竖向换行滑动,并与所述滑动框选数据进行同或运算,得到滑动计算结果,其中,预计算权重数据由w位二进制数组成;
步骤9.3、对所述滑动计算结果中的“1”进行计数,得到计数结果:
步骤9.4、将一次滑动计算的计数结果作为预计算结果存入编号为t的预计算结果查找表缓存中,用于制作预计算结果查找表;
步骤10、制作预计算结果查找表,并根据所述预计算结果查找表读取预计算结果:
步骤10.1、初始化输出批计数值r=0;
步骤10.2、初始化预计算结果的批计数值q=0;
步骤10.3、所述预计算单元执行步骤9;
所述快速计算单元以所述权重传输控制器输入的m组包含n个通道的大小为w×w的权重数据作为地址,并根据当前编号为t的预计算结果查找表缓存进行分类处理:
若t=0,则从编号为1和编号为2的预计算结果查找表缓存中读取m组权重数据对应的n个通道的大小为(x-2)×2y的预计算结果,得到一次滑动计算的部分卷积和;
若t=1,则从编号为2和编号为0的预计算结果查找表缓存中读取m组权重数据对应的n个通道的大小为(x-2)×2y的预计算结果,得到一次滑动计算的部分卷积和;
若t=2,则从编号为0和编号为1的预计算结果查找表缓存中读取m组权重数据对应的n个通道的大小为(x-2)×2y的预计算结果,得到一次滑动计算的部分卷积和;
步骤11、所述部分卷积和传输通道将n个通道、每个通道包含m个滑动计算的部分卷积和转换为m张中间特征图、每张中间特征图包含n个通道输入特征图分量,转换方式为从n个通道中提取出一组权重数据所对应的部分卷积和组合成一张中间特征图,m组权重数据提取出对应的部分卷积和组合成m张中间特征图;
步骤12、所述累加单元对m张所述中间特征图的n个通道输入特征图分量的对应位置进行累加操作,形成m张特征图,并进行存储;
步骤13、若q=0,则所述累加单元将m张特征图作为部分累加结果进行存储,并执行步骤14;
若q≥1,则所述累加单元将所存储的部分累加结果与m张特征图的对应位置进行累加操作,形成新的m张特征图作为新的部分累加结果;
步骤15、采用式(1)对所述累加结果y1进行变换,得到累加变换结果y2:
y2=2y1-w×w×N (1)
步骤16、所述激活单元根据中央控制器输入的层偏置初始地址取出层偏置数据,并利用式(2)对所述累加变换结果y2进行批量标准化操作,得到批量标准化操作结果y3后取其符号位,从而完成二值化处理,形成二值化离散数据:
式(2)中,ε为网络训练前预先设定的一个偏移参数,γ为标准化的扩展参数,β为标准化的平移参数,x为训练时一个批次输入的数量,Var[x]为一次网络训练时,批量标准化单元每一批次输入的平均值,E[x]为一次网络训练时,批量标准化单元每一批次输入的方差值;为层偏置;
步骤17、所述池化单元根据所述中央控制器输入的池化使能信号判断是否对二值化离散数据进行池化处理,若所述池化单元接收到所述池化使能信号,则对所述二值化离散数据进行最大池化,得到部分输出特征图,若所述池化单元未接收到所述池化使能信号,则直接将所述二值化离散数据作为部分输出特征图;
步骤18、所述输入/输出特征图传输控制器将所述部分输出特征图写入到处于写使能有效状态的特征图缓存中;
步骤20、若k=0且u+v≤1,则执行步骤21;
步骤21、判断t≥2是否成立,若成立,则令t=0,否则,令t+1赋值给t;
步骤24、令k+1赋值给k,且判断k>K-1是否成立,若成立,则重复执行步骤5至步骤24,否则输出所述输出特征图。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110181395.XA CN112906886B (zh) | 2021-02-08 | 2021-02-08 | 结果复用的可重构bnn硬件加速器及图像处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110181395.XA CN112906886B (zh) | 2021-02-08 | 2021-02-08 | 结果复用的可重构bnn硬件加速器及图像处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112906886A true CN112906886A (zh) | 2021-06-04 |
CN112906886B CN112906886B (zh) | 2022-09-20 |
Family
ID=76123427
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110181395.XA Active CN112906886B (zh) | 2021-02-08 | 2021-02-08 | 结果复用的可重构bnn硬件加速器及图像处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112906886B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023071673A1 (zh) * | 2021-10-29 | 2023-05-04 | 浪潮电子信息产业股份有限公司 | 卷积特征缓存方法、调用方法、装置、设备、介质及产品 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106875011A (zh) * | 2017-01-12 | 2017-06-20 | 南京大学 | 二值权重卷积神经网络加速器的硬件架构及其计算流程 |
CN108564168A (zh) * | 2018-04-03 | 2018-09-21 | 中国科学院计算技术研究所 | 一种对支持多精度卷积神经网络处理器的设计方法 |
CN108665063A (zh) * | 2018-05-18 | 2018-10-16 | 南京大学 | 用于bnn硬件加速器的双向并行处理卷积加速系统 |
CN109993279A (zh) * | 2019-03-11 | 2019-07-09 | 东南大学 | 一种基于查找表计算的双层同或二值神经网络压缩方法 |
US20190251425A1 (en) * | 2018-02-15 | 2019-08-15 | Atlazo, Inc. | Binary neural network accelerator engine methods and systems |
CN110135554A (zh) * | 2019-03-25 | 2019-08-16 | 电子科技大学 | 一种基于fpga的卷积神经网络硬件加速架构 |
CN110780923A (zh) * | 2019-10-31 | 2020-02-11 | 合肥工业大学 | 应用于二值化卷积神经网络的硬件加速器及其数据处理方法 |
CN111008691A (zh) * | 2019-11-06 | 2020-04-14 | 北京中科胜芯科技有限公司 | 一种权值和激活值都二值化的卷积神经网络加速器架构 |
CN111667051A (zh) * | 2020-05-27 | 2020-09-15 | 上海赛昉科技有限公司 | 适用边缘设备的神经网络加速器及神经网络加速计算方法 |
-
2021
- 2021-02-08 CN CN202110181395.XA patent/CN112906886B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106875011A (zh) * | 2017-01-12 | 2017-06-20 | 南京大学 | 二值权重卷积神经网络加速器的硬件架构及其计算流程 |
US20190251425A1 (en) * | 2018-02-15 | 2019-08-15 | Atlazo, Inc. | Binary neural network accelerator engine methods and systems |
CN108564168A (zh) * | 2018-04-03 | 2018-09-21 | 中国科学院计算技术研究所 | 一种对支持多精度卷积神经网络处理器的设计方法 |
CN108665063A (zh) * | 2018-05-18 | 2018-10-16 | 南京大学 | 用于bnn硬件加速器的双向并行处理卷积加速系统 |
CN109993279A (zh) * | 2019-03-11 | 2019-07-09 | 东南大学 | 一种基于查找表计算的双层同或二值神经网络压缩方法 |
CN110135554A (zh) * | 2019-03-25 | 2019-08-16 | 电子科技大学 | 一种基于fpga的卷积神经网络硬件加速架构 |
CN110780923A (zh) * | 2019-10-31 | 2020-02-11 | 合肥工业大学 | 应用于二值化卷积神经网络的硬件加速器及其数据处理方法 |
CN111008691A (zh) * | 2019-11-06 | 2020-04-14 | 北京中科胜芯科技有限公司 | 一种权值和激活值都二值化的卷积神经网络加速器架构 |
CN111667051A (zh) * | 2020-05-27 | 2020-09-15 | 上海赛昉科技有限公司 | 适用边缘设备的神经网络加速器及神经网络加速计算方法 |
Non-Patent Citations (2)
Title |
---|
GIORGIA FISCALETTI等: "《BNNsplit: Binarized Neural Networks for embedded distributed FPGA-based computing systems》", 《2020 DESIGN, AUTOMATION & TEST IN EUROPE CONFERENCE & EXHIBITION (DATE)》 * |
孙孝辉等: "《基于ARM+FPGA平台的二值神经网络加速方法研究》", 《计算机应用研究》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023071673A1 (zh) * | 2021-10-29 | 2023-05-04 | 浪潮电子信息产业股份有限公司 | 卷积特征缓存方法、调用方法、装置、设备、介质及产品 |
Also Published As
Publication number | Publication date |
---|---|
CN112906886B (zh) | 2022-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210357736A1 (en) | Deep neural network hardware accelerator based on power exponential quantization | |
CN108629406B (zh) | 用于卷积神经网络的运算装置 | |
CN108665063B (zh) | 用于bnn硬件加速器的双向并行处理卷积加速系统 | |
CN108229671B (zh) | 一种降低加速器外部数据存储带宽需求的系统和方法 | |
CN110780923B (zh) | 应用于二值化卷积神经网络的硬件加速器及其数据处理方法 | |
CN107256424B (zh) | 三值权重卷积网络处理系统及方法 | |
CN109791628B (zh) | 神经网络模型分块压缩方法、训练方法、计算装置及系统 | |
CN108416427A (zh) | 卷积核堆积数据流、压缩编码以及深度学习算法 | |
CN111898733A (zh) | 一种深度可分离卷积神经网络加速器架构 | |
WO2021057085A1 (zh) | 一种基于混合精度存储的深度神经网络加速器 | |
CN112257844B (zh) | 一种基于混合精度配置的卷积神经网络加速器及其实现方法 | |
CN113344179B (zh) | 基于fpga的二值化卷积神经网络算法的ip核 | |
CN111768458A (zh) | 一种基于卷积神经网络的稀疏图像处理方法 | |
CN111767994B (zh) | 一种神经元计算装置 | |
CN108647184B (zh) | 一种动态比特位卷积乘法实现方法 | |
CN112862091B (zh) | 一种基于快速卷积的资源复用型神经网络硬件加速电路 | |
CN110110852B (zh) | 一种深度学习网络移植到fpag平台的方法 | |
CN113313252B (zh) | 一种基于脉动阵列的深度可分离卷积实现方法 | |
CN111488133A (zh) | 高基数近似布斯编码方法和混合基数布斯编码近似乘法器 | |
CN110222835A (zh) | 一种基于零值检测的卷积神经网络硬件系统及运算方法 | |
CN112906886B (zh) | 结果复用的可重构bnn硬件加速器及图像处理方法 | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
CN113313244B (zh) | 面向加法网络的近存储神经网络加速器及其加速方法 | |
CN111445018B (zh) | 基于加速卷积神经网络算法的紫外成像实时信息处理方法 | |
CN112906887B (zh) | 稀疏gru神经网络加速的实现方法和装置 |
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 |