CN108108809B - 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 - Google Patents
一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 Download PDFInfo
- Publication number
- CN108108809B CN108108809B CN201810179570.XA CN201810179570A CN108108809B CN 108108809 B CN108108809 B CN 108108809B CN 201810179570 A CN201810179570 A CN 201810179570A CN 108108809 B CN108108809 B CN 108108809B
- Authority
- CN
- China
- Prior art keywords
- convolution
- data
- row
- pes
- group
- 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
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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
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)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法,包括预处理单元、硬件加速单元、存储单元;预处理单元用于对原始输入的原始图像帧进行预处理;硬件加速单元用于读入待卷积的预处理后的原始图像帧、卷积核系数、偏移量参数,进行卷积,卷积结束后执行全连接层计算,全连接层计算结束后,输出计算特征判断结果;存储单元用于存储原始输入的原始图像帧、卷积核系数、偏移量参数,以及每一次卷积的输出数据、全连接层的输出数据。本发明解决了传统处理器速度慢、延时大、无法实现实时推理等问题,为针对CNN卷积神经元网络进行推理计算的处理器的设计提供新的解决方案。
Description
技术领域
本发明涉及一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法,属于集成电路处理器层次结构设计技术领域。
背景技术
随着人工智能技术的快速发展,CNN卷积神经网络已经发展成为一种先进的计算机觉目标识别算法,在特征提取、目标识别、人脸识别等领域有着广泛的应用。然而,虽然卷积神经网络CNN的应用十分广泛,但是,依靠传统的CPU处理器和DPU处理器来运算CNN卷积神经网络进行推理有着非常多的局限性:在卷积神经网络中的推理过程中需要进行大量的计算,但是在CPU中,负责逻辑运算的部分(ALU模块)并不多,并且计算指令都是一条接一条的有序执行,无法做到并行计算。GPU虽然可以做到并行计算,但是其一次只能处理一张图片,限制了进行推理的速度,而且功耗很大,无法应用到嵌入式设备中。现有技术中提出了基于FPGA进行推理的方法,但是现有技术并没有充分利用逻辑计算单元,推理过程中很多计算单元都是闲置的。
设计专门针对CNN卷积神经网络进行推理加速的硬件架构,并且将CNN卷积神经网络做到可移动的嵌入式平台中,将大大提高其实用性。
发明内容
针对现有技术的不足,本发明提供了一种针对卷积神经元网络进行推理加速的硬件架构;
本发明还提供了上述硬件架构的工作方法;
本发明利用ARM处理器和AXI总线结构进行数据传输与交互,利用FE阵列电路、Pooling阵列电路和全连接层电路进行卷积神经元网络的计算,利用数据递归和流水线的方法来实现电路资源的最大利用率和高性能处理。
术语解释:
CNN网络中图像卷积的计算公式为:
ai,j为计算后的结果,也称之为特征值。f为激活函数,w(m,n)为卷积核的系数(权重),x(i+m,j+n)为像素值,wb为偏移量参数,w(m,n)为卷积核的系数,wb为偏移量参数。
本发明的技术方案为:
一种针对卷积神经元网络进行推理加速的硬件架构,包括预处理单元、硬件加速单元、存储单元;
所述预处理单元用于对输入的原始图像帧进行预处理;
所述硬件加速单元用于读入待卷积的填充后的图像帧、卷积核系数、偏移量参数,进行卷积,卷积结束后执行全连接层计算,全连接层计算结束后,输出计算特征判断结果,计算特征判断结果是指判断出输入的图片符合各个不同结果的概率;也就是对输入图片进行推理判断然后输出结果,也就是判断出输入的图片符合各个不同结果的概率。
所述存储单元用于存储填充后的图像帧、卷积核系数、偏移量参数,以及每一次卷积的输出数据、全连接层的输出数据。
根据本发明优选的,所述预处理单元包括ARM,所述预处理单元通过AXI总线控制器连接所述硬件加速单元;CPU(ARM)为FPGA自带CPU,且支持AXI总线结构,FPGA逻辑通过AXI总线结构与ARM进行数据交互。所述硬件加速单元包括若干RAM、RAM控制器、裁剪模块、地址控制模块、数据分配控制模块、卷积阵列模块;所有RAM都由double buffer组成,以便提高效率。RAM为double buffer,增加数据共享,减少数据读取冗余,同时考虑最大化支持并行PE计算。
所述ARM对输入的原始图像帧依次执行图像补充、浮点数据转定点数据、对FPGA的逻辑寄存器进行配置;
所述AXI总线控制器读入待卷积的填充后的图像帧、卷积核系数、偏移量参数至若干RAM;所述裁剪模块通过所述RAM控制器从若干RAM中读取数据并进行裁减。压缩数据带宽,减少数据存储量。通过所述RAM控制器和所述地址控制模块,读取裁减后的原始图像帧、卷积核系数、偏移量参数到所述数据分配控制模块;所述数据分配控制模块将裁减后的原始图像帧、卷积核系数、偏移量参数发送至所述卷积阵列模块;所述卷积阵列模块依次进行卷积计算、pooling计算,输出计算特征判断结果。
上述硬件架构的工作方法,包括:
(1)所述ARM对输入的原始图像帧预处理,所述预处理包括依次执行图像补充、浮点数据转定点数据、对FPGA的逻辑寄存器进行配置;
(2)所述AXI总线控制器读入待卷积的填充后的图像帧、卷积核系数、偏移量参数至若干RAM;
(3)所述裁剪模块通过所述RAM控制器从若干RAM中读取数据并进行裁减。压缩数据带宽,减少数据存储量。裁减方法包括:系数阈值裁减、存储index裁减。对整型数据进一步裁减。
(4)通过所述RAM控制器和所述地址控制模块,读取裁减后的图像帧、卷积核系数、偏移量参数到所述数据分配控制模块;
(5)所述数据分配控制模块将裁减后的图像帧、卷积核系数、偏移量参数发送至所述卷积阵列模块;
(6)所述卷积阵列模块依次进行卷积计算、pooling计算,输出计算特征判断结果。
根据本发明优选的,所述步骤(2),包括:所述AXI总线控制器实时判断待卷积的原始图像帧、卷积核系数、偏移量参数是否为边界数据,边界数据是指图像最边上的像素点;如果待卷积的原始图像帧、卷积核系数、偏移量参数均为边界数据,则进行图像补充,即将图像周围填上一圈0;否则,不进行图像补充。
对于M*M的卷积核,需要对图像周边像素进行1个像素的填充。并同时调整图像的存储地址和大小。由于卷积神经网络的滤波器在处理图片时,如果不对原输入图片进行扩充,滤波器无法卷积到图像边缘部分的像素点,因此需要对原图补充0像素点,并同时调整图像的存储地址和大小。
根据本发明优选的,所述步骤(1)中,浮点数据转定点数据是指将浮点数据转定点8bits数据。
步骤(1)中,对FPGA的逻辑寄存器进行配置,是指将权重、偏移量等数据利用AXI总线发送到逻辑寄存器中,配置完成后,输入图片便可以进行推理。
根据本发明优选的,所述步骤(6),所述卷积阵列模块依次进行卷积计算、pooling计算,包括:依次进行第一层卷积计算、第一层pooling计算、第二层卷积计算、第二层pooling计算、第三层卷积计算、第三层pooling计算;
所述第一层卷积计算,设定输入N*N的原始图像帧,并扩展为(N+2)*(N+2)图像;卷积核心为M*M矩阵,步长为1;(扩展图像宽=(卷积核矩阵宽-2)*2+原始图像帧宽,同理,可计算长)则需要N*N次M*M卷积的计算量;所述卷积阵列模块包括三组卷积矩阵,每组N个卷积核心,共需卷积核心N*M个;每个时钟周期执行N个M*M卷积,需要将N*N次卷积数据依次按照行的顺序执行;每个时钟周期执行一行N个M*M卷积;即N个时钟周期执行完第一层卷积;包括:
1)第一个时钟周期内,读取RAM中填充后的图像帧的第一行数据,第一行像素的M*M卷积在填充后的图像帧的一行像素(也就是值为0的像素)、填充后的图像帧的第一行像素、填充后的图像帧的第二行像素上进行,共需N个卷积PE,数据具有大量重叠共享的特性。因此,第一组卷积矩阵N个PE共享一个RAM存储,存储宽度为(N+2)*[(N/4)+1]bits,长度为N+2;
第二组卷积矩阵N个PE与第一卷积矩阵组N个PE共享一个存储;每次读取一行(N+2)*[(N/4)+1]bits数据,不同的PE分别从数据中抽取相应的比特进行卷积计算;因此,第一组N个PE能够同时并行计算,且数据存储的冗余性最小,并行度最高。
读取RAM的第二行数据,除了第一组N个PE需要第二行数据,第二组N个PE同样也需要第二行数据,因此,将第二行数据同时给到第一组卷积矩阵N个PE、第二组卷积矩阵N个PE中;
读取RAM的第三行数据,将第三行数据同时给到第一组卷积矩阵N个PE、第二组卷积矩阵N个PE、第三组卷积矩阵N个PE;此时,N*M个PE阵列已经同时工作。且,第一组PE阵列的数据已经读取完毕,可以完成填充后的图像帧的第一行像素的卷积计算。第一行卷积计算完毕后,第一组PE阵列输出数据组成N*[(N/4)+1]bits数据,输出到另外的输出RAM的第一行数据中(宽为N*[(N/4)+1],长度=N)。
2)第二个时钟周期内,读取RAM第四行数据,第二组卷积矩阵N个PE的数据准备完毕,完成填充后的图像帧的第二行像素的卷积;第二行像素的卷积计算完毕后,第二组卷积矩阵PE阵列输出数据组成N*[(N/4)+1]bits数据,输出到RAM的第二行数据中;第三组卷积矩阵N个PE接收第四行数据;此时,第一组卷积矩阵N个PE处于空闲状态,接受第四行数据,准备数据做填充后的图像帧第四行像素的卷积;
3)第三个时钟周期内,读取RAM第五行数据,第三组卷积矩阵N个PE的数据准备完毕,完成填充后的图像帧的第三行像素的卷积;第三行卷积计算完毕后,第三组卷积矩阵N个PE阵列输出数据组成N*[(N/4)+1]bits数据,输出到RAM的第三行数据中;第一组N个N个PE接收第五行数据;此时,第二组N个PE处于空闲状态,接受第五行数据,准备做填充后的图像帧第五行像素的卷积;
4)按照上述方法依次类推,第N个时钟周期内,读取RAM第N+2行数据,分别送到第一组卷积矩阵N个PE、第二组卷积矩阵N个PE、第三组卷积矩阵N个PE,分别完成或准备三行的卷积计算。可见,此时已经形成了PE阵列的流水操作,数据共享率高,执行效率高。
所述第一层pooling计算,包括:
5)对N*N图像进行pooling计算,输出(N/2)*(N/2)图像;Pooling为2*2的maxpooling。Pooling后输出图像为(N/2)*(N/2)。则需要N*N/4次2*2的pooling计算量。设计pooling电路,一个周期内完成所有2*2的pooling。为了进行下一层卷积计算,同样需要对图像进行边界像素补充。(N/2)*(N/2)→[(N/2)+2]*[(N/2)+2]图像(第二层卷集的卷积核心仍为M*M,扩展图像宽=(卷积核矩阵宽-2)*2+原始图像帧宽,同理,可计算长)。因此,在输出图像像素时,同时判断是否为边界像素,如果为边界像素,则调整像素存储位置并补足0。输出RAM宽度为[(N/2)+2]*[(N/4)+1]bits,长度为[(N/2)+2]。
6)为了更好的利用卷积PE核心,增加电路利用率,减少电路空闲率,此处pooling输出的数据存储需要做特殊设计。将RAM以一条水平线为界,均分为两个部分,即pRAM1、pRAM2;1~[(N/4)+2]行的数据存储于pRAM1中([(N/2)+2]*[(N/4)+1]*[(N/4)+2]bits),[(N/4)+1]~[(N/2)+2]行的数据存储于pRAM2中([(N/2)+2]*[(N/4)+1]*[(N/4)+2]bits)。以便于第二层卷积过程能够同时从两块pRAM中读取数据,将PE核心全部利用起来。
所述第二层卷积计算,输入第一层卷积计算、第一层pooling计算的输出数据,即(N/2)*(N/2)图像,已扩展为[(N/2)+2]*[(N/2)+2]图像;卷积核心为M*M矩阵,步长为1;则需要(N/2)*(N/2)次M*M卷积的计算量;卷积矩阵共有N*M个PE,对[(N/2)+2]*[(N/2)+2]图像的卷积,需要卷积PE核心N/2*M个,将N*M个PE分为两块,每块又分为三组,每组N/2个卷积核心;则每个时钟周期执行2*N/2个=N个M*M卷积;即,每块PE阵列每个时钟周期执行一行N/2个M*M卷积,两块PE阵列同时执行计算,也就是N/4个时钟周期执行完第二层卷积;包括:
7)第一块PE阵列的第一组N/2个PE读取pRAM1第一行数据;同时,第二块PE阵列的第一组N/2个PE读取pRAM2第一行数据;第一块PE阵列和第二块PE阵列同时工作;两块PE阵列,每次读取一行[(N/2)+2]*[(N/4)+1]bits数据,不同的PE分别从数据中抽取相应的比特进行卷积计算。因此,第一组N/2个PE能够同时并行计算,且数据存储的冗余性最小,并行度最高。
8)第一块PE阵列的第一组N/2个PE读取pRAM1第二行数据;同时,第二块PE阵列的第一组N/2个PE读取pRAM2第二行数据;第一块PE阵列和第二块PE阵列同时工作;
9)按照上述方法依次类推,第一块PE阵列的第一组N/2个PE读取pRAM1最后一行数据;同时,第二块PE阵列的第一组N/2个PE读取pRAM2最后一行数据;第一块PE阵列和第二块PE阵列同时工作。
在pRAM1和pRAM2的结构下,虽然第二层卷积数量减少,但是所有的PE单元仍然同时工作,极大的提高了硬件利用率,并且数据共享率并为受到很大的影响,因为在pRAM1和pRAM2中,仅有2行数据重复。
所述第二层pooling计算,包括:
10)对(N/2)*(N/2)图像进行pooling计算,输出(N/4)*(N/4)图像;Pooling为2*2的max pooling。Pooling后输出图像为(N/4)*(N/4)。则,需要(N/2)*(N/2)/4次2*2的pooling计算量。设计pooling电路,一个周期内完成所有2*2的pooling。输出(N/4)*(N/4)图像。为了进行下一层卷积计算,同样需要对图像进行边界像素补充。(N/4)*(N/4)→[(N/4)+2]*[(N/4)+2]图像(第二层卷集的卷积核心仍为M*M,扩展图像宽=(卷积核矩阵宽-2)*2+原始图像帧宽,同理,可计算长)。因此,在输出图像像素时,同时判断是否为边界像素,如果为边界像素,则调整像素存储位置并不足0。输出RAM宽度为[(N/4)+2]*[(N/4)+1]bits,长度为[(N/4)+2]。
11)同样的,为了更好的利用卷积PE核心,增加电路利用率,减少电路空闲率,此处pooling输出的数据存储需要做特殊设计。将RAM以三条水平线为界,均分为四个部分,即pRAM1、pRAM2、pRAM3、pRAM4;1~[(N/4)-3]行数据存储于pRAM1([(N/4)+2]*[(N/4)+1]*[(N/4)-1]bits),[(N/4)-4]~[(N/4)-1]行数据存储于pRAM2([(N/4)+2]*[(N/4)+1]*[(N/4)-1]bits),[(N/4)-2]~[(N/4)+1]行数据存储于pRAM3([(N/4)+4]*[(N/4)+1]*[(N/4)-1]bits),(N/4)~[(N/4)+2]行数据存储于pRAM4([(N/4)+2]*[(N/4)+1]*[(N/4)-4]bits)。以便于第三层卷积过程能够同时从四块pRAM中读取数据,将PE核心全部利用起来。
所述第三层卷积计算,输入(N/4)*(N/4)图像,已扩展为[(N/4)+2]*[(N/4)+2]图像;卷积核心为M*M矩阵,步长为1;需要(N/4)*(N/4)次M*M卷积的计算量;卷积矩阵共有N*M个PE,对(N/4)*(N/4)的卷积,需要卷积PE核心N/2*M个;PE可以分为四块,每块又分为三组,每组(N/4)个卷积计算核心,则每个时钟周期执行4块*(N/4)个=N个M*M卷积,即,每块PE阵列每个时钟周期执行一行(N/4)个M*M卷积,四块PE阵列同时执行计算,也就是2个时钟周期执行完第三层卷积,包括:
12)第一块PE阵列的第一组(N/4)个PE读取pRAM1第一行数据,同时,第二块PE阵列的第一组(N/4)个PE读取pRAM2第一行数据,第三块PE阵列的第一组(N/4)个PE读取pRAM3第一行数据,第四块PE阵列的第一组(N/4)个PE读取pRAM4第一行数据;第一块~第四块PE阵列同时工作。四块PE阵列,每次读取一行[(N/4)+2]*[(N/4)+1]bits数据,不同的PE分别从数据中抽取相应的比特进行卷积计算。
13)第一块PE阵列的第一组(N/4)个PE读取pRAM1第二行数据,同时,第二块PE阵列的第一组(N/4)个PE读取pRAM2第二行数据,第三块PE阵列的第一组(N/4)个PE读取pRAM3第二行数据,第四块PE阵列的第一组(N/4)个PE读取pRAM4第二行数据;
14)按照上述方法依次类推,第一块PE阵列的第一组(N/4)个PE读取pRAM1最后一行数据,同时,第二块PE阵列的第一组(N/4)个PE读取pRAM2最后一行数据,第三块PE阵列的第一组(N/4)个PE读取pRAM3最后一行数据,第四块PE阵列的第一组(N/4)个PE读取pRAM4最后一行数据。在pRAM1~pRAM4的结构下,虽然第三层卷积数量减少,但是所有的PE单元仍然同时工作,极大的提高了硬件利用率。但是,该层的数据重复率较大,以数据存储资源换取性能的提高。
所述第三层pooling计算,包括:
15)输入(N/4)*(N/4)图像进行pooling,输出4*4图像;Pooling为2*2的maxpooling。则,需要[(N/4)+1]*[(N/4)+1]/4次2*2的pooling计算量。设计pooling电路,一个周期内完成所有2*2的pooling。
16)存储第三层pooling计算输出数据。数据正常存储。
本发明的有益效果为:
1、本发明通过设计专门进行卷积运算的PE阵列、Pooling阵列、全连接层计算阵列和迭代的计算方法,并且增加ARM和AXI进行数据的总线传输,解决了传统处理器速度慢、延时大、无法实现实时推理等问题,为针对CNN卷积神经元网络进行推理计算的处理器的设计提供新的解决方案。
2、本发明利用ARM处理器和AXI总线结构进行数据传输与交互,利用FE阵列电路,Pooling阵列电路和全连接层电路来进行卷积神经元网络的计算,利用数据递归和流水线的方法来实现电路资源的最大利用率和高性能处理。递归是指再进行完一层的PE和Pooling之后,数据直接再次进入上次计算的电路中,不用再进行读取,从而实现电路的递归利用。流水线是指PE阵列进行卷积计算时候实现的流水操作,也就是通过数据的输送和PE的设计最大限度地让所有PE同时工作,让PE阵列实现流水工作。
3、本发明所有的数据均存于片内RAM中而不是存于外部存储中,从而大幅度减少了数据来回存储的延时,从而提高了推理的速度。而且数据在片内流动也大幅度减少了功耗,从而使其能够应用到嵌入式设备中。
4、本发明利用数据迭代的方法充分利用了逻辑计算单元,让逻辑计算单元大部分时间都同时工作。
附图说明
图1是本发明针对卷积神经元网络进行推理加速的硬件架构设计结构示意图。
图2是本发明针对卷积神经元网络进行推理加速控制结构图。
具体实施方式
下面结合说明书附图和实施例对本发明作进一步限定,但不限于此。
实施例1
一种针对卷积神经元网络进行推理加速的硬件架构,如图1所示,包括预处理单元、硬件加速单元、存储单元;
预处理单元用于对输入的原始图像帧进行预处理;
硬件加速单元用于读入待卷积的填充后的图像帧、卷积核系数、偏移量参数,进行卷积,卷积结束后执行全连接层计算,全连接层计算结束后,输出计算特征判断结果,计算特征判断结果是指判断出输入的图片符合各个不同结果的概率;也就是对输入图片进行推理判断然后输出结果,也就是判断出输入的图片符合各个不同结果的概率。
存储单元用于存储填充后的图像帧、卷积核系数、偏移量参数,以及每一次卷积的输出数据、全连接层的输出数据。
实施例2
根据实施例1所述的一种针对卷积神经元网络进行推理加速的硬件架构,其区别在于,
预处理单元包括ARM,预处理单元通过AXI总线控制器连接硬件加速单元;CPU(ARM)为FPGA自带CPU,且支持AXI总线结构,FPGA逻辑通过AXI总线结构与ARM进行数据交互。硬件加速单元包括若干RAM、RAM控制器、裁剪模块、地址控制模块、数据分配控制模块、卷积阵列模块;所有RAM都由double buffer组成,以便提高效率。RAM为double buffer,增加数据共享,减少数据读取冗余,同时考虑最大化支持并行PE计算。
ARM对输入的原始图像帧依次执行图像补充、浮点数据转定点数据、对FPGA的逻辑寄存器进行配置;
AXI总线控制器读入待卷积的填充后的图像帧、卷积核系数、偏移量参数至若干RAM;裁剪模块通过RAM控制器从若干RAM中读取数据并进行裁减。压缩数据带宽,减少数据存储量。通过RAM控制器和地址控制模块,读取裁减后的原始图像帧、卷积核系数、偏移量参数到数据分配控制模块;数据分配控制模块将裁减后的原始图像帧、卷积核系数、偏移量参数发送至所述卷积阵列模块;卷积阵列模块依次进行卷积计算、pooling计算,输出计算特征判断结果。
实施例3
实施例2所述的硬件架构的工作方法,包括:
(1)ARM对输入的原始图像帧预处理,预处理包括依次执行图像补充、浮点数据转定点数据、对FPGA的逻辑寄存器进行配置;浮点数据转定点数据是指将浮点数据转定点8bits数据。对FPGA的逻辑寄存器进行配置,是指将权重、偏移量等数据利用AXI总线发送到逻辑寄存器中,配置完成后,输入图片便可以进行推理。FPGA的逻辑寄存器的连接关系在FPGA内部固定,如图1所示;
(2)AXI总线控制器读入待卷积的填充后的图像帧、卷积核系数、偏移量参数至若干RAM;包括:AXI总线控制器实时判断待卷积的原始图像帧、卷积核系数、偏移量参数是否为边界数据,边界数据是指图像最边上的像素点;如果待卷积的原始图像帧、卷积核系数、偏移量参数均为边界数据,则进行图像补充,即将图像周围填上一圈0;否则,不进行图像补充。
对于M*M的卷积核,需要对图像周边像素进行1个像素的填充。并同时调整图像的存储地址和大小。由于卷积神经网络的滤波器在处理图片时,如果不对原输入图片进行扩充,滤波器无法卷积到图像边缘部分的像素点,因此需要对原图补充0像素点,并同时调整图像的存储地址和大小。
(3)裁剪模块通过RAM控制器从若干RAM中读取数据并进行裁减。压缩数据带宽,减少数据存储量。裁减方法包括:系数阈值裁减、存储index裁减。对整型数据进一步裁减。
(4)通过RAM控制器和地址控制模块,读取裁减后的图像帧、卷积核系数、偏移量参数到所述数据分配控制模块;
(5)数据分配控制模块将裁减后的图像帧、卷积核系数、偏移量参数发送至卷积阵列模块;
(6)卷积阵列模块依次进行卷积计算、pooling计算,输出计算特征判断结果。
针对卷积神经元网络进行推理加速控制结构图如图2所示。图2中,首先,利用AXI总线对FPGA的逻辑寄存器进行配置,将权重、偏置量等参数配置到片内RAM中,FPGA与ARM利用AXI总线进行数据交互。然后,输入图片进行推理运算,图片用AXI总线进行传输,存储于片上RAM中。最后,在FPGA中的加速电路得到计算特征判断结果后,利用显示器进行判断结果的显示。
卷积阵列模块依次进行卷积计算、pooling计算,包括:依次进行第一层卷积计算、第一层pooling计算、第二层卷积计算、第二层pooling计算、第三层卷积计算、第三层pooling计算;
第一层卷积计算,设定输入N*N的原始图像帧,并扩展为(N+2)*(N+2)图像;卷积核心为M*M矩阵,步长为1;(扩展图像宽=(卷积核矩阵宽-2)*2+原始图像帧宽,同理,可计算长)则需要N*N次M*M卷积的计算量;所述卷积阵列模块包括三组卷积矩阵,每组N个卷积核心,共需卷积核心N*M个;每个时钟周期执行N个M*M卷积,需要将N*N次卷积数据依次按照行的顺序执行;每个时钟周期执行一行N个M*M卷积;即N个时钟周期执行完第一层卷积;包括:
1)第一个时钟周期内,读取RAM中填充后的图像帧的第一行数据,第一行像素的M*M卷积在填充后的图像帧的一行像素(也就是值为0的像素)、填充后的图像帧的第一行像素、填充后的图像帧的第二行像素上进行,共需N个卷积PE,数据具有大量重叠共享的特性。因此,第一组卷积矩阵N个PE共享一个RAM存储,存储宽度为(N+2)*[(N/4)+1]bits,长度为N+2;
第二组卷积矩阵N个PE与第一卷积矩阵组N个PE共享一个存储;每次读取一行(N+2)*[(N/4)+1]bits数据,不同的PE分别从数据中抽取相应的比特进行卷积计算;因此,第一组N个PE能够同时并行计算,且数据存储的冗余性最小,并行度最高。
读取RAM的第二行数据,除了第一组N个PE需要第二行数据,第二组N个PE同样也需要第二行数据,因此,将第二行数据同时给到第一组卷积矩阵N个PE、第二组卷积矩阵N个PE中;
读取RAM的第三行数据,将第三行数据同时给到第一组卷积矩阵N个PE、第二组卷积矩阵N个PE、第三组卷积矩阵N个PE;此时,N*M个PE阵列已经同时工作。且,第一组PE阵列的数据已经读取完毕,可以完成填充后的图像帧的第一行像素的卷积计算。第一行卷积计算完毕后,第一组PE阵列输出数据组成N*[(N/4)+1]bits数据,输出到另外的输出RAM的第一行数据中(宽为N*[(N/4)+1],长度=N)。
2)第二个时钟周期内,读取RAM第四行数据,第二组卷积矩阵N个PE的数据准备完毕,完成填充后的图像帧的第二行像素的卷积;第二行像素的卷积计算完毕后,第二组卷积矩阵PE阵列输出数据组成N*[(N/4)+1]bits数据,输出到RAM的第二行数据中;第三组卷积矩阵N个PE接收第四行数据;此时,第一组卷积矩阵N个PE处于空闲状态,接受第四行数据,准备数据做填充后的图像帧第四行像素的卷积;
3)第三个时钟周期内,读取RAM第五行数据,第三组卷积矩阵N个PE的数据准备完毕,完成填充后的图像帧的第三行像素的卷积;第三行卷积计算完毕后,第三组卷积矩阵N个PE阵列输出数据组成N*[(N/4)+1]bits数据,输出到RAM的第三行数据中;第一组N个N个PE接收第五行数据;此时,第二组N个PE处于空闲状态,接受第五行数据,准备做填充后的图像帧第五行像素的卷积;
4)按照上述方法依次类推,第N个时钟周期内,读取RAM第N+2行数据,分别送到第一组卷积矩阵N个PE、第二组卷积矩阵N个PE、第三组卷积矩阵N个PE,分别完成或准备三行的卷积计算。可见,此时已经形成了PE阵列的流水操作,数据共享率高,执行效率高。
第一层pooling计算,包括:
5)对N*N图像进行pooling计算,输出(N/2)*(N/2)图像;Pooling为2*2的maxpooling。Pooling后输出图像为(N/2)*(N/2)。则需要N*N/4次2*2的pooling计算量。设计pooling电路,一个周期内完成所有2*2的pooling。为了进行下一层卷积计算,同样需要对图像进行边界像素补充。(N/2)*(N/2)→[(N/2)+2]*[(N/2)+2]图像(第二层卷集的卷积核心仍为M*M,扩展图像宽=(卷积核矩阵宽-2)*2+原始图像帧宽,同理,可计算长)。因此,在输出图像像素时,同时判断是否为边界像素,如果为边界像素,则调整像素存储位置并补足0。输出RAM宽度为[(N/2)+2]*[(N/4)+1]bits,长度为[(N/2)+2]。
6)为了更好的利用卷积PE核心,增加电路利用率,减少电路空闲率,此处pooling输出的数据存储需要做特殊设计。将RAM以一条水平线为界,均分为两个部分,即pRAM1、pRAM2;1~[(N/4)+2]行的数据存储于pRAM1中([(N/2)+2]*[(N/4)+1]*[(N/4)+2]bits),[(N/4)+1]~[(N/2)+2]行的数据存储于pRAM2中([(N/2)+2]*[(N/4)+1]*[(N/4)+2]bits)。以便于第二层卷积过程能够同时从两块pRAM中读取数据,将PE核心全部利用起来。
第二层卷积计算,输入第一层卷积计算、第一层pooling计算的输出数据,即(N/2)*(N/2)图像,已扩展为[(N/2)+2]*[(N/2)+2]图像;卷积核心为M*M矩阵,步长为1;则需要(N/2)*(N/2)次M*M卷积的计算量;卷积矩阵共有N*M个PE,对[(N/2)+2]*[(N/2)+2]图像的卷积,需要卷积PE核心N/2*M个,将N*M个PE分为两块,每块又分为三组,每组N/2个卷积核心;则每个时钟周期执行2*N/2个=N个M*M卷积;即,每块PE阵列每个时钟周期执行一行N/2个M*M卷积,两块PE阵列同时执行计算,也就是N/4个时钟周期执行完第二层卷积;包括:
7)第一块PE阵列的第一组N/2个PE读取pRAM1第一行数据;同时,第二块PE阵列的第一组N/2个PE读取pRAM2第一行数据;第一块PE阵列和第二块PE阵列同时工作;两块PE阵列,每次读取一行[(N/2)+2]*[(N/4)+1]bits数据,不同的PE分别从数据中抽取相应的比特进行卷积计算。因此,第一组N/2个PE能够同时并行计算,且数据存储的冗余性最小,并行度最高。
8)第一块PE阵列的第一组N/2个PE读取pRAM1第二行数据;同时,第二块PE阵列的第一组N/2个PE读取pRAM2第二行数据;第一块PE阵列和第二块PE阵列同时工作;
9)按照上述方法依次类推,第一块PE阵列的第一组N/2个PE读取pRAM1最后一行数据;同时,第二块PE阵列的第一组N/2个PE读取pRAM2最后一行数据;第一块PE阵列和第二块PE阵列同时工作。
在pRAM1和pRAM2的结构下,虽然第二层卷积数量减少,但是所有的PE单元仍然同时工作,极大的提高了硬件利用率,并且数据共享率并为受到很大的影响,因为在pRAM1和pRAM2中,仅有2行数据重复。
第二层pooling计算,包括:
10)对(N/2)*(N/2)图像进行pooling计算,输出(N/4)*(N/4)图像;Pooling为2*2的max pooling。Pooling后输出图像为(N/4)*(N/4)。则,需要(N/2)*(N/2)/4次2*2的pooling计算量。设计pooling电路,一个周期内完成所有2*2的pooling。输出(N/4)*(N/4)图像。为了进行下一层卷积计算,同样需要对图像进行边界像素补充。(N/4)*(N/4)→[(N/4)+2]*[(N/4)+2]图像(第二层卷集的卷积核心仍为M*M,扩展图像宽=(卷积核矩阵宽-2)*2+原始图像帧宽,同理,可计算长)。因此,在输出图像像素时,同时判断是否为边界像素,如果为边界像素,则调整像素存储位置并不足0。输出RAM宽度为[(N/4)+2]*[(N/4)+1]bits,长度为[(N/4)+2]。
11)同样的,为了更好的利用卷积PE核心,增加电路利用率,减少电路空闲率,此处pooling输出的数据存储需要做特殊设计。将RAM以三条水平线为界,均分为四个部分,即pRAM1、pRAM2、pRAM3、pRAM4;1~[(N/4)-3]行数据存储于pRAM1([(N/4)+2]*[(N/4)+1]*[(N/4)-1]bits),[(N/4)-4]~[(N/4)-1]行数据存储于pRAM2([(N/4)+2]*[(N/4)+1]*[(N/4)-1]bits),[(N/4)-2]~[(N/4)+1]行数据存储于pRAM3([(N/4)+4]*[(N/4)+1]*[(N/4)-1]bits),(N/4)~[(N/4)+2]行数据存储于pRAM4([(N/4)+2]*[(N/4)+1]*[(N/4)-4]bits)。以便于第三层卷积过程能够同时从四块pRAM中读取数据,将PE核心全部利用起来。
第三层卷积计算,输入(N/4)*(N/4)图像,已扩展为[(N/4)+2]*[(N/4)+2]图像;卷积核心为M*M矩阵,步长为1;需要(N/4)*(N/4)次M*M卷积的计算量;卷积矩阵共有N*M个PE,对(N/4)*(N/4)的卷积,需要卷积PE核心N/2*M个;PE可以分为四块,每块又分为三组,每组(N/4)个卷积计算核心,则每个时钟周期执行4块*(N/4)个=N个M*M卷积,即,每块PE阵列每个时钟周期执行一行(N/4)个M*M卷积,四块PE阵列同时执行计算,也就是2个时钟周期执行完第三层卷积,包括:
12)第一块PE阵列的第一组(N/4)个PE读取pRAM1第一行数据,同时,第二块PE阵列的第一组(N/4)个PE读取pRAM2第一行数据,第三块PE阵列的第一组(N/4)个PE读取pRAM3第一行数据,第四块PE阵列的第一组(N/4)个PE读取pRAM4第一行数据;第一块~第四块PE阵列同时工作。四块PE阵列,每次读取一行[(N/4)+2]*[(N/4)+1]bits数据,不同的PE分别从数据中抽取相应的比特进行卷积计算。
13)第一块PE阵列的第一组(N/4)个PE读取pRAM1第二行数据,同时,第二块PE阵列的第一组(N/4)个PE读取pRAM2第二行数据,第三块PE阵列的第一组(N/4)个PE读取pRAM3第二行数据,第四块PE阵列的第一组(N/4)个PE读取pRAM4第二行数据;
14)按照上述方法依次类推,第一块PE阵列的第一组(N/4)个PE读取pRAM1最后一行数据,同时,第二块PE阵列的第一组(N/4)个PE读取pRAM2最后一行数据,第三块PE阵列的第一组(N/4)个PE读取pRAM3最后一行数据,第四块PE阵列的第一组(N/4)个PE读取pRAM4最后一行数据。在pRAM1~pRAM4的结构下,虽然第三层卷积数量减少,但是所有的PE单元仍然同时工作,极大的提高了硬件利用率。但是,该层的数据重复率较大,以数据存储资源换取性能的提高。
第三层pooling计算,包括:
15)输入(N/4)*(N/4)图像进行pooling,输出4*4图像;Pooling为2*2的maxpooling。则,需要[(N/4)+1]*[(N/4)+1]/4次2*2的pooling计算量。设计pooling电路,一个周期内完成所有2*2的pooling。
16)存储第三层pooling计算输出数据。数据正常存储。
Claims (3)
1.一种针对卷积神经元网络进行推理加速的硬件架构的工作方法,其特征在于,包括预处理单元、硬件加速单元、存储单元;
所述预处理单元用于对输入的原始图像帧进行预处理;
所述硬件加速单元用于读入待卷积的填充后的图像帧、卷积核系数、偏移量参数,进行卷积,卷积结束后执行全连接层计算,全连接层计算结束后,输出计算特征判断结果,计算特征判断结果是指判断出输入的图片符合各个不同结果的概率;
所述存储单元用于存储填充后的图像帧、卷积核系数、偏移量参数,以及每一次卷积的输出数据、全连接层的输出数据;
所述预处理单元包括ARM,所述预处理单元通过AXI总线控制器连接所述硬件加速单元;所述硬件加速单元包括若干RAM、RAM控制器、裁减 模块、地址控制模块、数据分配控制模块、卷积阵列模块;
所述ARM对输入的原始图像帧依次执行图像补充、浮点数据转定点数据、对FPGA的逻辑寄存器进行配置;
所述AXI总线控制器读入待卷积的填充后的图像帧、卷积核系数、偏移量参数至若干RAM;所述裁减 模块通过所述RAM控制器从若干RAM中读取数据并进行裁减;通过所述RAM控制器和所述地址控制模块,读取裁减后的原始图像帧、卷积核系数、偏移量参数到所述数据分配控制模块;所述数据分配控制模块将裁减后的原始图像帧、卷积核系数、偏移量参数发送至所述卷积阵列模块;所述卷积阵列模块依次进行卷积计算、pooling计算,输出计算特征判断结果;包括:
步骤(1):所述ARM对输入的原始图像帧预处理,所述预处理包括依次执行图像补充、浮点数据转定点数据、对FPGA的逻辑寄存器进行配置;
步骤(2):所述AXI总线控制器读入待卷积的填充后的图像帧、卷积核系数、偏移量参数至若干RAM;
步骤(3):所述裁减 模块通过所述RAM控制器从若干RAM中读取数据并进行裁减;
步骤(4):通过所述RAM控制器和所述地址控制模块,读取裁减后的图像帧、卷积核系数、偏移量参数到所述数据分配控制模块;
步骤(5):所述数据分配控制模块将裁减后的图像帧、卷积核系数、偏移量参数发送至所述卷积阵列模块;
步骤(6):所述卷积阵列模块依次进行卷积计算、pooling计算,输出计算特征判断结果;
所述卷积阵列模块依次进行卷积计算、pooling计算,包括:依次进行第一层卷积计算、第一层pooling计算、第二层卷积计算、第二层pooling计算、第三层卷积计算、第三层pooling计算;
所述第一层卷积计算,设定输入N*N的原始图像帧,并扩展为(N+2)*(N+2)图像;卷积核心为M*M矩阵,M*M为3*3,步长为1;则需要N*N次M*M卷积的计算量;所述卷积阵列模块包括三组卷积矩阵,每组N个卷积核心,共需卷积核心3*N个;每个时钟周期执行N个M*M卷积,需要将N*N次卷积数据依次按照行的顺序执行;每个时钟周期执行一行N个M*M卷积;即N个时钟周期执行完第一层卷积;包括:
1)第一个时钟周期内,读取RAM中填充后的图像帧的第一行数据,第一行像素的M*M卷积在填充后的图像帧的一行像素、填充后的图像帧的第一行像素、填充后的图像帧的第二行像素上进行,共需N个卷积PE,第一组卷积矩阵N个PE共享一个RAM存储,存储宽度为(N+2)*[(N/4)+1]bits,长度为N+2;
第二组卷积矩阵N个PE与第一卷积矩阵组N个PE共享一个存储;每次读取一行(N+2)*[(N/4)+1]bits数据,不同的PE分别从数据中抽取相应的比特进行卷积计算;
读取RAM的第二行数据,将第二行数据同时给到第一组卷积矩阵N个PE、第二组卷积矩阵N个PE中;
读取RAM的第三行数据,将第三行数据同时给到第一组卷积矩阵N个PE、第二组卷积矩阵N个PE、第三组卷积矩阵N个PE;
2)第二个时钟周期内,读取RAM第四行数据,第二组卷积矩阵N个PE的数据准备完毕,完成填充后的图像帧的第二行像素的卷积;第二行像素的卷积计算完毕后,第二组卷积矩阵PE阵列输出数据组成N*[(N/4)+1]bits数据,输出到RAM的第二行数据中;第三组卷积矩阵N个PE接收第四行数据;此时,第一组卷积矩阵N个PE处于空闲状态,接受第四行数据,准备数据做填充后的图像帧第四行像素的卷积;
3)第三个时钟周期内,读取RAM第五行数据,第三组卷积矩阵N个PE的数据准备完毕,完成填充后的图像帧的第三行像素的卷积;第三行卷积计算完毕后,第三组卷积矩阵N个PE阵列输出数据组成N*[(N/4)+1]bits数据,输出到RAM的第三行数据中;第一组N个PE接收第五行数据;此时,第二组N个PE处于空闲状态,接受第五行数据,准备做填充后的图像帧第五行像素的卷积;
4)第N个时钟周期内,读取RAM第N+2行数据,分别送到第一组卷积矩阵N个PE、第二组卷积矩阵N个PE、第三组卷积矩阵N个PE,分别完成或准备三行的卷积计算;
所述第一层pooling计算,包括:
5)对N*N图像进行pooling计算,输出(N/2)*(N/2)图像;
6)将RAM均分为两个部分,即pRAM1、pRAM2;1~[(N/4)+2]行的数据存储于pRAM1中,[(N/4)+3]~[(N/2)+2]行的数据存储于pRAM2中;
所述第二层卷积计算,输入第一层卷积计算、第一层pooling计算的输出数据,即(N/2)*(N/2)图像,已扩展为[(N/2)+2]*[(N/2)+2]图像;卷积核心为M*M矩阵,步长为1;则需要(N/2)*(N/2)次M*M卷积的计算量;卷积矩阵共有N*M个PE,对[(N/2)+2]*[(N/2)+2]图像的卷积,需要卷积PE核心N/2*M个,将N*M个PE分为两块,每块又分为三组,每组N/2个卷积核心;则每个时钟周期执行2*N/2个=N个M*M卷积;即,每块PE阵列每个时钟周期执行一行N/2个M*M卷积,两块PE阵列同时执行计算,也就是N/4个时钟周期执行完第二层卷积;包括:
7)第一块PE阵列的第一组N/2个PE读取pRAM1第一行数据;同时,第二块PE阵列的第一组N/2个PE读取pRAM2第一行数据;第一块PE阵列和第二块PE阵列同时工作;
8)第一块PE阵列的第一组N/2个PE读取pRAM1第二行数据;同时,第二块PE阵列的第一组N/2个PE读取pRAM2第二行数据;第一块PE阵列和第二块PE阵列同时工作;
9)第一块PE阵列的第一组N/2个PE读取pRAM1最后一行数据;同时,第二块PE阵列的第一组N/2个PE读取pRAM2最后一行数据;第一块PE阵列和第二块PE阵列同时工作;
所述第二层pooling计算,包括:
10)对(N/2)*(N/2)图像进行pooling计算,输出(N/4)*(N/4)图像;
11)将RAM均分为四个部分,即pRAM1’、pRAM2’、pRAM3’、pRAM4’;1~[(N/4)-3]行数据存储于pRAM1’,[(N/4)-4]~[(N/4)-1]行数据存储于pRAM2’,[(N/4)-2]~[(N/4)+1]行数据存储于pRAM3’,(N/4)~[(N/4)+2]行数据存储于pRAM4’;
所述第三层卷积计算,输入(N/4)*(N/4)图像,已扩展为[(N/4)+2]*[(N/4)+2]图像;卷积核心为M*M矩阵,步长为1;需要(N/4)*(N/4)次M*M卷积的计算量;卷积矩阵共有N*M个PE,对(N/4)*(N/4)的卷积,需要卷积PE核心N/2*M个;PE可以分为四块,每块又分为三组,每组(N/4)个卷积计算核心,则每个时钟周期执行4块*(N/4)个=N个M*M卷积,即,每块PE阵列每个时钟周期执行一行(N/4)个M*M卷积,四块PE阵列同时执行计算,也就是2个时钟周期执行完第三层卷积,包括:
12)第一块PE阵列的第一组(N/4)个PE读取pRAM1’第一行数据,同时,第二块PE阵列的第一组(N/4)个PE读取pRAM2’第一行数据,第三块PE阵列的第一组(N/4)个PE读取pRAM3’第一行数据,第四块PE阵列的第一组(N/4)个PE读取pRAM4’第一行数据;
13)第一块PE阵列的第一组(N/4)个PE读取pRAM1’第二行数据,同时,第二块PE阵列的第一组(N/4)个PE读取pRAM2’第二行数据,第三块PE阵列的第一组(N/4)个PE读取pRAM3’第二行数据,第四块PE阵列的第一组(N/4)个PE读取pRAM4’第二行数据;
14)第一块PE阵列的第一组(N/4)个PE读取pRAM1’最后一行数据,同时,第二块PE阵列的第一组(N/4)个PE读取pRAM2’最后一行数据,第三块PE阵列的第一组(N/4)个PE读取pRAM3’最后一行数据,第四块PE阵列的第一组(N/4)个PE读取pRAM4’最后一行数据;
所述第三层pooling计算,包括:
15)输入(N/4)*(N/4)图像进行pooling,输出(N/8)*(N/8)的图像;
16)存储第三层pooling计算输出数据。
2.根据权利要求1所述的硬件架构的工作方法,其特征在于,所述步骤(2),包括:所述AXI总线控制器实时判断待卷积的原始图像帧、卷积核系数、偏移量参数是否为边界数据,边界数据是指图像最边上的像素点;如果待卷积的原始图像帧、卷积核系数、偏移量参数均为边界数据,则进行图像补充,即将图像周围填上一圈0;否则,不进行图像补充。
3.根据权利要求1所述的硬件架构的工作方法,其特征在于,所述步骤(1)中,浮点数据转定点数据是指将浮点数据转定点8bits数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810179570.XA CN108108809B (zh) | 2018-03-05 | 2018-03-05 | 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810179570.XA CN108108809B (zh) | 2018-03-05 | 2018-03-05 | 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108108809A CN108108809A (zh) | 2018-06-01 |
CN108108809B true CN108108809B (zh) | 2021-03-02 |
Family
ID=62205969
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810179570.XA Active CN108108809B (zh) | 2018-03-05 | 2018-03-05 | 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108108809B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108958938B (zh) * | 2018-06-29 | 2020-01-14 | 百度在线网络技术(北京)有限公司 | 数据处理方法、装置及设备 |
CN110826707B (zh) * | 2018-08-10 | 2023-10-31 | 北京百度网讯科技有限公司 | 应用于卷积神经网络的加速方法和硬件加速器 |
CN109214504B (zh) * | 2018-08-24 | 2020-09-04 | 北京邮电大学深圳研究院 | 一种基于fpga的yolo网络前向推理加速器设计方法 |
CN109447254B (zh) * | 2018-11-01 | 2021-03-16 | 浪潮集团有限公司 | 一种卷积神经网络推理硬件加速方法及其装置 |
CN109685208B (zh) * | 2018-12-24 | 2023-03-24 | 合肥君正科技有限公司 | 一种用于神经网络处理器数据稀梳化加速的方法及装置 |
CN109871939B (zh) * | 2019-01-29 | 2021-06-15 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种图像处理方法及图像处理装置 |
CN109886400B (zh) * | 2019-02-19 | 2020-11-27 | 合肥工业大学 | 基于卷积核拆分的卷积神经网络硬件加速器***及其计算方法 |
CN109857460B (zh) * | 2019-02-20 | 2021-09-21 | 南京华捷艾米软件科技有限公司 | 基于risc-v架构的矩阵卷积计算方法、接口、协处理器及*** |
CN110032538B (zh) * | 2019-03-06 | 2020-10-02 | 上海熠知电子科技有限公司 | 一种数据读取***和方法 |
CN110047031A (zh) * | 2019-03-26 | 2019-07-23 | 深兰科技(上海)有限公司 | 一种像素段拼接的方法和装置 |
CN110084739A (zh) * | 2019-03-28 | 2019-08-02 | 东南大学 | 一种基于cnn的画质增强算法的fpga并行加速*** |
CN110533177B (zh) * | 2019-08-22 | 2023-12-26 | 安谋科技(中国)有限公司 | 一种数据读写装置、方法、设备、介质及卷积加速器 |
CN112189216A (zh) * | 2019-08-29 | 2021-01-05 | 深圳市大疆创新科技有限公司 | 数据处理方法及设备 |
CN111860809B (zh) * | 2020-06-18 | 2024-03-15 | 清华大学 | 采用填充后图像传感芯片进行首层卷积层处理的方法 |
CN112241509B (zh) * | 2020-09-29 | 2024-03-12 | 格兰菲智能科技有限公司 | 图形处理器及其加速方法 |
CN112395092B (zh) * | 2020-11-30 | 2023-06-02 | 清华大学 | 数据处理方法及人工智能处理器 |
CN112686901B (zh) * | 2021-03-11 | 2021-08-24 | 北京小白世纪网络科技有限公司 | 基于深度神经网络的us-ct图像分割方法及装置 |
CN115185482A (zh) * | 2021-04-02 | 2022-10-14 | 嘉楠明芯(北京)科技有限公司 | 一种基于神经网络的运算方法以及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106228240A (zh) * | 2016-07-30 | 2016-12-14 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
CN106355244A (zh) * | 2016-08-30 | 2017-01-25 | 深圳市诺比邻科技有限公司 | 卷积神经网络的构建方法及*** |
WO2017044214A1 (en) * | 2015-09-10 | 2017-03-16 | Intel Corporation | Distributed neural networks for scalable real-time analytics |
-
2018
- 2018-03-05 CN CN201810179570.XA patent/CN108108809B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017044214A1 (en) * | 2015-09-10 | 2017-03-16 | Intel Corporation | Distributed neural networks for scalable real-time analytics |
CN106228240A (zh) * | 2016-07-30 | 2016-12-14 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
CN106355244A (zh) * | 2016-08-30 | 2017-01-25 | 深圳市诺比邻科技有限公司 | 卷积神经网络的构建方法及*** |
Non-Patent Citations (4)
Title |
---|
A Convolutional Neural Network FullyImplemented on FPGA for Embedded Platforms;Marco Bettoni等;《2017 New Generation of CAS (NGCAS)》;20170906;49-52 * |
Going Deeper with Embedded FPGA Platform for;Jiantao Qiu 等;《Proceedings of the 2016 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays》;20160228;26-35 * |
基于FPGA的卷积神经网络加速器设计;王思阳;《中国优秀硕士学位论文》;20180228;全文 * |
深度学习的硬件实现与优化技术研究;林建军;《中国优秀硕士学位论文》;20180228;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108108809A (zh) | 2018-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108108809B (zh) | 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 | |
CN110458279B (zh) | 一种基于fpga的二值神经网络加速方法及*** | |
CN111459877B (zh) | 基于FPGA加速的Winograd YOLOv2目标检测模型方法 | |
CN109284817B (zh) | 深度可分离卷积神经网络处理架构/方法/***及介质 | |
CN110390385B (zh) | 一种基于bnrp的可配置并行通用卷积神经网络加速器 | |
CN111242289B (zh) | 一种规模可扩展的卷积神经网络加速***与方法 | |
CN109447241B (zh) | 一种面向物联网领域的动态可重构卷积神经网络加速器架构 | |
CN111414994B (zh) | 一种基于FPGA的Yolov3网络计算加速***及其加速方法 | |
US11989638B2 (en) | Convolutional neural network accelerating device and method with input data conversion | |
CN110263925B (zh) | 一种基于fpga的卷积神经网络前向预测的硬件加速实现装置 | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN111626414B (zh) | 一种动态多精度神经网络加速单元 | |
CN108537331A (zh) | 一种基于异步逻辑的可重构卷积神经网络加速电路 | |
CN106022468A (zh) | 人工神经网络处理器集成电路及该集成电路的设计方法 | |
CN110674927A (zh) | 一种用于脉动阵列结构的数据重组方法 | |
CN109472734B (zh) | 一种基于fpga的目标检测网络及其实现方法 | |
CN112529165A (zh) | 深度神经网络剪枝方法、装置、终端及存储介质 | |
CN112418396A (zh) | 一种基于fpga的稀疏激活感知型神经网络加速器 | |
CN114003201A (zh) | 矩阵变换方法、装置及卷积神经网络加速器 | |
CN110598844A (zh) | 一种基于fpga的并行卷积神经网络加速器及加速方法 | |
CN113158132A (zh) | 一种基于非结构化稀疏的卷积神经网络加速*** | |
CN109800867B (zh) | 一种基于fpga片外存储器的数据调用方法 | |
US20230128421A1 (en) | Neural network accelerator | |
CN214586992U (zh) | 神经网络加速电路、图像处理器及三维成像电子设备 | |
CN114372012B (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 |