CN115470895A - 图像卷积电路、方法、图像识别方法、装置及设备 - Google Patents
图像卷积电路、方法、图像识别方法、装置及设备 Download PDFInfo
- Publication number
- CN115470895A CN115470895A CN202210530611.1A CN202210530611A CN115470895A CN 115470895 A CN115470895 A CN 115470895A CN 202210530611 A CN202210530611 A CN 202210530611A CN 115470895 A CN115470895 A CN 115470895A
- Authority
- CN
- China
- Prior art keywords
- convolution
- image
- pixel
- register
- center
- 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.)
- Pending
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/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
-
- 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)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Multimedia (AREA)
- Image Processing (AREA)
Abstract
本发明提供了图像卷积电路、方法、图像识别方法、装置及设备,图像卷积电路包括M个缓存单元、以及卷积运算电路,卷积运算电路包括一个卷积中心运算单元和M2‑1个非卷积中心运算单元,卷积中心运算单元和M2‑1个非卷积中心运算单元构成M*M的运算单元矩阵;卷积中心运算单元包括卷积中心乘法器、卷积中心权重寄存器、中心像素寄存器,卷积中心乘法器的第一输入端用于连接卷积中心权重寄存器以输入卷积核中心的权重,第二输入端用于连接中心像素寄存器以输入目标图像对应卷积核中心像素点的像素值;非卷积中心运算单元包括非卷积中心乘法器、非卷积中心权重寄存器、非中心像素寄存器、加法器、选通器。
Description
技术领域
本发明涉及图像处理领域,具体涉及图像卷积电路、方法、图像识别方法、装置及设备。
背景技术
深度学习为机器解决复杂问题提供了一种高效的方法。近年来,计算机视觉已融入到人们生活的方方面面,从交通领域的自动驾驶,到医疗行业的医学图像处理,再到随处可见的人脸识别应用,计算机视觉在各行各业都扮演了至关重要的角色,不仅为大众的生活增添了强有力的保障,还顺应了大众对便捷生活的追求。图片特征的提取和分类作为深度学习神经网络的一个基础研究方向,广受业界学者的追捧,为机器视觉技术的更迭起到了重要的推动作用。
尽管机器学习中包含的卷积神经网络有着强大的性能,但是随着网络深度的不断扩展,出现了网络层次复杂、数据量庞大、数据存储密集等问题,对运行设备提出了较为严苛的要求,制约了卷积神经网络在嵌入式系统中的应用,因此,需要搭建对硬件友好的卷积神经网络,以便其能够在算力较低的低成本设备中进行硬件实现。
卷积神经网络中的卷积层包含大量卷积运算单元,卷积运算单元是对卷积窗内的图像像素值和训练权重进行一系列乘法运算和加法运算的功能模块,目前通常采用移位寄存器实现卷积层中的卷积运算(又称卷积窗口运算)。图1是利用移位寄存器实现卷积运算的示意图,移位寄存器充当行缓存(Line Buffer 0-Line Buffer 2),随着时钟节拍将串行图像数据data_in依次载入,并在时钟边沿来临时依次右移,每行末尾的数据输出为data_out向量,经过多次移动,输出的data_out向量(data_out0-data_out2)就构成了一个窗口,这个窗口即为卷积运算窗口,data_out向量被送入卷积运算单元(d0-d1)。具体而言,所有行缓存被填满之后,再经过两个时钟周期,输出的data_out向量就可以形成第一个3×3的窗口,之后每到来一个时钟边沿,卷积窗口就向右平移一个单位。若输入特征图的尺寸为N×N,卷积窗口的尺寸为K×K,那么共需要K组具有N个存储单元的行缓存,因此,需要消耗的存储资源过多。另外,利用该种方法实现的卷积窗口,滑动至行尾时,会出现无效的窗口数据。图2中展示了图像卷积过程一种无效数据的情况,灰色方块为卷积窗口当前所在的位置,由于该卷积窗口已经空间上已经不是一个完整的窗口,因此此时根据灰色方块进行卷积的结果是无效的,也即灰色方块为无效像素点。
发明内容
基于上述现状,本发明的主要目的在于提供图像卷积电路、方法、图像识别方法、装置及设备,从而以较简单的电路结构,提高卷积效率。
为实现上述目的,本发明采用的技术方案如下:
一种图像卷积电路,包括M个缓存单元、以及卷积运算电路,所述卷积运算电路包括一个卷积中心运算单元和M2-1个非卷积中心运算单元,M个缓存单元与所述卷积中心运算单元和M2-1个非卷积中心运算单元的连接方式使得这些运算单元构成M*M的运算单元矩阵;与所述卷积中心运算单元连接的非卷积中心运算单元为第1个非卷积中心运算单元;所述卷积中心运算单元包括卷积中心乘法器、卷积中心权重寄存器和中心像素寄存器,所述卷积中心乘法器的第一输入端连接所述卷积中心权重寄存器以输入卷积核中心的权重,第二输入端连接所述中心像素寄存器以输入目标图像对应卷积核中心像素点的像素值;所述非卷积中心运算单元包括非卷积中心乘法器、非卷积中心权重寄存器、非中心像素寄存器、加法器和选通器,所述非卷积中心乘法器的第一输入端连接某一非卷积中心权重寄存器以输入对应非卷积核中心的权重,第二输入端连接对应非中心像素寄存器以输入所述目标图像对应非卷积核中心像素点的像素值,所述非卷积中心乘法器的输出端与所述加法器的第一输入端连接,所述加法器的输出端连接所述选通器的第一输入端,所述选通器的选通控制端输入选通控制信号,以控制与所述目标图像中像素点重合的非卷积核中心对应的选通器的第一输入端选通,控制其余选通器的第二输入端选通;每个缓存单元用于缓存来自目标图像某一行像素点的像素值,并向所述运算单元矩阵对应行的各个中心像素寄存器或非中心像素寄存器提供所缓存的像素值;第1个非卷积中心运算单元中,加法器的第二输入端连接所述卷积中心乘法器的输出端,选通器的第二输入端连接所述卷积中心乘法器的输出端;第1个至第M2-2个非卷积中心运算单元中,选通器的输出端连接后一个非卷积中心运算单元中加法器的第二输入端以及选通器的第二输入端;第M2-1个非卷积中心运算单元中选通器的输出端用于输出图像卷积结果;其中,M为大于或等于3的奇数。
优选的,所述中心像素寄存器、第1个非中心像素寄存器至第M-1个非中心像素寄存器依次构成包括M个寄存器的移位寄存器组,其中,第1个寄存器至第1+(M-1)/2个寄存器依次存储所述目标图像中所述中心像素点至所述中心像素点右侧第(M-1)/2个像素点的像素值,第2+(M-1)/2个寄存器至第M个寄存器存储所述目标图像中所述中心像素点左侧(M-1)/2个像素点的像素值;对应的缓存单元从第1+(M-1)/2个寄存器输入中心像素点所在行像素点的像素值,每输入一个像素值时:第2+(M-1)/2个寄存器至第M-1个寄存器内存储的像素值分别向右移动至后一个寄存器,第1个寄存器的像素值移动至第2+(M-1)/2个寄存器,第2个寄存器至第1+(M-1)/2个寄存器内存储的像素值分别向左移动至前一个寄存器,或者:第3+(M-1)/2个寄存器至第M个寄存器内存储的像素值分别向左移动至前一个寄存器,第1个寄存器的像素值移动至第M个寄存器,第2个寄存器至第1+(M-1)/2个寄存器内存储的像素值分别向左移动至前一个寄存器。
优选的,所述的图像卷积电路还包括M个选通开关,每个选通开关的输入端连接目标图像存储器的输出端,每个选通开关的输出端连接对应的缓存单元的输入端,每个缓存单元的输出端连接所述运算单元矩阵对应行的一个非中心像素寄存器;
每个选通开关还包括选通端,根据所述目标图像存储器输出的当前像素点所在行的数值,选择控制对应行的选通开关选通,并控制其余行对应的选通开关关断。
优选的,当中心像素点位于所述目标图像的上边缘行时,控制(M-1)/2个对应的选通开关保持关断,以及至少控制运算单元矩阵中(M-1)/2个对应行的选通器的第二输入端被选通。
优选的,所述的图像卷积电路还包括目标图像存储器,以所述目标图像左上角的像素点为起点,按照从左到右、从上到下的顺序对所述目标图像中的像素点分别编号为依次增大的像素序号;以所述目标图像左上角像素点在目标图像存储器中的地址作为起始地址,根据像素序号确定所述目标图像中对应像素点的偏移地址,将所述目标图像中像素点的像素值依次存储在所述目标图像存储器中;
根据输入到所述中心像素寄存器的像素点的偏移地址确定该像素点在所述目标图像中的位置,根据该位置确定所述选通控制信号。
优选的,所述图像卷积电路还包括激活函数电路,所述激活函数电路包括比较器、激活选通器,所述比较器的第一输入端输入卷积运算电路输出的图像卷积结果,第二输入端输入低电平,输出端连接激活选通器的选通控制端;激活选通器的第一输入端输入运算电路输出的图像卷积结果,第二输入端输入低电平,输出端的输出信号作为所述图像卷积电路的最终图像卷积结果。
本发明还提供了一种图像卷积方法,其采用如权利要求1所述的图像卷积电路,包括如下步骤:每个缓存单元缓存来自目标图像某一行像素点的像素值,并向所述运算单元矩阵对应行的各个中心像素寄存器或非中心像素寄存器提供所缓存的像素值;所述卷积中心乘法器将所述卷积核中心的权重与所述卷积核中心像素点的像素值进行相乘,将相乘的结果输出至第1个非卷积中心运算单元中加法器的第二输入端、以及选通器的第二输入端;每个非卷积中心运算单元中选通器的选通控制端的选通控制信号控制与所述目标图像中像素点重合的非卷积核中心对应的选通器的第一输入端选通,控制其余选通器的第二输入端选通;第1个至第M2-2个非卷积中心运算单元中,选通器根据选通控制信号的控制输出选通结果至后一个非卷积中心运算单元中加法器的第二输入端以及选通器的第二输入端;第M2-1个非卷积中心运算单元中选通器输出图像卷积结果。
优选的,所述的卷积方法采用所述的图像卷积电路,对应的缓存单元从第1+(M-1)/2个寄存器输入中心像素点所在行像素点的像素值,每输入一个像素值时:第2+(M-1)/2个寄存器至第M-1个寄存器内存储的像素值分别向右移动至后一个寄存器,第1个寄存器的像素值移动至第2+(M-1)/2个寄存器,第2个寄存器至第1+(M-1)/2个寄存器内存储的像素值分别向左移动至前一个寄存器,或者:第3+(M-1)/2个寄存器至第M个寄存器内存储的像素值分别向左移动至前一个寄存器,第1个寄存器的像素值移动至第M个寄存器,第2个寄存器至第1+(M-1)/2个寄存器内存储的像素值分别向左移动至前一个寄存器。
优选的,所述的卷积方法采用所述的图像卷积电路,每个选通开关的选通端根据所述目标图像存储器输出的当前像素点所在行的数值,选择控制对应行的选通开关选通,并控制其余行对应的选通开关关断。
优选的,当中心像素点位于所述目标图像的上边缘行时,控制(M-1)/2个对应的选通开关保持关断,以及控制运算单元矩阵中(M-1)/2个对应行的非中心像素寄存器的第二输入端被选通。
优选的,所述的卷积方法采用所述的图像卷积电路,根据输入到所述中心像素寄存器的像素点的偏移地址确定该像素点在所述目标图像中的位置,根据该位置确定所述选通控制信号。
优选的,所述的卷积方法采用所述的图像卷积电路,当所述图像卷积结果大于0,所述激活选通器的第一输入端被选通,所述最终图像卷积结果与图像卷积结果相同;当所述图像卷积结果小于0,所述激活选通器的第二输入端被选通,所述最终图像卷积结果为0。
本发明还提供了一种图像识别方法,包括如下步骤:S100,将目标图像依次经过多个第一图像卷积电路、多个第二图像卷积电路的卷积处理,得到第一卷积图像;S200,对所述第一卷积图像进行池化处理,得到第一池化图像;S300,对所述第一池化图像依次经过多个第三图像卷积电路、多个第四图像卷积电路的卷积处理,得到第二卷积图像;S400,对所述第二卷积图像进行池化处理,得到第二池化图像;S500,对所述第二池化图像依次经过多个第五图像卷积电路、多个第六图像卷积电路的卷积处理,得到第三卷积图像;S600,对所述第三卷积图像进行最大池化处理,得到第三池化图像;S700,对所述第三池化图像进行全连接处理以获得图像识别的类别结果;其中,所述第一图像卷积电路、第二图像卷积电路、第三图像卷积电路、第四图像卷积电路、第五图像卷积电路和第六图像卷积电路均采用任一所述的图像卷积电路。
优选的,步骤S200和S400中的池化处理为最大池化处理。
优选的,所述图像识别方法应用于手写字母识别。
本发明还提供了一种图像识别装置,包括:第一卷积单元,用于将目标图像依次经过多个第一图像卷积电路、多个第二图像卷积电路的卷积处理,得到第一卷积图像;第一池化单元,用于对所述第一卷积图像进行池化处理,得到第一池化图像;第二卷积单元,用于对所述第一池化图像依次经过多个第三图像卷积电路、多个第四图像卷积电路的卷积处理,得到第二卷积图像;第二池化单元,用于对所述第二卷积图像进行池化处理,得到第二池化图像;第三卷积单元,用于对所述第二池化图像依次经过多个第五图像卷积电路、多个第六图像卷积电路的卷积处理,得到第三卷积图像;第三池化单元,用于对所述第三卷积图像进行最大池化处理,得到第三池化图像;全连接单元,用于对所述第三池化图像进行全连接处理以获得图像识别的类别结果;其中,所述第一图像卷积电路、第二图像卷积电路、第三图像卷积电路、第四图像卷积电路、第五图像卷积电路和第六图像卷积电路均采用如权利要求1-6任一所述的图像卷积电路。
本发明还提供了一种图像识别芯片,包括任一所述的图像卷积电路。
本发明还提供了一种嵌入式图像识别设备,包括所述的图像识别芯片。
优选的,图像卷积电路可以包含多个不同的卷积核(即卷积运算电路)组;每个卷积核组包括多个相同的卷积核,每个卷积核即可以看成是一个通道上的卷积核。可以为每个卷积核组设置组选通信号,为每个卷积核组内的每个卷积核设置通道选通信号,当需要使用某个卷积核组内的某个卷积核时,则通过控制该组选通信号选通该卷积核组、且通过控制该通道选通信号选通该卷积核。
【有益效果】
通过上述电路结构,将卷积核对应的卷积中心权重寄存器、中心像素寄存器放在M*M的运算单元矩阵的第一个运算单元,既能保证卷积中心的卷积中心权重与对应中心像素的像素值进行相乘的结果,与其他非卷积中心运算单元产生的乘积相加,又可以实现对非卷积中心运算单元的选通,卷积运算效率较高,不需要在卷积中心运算单元设置对应的加法器和选通器,因而电路结构相对简单。另外,通过输入根据所述中心像素寄存器对应的中心像素点在所述目标图像的位置确定的选通控制信号,以控制选通所述选通器的第一输入端或第二输入端,从而可以选通卷积核对应的非卷积中心运算单元的加法器的输出结果,而不选通卷积核其余位置非卷积中心运算单元的加法器的输出结果,从而有效避免无效位置的结果影响卷积结果。
本发明的其他有益效果,将在具体实施方式中通过具体技术特征和技术方案的介绍来阐述,本领域技术人员通过这些技术特征和技术方案的介绍,应能理解所述技术特征和技术方案带来的有益技术效果。
附图说明
以下将参照附图对本发明的优选实施方式进行描述。图中:
图1为现有技术的图像卷积电路示意图;
图2为图像卷积过程的示意图;
图3为本发明一种优选实施方式的图像卷积电路的示意图;
图4为本发明一种优选实施方式的图像卷积过程的示意图;
图5为本发明一种优选实施方式的卷积核的示意图;
图6为本发明一种优选实施方式的卷积运算电路的权重的存储示意图;
图7为本发明一种优选实施方式的图像卷积电路中的激活函数电路示意图;
图8为本发明一种优选实施方式的卷积神经网络的结构示意图;
图9为本发明一种优选实施方式的卷积神经网络训练的数据集部分图片;
图10为本发明一种优选实施方式的图像识别方法的流程图;
图11为本发明一种优选实施方式的图像识别系统的示意图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分,为了避免混淆本发明的实质,公知的方法、过程、流程、元件并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
图3是本发明一种实施例的图像卷积电路的示意图,该图像卷积电路用于对输入的目标图像进行卷积运算,并输出图像卷积结果,其中,目标图像是图像卷积电路卷积处理的对象,目标图像可以是源图像,也可以是特征图像,该图像卷积电路可以位于卷积神经网络电路的不同卷积层。多个该图像卷积电路可以组成一个深度为n的卷积电路。该图像卷积电路包括M个缓存单元(其采用寄存器)、以及卷积运算电路,卷积运算电路包括一个卷积中心运算单元100和M2-1个非卷积中心运算单元200,M个缓存单元与卷积中心运算单元100和M2-1个非卷积中心运算单元的连接方式使得这些运算单元构成M*M的运算单元矩阵,与所述卷积中心运算单元连接的非卷积中心运算单元为第1个非卷积中心运算单元,每个缓存单元对应一行运算单元。
卷积中心运算单元包括卷积中心乘法器、卷积中心权重寄存器、中心像素寄存器,卷积中心乘法器的第一输入端用于连接卷积中心权重寄存器以输入卷积核中心的权重,第二输入端用于连接中心像素寄存器以输入目标图像对应卷积核中心像素点的像素值。
非卷积中心运算单元包括非卷积中心乘法器、非卷积中心权重寄存器、非中心像素寄存器、加法器、选通器,非卷积中心乘法器的第一输入端用于连接某一非卷积中心权重寄存器以输入对应非卷积核中心的权重,第二输入端用于连接对应非中心像素寄存器以输入目标图像对应非卷积核中心像素点的像素值,非卷积中心乘法器的输出端与加法器的第一输入端连接,加法器的输出端连接选通器的第一输入端,选通器的选通控制端输入选通控制信号,以控制与所述目标图像中像素点重合的非卷积核中心对应的选通器的第一输入端选通,控制其余选通器的第二输入端选通。
每个缓存单元用于缓存来自目标图像某一行像素点的像素值,并向所述运算单元矩阵对应行的各个中心像素寄存器或非中心像素寄存器提供所缓存的像素值。缓存单元只需要缓存目标图像一个像素点的像素值,相比现有技术需要具有与目标图像像素宽度的存储空间相比,本实施例的缓存单元所需要的存储空间很小,极大节省了存储资源。
第1个非卷积中心运算单元中,加法器的第二输入端连接卷积中心乘法器的输出端,选通器的第二输入端连接卷积中心乘法器的输出端;第1个至第M2-2个非卷积中心运算单元中,选通器的输出端连接后一个非卷积中心运算单元中加法器的第二输入端以及选通器的第二输入端;第M2-1个非卷积中心运算单元中选通器的输出端用于输出图像卷积结果;其中,M为大于或等于3的奇数。
在一些实施例中,选通控制信号为高电平时,控制选通选通器的第一输入端,选通控制信号为低电平时,控制选通选通器的第二输入端。对于第1个非卷积中心运算单元,例如,当第1个非卷积中心运算单元的选通控制信号为高电平时,控制选通该选通器的第一输入端,这样第1个非卷积中心运算单元的加法器的输出端输出的结果被选通输出;当第1个非卷积中心运算单元的选通控制信号为低电平时,控制选通该选通器的第二输入端,这样卷积中心运算单元的乘法器的输出端输出的结果被选通输出。对于第2个非卷积中心运算单元至第M2-1个非卷积中心运算单元,例如,当某个非卷积中心运算单元的选通控制信号为高电平时,控制选通该选通器的第一输入端,这样该非卷积中心运算单元的加法器的输出端输出的结果被选通输出;当该某个非卷积中心运算单元的选通控制信号为低电平时,控制选通该选通器的第二输入端,这样前一个非卷积中心运算单元的选通器输出端输出的结果被选通输出。
通过上述电路结构,将卷积核(或者称为卷积窗)对应的卷积中心权重寄存器、中心像素寄存器放在M*M的运算单元矩阵的第一个运算单元,既能保证卷积中心的卷积中心权重与对应中心像素的像素值进行相乘的结果,与其他非卷积中心运算单元产生的乘积相加,又可以实现对非卷积中心运算单元的选通,卷积运算效率较高。
在一些实施例中,为减少数据调用时间,将一个图像卷积电路中的9个卷积权重(包括卷积核中心的权重和非卷积核中心的权重)为一组构成数据块,存储于非易失性存储器中(例如FLASH),当进行卷积运算时,只要一个时钟周期即可将该组卷积权重读出并输入至对应的卷积权重寄存器中。在一些实施例中,每个卷积权重的位宽为13bits,因此一组卷积权重的总位宽为117位bits,如图6所示。
为了保证输入到M*M的运算单元矩阵中第一个运算单元的像素点是卷积核对应的中心像素点,在第一行运算单元(即,卷积中心运算单元、第1个非卷积中心运算单元至第M-1个非卷积中心运算单元),中心像素寄存器、第1个非中心像素寄存器至第M-1个非中心像素寄存器构成包括M个寄存器的移位寄存器组,
其中,第1个寄存器至第1+(M-1)/2个寄存器依次存储目标图像中中心像素点至中心像素点右侧第(M-1)/2个像素点的像素值,第2+(M-1)/2个寄存器至第M个寄存器存储目标图像中中心像素点左侧(M-1)/2个像素点的像素值;对应的缓存单元从第1+(M-1)/2个寄存器输入中心像素点所在行像素点的像素值,每输入一个像素值:
第2+(M-1)/2个寄存器至第M-1个寄存器内存储的像素值分别向右移动至后一个寄存器(对于第M个寄存器而言,其被输入第M-1个寄存器内存储的像素值后,相当于第M个寄存器原来存储的像素值被移出移位寄存器组),第1个寄存器的像素值移动至第2+(M-1)/2个寄存器,第2个寄存器至第1+(M-1)/2个寄存器内存储的像素值分别向左移动至前一个寄存器,或者:
第3+(M-1)/2个寄存器至第M个寄存器内存储的像素值分别向左移动至前一个寄存器(对于第2+(M-1)/2个寄存器而言,其被输入第3+(M-1)/2个寄存器内存储的像素值后,相当于第2+(M-1)/2个寄存器内存储的像素值被移出移位寄存器组),第1个寄存器的像素值移动至第M个寄存器,第2个寄存器至第1+(M-1)/2个寄存器内存储的像素值分别向左移动至前一个寄存器。
以M=3、当前卷积中心位于像素点P1(即中心像素点为P1)为例进行说明。中心像素寄存器、第1个、第2个非中心像素寄存器构成包括3个寄存器的移位寄存器组,其中,第1个寄存器p5、第2个寄存器p6(也即第1个非中心像素寄存器)、第3个寄存器p4(也即第2个非中心像素寄存器)依次存储目标图像中中心像素点P1的像素值、中心像素点右侧第1个像素点P2的像素值、中心像素点左侧第1个像素点的像素值(由于当前的中心像素点为P1,中心像素点P1左侧的像素点为空);第3个非中心像素寄存器p1、第4个非中心像素寄存器p2、第5个非中心像素寄存器p3依次存储中心像素点上面一行的对应3个像素点的像素值(由于当前的中心像素点为P1,中心像素点上面一行的对应3个像素点分别为空);第6个非中心像素寄存器p7、第7个非中心像素寄存器p8、第8个非中心像素寄存器p9依次存储中心像素点下面一行的对应3个像素点的像素值(由于当前的中心像素点为P1,中心像素点下面一行最左侧的像素点为空,其余两个像素点依次为P5和P6)。在卷积运算时,选通控制信号EN0、EN2和EN3控制选通对应的选通器的第一端的信号(即选通该选通器所在运算单元的加法器输出的信号),使得对应的非中心像素寄存器中的值与非卷积中心权重寄存器中的权值相乘的结果被相加,而选通控制信号EN1、EN4、EN5、EN6和EN7控制选通对应的选通器的第二端的信号(即选通前一个选通器输出的信号),使得对应的非中心像素寄存器中的值与非卷积中心权重寄存器中的权值相乘的结果不被相加,从而实现当前卷积中心位于像素点P1时的卷积运算。
与第一行运算单元对应的缓存单元Buffer1从第2个寄存器p6输入中心像素点所在行(即点P1、P2、P3、P4所在行)像素点的像素值,每输入一个像素值的过程如下:第1个寄存器p5内存储的像素值移动至第3个寄存器p4,从而覆盖第3个寄存器p4原先存储的像素值;第2个寄存器p6内存储的像素值向左移动至前一个寄存器(即第1个寄存器p5),缓存单元Buffer1将新的像素点的像素值输入至第2个寄存器p6。
关于第二行运算单元对应的缓存单元Buffer0,其可以从第3个非中心像素寄存器p1输入中心像素点上面一行的像素点,每输入一个像素值的过程如下:第4个非中心像素寄存器p2、第3个非中心像素寄存器p1内存储的像素值依次向右移动至后一个非中心像素寄存器,因而,第5个非中心像素寄存器p3原先存储的像素值被覆盖,缓存单元Buffer0将新的像素点的像素值输入至第3个非中心像素寄存器p1。当然,缓存单元Buffer0也可以从第5个非中心像素寄存器p3输入中心像素点上面一行的像素点,而第5个非中心像素寄存器p3、第4个非中心像素寄存器p2内存储的像素值依次向左移动至前一个非中心像素寄存器。
关于第三行运算单元对应的缓存单元Buffer2,其可以从第6个非中心像素寄存器p7输入中心像素点下面一行的像素点,每输入一个像素值的过程如下:第7个非中心像素寄存器p8、第6个非中心像素寄存器p7内存储的像素值依次向右移动至后一个非中心像素寄存器,因而,第8个非中心像素寄存器p9原先存储的像素值被覆盖,缓存单元Buffer2将新的像素点的像素值输入至第6个非中心像素寄存器p7。当然,缓存单元Buffer2也可以从第8个非中心像素寄存器p9输入中心像素点下面一行的像素点,而第7个非中心像素寄存器p8、第6个非中心像素寄存器p7内存储的像素值依次向左移动至前一个非中心像素寄存器。
在一些实施例中,图像卷积电路还包括M个选通开关,每个选通开关的输入端连接目标图像存储器的输出端,每个选通开关的输出端连接对应的缓存单元的输入端,每个缓存单元的输出端连接运算单元矩阵对应行的一个非中心像素寄存器;每个选通开关还包括选通端,根据目标图像存储器输出的当前像素点所在行的数值,选择控制对应行的选通开关选通,并控制其余行对应的选通开关关断。在一些实施例中,每经过一个时钟信号,目标图像存储器输出端输出下一个像素点的像素值。在一些实施例中,每个缓存单元的位宽为13bits。
仍以M=3为例进行说明。缓存单元Buffer1、缓存单元Buffer0和缓存单元Buffer2分别具有对应的选通开关,这些选通开关的选通端分别为sel1、sel0和sel2。将像素点P1、像素点P2、像素点P5和像素点P6的像素值分别输入至对应的寄存器p5、寄存器p6、寄存器p1和寄存器p2的过程如下:(1)选通端sel1选通,选通端sel0和sel2关断,像素点P1的像素值从目标图像存储器的输出端输出至缓存单元Buffer1,缓存单元Buffer1将像素点P1的像素值输入至寄存器p6。(2)选通端sel2选通,选通端sel1和sel0关断,像素点P5的像素值从目标图像存储器的输出端输出至缓存单元Buffer2,缓存单元Buffer2将像素点P5的像素值输入至寄存器p7。(3)选通端sel1选通,选通端sel0和sel2关断,像素点P2的像素值从目标图像存储器的输出端输出至缓存单元Buffer1,寄存器p6内存储的像素点P1的像素值向左移动至前一个寄存器p5,缓存单元Buffer1将像素点P2的像素值输入至寄存器p6。(4)选通端sel2选通,选通端sel1和sel0关断,像素点P5的像素值从目标图像存储器的输出端输出至缓存单元Buffer2,寄存器p7内存储的像素点P5的像素值向右移动至后一个寄存器p8,缓存单元Buffer2将像素点P6的像素值输入至寄存器p7。至此,可以进行当前卷积中心位于像素点P1时的卷积运算,具体过程可参见前面实施例的描述。
当前卷积中心位于像素点P5时的卷积运算完成后,缓存单元和寄存器输入像素点的像素值具体过程如下。(1)选通端sel1选通,选通端sel0和sel2关断,像素点P3的像素值从目标图像存储器的输出端输出至缓存单元Buffer1,寄存器p5内存储的像素点P5的像素值移动至寄存器p4,寄存器p6内存储的像素点P6的像素值向左移动至前一个寄存器p5,缓存单元Buffer1将像素点P7的像素值输入至寄存器p6。(2)选通端sel0选通,选通端sel1和sel0关断,寄存器p2内存储的像素点P1的像素值向右移动至后一个寄存器p3,寄存器p1内存储的像素点P2的像素值向右移动至后一个寄存器p2,像素点P3的像素值从目标图像存储器的输出端输出至缓存单元Buffer0,缓存单元Buffer0将像素点P3的像素值输入至寄存器p1。(3)选通端sel2选通,选通端sel1和sel0关断,寄存器p8内存储的像素点P9的像素值向右移动至后一个寄存器p9,寄存器p7内存储的像素点P10的像素值向右移动至后一个寄存器p8,像素点P11的像素值从目标图像存储器的输出端输出至缓存单元Buffer2,缓存单元Buffer2将像素点P11的像素值输入至寄存器p7。至此,可以进行当前卷积中心位于像素点P6时的卷积运算,具体过程可参见前面实施例的描述。
在一些实施例中,当中心像素点位于目标图像的上边缘行时,控制(M-1)/2个对应的选通开关保持关断,以及控制运算单元矩阵中(M-1)/2个对应行的非中心像素寄存器的第二输入端被选通。仍以M=3为例进行说明。当中心像素点为P1时,由于中心像素点P1上面一行的像素点为空,即对应的寄存器p1、寄存器p2、寄存器p3不需要存储对应的像素点,因此控制(3-1)/2=1个对应的选通开关(sel0对应的选通开关)保持关断,以及至少控制运算单元矩阵中(3-1)/2=1个对应行的选通器(EN2、EN3和EN4对应的选通器)的第二输入端被选通。
前面已经说明,当卷积窗的中心(即卷积核心)位于目标图像中不同的像素点时(即该像素点的像素值被输入至中心像素寄存器p5中),卷积窗中参与卷积运算的位置(其对应了相应的权重)有所不同,图5是3*3大小的卷积核(窗)的示意图,卷积窗表1是卷积窗中心所在的像素位置与卷积窗中参与运算的位置的对应关系,结合表1和图3及其说明,容易理解卷积窗中参与卷积运算的位置及其卷积过程。
表1卷积窗中心所在的像素位置与卷积窗中参与运算的位置的对应关系
卷积窗中心所在像素点的位置 | 卷积窗中参与运算的位置 |
目标图像左上顶点 | m5、m6、m8、m9 |
目标图像右上顶点 | m4、m5、m7、m8 |
目标图像左下顶点 | m2、m3、m5、m6 |
目标图像右下顶点 | m1、m2、m4、m5 |
目标图像左边缘(不含顶点) | m2、m3、m5、m6、m8、m9 |
目标图像右边缘(不含顶点) | m1、m2、m4、m5、m7、m8 |
目标图像上边缘(不含顶点) | m4、m5、m6、m7、m8、m9 |
目标图像下边缘(不含顶点) | m1、m2、m3、m4、m5、m6 |
其余位置 | m1、m2、m3、m4、m5、m6、m7、m8、m9 |
在一些实施例中,图像卷积电路还包括目标图像存储器,以目标图像左上角的像素点为起点,按照从左到右、从上到下的顺序对目标图像中的像素点分别编号为依次增大的像素序号;以目标图像左上角像素点在目标图像存储器中的地址作为起始地址,根据像素序号确定目标图像中对应像素点的偏移地址,将目标图像中像素点的像素值依次存储在目标图像存储器中;根据输入到中心像素寄存器的像素点的偏移地址确定该像素点在目标图像中的位置,根据该位置确定选通控制信号。如图4所示,目标图像左上角的像素点P1为起点,按照从左到右、从上到下的顺序对目标图像中的像素点分别编号为依次增大的像素序号,依次为:P1、P2…P16。假设像素点P1在目标图像存储器的地址为addr,则像素点P1、P2、P3…P16在目标图像存储器的地址相对于像素点P1的地址addr的偏移地址分别为:(1-1=0)、(2-1=0)、(3-1=2)…(16-1=15),即,像素点P1、P2、P3…P16在目标图像存储器的地址分别为:addr、addr+1、addr+2…addr+15;又如,像素点P1下方的像素点的地址为addr+width,其中,width是目标图像的宽度。根据输入到中心像素寄存器的像素点的偏移地址即可以确定该像素点在目标图像中的位置,进而可以根据该位置确定选通控制信号,一旦确定了输入到中心像素寄存器的像素点,即确定了卷积窗中心所在的像素点的位置,如表1所示,即可以确定卷积窗中哪些位置的权重需要参与卷积计算,也就确定了选通器的选通控制信号,以选通该选通器的第一输入端还是第二输入端。
如图7所示,在一些实施例中,图像卷积电路还包括激活函数电路对卷积运算电路输出的卷积结果进行激活修正。该激活函数电路包括比较器10、激活选通器20,比较器10的第一输入端输入卷积运算电路输出的图像卷积结果Out,第二输入端输入低电平,输出端连接激活选通器20的选通控制端;激活选通器的第一输入端输入运算电路输出的图像卷积结果Out,第二输入端输入低电平,输出端的输出信号作为图像卷积电路的最终图像卷积结果Out_f。该激活函数电路实现了ReLU函数的功能(ReLU函数本质是一个与0相比取最大值的函数)。当图像卷积结果Out大于0,激活选通器20的第一输入端被选通,即图像卷积结果Out被选通输出,此时最终图像卷积结果Out_f与图像卷积结果Out相同。当图像卷积结果Out小于0,激活选通器20的第二输入端被选通,即低电平被选通输出,此时最终图像卷积结果Out_f为0。
将上述图像卷积电路应用于卷积神经网络的卷积层时,可以利用阶段控制信号stage控制卷积神经网络执行任务所处的阶段。在卷积层开始工作之前,存储控制器生成地址信号,将输入图像存放至存储模块中,存储完毕后,阶段控制信号stage加1,进入下一个阶段,卷积层的使能信号conv_en变为有效(例如拉高),卷积层开始工作。此时,卷积运算使能信号GO为无效(例如为低电平),将卷积窗使用到的目标图像像素点的像素值和对应的权重载入到对应的寄存器后后,卷积运算使能信号GO变为有效(例如拉高),卷积运算电路开始执行卷积运算,卷积运算完成之后卷积运算使能信号GO变为无效(例如拉低),并将图像卷积结果存进存储模块中。重复上述过程,直至遍历输入目标图像的所有像素点。在一些实施例中,图像卷积电路可以包含多个不同的卷积核(即卷积运算电路)组;每个卷积核组包括多个相同的卷积核,每个卷积核即可以看成是一个通道上的卷积核。可以为每个卷积核组设置组选通信号kel,为每个卷积核组内的每个卷积核设置通道选通信号chl,当需要使用某个卷积核组内的某个卷积核时,则通过控制该组选通信号kel选通该卷积核组、且通过控制该通道选通信号chl选通该卷积核。
如图11所示,是一种实施例的图像识别系统的示意图,该图像识别系统包括:图像传感器(例如OV7670图像传感器)、卷积神经网络运算装置和显示器(例如液晶(LCD)显示器)。卷积神经网络运算装置包括:图像采集模块、图像预处理模块、存储模块(例如FLASH)、卷积神经网络运算电路和图像显示模块,其中,卷积神经网络运算电路包含上述图像卷积电路,该卷积神经网络可以是基于轻权重卷积神经网络(CNN),其基于LeNet-5模型的卷积神经网络进行了改进。
图像传感器用于拍摄图像(例如手写字母的图像);图像采集模块用于对图像传感器传入到卷积神经网络运算装置的图像进行采集,另外还可以对图像传感器进行相关的配置;图像采集模块将采集到的源图像存储到存储模块中,存储模块对该源图像进行存储和调度;图像预处理模块用于对保存的图像进行预处理,预处理后的图像可以存储到存储模块中以便在需要的时候送入到卷积神经网络运算电路进行处理,预处理后的图像也可以直接送入到卷积神经网络运算电路进行处理;其中,例如对图像进行灰度化处理,又如对图像进行定点化处理,即将表示像素值的浮点数转换为定点数(如用固定的13位二进制数据表示)。卷积神经网络运算电路对预处理后的图像进行卷积、池化和全连接等运算,得到图像中的对象分别在各类别下的计算结果,比较各个类别的计算结果的数值大小,取出其中最大的数值所对应的类别,作为图像中的对象的预测类别结果。将预测类别结果和采源图像通过图像显示模块进行输出至显示器进行显示。
建立如图8所示卷积神经网络的结构,该结构包括依次连接的:输入层、第一层(卷积层C1)、第二层(卷积层C2)、第三层(第一池化层S1)、第四层(卷积层C3)、第五层(卷积层C4)、第六层(第二池化层S2)、第七层(卷积层C5)、第八层(卷积层C6)、第九层(最大池化层GMP)、第十层(全连接层Dense)。然后,对该卷积神经网络进行训练。在一些实施例中,该卷积神经网络用于识别手写字母,首先,建立手写字母数据集,搜集并筛选出符合国人书写习惯的大量(例如213962张)手写字母图片,为便于卷积神经网络的调用,将图像数据转化为与MNIST数据集一致的格式,数据集部分图片如图9所示。
输入层用于输入图像(可以是经过预处理后的灰度图像),该图像中包含了被识别对象,例如手写字母。在一些实施例中,输入的图像是大小为28×28的手写字母的灰度图。
第一层为卷积层C1,该层可以包含多个尺寸和/或内含的权重不同的卷积核,卷积核采用前述各种实施例的图像卷积电路实现。在一些实施例中,该层含有4个尺寸为3×3的卷积核,每个卷积核的权重有所不同(即对应的卷积核中心的权重寄存器或非卷积核中心的权重寄存器中存储的权重有所不同),如前所述,每完成一次卷积,卷积核平移一个像素点,即其移动的步进值为1;另外,权重只包含与对应像素点的像素值相乘的部分,不包含偏置项(现有技术中,针对每个像素点,与对应的乘积结果还需要加上偏置项),如前所述,图像卷积电路的运算单元中并没有对应的偏置项寄存器。由于卷积层C1的输入为1张大小为28×28的灰度图,因此,本层的输出特征图C1为4张大小为28×28的图像。卷积层C1的训练参数总数为:(3×3×1)×4=36,即36个权重。
第二层为卷积层C2,该层可以包含多个尺寸和/或内含的权重不同的卷积核,卷积核采用前述各种实施例的图像卷积电路实现。在一些实施例中,该层含有4个尺寸为3×3×4的卷积核(即深度为4的大小为3×3卷积核,可以看出由4个大小为3×3卷积核组成),其移动的步进值为1,不含偏置项。这一层输入的4张图片尺寸均为28×28,因此,本层产生的图片C2为28×28的4通道图像。本层的训练参数总数为:(3×3×4)×4=144,即144个权重。
第三层为第一池化层S1,该层包含池化窗,其可以采用最大池化操作,其池化窗尺寸可以为2×2,池化时,池化窗在处理图像中移动,在该池化窗2×2内的最大像素值作为一个新的像素点的像素值,该池化窗移动的步进值为2,经过池化后,产生的图片大小缩小一半。本层传入的是4张尺寸为28×28的特征图,因此,本层产生的图片S1为14×14的4通道图像。池化层不含有训练参数,即不含上述权重。
第四层为卷积层C3,该层可以包含多个尺寸和/或内含的权重不同的卷积核,卷积核采用前述各种实施例的图像卷积电路实现。在一些实施例中,该层含有12个尺寸为3×3×4的卷积核,其移动的步进值为1,不含偏置项。该层传入的是4张尺寸为14×14的图片,因此,C3为12张尺寸为14×14的特征图。本层的训练参数总数为:(3×3×4)×12=432,即432个权重。
第五层为卷积层C4,该层可以包含多个尺寸和/或内含的权重不同的卷积核,卷积核采用前述各种实施例的图像卷积电路实现。在一些实施例中,该层含有12个尺寸为3×3×12的卷积核,其移动的步进值为1,不含偏置项。该层传入的是12张尺寸为14×14的图片,因此,C4层为12张尺寸为14×14的特征图。第五层的训练参数总数为:(3×3×12)×12=1296,即1296个权重。
第六层为第二池化层S2,该层包含池化窗,其可以采用最大池化操作,其该层的池化窗口尺寸为2×2,其移动的步进值是2。该层传入的是12张大小为14×14的特征图,因此,S2层为12张尺寸为7×7的图片。池化层不含有训练参数,即不含上述权重。
第七层为卷积层C5,该层可以包含多个尺寸和/或内含的权重不同的卷积核,卷积核采用前述各种实施例的图像卷积电路实现。在一些实施例中,该层含有16个尺寸为3×3×12的卷积核,其移动的步进值是1,不含偏置项,并进行像素扩充。该层传入的是12张尺寸为7×7的图片,因此,C5层是16张尺寸为7×7的特征图。本层的训练参数总数为:(3×3×12)×16=1728,即1728个权重。
第八层为卷积层C6,该层可以包含多个尺寸和/或内含的权重不同的卷积核,卷积核采用前述各种实施例的图像卷积电路实现。在一些实施例中,该层含有16个尺寸为3×3×16的卷积核,其移动的步进值是1,不含偏置项。该层传入的是16张尺寸为7×7的图片,因此,C6层是16张尺寸为7×7的特征图。第八层的训练参数总数为:(3×3×16)×16=2304,即2304个权重。
第九层为全局最大池化层GMP,全局最大池化是提取输入本层的每个特征图的最大值,此处可以视为池化窗为7×7的最大池化层。全局最大池化的作用是将各种尺寸的图片缩减至尺寸为1×1的图片。该层传入的是16张尺寸为7×7的图片,因此,GMP层为16张1×1的特征图,也就是转化为16个数值,便于与下一层的全连接层对接。本层不含训练参数上。
最后一层为全连接层Dense,也作为本模型的输出层,包含N个节点,其中N代表需要分类的类别共有N种。在一些实施例中,全连接层Dense共有27个节点,分别代表27种类别,其中包括26类大写字母和1个非字母类别。本层的训练参数总数为:16×27=432。
把上述各层的训练权重数量相加,得到本网络结构的权重总数为6372。完成对卷积神经网络的训练之后,即可以利用该卷积神经网络进行图像识别。如图10所示,是一种实施例的图像识别方法的流程图,该图像识别方法包括如下步骤。
S100,将目标图像依次经过第一图像卷积电路、第二图像卷积电路的卷积处理,得到第一卷积图像。如前所述,目标图像依次经过第一层(卷积层C1)的第一图像卷积电路、第二层(卷积层C2)的第二图像卷积电路的卷积处理后,得到第一卷积图像,也可以称为第一特征图像。
S200,对第一卷积图像进行池化处理,得到第一池化图像。如前所述,第一卷积图像经过第三层(第一池化层S1)的池化处理得到第一池化图像。
S300,对第一池化图像依次经过第三图像卷积电路、第四图像卷积电路的卷积处理,得到第二卷积图像。如前所述,第一池化图像经过第四层(卷积层C3)的第三图像卷积电路、第五层(卷积层C4)的第四图像卷积电路的卷积处理,得到第二卷积图像。
S400,对第二卷积图像进行池化处理,得到第二池化图像。如前所述,第二卷积图像经过第六层(第二池化层S2)的池化处理得到第二池化图像。
S500,对第二池化图像依次经过第五图像卷积电路、第六图像卷积电路的卷积处理,得到第三卷积图像。如前所述,第二池化图像依次经过第七层(卷积层C5)的第五图像卷积电路、第八层(卷积层C6)的第六图像卷积电路的卷积处理,得到第三卷积图像。
S600,对第三卷积图像进行最大池化处理,得到第三池化图像。如前所述,第九层(最大池化层GMP)对第三卷积图像进行全局最大池化处理,得到第三池化图像。
S700,对第三池化图像进行全连接处理以获得图像识别的类别结果。如前所述,全连接层Dense的27个输出节点输出对应的值,通过判断哪个输出节点的值最大,即可以判断图像中的对象为该输出节点所对应的类别。具体而言,需要从存放全连接层各个节点输出结果的存储单元中,按照地址从低到高的顺序依次取出全连接层的所有节点的输出结果。之后,将输出结果进行两两对比,取出大的数值,并将该数值对应的类别取出,进行下一轮比较。如此循环,直至取出全部节点结果中的最大数值及其所对应的类别。
其中,第一图像卷积电路、第二图像卷积电路、第三图像卷积电路、第四图像卷积电路、第五图像卷积电路和第六图像卷积电路均采用前述实施例的图像卷积电路。
本发明还提供了一种图像识别芯片,包括所述的图像卷积电路。
本发明还提供了一种嵌入式图像识别设备,包括所述的图像识别芯片。
本实施例的卷积神经网络,相较于传统LeNet-5卷积神经网络,具有如下优势:
1)本卷积神经网络减少了全连接层,仅保留输出层,减少了参数数量,降低了复杂度。
2)通过增加网络深度,降低全连接层减少带来的图片特征缺失的影响,进而提高神经网络的性能。具体而言,全连接层的减少,会导致图片特征的缺失。通过增加卷积层的数量可以增加图片特征的提取数量,从而可以弥补全连接层减少带来的图片特征缺失的影响。另外,由于卷积层具有权重共享特性,增加卷积层不会大量增加训练参数数目,复杂度增加不大。再者,在一些实施例中,卷积窗口的尺寸由5×5更改为3×3,进一步缩减参数的个数。
3)本卷积神经网络删除卷积核中的偏置项,属于轻权重卷积神经网络。删除偏置项对于神经网络的识别结果并不会造成太大影响,但是却能够有效减少参数数量。
4)使用ReLU函数作为激活函数,运算简单,且在正向上规避了上述梯度消失的缺陷,能够取得更好的训练和识别效果。具体而言,现有的Sigmoid函数以及tanh函数均存在梯度消失问题,且含有指数项,运算过程较为复杂。与二者相比,ReLU函数运算简单,且在正向上规避了上述缺陷,能够取得更好的训练效果。
5)池化层采用最大池化,最大池化具有位置不变性,使得图片特征在空间上的相对位置保持不变,有助于提高识别效果。
在一些实施例中,本卷积神经网络对手写字母的识别速度达到了实时性的要求。单张字母图片的处理周期数为237626,在50MHz的工作频率下,识别速率为4.75ms/帧。规模超过14.8万张的手写大写字母图片训练数据集使得本卷积神经网络能够较好地适应不同人的书写风格。本卷积神经网络在包含6.5万多张图片的测试数据集中的识别准确率为94.41%,与现有技术中使用其他神经网络识别手写字母的方案相比,本案减少了近90%的参数量,但是识别率仅下降2%左右。与LeNet-5模型相比,本文的网络模型参数减少约90%,模型的测试正确率为94.41%。可见,本卷积神经网络具有明显优势。
另外,在一些实施例中,整个系统消耗逻辑资源较少,占比为33%,总存储资源消耗占比为75%,静态功耗约为147mW,适合在便携式移动系统中的实现,且卷积神经网络中的网络规模可以进一步扩展。
本领域的技术人员能够理解的是,在不冲突的前提下,上述各优选方案可以自由地组合、叠加。其中,附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生,例如,两个接连表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。本文中对于各步骤的编号仅为了方便说明和引用,并不用于限定前后顺序,具体的执行顺序是由技术本身确定的,本领域技术人员可以根据技术本身确定各种允许的、合理的顺序。
需要说明的是,本发明中采用步骤编号来指代某些具体的方法步骤,仅仅是出于描述方便和简洁的目的,而绝不是用字母或数字来限制这些方法步骤的顺序。本领域的技术人员能够明了,相关方法步骤的顺序,应由技术本身决定,不应因步骤编号的存在而被不适当地限制,本领域技术人员可以根据技术本身确定各种允许的、合理的步骤顺序。
本领域的技术人员能够理解的是,在不冲突的前提下,上述各优选方案可以自由地组合、叠加。
应当理解,上述的实施方式仅是示例性的,而非限制性的,在不偏离本发明的基本原理的情况下,本领域的技术人员可以针对上述细节做出的各种明显的或等同的修改或替换,都将包含于本发明的权利要求范围内。
Claims (18)
1.一种图像卷积电路,包括M个缓存单元、以及卷积运算电路,其特征在于,所述卷积运算电路包括一个卷积中心运算单元和M2-1个非卷积中心运算单元,M个缓存单元与所述卷积中心运算单元和M2-1个非卷积中心运算单元的连接方式使得这些运算单元构成M*M的运算单元矩阵;与所述卷积中心运算单元连接的非卷积中心运算单元为第1个非卷积中心运算单元;
所述卷积中心运算单元包括卷积中心乘法器、卷积中心权重寄存器和中心像素寄存器,所述卷积中心乘法器的第一输入端连接所述卷积中心权重寄存器以输入卷积核中心的权重,第二输入端连接所述中心像素寄存器以输入目标图像对应卷积核中心像素点的像素值;
所述非卷积中心运算单元包括非卷积中心乘法器、非卷积中心权重寄存器、非中心像素寄存器、加法器和选通器,所述非卷积中心乘法器的第一输入端连接某一非卷积中心权重寄存器以输入对应非卷积核中心的权重,第二输入端连接对应非中心像素寄存器以输入所述目标图像对应非卷积核中心像素点的像素值,所述非卷积中心乘法器的输出端与所述加法器的第一输入端连接,所述加法器的输出端连接所述选通器的第一输入端,所述选通器的选通控制端输入选通控制信号,以控制与所述目标图像中像素点重合的非卷积核中心对应的选通器的第一输入端选通,控制其余选通器的第二输入端选通;
每个缓存单元用于缓存来自目标图像某一行像素点的像素值,并向所述运算单元矩阵对应行的各个中心像素寄存器或非中心像素寄存器提供所缓存的像素值;
第1个非卷积中心运算单元中,加法器的第二输入端连接所述卷积中心乘法器的输出端,选通器的第二输入端连接所述卷积中心乘法器的输出端;第1个至第M2-2个非卷积中心运算单元中,选通器的输出端连接后一个非卷积中心运算单元中加法器的第二输入端以及选通器的第二输入端;第M2-1个非卷积中心运算单元中选通器的输出端用于输出图像卷积结果;其中,M为大于或等于3的奇数。
2.根据权利要求1所述的图像卷积电路,其特征在于,
所述中心像素寄存器、第1个非中心像素寄存器至第M-1个非中心像素寄存器依次构成包括M个寄存器的移位寄存器组,
其中,第1个寄存器至第1+(M-1)/2个寄存器依次存储所述目标图像中所述中心像素点至所述中心像素点右侧第(M-1)/2个像素点的像素值,第2+(M-1)/2个寄存器至第M个寄存器存储所述目标图像中所述中心像素点左侧(M-1)/2个像素点的像素值;
对应的缓存单元从第1+(M-1)/2个寄存器输入中心像素点所在行像素点的像素值,每输入一个像素值时:
第2+(M-1)/2个寄存器至第M-1个寄存器内存储的像素值分别向右移动至后一个寄存器,第1个寄存器的像素值移动至第2+(M-1)/2个寄存器,第2个寄存器至第1+(M-1)/2个寄存器内存储的像素值分别向左移动至前一个寄存器,或者:
第3+(M-1)/2个寄存器至第M个寄存器内存储的像素值分别向左移动至前一个寄存器,第1个寄存器的像素值移动至第M个寄存器,第2个寄存器至第1+(M-1)/2个寄存器内存储的像素值分别向左移动至前一个寄存器。
3.根据权利要求1所述的图像卷积电路,其特征在于,
还包括M个选通开关,
每个选通开关的输入端连接目标图像存储器的输出端,每个选通开关的输出端连接对应的缓存单元的输入端,每个缓存单元的输出端连接所述运算单元矩阵对应行的一个非中心像素寄存器;
每个选通开关还包括选通端,根据所述目标图像存储器输出的当前像素点所在行的数值,选择控制对应行的选通开关选通,并控制其余行对应的选通开关关断。
4.根据权利要求3所述的图像卷积电路,其特征在于,
当中心像素点位于所述目标图像的上边缘行时,控制(M-1)/2个对应的选通开关保持关断,以及至少控制运算单元矩阵中(M-1)/2个对应行的选通器的第二输入端被选通。
5.根据权利要求1所述的图像卷积电路,其特征在于,
还包括目标图像存储器,
以所述目标图像左上角的像素点为起点,按照从左到右、从上到下的顺序对所述目标图像中的像素点分别编号为依次增大的像素序号;以所述目标图像左上角像素点在目标图像存储器中的地址作为起始地址,根据像素序号确定所述目标图像中对应像素点的偏移地址,将所述目标图像中像素点的像素值依次存储在所述目标图像存储器中;
根据输入到所述中心像素寄存器的像素点的偏移地址确定该像素点在所述目标图像中的位置,根据该位置确定所述选通控制信号。
6.根据权利要求1所述的图像卷积电路,其特征在于,
所述图像卷积电路还包括激活函数电路,所述激活函数电路包括比较器、激活选通器,所述比较器的第一输入端输入卷积运算电路输出的图像卷积结果,第二输入端输入低电平,输出端连接激活选通器的选通控制端;激活选通器的第一输入端输入运算电路输出的图像卷积结果,第二输入端输入低电平,输出端的输出信号作为所述图像卷积电路的最终图像卷积结果。
7.一种图像卷积方法,其采用如权利要求1所述的图像卷积电路,包括如下步骤:
每个缓存单元缓存来自目标图像某一行像素点的像素值,并向所述运算单元矩阵对应行的各个中心像素寄存器或非中心像素寄存器提供所缓存的像素值;
所述卷积中心乘法器将所述卷积核中心的权重与所述卷积核中心像素点的像素值进行相乘,将相乘的结果输出至第1个非卷积中心运算单元中加法器的第二输入端、以及选通器的第二输入端;
每个非卷积中心运算单元中选通器的选通控制端的选通控制信号控制与所述目标图像中像素点重合的非卷积核中心对应的选通器的第一输入端选通,控制其余选通器的第二输入端选通;
第1个至第M2-2个非卷积中心运算单元中,选通器根据选通控制信号的控制输出选通结果至后一个非卷积中心运算单元中加法器的第二输入端以及选通器的第二输入端;
第M2-1个非卷积中心运算单元中选通器输出图像卷积结果。
8.根据权利要求7所述的卷积方法,其采用如权利要求2所述的图像卷积电路,其特征在于,
对应的缓存单元从第1+(M-1)/2个寄存器输入中心像素点所在行像素点的像素值,每输入一个像素值时:
第2+(M-1)/2个寄存器至第M-1个寄存器内存储的像素值分别向右移动至后一个寄存器,第1个寄存器的像素值移动至第2+(M-1)/2个寄存器,第2个寄存器至第1+(M-1)/2个寄存器内存储的像素值分别向左移动至前一个寄存器,或者:
第3+(M-1)/2个寄存器至第M个寄存器内存储的像素值分别向左移动至前一个寄存器,第1个寄存器的像素值移动至第M个寄存器,第2个寄存器至第1+(M-1)/2个寄存器内存储的像素值分别向左移动至前一个寄存器。
9.根据权利要求7所述的卷积方法,其采用如权利要求3所述的图像卷积电路,其特征在于,
每个选通开关的选通端根据所述目标图像存储器输出的当前像素点所在行的数值,选择控制对应行的选通开关选通,并控制其余行对应的选通开关关断。
10.根据权利要求9所述的卷积方法,其特征在于,
当中心像素点位于所述目标图像的上边缘行时,控制(M-1)/2个对应的选通开关保持关断,以及控制运算单元矩阵中(M-1)/2个对应行的非中心像素寄存器的第二输入端被选通。
11.根据权利要求7所述的卷积方法,其采用如权利要求5所述的图像卷积电路,其特征在于,
根据输入到所述中心像素寄存器的像素点的偏移地址确定该像素点在所述目标图像中的位置,根据该位置确定所述选通控制信号。
12.根据权利要求7所述的卷积方法,其采用如权利要求6所述的图像卷积电路,其特征在于,
当所述图像卷积结果大于0,所述激活选通器的第一输入端被选通,所述最终图像卷积结果与图像卷积结果相同;
当所述图像卷积结果小于0,所述激活选通器的第二输入端被选通,所述最终图像卷积结果为0。
13.一种图像识别方法,其特征在于,包括如下步骤:
S100,将目标图像依次经过多个第一图像卷积电路、多个第二图像卷积电路的卷积处理,得到第一卷积图像;
S200,对所述第一卷积图像进行池化处理,得到第一池化图像;
S300,对所述第一池化图像依次经过多个第三图像卷积电路、多个第四图像卷积电路的卷积处理,得到第二卷积图像;
S400,对所述第二卷积图像进行池化处理,得到第二池化图像;
S500,对所述第二池化图像依次经过多个第五图像卷积电路、多个第六图像卷积电路的卷积处理,得到第三卷积图像;
S600,对所述第三卷积图像进行最大池化处理,得到第三池化图像;
S700,对所述第三池化图像进行全连接处理以获得图像识别的类别结果;
其中,所述第一图像卷积电路、第二图像卷积电路、第三图像卷积电路、第四图像卷积电路、第五图像卷积电路和第六图像卷积电路均采用如权利要求1-6任一所述的图像卷积电路。
14.根据权利要求13所述的图像识别方法,其特征在于,
步骤S200和S400中的池化处理为最大池化处理。
15.根据权利要求13所述的图像识别方法,其特征在于,
所述图像识别方法应用于手写字母识别。
16.一种图像识别装置,其特征在于,包括:
第一卷积单元,用于将目标图像依次经过多个第一图像卷积电路、多个第二图像卷积电路的卷积处理,得到第一卷积图像;
第一池化单元,用于对所述第一卷积图像进行池化处理,得到第一池化图像;
第二卷积单元,用于对所述第一池化图像依次经过多个第三图像卷积电路、多个第四图像卷积电路的卷积处理,得到第二卷积图像;
第二池化单元,用于对所述第二卷积图像进行池化处理,得到第二池化图像;
第三卷积单元,用于对所述第二池化图像依次经过多个第五图像卷积电路、多个第六图像卷积电路的卷积处理,得到第三卷积图像;
第三池化单元,用于对所述第三卷积图像进行最大池化处理,得到第三池化图像;
全连接单元,用于对所述第三池化图像进行全连接处理以获得图像识别的类别结果;
其中,所述第一图像卷积电路、第二图像卷积电路、第三图像卷积电路、第四图像卷积电路、第五图像卷积电路和第六图像卷积电路均采用如权利要求1-6任一所述的图像卷积电路。
17.一种图像识别芯片,其特征在于,包括如权利要求1-6任一所述的图像卷积电路。
18.一种嵌入式图像识别设备,其特征在于,包括如权利要求17所述的图像识别芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210530611.1A CN115470895A (zh) | 2022-05-16 | 2022-05-16 | 图像卷积电路、方法、图像识别方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210530611.1A CN115470895A (zh) | 2022-05-16 | 2022-05-16 | 图像卷积电路、方法、图像识别方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115470895A true CN115470895A (zh) | 2022-12-13 |
Family
ID=84363989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210530611.1A Pending CN115470895A (zh) | 2022-05-16 | 2022-05-16 | 图像卷积电路、方法、图像识别方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115470895A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113283312A (zh) * | 2021-05-08 | 2021-08-20 | 江苏商贸职业学院 | 一种改进的DeNet-5嵌入式人脸识别方法及系统 |
-
2022
- 2022-05-16 CN CN202210530611.1A patent/CN115470895A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113283312A (zh) * | 2021-05-08 | 2021-08-20 | 江苏商贸职业学院 | 一种改进的DeNet-5嵌入式人脸识别方法及系统 |
CN113283312B (zh) * | 2021-05-08 | 2023-10-17 | 江苏商贸职业学院 | 一种改进的LeNet-5嵌入式人脸识别方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110610510B (zh) | 目标跟踪方法、装置、电子设备及存储介质 | |
CN110930296B (zh) | 图像处理方法、装置、设备及存储介质 | |
CN108629406B (zh) | 用于卷积神经网络的运算装置 | |
US10769485B2 (en) | Framebuffer-less system and method of convolutional neural network | |
CN108717571B (zh) | 一种用于人工智能的加速方法和装置 | |
CN103310419B (zh) | 一种小目标图像处理装置 | |
CN109671042B (zh) | 基于fpga形态学算子的灰度图像处理系统及方法 | |
CN115470895A (zh) | 图像卷积电路、方法、图像识别方法、装置及设备 | |
CN113344179B (zh) | 基于fpga的二值化卷积神经网络算法的ip核 | |
CN110597678B (zh) | 一种调试方法及调试单元 | |
JP3955953B2 (ja) | 画像分割処理装置、画像分割処理方法及び画像分割処理集積化回路 | |
CN113963333A (zh) | 一种基于改进yolof模型的交通标志牌检测方法 | |
CN108764182B (zh) | 一种优化的用于人工智能的加速方法和装置 | |
CN112396072A (zh) | 基于asic与vgg16的图像分类加速方法及装置 | |
CN112200310B (zh) | 智能处理器、数据处理方法及存储介质 | |
CN113240101A (zh) | 卷积神经网络软硬件协同加速的异构SoC实现方法 | |
CN112183732A (zh) | 卷积神经网络加速方法、装置和计算机设备 | |
CN108024116A (zh) | 一种数据缓存方法及装置 | |
CN116503894A (zh) | 一种基于risc-v的检测加速系统 | |
CN115511918A (zh) | 一种基于并行处理的目标跟踪方法及装置 | |
CN116091297A (zh) | 一种图像连通域标记硬件实现算法 | |
CN114648444A (zh) | 应用在神经网络数据处理中的向量上采样计算方法及装置 | |
CN112434635B (zh) | 卷积神经网络特征提取方法、系统、嵌入式设备及介质 | |
CN110503193B (zh) | 一种基于roi的池化运算方法和电路 | |
CN114254740A (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 |