CN115049885A - 一种存算一体卷积神经网络图像分类装置及方法 - Google Patents
一种存算一体卷积神经网络图像分类装置及方法 Download PDFInfo
- Publication number
- CN115049885A CN115049885A CN202210981223.5A CN202210981223A CN115049885A CN 115049885 A CN115049885 A CN 115049885A CN 202210981223 A CN202210981223 A CN 202210981223A CN 115049885 A CN115049885 A CN 115049885A
- Authority
- CN
- China
- Prior art keywords
- pooling
- value
- unit
- row
- register
- 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
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/764—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/065—Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Multimedia (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Image Processing (AREA)
- Image Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种存算一体卷积神经网络图像分类装置及方法,通过控制器对装置的其他单元、器件的控制;通过数据存储器存储神经网络分类的图像数据,以及中间特征图数据;通过存算一体单元获取的图像数据,并对图像数据进行卷积神经网络中的卷积层以及全连接层的计算,得到特征值;通过激活函数单元对存算一体单元输出的特征值进行非线性操作,得到非线性操作后的特征值;通过池化单元依次对非线性操作后的特征值进行行池化操作和列池化操作,并将最终结果值存入数据存储器;通过分类器获取最后一层神经网络计算对应的存算一体单元的输出,根据分类标签得到分类结果;从而实现数据流的优化,减少数据存取次数,减小所需缓存容量,提升计算效率。
Description
技术领域
本发明涉及新型智能计算技术领域,尤其是涉及一种存算一体卷积神经网络图像分类装置及方法。
背景技术
当前阶段冯诺依曼架构的“内存墙”问题日益凸显,同时我们正处于大数据、物联网和人工智能时代,对于数据处理的需求大量增加,传统冯诺依曼架构的性能开始不能满足我们日常数据处理的需求。随着不同架构以及技术被提出,存储与计算融合成为了一种未来的趋势,不仅可以解决“内存墙”问题,同时还可以获得更好的计算效率。
现有技术中,在具体池化过程中,需要对从图像数据中提取的特征值进行逻辑操作,在逻辑操作的过程中,会对大量的特征值进行提取、逻辑操作、存储,如何减少特征值存取的次数,减少所需缓存的容量,是提升计算机内部性能,提高计算效率的关键。
发明内容
为解决现有技术的不足,实现数据流的优化,减少数据存取次数,减小所需缓存容量,提升计算效率的目的,本发明采用如下的技术方案:
一种存算一体卷积神经网络图像分类装置,包括控制器、数据存储器、存算一体单元、激活函数单元、池化单元以及分类器,所述池化单元包括行池化单元和列池化单元,存算一体单元分别与激活函数单元和分类器连接,激活函数单元依次与池化单元和列池化单元连接;
所述控制器,用于对装置的其他单元、器件的控制;
所述数据存储器,用于存储神经网络分类的图像数据,以及中间特征图数据;
所述存算一体单元,用于获取的图像数据,并对图像数据进行卷积神经网络中的卷积层以及全连接层的计算,得到特征值;
所述激活函数单元,对存算一体单元输出的特征值进行非线性操作,得到非线性操作后的特征值;
所述行池化单元,对非线性操作后的特征值进行行池化操作,得到行池化结果值;
所述列池化单元,对行池化结果值进行列池化操作,得到最终结果值作为中间特征图数据存入数据存储器;
所述分类器,用于获取最后一层神经网络计算对应的存算一体单元的输出,根据分类标签得到分类结果。
进一步地,所述行池化单元,包括第一逻辑单元和第一寄存器,若获取的数据为非线性操作后池化行窗口内的第一个值,则直接存储在第一寄存器中;若获取的数据不满足池化行的覆盖范围,则依据当前设置的行池化操作,将不满足覆盖范围的所述数据与第一寄存器中的值,通过第一逻辑单元进行逻辑操作,并将结果存储在第一寄存器中;若获取的数据满足池化行的覆盖范围,则依据当前设置的行池化操作,将满足覆盖范围的所述数据与第一寄存器中的值,通过逻辑单元进行逻辑操作,并直接作为行池化结果值输出。
进一步地,所述行池化单元还包括第一多路器和第二多路器,所述第一逻辑单元采用的运算逻辑能够由控制器进行配置;对于尺寸为的池化窗口,对应的行池化窗口为;当存算一体单元的输出数据为所在行池化窗口的第个数,且时,则通过第一多路器,将激活后的直接写入到第一寄存器中;当为第个数,且时,通过第一多路器,将第一寄存器中的值和第个激活后的通过第一逻辑单元进行逻辑运算,将逻辑运算后的值写入第一寄存器中;当为第个数,且时,通过第一多路器,将第一寄存器中的值和第个激活后的通过第一逻辑单元进行逻辑运算,将逻辑运算后的值通过第二多路器选出,作为当前行池化的结果值。一个集合在中间计算过程仅需1个寄存器当缓存,极大的减少了存储器数据访问以及缓存空间的需求。
进一步地,所述列池化单元,包括第二逻辑单元、先进先出存储器和第二寄存器,若获取的行池化结果值为当前中间特征图的位于列池化窗口的第一行的值,则直接存入先进先出存储器中;若获取的行池化结果值为当前中间特征图的位于列池化窗口覆盖范围且不为第一行的值时,则直接存入第二寄存器中,并依据当前设置的列池化操作,对第二寄存器中的值与先进先出存储器读端口的值,通过逻辑运算模块进行逻辑操作,得到列池化中间结果值;若获取的行池化结果值不为当前中间特征图的位于列池化窗口覆盖范围最后一行,则将列池化中间结果值写回先进先出存储器;若获取的行池化结果值为当前池化覆盖范围的最后一行的值,则将列池化中间结果值作为最终结果值。该值即为当前计算出特征图中的一个特征值。此处的FIFO深度需求,需要根据最大特征图的列数来得出。其中至少需要将第一行的数据全部缓存到FIFO,等到第二行的数据从行池化单元流出,不需要将该行数据全部缓存,仅需将该行数据缓存在寄存器中,并与缓存在FIFO中的第一行数据进行逻辑运算。对于特征图大小为N1×N2的行池化输出中间特征图来说,不需要将N1×N2个数据全部缓存起来,只需要缓存一行加一个数据,即(N2+1)个数据,大大减小了需要缓存的数据量以及数据搬运量。
所述分类装置仅对输入图像和输入特征图在数据存储器中进行访问存取,中间的计算值不涉及对数据存储器的访问,仅通过寄存器和先进先出存储器进行存取。
进一步地,根据行池化输出最大的中间特征图行的尺寸,配合设置深度为二以上先进先出存储器和第二寄存器,用于对两行及以上的中间特征图进行缓存。并非必须是偶数行,即缓存需要通过列池化的,并非第一行,如果采用尺寸更大的池化,需要缓存多次,如3×3的池化中3行数据需要进行列池化,则需要先缓存第一行的值,再缓存第一行与第二行通过逻辑运算后的值,采用一个FIFO存储器用于存储一行的数据。
进一步地,所述列池化单元还包括第三多路器和第四多路器,所述第二逻辑单元的运算能够由控制器进行配置;对于尺寸为的池化窗口和尺寸为的行池化输出的中间特征图,对应的单列的列池化窗口为且行池化输出的中间特征图的列的列池化窗口为;当行池化的结果值为所在列的列池化窗口的第个数,且的商为0时,通过第三多路器写入到先进先出存储器中;当为第个数,且的商小于时,通过第三多路器写入第二寄存器中,将第二寄存器中的值与先进先出读端口的值通过第二逻辑单元进行逻辑运算,将逻辑运算后的中间结果值写回到先进先出存储器中;当为第个数,且的商等于时,通过第三多路器写入第二寄存器中,将第二寄存器中的值与先进先出读端口的值通过第二逻辑单元进行逻辑运算,将逻辑运算后的值作为最终结果值,通过第四多路器输出,该值就是当前神经网络层经过计算并通过激活池化操作后的特征值。一个集合在中间计算过程需要一个深度为集合列数的FIFO存储器以及一个寄存器当缓存,极大的减少了存储器数据访问以及缓存空间的需求。
进一步地,所述先进先出存储器包括两个指针,一个是读操作的地址指针,指向下一次数据读出的地址,即得到读端口的值;一个是写操作的地址指针,指向下一次数据写入的地址,每读写一次,读、写指针分别加1;在列池化过程中,每当第二寄存器中的值与先进先出读端口的值进行逻辑运算,先进先出存储器视为读出一次,读指针加1,数据读出的顺序按照数据写入的顺序一次被读出。
进一步地,所述控制器包括一组配置寄存器,用于不同网络结构的配置,包括卷积层中的卷积核大小、输入维度大小、输出维度大小、激活池化操作,以及权重存储在存算一体单元中的位置信息、全连接层中的权重的位置信息、分类器每次分类标签信息。
进一步地,所述存算一体单元包括由存算器件单元组成的阵列,卷积层和全连接层的权重值分别映射到阵列的各存算器件单元上,卷积层和全连接层中的偏置值被拆分为两部分,一部分用于保持不同偏置值拆分出的结果的一致性,作为同一行存算器件单元公用的输入值,另一部分被映射在与卷积核对应的同一列的存算器件单元上。
一种存算一体卷积神经网络图像分类方法,基于所述的一种存算一体卷积神经网络图像分类装置,对待分类图像进行分类,得到图像分类结果。
本发明的优势和有益效果在于:
本发明一种存算一体卷积神经网络图像分类装置及方法,将卷积网络所需的操作一体化,集成了所有必要的卷积神经网络计算单元,将所有的卷积网络计算过程以流水线形式进行处理。本发明适用于不同的卷积神经网络结构,基于存算一体技术优化了卷积神经网络计算中的数据流,大量减少了在中间计算过程中的数据存取次数,以及减小所需缓存容量,并且提升了卷积神经网络的计算效率,同时简化了中间数据进行激活、池化操作的步骤。
附图说明
图1是本发明的装置结构示意图。
图2是本发明中卷积神经网络计算流程图。
图3是本发明中基于忆阻器的存算阵列以及阵列映射示意图。
图4a是本发明中激活函数&池化单元示意图。
图4b是本发明中激活函数&池化单元原理图。
图5是本发明中FIFO存储器进行数据存储的示意图。
图6是本发明实施例中采用2×2池化操作的激活函数&行池化单元原理图。
图7a是本发明实施例中存算阵列输入的图像数据示意图。
图7b是本发明实施例中经3×3卷积核非线性操作得到的存算阵列输出数据。
图7c是本发明实施例中经2×2行池化操作后得到的激活函数&行池化单元输出数据。
图7d是本发明实施例中经2×2列池化操作后得到的列池化单元输出数据。
图8是本发明实施例的列池化中FIFO存储器数据与第二寄存器数据进行比较的示意图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
如图1所示,一种存算一体卷积神经网络图像分类装置,包括控制器、数据存储器、存算一体单元、激活函数单元、池化单元以及分类器,所述池化单元包括行池化单元和列池化单元,存算一体单元分别与激活函数单元和分类器连接,激活函数单元依次与池化单元和列池化单元连接;
所述控制器,用于对装置的其他单元、器件的控制;
所述数据存储器,用于存储神经网络分类的图像数据,以及中间特征图数据;
所述存算一体单元,用于获取的图像数据,并对图像数据进行卷积神经网络中的卷积层以及全连接层的计算,得到特征值;
所述激活函数单元,对存算一体单元输出的特征值进行非线性操作,得到非线性操作后的特征值;
所述行池化单元,对非线性操作后的特征值进行行池化操作,得到行池化结果值;
所述列池化单元,对行池化结果值进行列池化操作,得到最终结果值作为中间特征图数据存入数据存储器;
所述分类器,用于获取最后一层神经网络计算对应的存算一体单元的输出,根据分类标签得到分类结果。
本发明实施例中,控制器负责装置的全局、局部模块的控制;数据存储器用于存储神经网络分类的图像数据,以及中间特征图数据;存算一体单元分别与激活函数单元、池化单元、分类器连接,构成一个整体,是装置中卷积神经网络计算单元,数据流从存算一体单元流入,从其余模块单元流出。其中各个模块单元的数量最少为1,可以为多个,以支持更多的维度同时进行计算。卷积网络计算在本装置中通过流水线的形式进行计算,并在中间过程中几乎只需要少量的缓存来存储数据,也无需额外的数据存储器的存取。
控制器内含一组配置寄存器,用于不同网络结构的配置,包括卷积层中的卷积核大小、输入维度大小、输出维度大小、激活池化操作,以及权重存储在存算一体单元中的位置信息、全连接层中的权重的位置信息、分类器每次分类标签信息。控制器在卷积网络计算过程中对不同模块发送控制信号,控制计算的数据流,并且负责数据的存取操作。
存算一体单元包括由存算器件单元组成的阵列,卷积层和全连接层的权重值分别映射到阵列的各存算器件单元上,卷积层和全连接层中的偏置值被拆分为两部分,一部分用于保持不同偏置值拆分出的结果的一致性,作为同一行存算器件单元公用的输入值,另一部分被映射在与卷积核对应的同一列的存算器件单元上。
本发明实施例中,存算一体单元包括由存算器件单元组成的阵列、输入输出单元、以及读写控制单元。该单元通过存算一体技术,进行卷积神经网络中的卷积层以及全连接层的计算,不同网络层的权重值,都分别映射到由存算器件单元构成的阵列中,卷积层和全连接层中的偏置值,会被拆分成两个部分,其中,一个部分映射在存算阵列上,另一个部分通过输入值的形式输入。
存算器件单元种类不限,包括FLASH、RRAM、MRAM这类用于存算的存储器件,存算器件单元通过在阵列上汇聚电流得出计算结果。
如图2所示,首先在网络权重以及偏置都预先写入到存算阵列中,在分类图像存入到数据存储器的前提下,数据会被控制器从数据存储器取出,输入存算一体单元中进行计算,计算出的结果会依据当前神经网络的阶段区分,当神经网络未计算完成,即不需要进行分类,则计算结果会被直接输入到激活函数单元与池化单元进行非线性和池化操作,输出值就是在卷积神经网络中间特征图上的特征值,该特征值会被存回到数据存储器中;当神经网络计算完成,即需要进行分类,则计算结果会被直接输入到分类器中,依据设置好的分类标签得出该分类的几率,当所有标签类别都计算完毕后,通过排序将最佳分类结果输出。
如图3所示,在AB的基于忆阻器的存算阵列中,映射了3个2×2的卷积核,每个卷积核都被展开到一列阵列中并对应4个忆阻器,分别表示权重,输入的数据是,并且如果有偏置,该偏置会被拆分成和,会被映射在与卷积核同一列的器件上,而会被当做输入值输入到阵列中进行计算,即。在存算阵列中的计算结果就是把同一列上的各个结果值累加在一起,输出结果,。上述变量m’表示行坐标, ;上述变量n’表示列坐标, 。由于是对于同一行存算器件公用的输入值,不同偏置拆分出的结果需要有一个值保持一致,即为,如果不采用偏置可将设为0,或设为0。
如图4a、图4b所示,激活函数与池化单元相融合,激活函数单元使用的非线性操作通过控制器中的配置寄存器做设置,用于对从存算一体单元输出的数据直接做非线性操作,同时该激活函数单元与池化单元相融合,数据完成非线性操作后直接进入池化单元。池化单元包括行池化单元、列池化单元为两个部分,其中行池化单元与激活函数单元构成激活函数&行池化单元,用于完成数据的非线性操作以及行池化操作,列池化单元完成列池化操作。具体采用的激活函数以及池化操作方式不固定,可以自由配置。具体的池化操作类型依据控制器中的配置寄存器设置。
行池化单元,包括第一逻辑单元和第一寄存器,若获取的数据为非线性操作后池化行窗口内的第一个值,则直接存储在第一寄存器中;若获取的数据不满足池化行的覆盖范围,则依据当前设置的行池化操作,将不满足覆盖范围的所述数据与第一寄存器中的值,通过第一逻辑单元进行逻辑操作,并将结果存储在第一寄存器中;若获取的数据满足池化行的覆盖范围,则依据当前设置的行池化操作,将满足覆盖范围的所述数据与第一寄存器中的值,通过逻辑单元进行逻辑操作,并直接作为行池化结果值输出。
本发明实施例中,行池化单元包含逻辑运算模块以及第一寄存器,通过非线性变换的数据直接进入行池化单元,当输入的数据为第一个值时,直接存储在第一寄存器中;当输入的数据不满足池化行的覆盖范围,则依据当前设置的池化操作,对数据结合第一寄存器中的值进行逻辑操作并存储在第一寄存器中;当输入的数据满足池化行的覆盖范围,则依据当前设置的池化操作,对数据结合第一寄存器中的值进行逻辑操作,并直接输出目标值。
行池化单元还包括第一多路器和第二多路器,所述第一逻辑单元采用的运算逻辑能够由控制器进行配置;对于尺寸为的池化窗口,对应的行池化窗口为;当存算一体单元的输出数据为所在行池化窗口的第个数,且时,则通过第一多路器,将激活后的直接写入到第一寄存器中;当为第个数,且时,通过第一多路器,将第一寄存器中的值和第个激活后的通过第一逻辑单元进行逻辑运算,将逻辑运算后的值写入第一寄存器中;当为第个数,且时,通过第一多路器,将第一寄存器中的值和第个激活后的通过第一逻辑单元进行逻辑运算,将逻辑运算后的值通过第二多路器选出,作为当前行池化的结果值。一个集合在中间计算过程仅需1个寄存器当缓存,极大的减少了存储器数据访问以及缓存空间的需求。
如图6所示,本发明实施例中,提供一种采用2×2 max pooling池化方式的激活函数&行池化单元和列池化单元,其中第一逻辑单元和第二逻辑单元配置为第一比较器和第二比较器,表示存算阵列的输出数据,为激活函数&行池化单元的输出数据,表示列池化单元的输出数据,也可以是中间特征图中的特征值。首先,在激活函数&行池化单元中,经过激活函数,当为第个数,通过控制多路器将激活后的直接写入到第一寄存器中;当为第个数时,通过控制多路器先不写入到寄存器中,而是将第个和第个激活后的通过第一比较器,比较出较大的数并用多路器选出,即为第个和第个激活后的中的大值,也为行池化的结果值,为奇数,即为进行行池化两个数中的第一个数序号;
列池化单元,包括第二逻辑单元、先进先出存储器和第二寄存器,若获取的行池化结果值为当前中间特征图的位于列池化窗口的第一行的值,则直接存入先进先出存储器中;若获取的行池化结果值为当前中间特征图的位于列池化窗口覆盖范围且不为第一行的值时,则直接存入第二寄存器中,并依据当前设置的列池化操作,对第二寄存器中的值与先进先出存储器读端口的值,通过逻辑运算模块进行逻辑操作,得到列池化中间结果值;若获取的行池化结果值不为当前中间特征图的位于列池化窗口覆盖范围最后一行,则将列池化中间结果值写回先进先出存储器;若获取的行池化结果值为当前池化覆盖范围的最后一行的值,则将列池化中间结果值作为最终结果值。
本发明实施例中,列池化单元包含逻辑运算模块、一个FIFO存储器以及第二寄存器,行池化单元的输出值会直接进入列池化单元,当输入值为当前池化覆盖范围第一行的值,该值会被直接存在一个FIFO存储器中;当输入值在当前池化覆盖范围且不为第一行的值时,该值会被直接存入第二寄存器中,并依据当前设置的池化操作,对第二寄存器中的值与FIFO存储器读端口的值进行逻辑操作,若不为池化覆盖范围最后一行,则将结果值写回FIFO存储器,直到池化覆盖范围的最后一行的值在第二寄存器中与FIFO存储器读端口的值进行池化操作,计算完成的结果值会被输出,该值即为当前计算出特征图中的一个特征值。此处的FIFO深度需求,需要根据最大特征图的列数来得出。
列池化单元还包括第三多路器和第四多路器,所述第二逻辑单元采用的运算逻辑能够由控制器进行配置;对于尺寸为的池化窗口和尺寸为的行池化输出的中间特征图,对应的单列的列池化窗口为且行池化输出的中间特征图的列的列池化窗口为;当行池化的结果值为所在列的列池化窗口的第个数,且的商为0时,通过第三多路器写入到先进先出存储器中;当为第个数,且的商小于时,通过第三多路器写入第二寄存器中,将第二寄存器中的值与先进先出读端口的值通过第二逻辑单元进行逻辑运算,将逻辑运算后的中间结果值写回到先进先出存储器中;当为第个数,且的商等于时,通过第三多路器写入第二寄存器中,将第二寄存器中的值与先进先出读端口的值通过第二逻辑单元进行逻辑运算,将逻辑运算后的值作为最终结果值,通过第四多路器输出。
本发明实施例中,在列池化单元中,当为第个数,且为偶数时,通过控制的多路器写入到FIFO存储器中,当为第个数,且为奇数时,通过控制的多路器写入第二寄存器中,并通过第二比较器,比较第二寄存器中的值与FIFO读端口的值,控制多路器输出大值,该值就是当前神经网络层经过计算并通过激活池化操作后的特征值。
先进先出存储器包括两个指针,一个是读操作的地址指针,指向下一次数据读出的地址,即得到读端口的值;一个是写操作的地址指针,指向下一次数据写入的地址,每读写一次,读、写指针分别加1;在列池化过程中,每当第二寄存器中的值与先进先出读端口的值进行逻辑运算,先进先出存储器视为读出一次,读指针加1。
如图5所示,本发明实施例中,FIFO存储器有两个指针指向不同位置,一个是读操作的地址指针,负责指向下一次数据读出的地址,即得到读端口的值;一个是写操作的地址指针,负责指向下一次数据写入的地址。每读写一次,读、写指针分别加1。数据读出的顺序按照数据写入的顺序一次被读出。
如图7a至图7d所示,是基于图6所示的2×2 max pooling池化方式的激活函数&行池化单元的实际展示,此处使用的卷积核尺寸为3×3。图7a中的集合为存算阵列输入的图像数据,图7b中的集合为存算阵列输出数据,图7c中的集合为激活函数&行池化单元输出数据,图7d中的集合为列池化单元输出数据,也可以是中间特征图中的特征值。
由于采用2×2的max pooling,对于行池化和列池化,只需要分别对左右两列和上下两行的数据进行比大小,对于列池化单元来说接收到的数据已经是行池化单元处理完之后的中间特征图数据,即依次得到n集合的图信息,如图7c所示,由于当前中间特征图的信息是从左到右,从上到下依次得到,在当前本实施例中进行、列池化前,至少需要将第一行的数据全部缓存到FIFO,等到第二行的数据从行池化单元流出,如图8所示,不需要将该行数据全部缓存,仅需将该行数据缓存在寄存器中,并与缓存在FIFO中的第一行数据进行比较大小。对于特征图大小为8×4的行池化输出中间特征图来说,不需要将32个数据全部缓存起来,只需要缓存一行加一个数据,即(4+1)个数据,大大减小了需要缓存的数据量以及数据搬运量。
根据行池化输出最大的中间特征图行的尺寸,配合设置深度为二以上先进先出存储器和第二寄存器,用于对两行及以上的中间特征图进行缓存。并非必须是偶数行,只是本实施例中为偶数行,即缓存需要通过列池化的第一行。如果采用尺寸更大的池化,需要缓存多次,如3×3的池化中3行数据需要进行列池化,则需要先缓存第一行的值,再缓存第一行与第二行进行逻辑运算后的值,采用一个FIFO存储器用于存储一行的数据。
在本装置中的中间数据缓存量非常小,除集合和集合需要全部存在数据存储器内外,其余特征图数据相比于对应的整张图像可以忽略不计。一个集合在中间计算过程仅需1个寄存器当缓存,一个集合在中间计算过程需要一个深度为集合列数的FIFO存储器以及一个寄存器当缓存,极大的减少了存储器数据访问以及缓存空间的需求。
表1是本发明实施例中,基于图6、图7a至图7d所示的采用2×2 max pooling网络层的实际数据流,t表示时间周期。平均2个计算周期完成行池化操作,得出结果,在列池化数据准备完毕一行后,平均两个计算周期完成列池化操作,得出结果。其中两个连续的仅有一个会被存入行池化单元的第一寄存器中,而列池化单元的FIFO存储器中,仅会存偶数行的行池化单元的输出结果,奇数行的输出结果仅被存入第二寄存器中,并在下个周期被替代或者输出。
表1数据流图
分类器用于卷积神经网络最后的分类,当在最后一层神经网络计算时,在存算一体单元中计算完成卷积层或全连接层的结果会被输出到分类器中,分类器通过控制器告知的分类标签信息进行分类,并在分类结束后经过排序将最大可能分类结果输出。
一种存算一体卷积神经网络图像分类方法,基于所述一种存算一体卷积神经网络图像分类装置,对待分类图像进行分类,得到图像分类结果。这部分内容实施方式与上述装置实施例的实施方式类似,此处不再赘述。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。
Claims (10)
1.一种存算一体卷积神经网络图像分类装置,包括控制器、数据存储器、存算一体单元、激活函数单元、池化单元以及分类器,其特征在于:所述池化单元包括行池化单元和列池化单元,存算一体单元分别与激活函数单元和分类器连接,激活函数单元依次与池化单元和列池化单元连接;
所述控制器,用于对装置的其他单元、器件的控制;
所述数据存储器,用于存储神经网络分类的图像数据,以及中间特征图数据;
所述存算一体单元,用于获取的图像数据,并对图像数据进行卷积神经网络中的卷积层以及全连接层的计算,得到特征值;
所述激活函数单元,对存算一体单元输出的特征值进行非线性操作,得到非线性操作后的特征值;
所述行池化单元,对非线性操作后的特征值进行行池化操作,得到行池化结果值;
所述列池化单元,对行池化结果值进行列池化操作,得到最终结果值作为中间特征图数据存入数据存储器;
所述分类器,用于获取最后一层神经网络计算对应的存算一体单元的输出,根据分类标签得到分类结果。
2.根据权利要求1所述的一种存算一体卷积神经网络图像分类装置,其特征在于:所述行池化单元,包括第一逻辑单元和第一寄存器,若获取的数据为非线性操作后池化行窗口内的第一个值,则直接存储在第一寄存器中;若获取的数据不满足池化行的覆盖范围,则依据当前设置的行池化操作,将不满足覆盖范围的所述数据与第一寄存器中的值,通过第一逻辑单元进行逻辑操作,并将结果存储在第一寄存器中;若获取的数据满足池化行的覆盖范围,则依据当前设置的行池化操作,将满足覆盖范围的所述数据与第一寄存器中的值,通过逻辑运算模块进行逻辑操作,并直接作为行池化结果值输出。
3.根据权利要求2所述的一种存算一体卷积神经网络图像分类装置,其特征在于:所述
行池化单元还包括第一多路器和第二多路器,所述第一逻辑单元采用的运算逻辑能够由控
制器进行配置;对于尺寸为的池化窗口,对应的行池化窗口为;当存算一体单元
的输出数据为所在行池化窗口的第个数,且时,则通过第一多路器,将激活后的
直接写入到第一寄存器中;当为第个数,且时,通过第一多路器,将第一寄存器
中的值和第个激活后的通过第一逻辑单元进行逻辑运算,将逻辑运算后的值写入第一
寄存器中;当为第个数,且时,通过第一多路器,将第一寄存器中的值和第个激活
后的通过第一逻辑单元进行逻辑运算,将逻辑运算后的值通过第二多路器选出,作为当
前行池化的结果值。
4.根据权利要求1所述的一种存算一体卷积神经网络图像分类装置,其特征在于:所述列池化单元,包括第二逻辑单元、先进先出存储器和第二寄存器,若获取的行池化结果值为当前中间特征图的位于列池化窗口的第一行的值,则直接存入先进先出存储器中;若获取的行池化结果值为当前中间特征图的位于列池化窗口覆盖范围且不为第一行的值时,则直接存入第二寄存器中,并依据当前设置的列池化操作,对第二寄存器中的值与先进先出存储器读端口的值,通过逻辑运算模块进行逻辑操作,得到列池化中间结果值;若获取的行池化结果值不为当前中间特征图的位于列池化窗口覆盖范围最后一行,则将列池化中间结果值写回先进先出存储器;若获取的行池化结果值为当前池化覆盖范围的最后一行的值,则将列池化中间结果值作为最终结果值输出。
5.根据权利要求4所述的一种存算一体卷积神经网络图像分类装置,其特征在于:根据行池化输出最大的中间特征图行的尺寸,配合设置深度为二以上先进先出存储器和第二寄存器,用于对两行及以上的中间特征图进行缓存。
6.根据权利要求4所述的一种存算一体卷积神经网络图像分类装置,其特征在于:所述
列池化单元还包括第三多路器和第四多路器,所述第二逻辑单元采用的运算逻辑能够由控
制器进行配置;对于尺寸为的池化窗口和尺寸为的行池化输出的中间特征图,
对应的单列的列池化窗口为且行池化输出的中间特征图的列的列池化窗口为;当行池化的结果值为所在列的列池化窗口的第个数,且的商为0时,通过
第三多路器写入到先进先出存储器中;当为第个数,且的商小于 时,通过第
三多路器写入第二寄存器中,将第二寄存器中的值与先进先出读端口的值通过第二逻辑单
元进行逻辑运算,将逻辑运算后的中间结果值写回到先进先出存储器中;当为第个数,且的商等于 时,通过第三多路器写入第二寄存器中,将第二寄存器中的值与先
进先出读端口的值通过第二逻辑单元进行逻辑运算,将逻辑运算后的值作为最终结果值,
通过第四多路器输出。
7.根据权利要求4所述的一种存算一体卷积神经网络图像分类装置,其特征在于:所述先进先出存储器包括两个指针,一个是读操作的地址指针,指向下一次数据读出的地址,即得到读端口的值;一个是写操作的地址指针,指向下一次数据写入的地址,每读写一次,读、写指针分别加1;在列池化过程中,每当第二寄存器中的值与先进先出读端口的值进行逻辑运算,先进先出存储器视为读出一次,读指针加1。
8.根据权利要求1所述的一种存算一体卷积神经网络图像分类装置,其特征在于:所述控制器包括一组配置寄存器,用于不同网络结构的配置,包括卷积层中的卷积核大小、输入维度大小、输出维度大小、激活池化操作,以及权重存储在存算一体单元中的位置信息、全连接层中的权重的位置信息、分类器每次分类标签信息。
9.根据权利要求1所述的一种存算一体卷积神经网络图像分类装置,其特征在于:所述存算一体单元包括由存算器件单元组成的阵列,卷积层和全连接层的权重值分别映射到阵列的各存算器件单元上,卷积层和全连接层中的偏置值被拆分为两部分,一部分用于保持不同偏置值拆分出的结果的一致性,作为同一行存算器件单元公用的输入值,另一部分被映射在与卷积核对应的同一列的存算器件单元上。
10.一种存算一体卷积神经网络图像分类方法,其特征在于,基于权利要求1至9任意一项所述的一种存算一体卷积神经网络图像分类装置,对待分类图像进行分类,得到图像分类结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210981223.5A CN115049885B (zh) | 2022-08-16 | 2022-08-16 | 一种存算一体卷积神经网络图像分类装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210981223.5A CN115049885B (zh) | 2022-08-16 | 2022-08-16 | 一种存算一体卷积神经网络图像分类装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115049885A true CN115049885A (zh) | 2022-09-13 |
CN115049885B CN115049885B (zh) | 2022-12-27 |
Family
ID=83167247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210981223.5A Active CN115049885B (zh) | 2022-08-16 | 2022-08-16 | 一种存算一体卷积神经网络图像分类装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115049885B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116048479A (zh) * | 2023-04-03 | 2023-05-02 | 南京大学 | 一种针对存算一体芯片的快速编程方法 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108763612A (zh) * | 2018-04-02 | 2018-11-06 | 复旦大学 | 一种神经网络的池化层加速运算的方法与电路 |
CN108805270A (zh) * | 2018-05-08 | 2018-11-13 | 华中科技大学 | 一种基于存储器的卷积神经网络系统 |
CN108846047A (zh) * | 2018-05-30 | 2018-11-20 | 百卓网络科技有限公司 | 一种基于卷积特征的图片检索方法及系统 |
CN109948777A (zh) * | 2018-11-14 | 2019-06-28 | 深圳大学 | 基于fpga实现的卷积神经网络以及基于fpga实现卷积神经网络的实现方法 |
CA3032188A1 (en) * | 2018-01-31 | 2019-07-31 | Pin-Han Ho | Deep convolutional neural network architecture and system and method for building the deep convolutional neural network architecture |
CN110097174A (zh) * | 2019-04-22 | 2019-08-06 | 西安交通大学 | 基于fpga和行输出优先的卷积神经网络实现方法、系统及装置 |
CN111199277A (zh) * | 2020-01-10 | 2020-05-26 | 中山大学 | 一种卷积神经网络加速器 |
CN111985602A (zh) * | 2019-05-24 | 2020-11-24 | 华为技术有限公司 | 神经网络计算设备、方法以及计算设备 |
CN112801102A (zh) * | 2021-01-11 | 2021-05-14 | 成都圭目机器人有限公司 | 一种用于道面块状病害检测的网络模型和检测方法 |
US20210264250A1 (en) * | 2020-02-24 | 2021-08-26 | Stmicroelectronics International N.V. | Pooling unit for deep learning acceleration |
CN113743587A (zh) * | 2021-09-09 | 2021-12-03 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络池化计算方法、系统、及存储介质 |
CN113870246A (zh) * | 2021-10-13 | 2021-12-31 | 广东新时空科技股份有限公司 | 一种基于深度学习的障碍物探测和识别方法 |
CN114265696A (zh) * | 2021-12-28 | 2022-04-01 | 北京航天自动控制研究所 | 针对卷积神经网络最大池化层的池化器及池化加速电路 |
CN114662567A (zh) * | 2022-03-03 | 2022-06-24 | 燕山大学 | 基于不同模型特征融合的卷积神经网络图像分类方法 |
CN114781629A (zh) * | 2022-04-06 | 2022-07-22 | 合肥工业大学 | 基于并行复用的卷积神经网络的硬件加速器及并行复用方法 |
-
2022
- 2022-08-16 CN CN202210981223.5A patent/CN115049885B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA3032188A1 (en) * | 2018-01-31 | 2019-07-31 | Pin-Han Ho | Deep convolutional neural network architecture and system and method for building the deep convolutional neural network architecture |
CN108763612A (zh) * | 2018-04-02 | 2018-11-06 | 复旦大学 | 一种神经网络的池化层加速运算的方法与电路 |
CN108805270A (zh) * | 2018-05-08 | 2018-11-13 | 华中科技大学 | 一种基于存储器的卷积神经网络系统 |
CN108846047A (zh) * | 2018-05-30 | 2018-11-20 | 百卓网络科技有限公司 | 一种基于卷积特征的图片检索方法及系统 |
CN109948777A (zh) * | 2018-11-14 | 2019-06-28 | 深圳大学 | 基于fpga实现的卷积神经网络以及基于fpga实现卷积神经网络的实现方法 |
CN110097174A (zh) * | 2019-04-22 | 2019-08-06 | 西安交通大学 | 基于fpga和行输出优先的卷积神经网络实现方法、系统及装置 |
CN111985602A (zh) * | 2019-05-24 | 2020-11-24 | 华为技术有限公司 | 神经网络计算设备、方法以及计算设备 |
CN111199277A (zh) * | 2020-01-10 | 2020-05-26 | 中山大学 | 一种卷积神经网络加速器 |
US20210264250A1 (en) * | 2020-02-24 | 2021-08-26 | Stmicroelectronics International N.V. | Pooling unit for deep learning acceleration |
CN112801102A (zh) * | 2021-01-11 | 2021-05-14 | 成都圭目机器人有限公司 | 一种用于道面块状病害检测的网络模型和检测方法 |
CN113743587A (zh) * | 2021-09-09 | 2021-12-03 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络池化计算方法、系统、及存储介质 |
CN113870246A (zh) * | 2021-10-13 | 2021-12-31 | 广东新时空科技股份有限公司 | 一种基于深度学习的障碍物探测和识别方法 |
CN114265696A (zh) * | 2021-12-28 | 2022-04-01 | 北京航天自动控制研究所 | 针对卷积神经网络最大池化层的池化器及池化加速电路 |
CN114662567A (zh) * | 2022-03-03 | 2022-06-24 | 燕山大学 | 基于不同模型特征融合的卷积神经网络图像分类方法 |
CN114781629A (zh) * | 2022-04-06 | 2022-07-22 | 合肥工业大学 | 基于并行复用的卷积神经网络的硬件加速器及并行复用方法 |
Non-Patent Citations (4)
Title |
---|
LU CHI等: "Non-Local Neural Networks With Grouped Bilinear Attentional Transforms", 《2020 IEEE/CVF CONFERENCE ON COMPUTER VISION AND PATTERN RECOGNITION (CVPR)》 * |
MIN WANG等: "Identifying Irregular Objects in Scenes: Semantic Segmentation Network Based on Multi-path Irregular Convolution", 《2021 IEEE INTERNATIONAL CONFERENCE ON SYSTEMS, MAN, AND CYBERNETICS (SMC)》 * |
应三丛等: "基于多视图并行的可配置卷积神经网络加速器设计", 《工程科学与技术》 * |
肖望勇: "基于 FPGA 的神经网络设计与实现研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116048479A (zh) * | 2023-04-03 | 2023-05-02 | 南京大学 | 一种针对存算一体芯片的快速编程方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115049885B (zh) | 2022-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11270197B2 (en) | Efficient neural network accelerator dataflows | |
CN110097174B (zh) | 基于fpga和行输出优先的卷积神经网络实现方法、系统及装置 | |
CN110245683B (zh) | 一种少样本目标识别的残差关系网络构建方法及应用 | |
CN115049885B (zh) | 一种存算一体卷积神经网络图像分类装置及方法 | |
CN106846255B (zh) | 图像旋转实现方法及装置 | |
US20230289601A1 (en) | Integrated circuit that extracts data, neural network processor including the integrated circuit, and neural network | |
CN112906865B (zh) | 神经网络架构搜索方法、装置、电子设备及存储介质 | |
CN108712621A (zh) | 一种基于忆阻和cmos的运动目标检测电路 | |
CN109359729A (zh) | 一种在fpga上实现缓存数据的系统及方法 | |
CN111753962A (zh) | 一种加法器、乘法器、卷积层结构、处理器及加速器 | |
Sun et al. | Energy-efficient SQL query exploiting RRAM-based process-in-memory structure | |
CN108764182B (zh) | 一种优化的用于人工智能的加速方法和装置 | |
Cadenas et al. | Parallel pipelined array architectures for real-time histogram computation in consumer devices | |
US20110157194A1 (en) | System, data structure, and method for processing multi-dimensional video data | |
CN112149518A (zh) | 基于began和yolov3模型的松果检测方法 | |
CN108024074A (zh) | 一种基于sopc的小型化红外成像方法 | |
CN100571325C (zh) | 一种数据缓存方法、垂直缩放电路及终端 | |
CN108920097B (zh) | 一种基于交织存储的三维数据处理方法 | |
CN115204380B (zh) | 存算一体卷积神经网络的数据存储及阵列映射方法与装置 | |
CN110060196A (zh) | 图像处理方法及装置 | |
CN113392963B (zh) | 基于fpga的cnn硬件加速系统设计方法 | |
Zheng et al. | An rram-based neural radiance field processor | |
CN111814675A (zh) | 基于fpga支持动态分辨率的卷积神经网络特征图组装系统 | |
CN110490312B (zh) | 一种池化计算方法和电路 | |
Zhang et al. | A novel CNN architecture on FPGA-based SoC for remote sensing 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 |