CN111563580B - 一种卷积神经网络实现装置及方法 - Google Patents
一种卷积神经网络实现装置及方法 Download PDFInfo
- Publication number
- CN111563580B CN111563580B CN202010352040.8A CN202010352040A CN111563580B CN 111563580 B CN111563580 B CN 111563580B CN 202010352040 A CN202010352040 A CN 202010352040A CN 111563580 B CN111563580 B CN 111563580B
- Authority
- CN
- China
- Prior art keywords
- sub
- coupled
- circuit
- data stream
- output
- 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
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 48
- 238000000034 method Methods 0.000 title claims abstract description 25
- 238000012545 processing Methods 0.000 claims abstract description 111
- 230000001133 acceleration Effects 0.000 claims abstract description 77
- 238000009825 accumulation Methods 0.000 claims description 25
- 230000004913 activation Effects 0.000 abstract description 20
- 238000011176 pooling Methods 0.000 abstract description 17
- 238000010586 diagram Methods 0.000 description 31
- 230000006870 function Effects 0.000 description 17
- 230000008569 process Effects 0.000 description 11
- 238000001514 detection method Methods 0.000 description 4
- 238000005429 filling process Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
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
-
- 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)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Error Detection And Correction (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开了一种卷积神经网络实现装置和方法,所述卷积神经网络实现装置包括:处理单元和并行加速电路,处理单元发送控制指令至所述并行加速电路,以及,发送权重数据流和特征图数据流至所述并行加速电路,以及,接收所述并行加速电路返回的输出数据流,对所述输出数据流进行激活和池化处理,更新特征图数据流;所述并行加速电路接收所述处理单元的控制指令,接收并缓存所述权重数据流并行进行窗口化处理,以及,接收所述特征图数据流缓存为多路子特征图数据流,对所述多路子特征图数据流并行进行填充处理和窗口化处理,并行进行卷积处理。本实施例提供的方案,实现了并行卷积运算,提高了处理速度。
Description
技术领域
本申请实施例涉及深度学习技术,尤指一种卷积神经网络实现装置及方法。
背景技术
近年来,卷积神经网络(Convolutional Neural Network,CNN)领域取得了重大突破,极大地提高了基于CNN的目标检测算法的性能。然而,目标检测算法的高准确度伴随着高计算复杂度的问题,如果单纯使用CPU来计算,需要很长时间才能完成,需要使用硬件进行加速计算。
发明内容
本申请实施例提供了一种卷积神经网络实现装置及方法,实现加速。
一方面,本申请实施例提供了一种卷积神经网络实现装置,包括:处理单元和并行加速电路,其中:
所述处理单元设置为,发送控制指令至所述并行加速电路,以及,发送权重数据流和特征图数据流至所述并行加速电路,以及,接收所述并行加速电路返回的输出数据流,对所述输出数据流进行激活和池化处理,得到更新的特征图数据流发送给所述并行加速电路;
所述并行加速电路设置为,接收所述处理单元的控制指令,根据所述控制指令执行:接收并缓存所述权重数据流,以及,接收所述特征图数据流缓存为多路子特征图数据流,并行对所述权重数据流进行窗口化处理得到多路窗口化的子权重数据流,对所述多路子特征图数据流并行进行填充处理和窗口化处理,得到多路窗口化的子特征图数据流,并行对所述多路窗口化的子特征图数据流使用所述窗口化的子权重数据流进行卷积处理,得到多路中间数据流,根据所述多路中间数据流生成所述输出数据流,返回所述输出数据流至所述处理单元。
在一示例性实施例中,所述并行加速电路包括指令控制子电路、缓存子电路、多个权重窗口生成子电路、多个特征图窗口生成子电路、与所述权重窗口子电路、特征图窗口子电路一一对应的多个卷积子电路、累加子电路和输出子电路,所述指令控制子电路耦接所述缓存子电路、所述缓存子电路耦接所述权重窗口生成子电路和特征图窗口生成子电路、所述权重窗口生成子电路和所述特征图窗口生成子电路耦接对应的所述卷积子电路,所述卷积子电路耦接所述累加子电路,所述累加子电路耦接所述输出子电路,其中:
所述指令控制子电路设置为,接收所述处理单元的控制指令,基于所述控制指令控制所述缓存子电路;
所述缓存子电路设置为,接收所述控制指令,根据所述控制指令接收并缓存所述权重数据流,将所述权重数据流并行发送给所述所述多个权重窗口生成子电路,以及,根据所述控制指令接收所述特征图数据流并缓存为多路子特征图数据流,将所述多路子特征图数据流并行发送给所述多个特征图窗口生成子电路;
所述权重窗口生成子电路设置为,从所述缓存子电路获取所述权重数据流,对所述权重数据流进行窗口化处理得到窗口化的子权重数据流,将所述窗口化的子权重数据流输出到所述卷积子电路;
所述特征图窗口生成子电路设置为,从所述缓存子电路获取一路子特征图数据流,对所述子特征图数据流进行填充处理和窗口化处理,得到窗口化的子特征图数据流,将所述窗口化的子特征图数据流输出到所述卷积子电路;
所述卷积子电路设置为,对所述窗口化的子特征图数据流使用所述窗口化的子权重数据流进行卷积处理得到中间数据流;
所述累加子电路设置为,根据多路所述中间数据流生成所述输出数据流,输出至所述输出子电路;
所述输出子电路设置为,将所述输出数据流输出到所述处理单元。
在一示例性实施例中,所述权重窗口生成子电路包括:第一比较器、第二比较器、第一D触发器、第二D触发器、第一与门、第二与门、第三与门、第一选通器、第二选通器、累加器、第三组D触发器、第四组D触发器、存储器、第三选通器、第四选通器、第五D触发器,第六组D触发器,其中:
所述第一比较器的第一输入端耦接所述第一节点,第二输入端耦接第一预设电压端,输出端耦接所述第一与门的第二输入端;
所述第一D触发器的时钟输入端耦接系统时钟端,输入端耦接第一层卷积层指示信号端,输出端耦接所述第一与门的第一输入端;
所述第二比较器的第一输入端耦接第一节点,第二输入端耦接第二预设电压端,输出端耦接所述第二与门的第一输入端;
所述第一与门的输出端耦接所述第三与门的第一输入端;
所述第二D触发器的时钟输入端耦接所述系统时钟端,输入端耦接权重数据流的有效指示信号端,输出端耦接所述第二与门的第二输入端以及所述第三与门的第二输入端;
所述第二与门的输出端耦接所述第一选通器的第二输入端;
所述第三与门的输出端耦接所述第一选通器的选通端;
所述第一选通器的第一输入端耦接第一电压端,输出端耦接所述第二选通器的第二输入端;
所述第二选通器的第一输入端耦接第一电压端,选通端耦接高有效复位信号端,输出端耦接第三组D触发器的复位端;
所述累加器的第一输入端耦接第一电压端,第二输入端耦接所述第一节点,输出端耦接所述第三组D触发器的输入端;
所述第三组D触发器的时钟输入端耦接所述系统时钟端,使能端耦接所述第二D触发器的输出端,输出端耦接所述第一节点;
所述第四组D触发器的时钟输入端耦接所述系统时钟端,输入端耦接权重数据流端,输出端耦接第二节点;
所述存储器的输入端耦接所述第一节点,输出端耦接所述第三选通器的第一输入端;
所述第三选通器的第二输入端耦接第二电压端,输出端耦接第六组D触发器的使能端,选通端耦接所述第二D触发器的输出端;
所述第四选通器的第1输入端至第36输入端耦接所述第二节点,选通端耦接所述第一节点,输出端耦接第六组D触发器的输入端;
所述第五D触发器的时钟输入端耦接所述系统时钟端,输入端耦接所述第二与门的输出端,输出端耦接窗口化的子权重数据流有效指示信号端;
所述第六组D触发器的时钟输入端耦接所述系统时钟端,输出端耦接窗口化的子权重数据流输出端。
在一示例性实施例中,所述累加子电路包括输出缓存子电路、累加器、判决子电路,其中,所述输出缓存子电路耦接所述多个卷积子电路、所述判决子电路和所述累加器,所述累加器耦接所述判决子电路,其中,
所述输出缓存子电路设置为,接收所述卷积子电路的输出并缓存;
所述累加器设置为,将所述输出缓存子电路已缓存的数据与所述输出缓存子电路接收到的数据进行累加处理,累加结果存储至所述输出缓存子电路;
所述判决子电路设置为,判断是否处理完毕当前卷积层的数据,当处理完毕时,将所述输出缓存子电路缓存的数据输出到所述输出子电路。
在一示例性实施例中,所述特征图窗口生成子电路包括如下输入端口:系统时钟端、高有效复位信号端、窗口生成开始触发信号端、子特征图数据流输入端、子特征图数据流有效指示信号端;以及包括如下输出端口:窗口化的子特征图数据流输出端、窗口化的子特征图数据流有效指示信号端。
在一示例性实施例中,
所述权重窗口生成子电路包括:第一比较器、第二比较器、第一D触发器、第二D触发器、第一与门、第二与门、第三与门、第一选通器、第二选通器、累加器、第三组D触发器、第四组D触发器、存储器、第三选通器、第四选通器、第五D触发器,第六组D触发器,其中:
所述第一比较器的第一输入端耦接所述第一节点,第二输入端耦接第一预设电压端,输出端耦接所述第一与门的第二输入端;
所述第一D触发器的时钟输入端耦接系统时钟端,输入端耦接第一层卷积层指示信号端,输出端耦接所述第一与门的第一输入端;
所述第二比较器的第一输入端耦接第一节点,第二输入端耦接第二预设电压端,输出端耦接所述第二与门的第一输入端;
所述第一与门的输出端耦接所述第三与门的第一输入端;
所述第二D触发器的时钟输入端耦接所述系统时钟端,输入端耦接权重数据流的有效指示信号端,输出端耦接所述第二与门的第二输入端以及所述第三与门的第二输入端;
所述第二与门的输出端耦接所述第一选通器的第二输入端;
所述第三与门的输出端耦接所述第一选通器的选通端;
所述第一选通器的第一输入端耦接第一电压端,输出端耦接所述第二选通器的第二输入端;
所述第二选通器的第一输入端耦接第一电压端,选通端耦接高有效复位信号端,输出端耦接第三组D触发器的复位端;
所述累加器的第一输入端耦接第一电压端,第二输入端耦接所述第一节点,输出端耦接所述第三组D触发器的输入端;
所述第三组D触发器的时钟输入端耦接所述系统时钟端,使能端耦接所述第二D触发器的输出端,输出端耦接所述第一节点;
所述第四组D触发器的时钟输入端耦接所述系统时钟端,输入端耦接权重数据流端,输出端耦接第二节点;
所述存储器的输入端耦接所述第一节点,输出端耦接所述第三选通器的第一输入端;
所述第三选通器的第二输入端耦接第二电压端,输出端耦接第六组D触发器的使能端,选通端耦接所述第二D触发器的输出端;
所述第四选通器的第1输入端至第36输入端耦接所述第二节点,选通端耦接所述第一节点,输出端耦接第六组D触发器的输入端;
所述第五D触发器的时钟输入端耦接所述系统时钟端,输入端耦接所述第二与门的输出端,输出端耦接窗口化的子权重数据流有效指示信号端;
所述第六组D触发器的时钟输入端耦接所述系统时钟端,输出端耦接窗口化的子权重数据流输出端;
所述累加子电路包括输出缓存子电路、累加器、判决子电路,其中,所述输出缓存子电路耦接所述多个卷积子电路、所述判决子电路和所述累加器,所述累加器耦接所述判决子电路,其中,
所述输出缓存子电路设置为,接收所述卷积子电路的输出并缓存;
所述累加器设置为,将所述输出缓存子电路已缓存的数据与所述输出缓存子电路接收到的数据进行累加处理,累加结果存储至所述输出缓存子电路;
所述判决子电路设置为,判断是否处理完毕当前卷积层的数据,当处理完毕时,将所述输出缓存子电路缓存的数据输出到所述输出子电路;
所述特征图窗口生成子电路包括如下输入端口:系统时钟端、高有效复位信号端、窗口生成开始触发信号端、子特征图数据流输入端、子特征图数据流有效指示信号端;以及包括如下输出端口:窗口化的子特征图数据流输出端、窗口化的子特征图数据流有效指示信号端。
在一示例性实施例中,所述并行加速电路包括4个所述权重窗口生成子电路、4个所述特征图窗口生成子电路、4个所述卷积子电路。
又一方面,本申请实施例提供一种卷积神经网络实现方法,应用于上述卷积神经网络实现装置,包括:
处理单元发送控制指令至所述并行加速电路,以及,发送权重数据流和特征图数据流至所述并行加速电路,以及,接收所述并行加速电路返回的输出数据流,对所述输出数据流进行激活和池化处理,得到更新的特征图数据流发送给所述并行加速电路;
并行加速电路接收所述处理单元的控制指令,根据所述控制指令执行:接收并缓存所述权重数据流,以及,接收所述特征图数据流缓存为多路子特征图数据流,并行对所述权重数据流进行窗口化处理得到多路窗口化的子权重数据流,并行对所述多路子特征图数据流进行填充处理和窗口化处理,得到多路窗口化的子特征图数据流,并行对所述多路窗口化的子特征图数据流使用所述窗口化的子权重数据流进行卷积处理,得到多路中间数据流,根据所述多路中间数据流生成所述输出数据流,返回所述输出数据流至所述处理单元。
在一示例性实施例中,所述并行加速电路在并行对所述多路子特征图数据流进行填充处理和窗口化处理前,并行对所述权重数据流进行窗口化处理。
在一示例性实施例中,所述卷积神经网络为yolov2-tiny网络。
本申请实施例提供一种卷积神经网络实现装置,包括:处理单元和并行加速电路,其中:所述处理单元设置为,发送控制指令至所述并行加速电路,以及,发送权重数据流和特征图数据流至所述并行加速电路,以及,接收所述并行加速电路返回的输出数据流,对所述输出数据流进行激活和池化处理,得到更新的特征图数据流发送给所述并行加速电路;
所述并行加速电路设置为,接收所述处理单元的控制指令,根据所述控制指令执行:接收并缓存所述权重数据流,以及,接收所述特征图数据流缓存为多路子特征图数据流,并行对所述权重数据流进行窗口化处理得到多路窗口化的子权重数据流,对所述多路子特征图数据流并行进行填充处理和窗口化处理,得到多路窗口化的子特征图数据流,并行对所述多路窗口化的子特征图数据流使用所述窗口化的子权重数据流进行卷积处理,得到多路中间数据流,根据所述多路中间数据流生成所述输出数据流,返回所述输出数据流至所述处理单元。本实施例提供的方案,将卷积运算和池化激活等运算分离,实现了并行卷积运算,提高了处理速度。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本申请实施例提供的卷积神经网络实现装置示意图;
图2为一实施例提供的并行加速电路示意图;
图3为一实施例提供的权重窗口生成子电路示意图;
图4为一实施例提供的累加子电路示意图;
图5为一实施例提供的特征图窗口生成子电路示意图;
图6为一实施例提供的处理单元示意图;
图7为一实施例提供的卷积神经网络实现装置示意图;
图8为一实施例提供的卷积过程示意图;
图9为一实施例提供的权重窗口生成子电路波形示意图;
图10为一实施例提供的特征图窗口生成子电路波形示意图;
图11为一实施例提供的卷积神经网络实现方法示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
除非另外定义,本公开使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
本申请实施例中,将卷积运算(convolution layer)和其他运算(池化运算(maxpooling)、激活函数(activation)分离,且卷积运算并行进行,实现卷积神经网络的加速。
图1为本申请实施例提供的卷积神经网络实现装置示意图。如图1所示,本申请实施例提供的卷积神经网络实现装置可以包括:处理单元1和并行加速电路2,其中:
所述处理单元1设置为,发送控制指令(CMD)至所述并行加速电路2,以及,发送权重数据流(weights data)和特征图数据流至所述并行加速电路2,以及,接收所述并行加速电路2返回的输出数据流,对所述输出数据流进行激活和池化处理,得到更新的特征图数据流发送给所述并行加速电路2;
所述并行加速电路2设置为,接收所述处理单元1的控制指令,根据所述控制指令执行:接收并缓存所述权重数据流,以及,接收所述特征图数据流缓存为多路子特征图数据流,并行对所述权重数据流进行窗口化处理得到多路窗口化的子权重数据流,对所述多路子特征图数据流并行进行填充处理(padding)和窗口化处理,得到多路窗口化的子特征图数据流,并行对所述多路窗口化的子特征图数据流使用所述窗口化的子权重数据流进行卷积处理,得到多路中间数据流,根据所述多路中间数据流生成所述输出数据流,返回所述输出数据流至所述处理单元1。
所述处理单元1比如使用处理器实现。
所述特征图(feature-map)数据流初始时是输入的原始图像数据,之后是对原始图像使用卷积神经网络处理后的图像数据。所述权重数据流是卷积神经网络的权重参数,可以通过训练得到。所述激活和池化处理包括:使用预设的激活函数和池化函数对数据进行处理。激活函数和池化函数与具体的卷积神经网络模型有关。
本实施例提供的卷积神经网络实现装置,包括处理单元和并行加速电路,处理单元进行激活及池化处理,并行加速电路并行进行窗口化处理和卷积运算。本实施例提供的方案,将卷积运算与其他运算分离,并行执行卷积运算,实现加速。
图2为一实施例提供的并行加速电路的结构示意图。如图2所示,所述并行加速电路2可以包括:指令控制子电路21、缓存子电路22、多个权重窗口生成子电路23、多个特征图窗口生成子电路24、与所述权重窗口子电路23、特征图窗口子电路24一一对应的多个卷积子电路25(即每个权重窗口子电路23对应一个卷积子电路25,每个特征图窗口子电路24对应一个卷积子电路25)、累加子电路26和输出子电路27,所述指令控制子电路21耦接所述缓存子电路22、所述缓存子电路22耦接所述权重窗口生成子电路23和所述特征图窗口生成子电路24、所述权重窗口生成子电路23和所述特征图窗口生成子电路24耦接对应的所述卷积子电路25,所述卷积子电路25耦接所述累加子电路26,所述累加子电路26耦接所述输出子电路27,其中:
所述指令控制子电路21设置为,接收所述处理单元1的控制指令,基于所述控制指令控制所述缓存子电路22;
所述缓存子电路22设置为,接收所述控制指令,根据所述控制指令接收并缓存所述权重数据流,将所述权重数据流并行发送给所述所述多个权重窗口生成子电路23,以及,根据所述控制指令接收所述特征图数据流并缓存为多路子特征图数据流,将所述多路子特征图数据流并行发送给所述多个特征图窗口生成子电路24;在一实施例中,权重数据流分成多路子权重数据流,一路子权重数据流发送给一路权重窗口生成子电路23。一路子特征图数据流发送给一路特征图窗口生成子电路24。
所述权重窗口生成子电路23设置为,从所述缓存子电路22获取所述权重数据流,对所述权重数据流进行窗口化处理得到窗口化的子权重数据流,将所述窗口化的子权重数据流输出到对应的卷积子电路25;窗口化处理是指将数据流转化成二维数据,窗口大小根据需要设置,比如生成3*3,5*5,7*7的数据,等等。多个权重窗口生成子电路23并行进行窗口化处理。
所述特征图窗口生成子电路24设置为,从所述缓存子电路22获取一路子特征图数据流,对所述子特征图数据流进行填充处理和窗口化处理,得到窗口化的子特征图数据流,将所述窗口化的子特征图数据流输出到对应的卷积子电路25;其中,填充处理包括填充0。多个特征图窗口生成子电路24并行进行填充处理和窗口化处理。
所述卷积子电路25设置为,对所述窗口化的子特征图数据流使用所述窗口化的子权重数据流进行卷积处理得到中间数据流;
所述累加子电路26设置为,根据多路所述中间数据流生成所述输出数据流,输出至所述输出子电路27;根据中间数据流生成输出数据流包括:将中间数据流进行累加得到输出数据流。输入的特征图包括多个通道时,将每个通道卷积得到的中间数据流进行累加后,得到输出数据流。举例来说,输入的特征图为416*416*3,其中,3代表3个通道,如果有16个卷积核,每个卷积核与一个通道的416*416特征图卷积后得到该通道的中间数据流(该卷积过程可以划分为多个部分并行进行),3个通道的中间数据流进行累加,得到一个416*416的特征图,16个卷积核得到16个特征图,即输出的特征图为416*416*16。对其进行池化处理得到特征图为208*208*16,此时通道为16,如果有32个卷积核,每个卷积核与一个通道的208*208特征图卷积后得到该通道的中间数据流,16个通道的中间数据流进行累加,得到一个208*208的特征图,32个卷积核得到32个特征图,即输出的特征图为208*208*32。
所述输出子电路设27置为,将所述输出数据流输出到所述处理单元1。
特征图窗口生成子电路、权重窗口生成子电路、卷积子电路的个数根据硬件电路的DSP48E资源及buffer(缓冲)容量等决定。
权重窗口生成子电路可以先于特征图窗口生成子电路启动,从而在输入的子特征图数据流有效时,卷积子电路可以开始运算,提高运算速度,减少运算时间。
在本实施例中,图2中具体示出了并行加速电路的示例性结构。本领域技术人员容易理解是,并行加速电路的实现方式不限于此,只要能够实现其功能即可。
图3为一实施例提供的权重窗口生成子电路结构示意图。本实施例中,将输入的权重数据流形成3*3窗口。如图3所示,本实施例提供的权重窗口生成子电路可以包括:第一比较器RTL_EQ1、第二比较器RTL_EQ2、第一D触发器RTL_REG1、第二D触发器RTL_REG2,第一与门RTL_AND1、第二与门RTL_AND2、第三与门RTL_AND3、第一选通器RTL_MUX1、第二选通器RTL_MUX2、累加器RTL_ADD、第三组D触发器RTL_REG_SYNC、第四组D触发器RTL_REG4、存储器RTL_ROM、第三选通器RTL_MUX3、第四选通器RTL_MUX4、第五D触发器RTL_REG5,第六组D触发器RTL_REG6,其中:
所述第一比较器RTL_EQ1的第一输入端I0_1耦接所述第一节点N1,第二输入端I1_1耦接第一预设电压端,输出端O_1耦接所述第一与门RTL_AND1的第二输入端I1_3;本实施例中,第一预设电压端电压V=011010,即第二输入端I1_1连接六个信号线,其电平分别为0,1,1,0,1,0。
所述第一D触发器RTL_REG1的时钟输入端C1耦接系统时钟端i_clk,输入端D1耦接第一层卷积层指示信号端i_layer_is_first,输出端Q1耦接所述第一与门RTL_AND1的第一输入端I0_3;
所述第二比较器RTL_EQ2的第一输入端I0_2耦接所述第一节点N1,第二输入端I1_2耦接第二预设电压端,输出端O_2耦接所述第二与门RTL_AND2的第一输入端I0_4;本实施例中,所述第二预设电压端电压V=100011,即第二输入端连接六个信号线,其电平分别为1,0,0,0,1,1。
所述第一与门RTL_AND1的输出端O_3耦接所述第三与门RTL_AND3的第一输入端I0_5;
所述第二D触发器RTL_REG2的时钟输入端C2耦接所述系统时钟端i_clk,输入端D2耦接权重数据流的有效指示信号端i_weights_data_valid,输出端Q2耦接所述第二与门RTL_AND2的第二输入端I1_4以及所述第三与门RTL_AND3的第二输入端I1_5;
所述第二与门RTL_AND2的输出端耦O_4接所述第一选通器RTL_MUX1的第二输入端I1_6;
所述第三与门的RTL_AND3输出端O_5耦接所述第一选通器RTL_MUX1的选通端S_6;
所述第一选通器RTL_MUX1的第一输入端I0_6耦接第一电压端VDD,输出端O_6耦接所述第二选通器RTL_MUX2的第二输入端I1_7;VDD比如为高电平;选通端S_6取值为0时,选通I1_6,选通端S_6取值为1时,选通I0_6。
所述第二选通器RTL_MUX2的第一输入端I0_7耦接第一电压端VDD,选通端S_7耦接高有效复位信号端i_sys_rst,输出端O_7耦接第三组D触发器RTL_REG_SYNC的复位端RST;选通端S_7取值为0时,选通I1_7,选通端S_7取值为1时,选通I0_7。
所述累加器RTL_ADD的第一输入端I0_8耦接第一电压端VDD,第二输入端I1_8耦接所述第一节点N1,输出端O_8耦接所述第三组D触发器RTL_REG_SYNC的输入端D3;
所述第三组D触发器RTL_REG_SYNC的时钟输入端C3耦接所述系统时钟端i_clk,使能端CE3耦接所述第二D触发器RTL_REG2的输出端Q2,输出端Q3耦接所述第一节点N1;第三组D触发器RTL_REG_SYNC比如包括6个D触发器。
所述第四组D触发器RTL_REG4的时钟输入端C4耦接所述系统时钟端i_clk,输入端D4耦接权重数据流端i_weights_data,输出端Q4耦接第二节点N2;第四组D触发器RTL_REG4包含的D触发器数量与权重数据流的比特数有关,权重数据流为16比特时,第四组D触发器RTL_REG4包括16个D触发器。
所述存储器RTL_ROM的输入端A耦接所述第一节点N1,输出端O耦接所述第三选通器RTL_MUX3的第一输入端I0_9;
所述第三选通器RTL_MUX3的第二输入端I1_9耦接第二电压端VSS,输出端O_9耦接第六组D触发器RTL_REG6的使能端CE6,选通端S_9耦接所述第二D触发器REL_REG2的输出端Q2;VSS比如为低电平。选通端S_9取值为0时,选通I1_9,选通端S_9取值为1时,选通I0_9。
所述第四选通器RTL_MUX4的第1输入端I0至第36输入端I35耦接所述第二节点N2,选通端耦S_10接所述第一节点N1,输出端O_10耦接第六组D触发器RTL_REG6的输入端D6;本实施例中,选通端S_10取值为000000时,选通I0,选通端S_10取值为000001时,选通I1,选通端S_10取值为000010时,选通I3,依次类推,选通端S_10取值为100011时,选通I35。
所述第五D触发器RTL_REG5的时钟输入端C5耦接所述系统时钟端i_clk,输入端D5耦接所述第二与门RTL_AND2的输出端O_4,输出端Q5耦接窗口化的子权重数据流有效指示信号端o_weights_win_dout_valid;
所述第六组D触发器RTL_REG6的时钟输入端C6耦接所述系统时钟端i_clk,输出端Q6耦接窗口化的子权重数据流输出端o_weights_win_dout。第六组D触发器包括的D触发器数量与窗口大小以及权重数据流比特数有关,窗口为3*3,输入的权重数据流16bit时,第六组D触发器包括576个D触发器。
第一层卷积层指示信号端i_layer_is_first指示当前是第一个卷积层。因为第一个卷积层与其他卷积层不同,其通道数与输入的待检测的图像有关,其他卷积层的通道数与卷积核数目有关,因此,需要对第一卷积层进行指示。比如,对RGB图像,第一个卷积层的通道数为3。对灰度图像,第一个卷积层的通道数为1。
在一示例性实施例中,系统时钟端i_clk用于连接系统时钟信号,权重数据流的有效指示信号端i_weights_data_valid用于连接权重数据流的有效指示信号,该信号用于指示权重数据流是否有效。高有效复位信号端i_sys_rst用于对权重窗口生成子电路进行复位。权重数据流端i_weights_data用于连接权重数据流信号。窗口化的子权重数据流输出端o_weights_win_dout输出窗口化的子权重数据流;窗口化的子权重数据流有效指示信号端o_weights_win_dout_valid输出窗口化的子权重数据流是否有效的指示信号,即指示窗口化的子权重数据流输出端o_weights_win_dout输出的窗口化的子权重数据流是否有效。
本实施例提供了生成3*3窗口的权重窗口生成子电路,但本申请实施例不限于此,可以是其他大小的窗口,相应的,变更权重窗口生成子电路的结构即可。
在本实施例中,图3中具体示出了权重窗口生成子电路的示例性结构。本领域技术人员容易理解是,权重窗口生成子电路的实现方式不限于此,只要能够实现其功能即可。
图4为一实施例提供的累加子电路结构示意图。如图4所示,所述累加子电路26可以包括输出缓存子电路261、累加器262、判决子电路263,其中,所述输出缓存子电路261耦接所述多个卷积子电路25、所述判决子电路263和所述累加器262,所述累加器262耦接所述判决子电路263,其中,
所述输出缓存子电路261设置为,接收所述卷积子电路25的输出并缓存;
所述累加器262设置为,将所述输出缓存子电路261已缓存的数据与所述输出缓存子电路261接收到的数据进行累加处理,累加结果存储至所述输出缓存子电路261;
所述判决子电路263设置为,判断是否处理完毕当前卷积层的数据,当处理完毕时,将所述输出缓存子电路261缓存的数据输出到所述输出子电路27。
在本实施例中,图4中具体示出了累加子电路的示例性结构。本领域技术人员容易理解是,累加子电路的实现方式不限于此,只要能够实现其功能即可。
图5为一实施例提供的特征图窗口生成子电路结构图。如图5所示,所述特征图窗口生成子电路24可以包括如下输入端口:系统时钟端i_clk、高有效复位信号端i_sys_rst、窗口生成开始触发信号端i_gen_win_start、子特征图数据流输入端i_fm_data、子特征图数据流有效指示信号端i_fm_data_valid;以及可以包括如下输出端口:窗口化的子特征图数据流输出端o_fm_win_dout、窗口化的子特征图数据流有效指示信号端o_fm_win_dout_valid。其中,系统时钟端i_clk用于连接系统时钟信号,高有效复位信号端i_sys_rst用于连接高有效复位信号,对特征图窗口生成子电路进行复位;窗口生成开始触发信号端i_gen_win_start用于连接窗口生成开始触发信号,窗口生成开始触发信号用于启动特征图窗口生成子电路开始进行窗口化,子特征图数据流输入端i_fm_data用于输入子特征图数据流、子特征图数据流有效指示信号端i_fm_data_valid用于指示输入子特征图数据流输入端i_fm_data的信号是否有效;窗口化的子特征图数据流输出端o_fm_win_dout用于输出窗口化的子特征图数据流,窗口化的子特征图数据流有效指示信号端o_fm_win_dout_valid用于指示窗口化的子特征图数据流输出端o_fm_win_dout的数据是否有效。
图6为一实施例提供的处理单元示意图。如图6所示,处理单元1可以包括流程控制单元11、权重数据单元12、池化函数单元13和激活函数单元14,其中:
流程控制单元11设置为发送控制指令至并行加速电路2,;
权重数据单元12设置为发送权重数据流至并行加速电路2;
池化函数单元13设置为发送初始的特征图数据流至并行加速电路2,以及,对激活函数单元14的激活处理后的数据进行池化处理,生成特征图数据流发送给并行加速电路2;
激活函数单元14设置为接收并行加速电路2的输出数据流,对输出数据流进行激活处理后发送给池化函数单元13。
图7为一实施例提供的卷积神经网络实现装置示意图。如图7所示,所述卷积神经网络可以包括处理单元1和并行加速电路2。处理单元1可以包括流程控制单元11、权重数据单元12、池化函数单元13和激活函数单元14,其中:
流程控制单元11设置为发送控制指令至并行加速电路2,;
权重数据单元12设置为发送权重数据流至并行加速电路2;
池化函数单元13设置为发送初始的特征图数据流至并行加速电路2,以及,对激活函数单元14的激活处理后的数据进行池化处理,生成特征图数据流发送给并行加速电路2;
激活函数单元14设置为接收并行加速电路2的输出数据流,对输出数据流进行激活处理后发送给池化函数单元13。
所述并行加速电路2可以包括:指令控制子电路21、缓存子电路22、多个权重窗口生成子电路23、多个特征图窗口生成子电路24、与所述权重窗口子电路23、特征图窗口子电路24一一对应的多个卷积子电路25(即每个权重窗口子电路23对应一个卷积子电路25,每个特征图窗口子电路24对应一个卷积子电路25)、累加子电路26和输出子电路27,所述指令控制子电路21耦接所述缓存子电路22、所述缓存子电路22耦接所述权重窗口生成子电路23和所述特征图窗口生成子电路24、所述权重窗口生成子电路23和所述特征图窗口生成子电路24耦接对应的所述卷积子电路25,所述卷积子电路25耦接所述累加子电路26,所述累加子电路26耦接所述输出子电路27,其中:
所述指令控制子电路21设置为,接收所述处理单元1的控制指令,基于所述控制指令控制所述缓存子电路22;
所述缓存子电路22设置为,接收所述控制指令,根据所述控制指令接收并缓存所述权重数据流,将所述权重数据流并行发送给所述所述多个权重窗口生成子电路23,以及,根据所述控制指令接收所述特征图数据流并缓存为多路子特征图数据流,将所述多路子特征图数据流并行发送给所述多个特征图窗口生成子电路24;在一实施例中,权重数据流分成多路子权重数据流,一路子权重数据流发送给一路权重窗口生成子电路23。一路特征图数据流发送给一路特征图窗口生成子电路24。
所述权重窗口生成子电路23设置为,从所述缓存子电路22获取所述权重数据流,对所述权重数据流进行窗口化处理得到窗口化的子权重数据流,将所述窗口化的子权重数据流输出到对应的卷积子电路25;窗口化处理是指将数据流转化成二维数据,比如生成3*3,5*5,7*7的数据,等等。多个权重窗口生成子电路23并行进行窗口化处理。
所述特征图窗口生成子电路24设置为,从所述缓存子电路22获取一路子特征图数据流,对所述子特征图数据流进行填充处理和窗口化处理,得到窗口化的子特征图数据流,将所述窗口化的子特征图数据流输出到对应的卷积子电路25;其中,填充处理包括填充0。多个特征图窗口生成子电路24并行进行填充处理和窗口化处理。
所述卷积子电路25设置为,对所述窗口化的子特征图数据流使用所述窗口化的子权重数据流进行卷积处理得到中间数据流;每个卷积子电路25可以包括多个卷积核(kernel)。
所述累加子电路26设置为,根据多路所述中间数据流生成所述输出数据流,输出至所述输出子电路27;根据中间数据流生成输出数据流包括:将中间数据流进行累加得到输出数据流。
所述输出子电路设27置为,将所述输出数据流27输出到所述处理单元1。
在一实施例中,所述并行加速电路包括4个所述权重窗口生成子电路、4个所述特征图窗口生成子电路和4个所述卷积子电路。当然,此处仅为示例,在其他实施例中,可以根据硬件电路资源设置更多或更少权重窗口生成子电路、特征图窗口生成子电路和卷积子电路。
以下以一个实例说明本申请实施例卷积神经网络实现过程。
本实施例中,卷积神经网络为yolov2-tiny模型,输入的图像为xray(x射线)图像,对xray使用yolov2-tiny进行病灶检测。本申请不限于此,可以对其他图像进行处理,可以是其他类型的卷积神经网络。本实施例中,卷积运算过程如表1所示。初始时,第一卷积层输入416*416*3的图像(即该卷积层输入的特征图),16个3*3的卷积核,输出416X416X16特征图,其中,进行卷积运算时,并行进行。然后进行池化运算,缩小尺寸,特征图变成208X208X16,该特征图作为第二卷积层输入的特征图。第二卷积层包括32个3*3的卷积核,输出208X208X32特征图,然后进行池化运算,缩小尺寸,输出104X104X32特征图,作为第三卷积层输入的特征图,依次类推,经过多次运算后,得到检测结果(detection)。
表1卷积运算过程示意图
图8为本实施例卷积计算原理框图。输入feature-map并行度为4,输出feature-map并行度为4,卷积核(kernel)为3x3,每个时钟周期完成4x4x3x3=144个卷积运算。并行加速电路2同时读取4路输入子特征图数据流,经过特征图窗口生成子电路将数据流进行窗口化和padding处理,将处理之后的窗口化的子特征图数据与窗口化的子权重数据同时输入到卷积子电路,完成卷积运算。
图9为本实施例权重窗口生成子电路仿真波形示意图。如图9所示,每个窗口包含9个数据,其中窗口1(window1)第一行a1=0001,a2=0002,a3=0003,第二行b1=0004,b2=0005,b3=0006,第三行c1=0007,c2=0008,c3=0009;窗口2(window2)第一行a1=000a,a2=000b,a3=000c,第二行b1=000d,b2=000e,b3=000f,第三行c1=0010,c2=0011,c3=0012;窗口3(window3)第一行a1=0013,a2=0014,a3=0015,第二行b1=0016,b2=0017,b3=0018,第三行c1=0019,c2=001a,c3=001b;其他窗口同理。权重窗口生成子电路优先于特征图窗口生成子电路启动,以便输入子特征图数据流有效时,卷积子电路可以开始运算,提高运算速度,减少运算时间。此处权重仅为示例。
图10为本实施例特征图窗口生成子电路仿真波形。特征图窗口生成子电路主要实现特征图数据流的窗口化处理和padding处理,每个窗口包含9个数据,其中窗口1(window1)第一行a1=0000,a2=0000,a3=0000,第二行b1=0000,b2=0001,b3=0002,第三行c1=0000,c2=01a1,c3=01a2,a1、a2、a3、b1、c1为填充数据(取值为0),b2、b3、c2、c3为输入的特征图数据;窗口2(window2)第一行a1=0000,a2=0000,a3=0000,第二行b1=0001,b2=0002,b3=0003,第三行c1=01a1,c2=01a2,c3=01a3,a1、a2、a3为填充数据(取值为0),b1、b2、b3、c1、c2、c3为输入feature-map数据;其他窗口同理,不再赘述。
基于上述实施例的发明构思,本申请实施例还提供了一种卷积神经网络的实现方法,应用于上述多个实施例提供的卷积神经网络的实现装置中。图11为本申请实施例还提供的卷积神经网络的实现方法的流程图。如图11所示,包括:
步骤1101,处理单元发送控制指令至所述并行加速电路,以及,发送权重数据流和特征图数据流至所述并行加速电路,以及,接收所述并行加速电路返回的输出数据流,对所述输出数据流进行激活和池化处理,得到更新的特征图数据流发送给所述并行加速电路;
步骤1102,并行加速电路接收所述处理单元的控制指令,根据所述控制指令执行:接收并缓存所述权重数据流,以及,接收所述特征图数据流缓存为多路子特征图数据流,并行对所述权重数据流进行窗口化处理得到多路窗口化的子权重数据流,并行对所述多路子特征图数据流进行填充处理和窗口化处理,得到多路窗口化的子特征图数据流,并行对所述多路窗口化的子特征图数据流使用所述窗口化的子权重数据流进行卷积处理,得到多路中间数据流,根据所述多路中间数据流生成所述输出数据流,返回所述输出数据流至所述处理单元。
在一实施例中,所述并行加速电路在并行对所述多路子特征图数据流进行填充处理和窗口化处理前,并行对所述权重数据流进行窗口化处理。并行加速电路中的权重窗口生成子电路23优先于特征图窗口生成子电路24启动,以便输入的窗口化的子特征图数据流有效时,卷积子电路25可以开始运算,减少运算时间,实现加速。
在一实施例中,所述卷积神经网络比如为yolov2-tiny网络。可以是其他卷积神经网络,本申请对此不作限定。
本申请实施例提供的卷积神经网络的实现方法,将卷积运算与其他运算分离,使用窗口生成子电路生成窗口化的数据后,并行进行卷积运算,提高了处理速度,实现了加速。
有以下几点需要说明:
(1)本发明实施例附图只涉及到与本发明实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合以得到新的实施例。
虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (10)
1.一种卷积神经网络实现装置,包括:处理单元和并行加速电路,其中:
所述处理单元设置为,发送控制指令至所述并行加速电路,以及,发送权重数据流和特征图数据流至所述并行加速电路,以及,接收所述并行加速电路返回的输出数据流,对所述输出数据流进行激活和池化处理,得到更新的特征图数据流发送给所述并行加速电路;
所述并行加速电路设置为,接收所述处理单元的控制指令,根据所述控制指令执行:接收并缓存所述权重数据流,以及,接收所述特征图数据流缓存为多路子特征图数据流,并行对所述权重数据流进行窗口化处理得到多路窗口化的子权重数据流,对所述多路子特征图数据流并行进行填充处理和窗口化处理,得到多路窗口化的子特征图数据流,并行对所述多路窗口化的子特征图数据流使用所述窗口化的子权重数据流进行卷积处理,得到多路中间数据流,根据所述多路中间数据流生成所述输出数据流,返回所述输出数据流至所述处理单元。
2.根据权利要求1所述的卷积神经网络实现装置,其特征在于,所述并行加速电路包括指令控制子电路、缓存子电路、多个权重窗口生成子电路、多个特征图窗口生成子电路、与所述权重窗口生成子电路、特征图窗口生成子电路一一对应的多个卷积子电路、累加子电路和输出子电路,所述指令控制子电路耦接所述缓存子电路、所述缓存子电路耦接所述权重窗口生成子电路和所述特征图窗口生成子电路、所述权重窗口生成子电路和所述特征图窗口生成子电路耦接对应的所述卷积子电路,所述卷积子电路耦接所述累加子电路,所述累加子电路耦接所述输出子电路,其中:
所述指令控制子电路设置为,接收所述处理单元的控制指令,基于所述控制指令控制所述缓存子电路;
所述缓存子电路设置为,接收所述控制指令,根据所述控制指令接收并缓存所述权重数据流,将所述权重数据流并行发送给所述多个权重窗口生成子电路,以及,根据所述控制指令接收所述特征图数据流并缓存为多路子特征图数据流,将所述多路子特征图数据流并行发送给所述多个特征图窗口生成子电路;
所述权重窗口生成子电路设置为,从所述缓存子电路获取所述权重数据流,对所述权重数据流进行窗口化处理得到窗口化的子权重数据流,将所述窗口化的子权重数据流输出到对应的卷积子电路;
所述特征图窗口生成子电路设置为,从所述缓存子电路获取一路子特征图数据流,对所述子特征图数据流进行填充处理和窗口化处理,得到窗口化的子特征图数据流,将所述窗口化的子特征图数据流输出到对应的卷积子电路;
所述卷积子电路设置为,对所述窗口化的子特征图数据流使用所述窗口化的子权重数据流进行卷积处理得到中间数据流;
所述累加子电路设置为,根据多路所述中间数据流生成所述输出数据流,输出至所述输出子电路;
所述输出子电路设置为,将所述输出数据流输出到所述处理单元。
3.根据权利要求2所述的卷积神经网络实现装置,其特征在于,所述权重窗口生成子电路包括:第一比较器、第二比较器、第一D触发器、第二D触发器、第一与门、第二与门、第三与门、第一选通器、第二选通器、累加器、第三组D触发器、第四组D触发器、存储器、第三选通器、第四选通器、第五D触发器,第六组D触发器,其中:
所述第一比较器的第一输入端耦接第一节点,第二输入端耦接第一预设电压端,输出端耦接所述第一与门的第二输入端;
所述第一D触发器的时钟输入端耦接系统时钟端,输入端耦接第一层卷积层指示信号端,输出端耦接所述第一与门的第一输入端;
所述第二比较器的第一输入端耦接第一节点,第二输入端耦接第二预设电压端,输出端耦接所述第二与门的第一输入端;
所述第一与门的输出端耦接所述第三与门的第一输入端;
所述第二D触发器的时钟输入端耦接所述系统时钟端,输入端耦接权重数据流的有效指示信号端,输出端耦接所述第二与门的第二输入端以及所述第三与门的第二输入端;
所述第二与门的输出端耦接所述第一选通器的第二输入端;
所述第三与门的输出端耦接所述第一选通器的选通端;
所述第一选通器的第一输入端耦接第一电压端,输出端耦接所述第二选通器的第二输入端;
所述第二选通器的第一输入端耦接第一电压端,选通端耦接高有效复位信号端,输出端耦接第三组D触发器的复位端;
所述累加器的第一输入端耦接第一电压端,第二输入端耦接所述第一节点,输出端耦接所述第三组D触发器的输入端;
所述第三组D触发器的时钟输入端耦接所述系统时钟端,使能端耦接所述第二D触发器的输出端,输出端耦接所述第一节点;
所述第四组D触发器的时钟输入端耦接所述系统时钟端,输入端耦接权重数据流端,输出端耦接第二节点;
所述存储器的输入端耦接所述第一节点,输出端耦接所述第三选通器的第一输入端;
所述第三选通器的第二输入端耦接第二电压端,输出端耦接第六组D触发器的使能端,选通端耦接所述第二D触发器的输出端;
所述第四选通器的第1输入端至第36输入端耦接所述第二节点,选通端耦接所述第一节点,输出端耦接第六组D触发器的输入端;
所述第五D触发器的时钟输入端耦接所述系统时钟端,输入端耦接所述第二与门的输出端,输出端耦接窗口化的子权重数据流有效指示信号端;
所述第六组D触发器的时钟输入端耦接所述系统时钟端,输出端耦接窗口化的子权重数据流输出端。
4.根据权利要求2所述的卷积神经网络实现装置,其特征在于,所述累加子电路包括输出缓存子电路、累加器、判决子电路,其中,所述输出缓存子电路耦接所述多个卷积子电路、所述判决子电路和所述累加器,所述累加器耦接所述判决子电路,其中,
所述输出缓存子电路设置为,接收所述卷积子电路的输出并缓存;
所述累加器设置为,将所述输出缓存子电路已缓存的数据与所述输出缓存子电路接收到的数据进行累加处理,累加结果存储至所述输出缓存子电路;
所述判决子电路设置为,判断是否处理完毕当前卷积层的数据,当处理完毕时,将所述输出缓存子电路缓存的数据输出到所述输出子电路。
5.根据权利要求2所述的卷积神经网络实现装置,其特征在于,所述特征图窗口生成子电路包括如下输入端口:系统时钟端、高有效复位信号端、窗口生成开始触发信号端、子特征图数据流输入端、子特征图数据流有效指示信号端;以及包括如下输出端口:窗口化的子特征图数据流输出端、窗口化的子特征图数据流有效指示信号端。
6.根据权利要求2所述的卷积神经网络实现装置,其特征在于,
所述权重窗口生成子电路包括:第一比较器、第二比较器、第一D触发器、第二D触发器、第一与门、第二与门、第三与门、第一选通器、第二选通器、累加器、第三组D触发器、第四组D触发器、存储器、第三选通器、第四选通器、第五D触发器,第六组D触发器,其中:
所述第一比较器的第一输入端耦接第一节点,第二输入端耦接第一预设电压端,输出端耦接所述第一与门的第二输入端;
所述第一D触发器的时钟输入端耦接系统时钟端,输入端耦接第一层卷积层指示信号端,输出端耦接所述第一与门的第一输入端;
所述第二比较器的第一输入端耦接第一节点,第二输入端耦接第二预设电压端,输出端耦接所述第二与门的第一输入端;
所述第一与门的输出端耦接所述第三与门的第一输入端;
所述第二D触发器的时钟输入端耦接所述系统时钟端,输入端耦接权重数据流的有效指示信号端,输出端耦接所述第二与门的第二输入端以及所述第三与门的第二输入端;
所述第二与门的输出端耦接所述第一选通器的第二输入端;
所述第三与门的输出端耦接所述第一选通器的选通端;
所述第一选通器的第一输入端耦接第一电压端,输出端耦接所述第二选通器的第二输入端;
所述第二选通器的第一输入端耦接第一电压端,选通端耦接高有效复位信号端,输出端耦接第三组D触发器的复位端;
所述累加器的第一输入端耦接第一电压端,第二输入端耦接所述第一节点,输出端耦接所述第三组D触发器的输入端;
所述第三组D触发器的时钟输入端耦接所述系统时钟端,使能端耦接所述第二D触发器的输出端,输出端耦接所述第一节点;
所述第四组D触发器的时钟输入端耦接所述系统时钟端,输入端耦接权重数据流端,输出端耦接第二节点;
所述存储器的输入端耦接所述第一节点,输出端耦接所述第三选通器的第一输入端;
所述第三选通器的第二输入端耦接第二电压端,输出端耦接第六组D触发器的使能端,选通端耦接所述第二D触发器的输出端;
所述第四选通器的第1输入端至第36输入端耦接所述第二节点,选通端耦接所述第一节点,输出端耦接第六组D触发器的输入端;
所述第五D触发器的时钟输入端耦接所述系统时钟端,输入端耦接所述第二与门的输出端,输出端耦接窗口化的子权重数据流有效指示信号端;
所述第六组D触发器的时钟输入端耦接所述系统时钟端,输出端耦接窗口化的子权重数据流输出端;
所述累加子电路包括输出缓存子电路、累加器、判决子电路,其中,所述输出缓存子电路耦接所述多个卷积子电路、所述判决子电路和所述累加器,所述累加器耦接所述判决子电路,其中,
所述输出缓存子电路设置为,接收所述卷积子电路的输出并缓存;
所述累加器设置为,将所述输出缓存子电路已缓存的数据与所述输出缓存子电路接收到的数据进行累加处理,累加结果存储至所述输出缓存子电路;
所述判决子电路设置为,判断是否处理完毕当前卷积层的数据,当处理完毕时,将所述输出缓存子电路缓存的数据输出到所述输出子电路;
所述特征图窗口生成子电路包括如下输入端口:系统时钟端、高有效复位信号端、窗口生成开始触发信号端、子特征图数据流输入端、子特征图数据流有效指示信号端;以及包括如下输出端口:窗口化的子特征图数据流输出端、窗口化的子特征图数据流有效指示信号端。
7.根据权利要求2至6任一所述的卷积神经网络实现装置,其特征在于,所述并行加速电路包括4个所述权重窗口生成子电路、4个所述特征图窗口生成子电路、4个所述卷积子电路。
8.一种卷积神经网络实现方法,应用于如权利要求1至7任一所述的卷积神经网络实现装置,包括:
处理单元发送控制指令至所述并行加速电路,以及,发送权重数据流和特征图数据流至所述并行加速电路,以及,接收所述并行加速电路返回的输出数据流,对所述输出数据流进行激活和池化处理,得到更新的特征图数据流发送给所述并行加速电路;
并行加速电路接收所述处理单元的控制指令,根据所述控制指令执行:接收并缓存所述权重数据流,以及,接收所述特征图数据流缓存为多路子特征图数据流,并行对所述权重数据流进行窗口化处理得到多路窗口化的子权重数据流,并行对所述多路子特征图数据流进行填充处理和窗口化处理,得到多路窗口化的子特征图数据流,并行对所述多路窗口化的子特征图数据流使用所述窗口化的子权重数据流进行卷积处理,得到多路中间数据流,根据所述多路中间数据流生成所述输出数据流,返回所述输出数据流至所述处理单元。
9.根据权利要求8所述的卷积神经网络实现方法,其特征在于,所述并行加速电路在并行对所述多路子特征图数据流进行填充处理和窗口化处理前,并行对所述权重数据流进行窗口化处理。
10.根据权利要求8或9所述的卷积神经网络实现方法,其特征在于,所述卷积神经网络为yolov2-tiny网络。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010352040.8A CN111563580B (zh) | 2020-04-28 | 2020-04-28 | 一种卷积神经网络实现装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010352040.8A CN111563580B (zh) | 2020-04-28 | 2020-04-28 | 一种卷积神经网络实现装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111563580A CN111563580A (zh) | 2020-08-21 |
CN111563580B true CN111563580B (zh) | 2024-03-08 |
Family
ID=72074495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010352040.8A Active CN111563580B (zh) | 2020-04-28 | 2020-04-28 | 一种卷积神经网络实现装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111563580B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112308837A (zh) * | 2020-10-30 | 2021-02-02 | 京东方科技集团股份有限公司 | 一种图像处理方法及装置、电子设备和可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032781A (zh) * | 2018-07-13 | 2018-12-18 | 重庆邮电大学 | 一种卷积神经网络算法的fpga并行系统 |
CN109034373A (zh) * | 2018-07-02 | 2018-12-18 | 鼎视智慧(北京)科技有限公司 | 卷积神经网络的并行处理器及处理方法 |
CN109934339A (zh) * | 2019-03-06 | 2019-06-25 | 东南大学 | 一种基于一维脉动阵列的通用卷积神经网络加速器 |
CN110458280A (zh) * | 2019-07-15 | 2019-11-15 | 武汉魅瞳科技有限公司 | 一种适用于移动端的卷积神经网络加速方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10726330B2 (en) * | 2016-10-11 | 2020-07-28 | The Research Foundation For The State University Of New York | System, method, and accelerator to process convolutional neural network layers |
US10769526B2 (en) * | 2018-04-24 | 2020-09-08 | Intel Corporation | Machine learning accelerator architecture |
-
2020
- 2020-04-28 CN CN202010352040.8A patent/CN111563580B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109034373A (zh) * | 2018-07-02 | 2018-12-18 | 鼎视智慧(北京)科技有限公司 | 卷积神经网络的并行处理器及处理方法 |
CN109032781A (zh) * | 2018-07-13 | 2018-12-18 | 重庆邮电大学 | 一种卷积神经网络算法的fpga并行系统 |
CN109934339A (zh) * | 2019-03-06 | 2019-06-25 | 东南大学 | 一种基于一维脉动阵列的通用卷积神经网络加速器 |
CN110458280A (zh) * | 2019-07-15 | 2019-11-15 | 武汉魅瞳科技有限公司 | 一种适用于移动端的卷积神经网络加速方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111563580A (zh) | 2020-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10872290B2 (en) | Neural network processor with direct memory access and hardware acceleration circuits | |
CN108416327B (zh) | 一种目标检测方法、装置、计算机设备及可读存储介质 | |
US11507429B2 (en) | Neural network accelerator including bidirectional processing element array | |
CN108205655B (zh) | 一种关键点预测方法、装置、电子设备及存储介质 | |
Wang et al. | Sparse-YOLO: Hardware/software co-design of an FPGA accelerator for YOLOv2 | |
CN109685819B (zh) | 一种基于特征增强的三维医学图像分割方法 | |
US20180164866A1 (en) | Low-power architecture for sparse neural network | |
CN111160375B (zh) | 三维关键点预测及深度学习模型训练方法、装置及设备 | |
CN108388537B (zh) | 一种卷积神经网络加速装置和方法 | |
CN104915322A (zh) | 一种卷积神经网络硬件加速方法及其axi总线ip核 | |
CN111859023B (zh) | 视频分类方法、装置、设备及计算机可读存储介质 | |
CN108537331A (zh) | 一种基于异步逻辑的可重构卷积神经网络加速电路 | |
CN113095106A (zh) | 一种人体姿态估计方法、装置 | |
WO2022001550A1 (zh) | 一种地址生成的方法、相关装置以及存储介质 | |
CN111563580B (zh) | 一种卷积神经网络实现装置及方法 | |
CN117037215A (zh) | 人体姿态估计模型训练方法、估计方法、装置及电子设备 | |
KR20190030564A (ko) | 양방향 프로세싱 엘리먼트 어레이를 포함하는 신경망 가속기 | |
CN110738317A (zh) | 基于fpga的可变形卷积网络运算方法、装置和系统 | |
CN111461313A (zh) | 基于轻量型网络的卷积神经网络硬件加速器及其计算方法 | |
CN114925320A (zh) | 一种数据处理方法及相关装置 | |
Hu et al. | On-chip instruction generation for cross-layer CNN accelerator on FPGA | |
CN107247944B (zh) | 基于深度学习的人脸检测速度优化方法及装置 | |
CN114612758A (zh) | 一种基于深度分组可分离卷积的目标检测方法 | |
CN114254563A (zh) | 数据处理方法及装置、电子设备、存储介质 | |
Chen et al. | A technique for approximate communication in network-on-chips for image classification |
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 |