CN111062450A - 基于fpga和scnn架构的图像分类装置及方法 - Google Patents
基于fpga和scnn架构的图像分类装置及方法 Download PDFInfo
- Publication number
- CN111062450A CN111062450A CN201911389369.5A CN201911389369A CN111062450A CN 111062450 A CN111062450 A CN 111062450A CN 201911389369 A CN201911389369 A CN 201911389369A CN 111062450 A CN111062450 A CN 111062450A
- Authority
- CN
- China
- Prior art keywords
- module
- pulse
- scnn
- data
- neural network
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- 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
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/955—Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Multimedia (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
本发明提出一种基于FPGA和SCNN架构的图像分类装置及方法,用于解决现有利用人工神经网络在高帧率场景下对图像分类时无法兼顾高图像分类准确率、计算效率和低功耗的技术问题。存储器存储装置所需各种参数;存储器控制模块控制存储器的读写;全局控制模块用于对存储器控制模块、神经元计算模块、突触脉冲产生模块和分类模块进行参数配置;预处理模块对图像进行灰度化,将灰度化数据传至图像压缩模块;图像压缩模块将灰度化数据压缩,将压缩图像数据传至脉冲卷积神经网络;脉冲卷积神经网络对压缩图像数据进行分类。本发明在高帧率场景下对图像分类时可以具有较高图像分类准确率、计算效率和较低的功耗。
Description
技术领域
本发明属于图像处理领域,涉及一种图像分类装置及方法,具体涉及一种基于FPGA和脉冲卷积神经网络SCNN架构的图像分类装置及方法,可用于高速低功耗图像处理领域。
背景技术
在人工智能的研究领域中,利用人工神经网络对图像进行识别与匹配时,需要先对图像进行分类,所以利用人工神经网络对图像进行分类是一个重要的研究方向。在利用人工神经网络对图像进行分类中,如何在高帧率场景下利用人工神经网络对图像进行分类是一个难点。在高帧率场景下利用人工神经网络对图像进行分类中,最为关注的是识别准确率和计算速度以及系统功耗三个评价指标。其中,识别准确率和系统功耗由人工神经网络的训练算法、结构和神经元模型所影响;计算速度由人工神经网络中神经元个数、神经元并行度和数据传输格式所影响。因此有必要依据这两个评价指标,选取一种合适的人工神经网络在高帧率场景下对图像进行分类。
在高帧率场景下基于人工神经网络对图像进行分类分为基于卷积神经网络CNN的图像分类方法和脉冲神经网络SNN的图像分类方法两种,其中,基于卷积神经网络CNN的图像分类方法,是通过包括相互连接的多个卷积层、池化层和全连接层的卷积神经网络(Convolution Neuron Network,CNN)对图像进行分类,这种方法对图像的识别准确率高,但是计算速度慢。基于脉冲神经网络SNN的图像分类方法,是通过包括以全连接方式连接的多个隐藏层的脉冲神经网络(Spiking Neuron Network,SNN)对图像进行分类,这种方法计算速度很快,但是对图像的识别准确率较低。
综上所述,在高帧率场景下,传统的基于人工神经网络的图像分类方法只能兼顾高计算速度和高识别准确率其中一种,因此需要一种新型利用人工神经网络对图像进行分类的方法,在具有高识别准确率的同时,也要有高计算速度。例如:申请公布号为CN108830195A,名称为“基于现场可编程门阵列FPGA的图像分类方法”的专利申请,公开了一种基于现场可编程门阵列FPGA的图像分类方法,该方法先获取测试数据集和训练数据集,搭建了一个15层的卷积神经网络并设置卷积神经网络中各层的内核参数,再利用训练数据集训练卷积神经网络,最后利用训练好的卷积神经网络对测试数据集进行分类。该方法在FPGA上实现卷积神经网络架构,提高了卷积神经网络的计算速度,降低了图像分类装置的功耗,但是该方法存在的不足之处是:第一,该方法虽然提高了卷积神经网络的计算速度,但是由于卷积神经网络数据传输是以浮点数进行传输,计算速度不高,使得该方法完成对一副图像分类仍需要40ms,无法满足在高帧率场景下图像进行分类的计算速度要求。第二,该方法对图像的分类准确率只有93%,无法满足在高帧率场景下对图像进行分类的准确率要求。
发明内容
本发明的目的在于针对上述已有技术的不足,提出一种基于FPGA和SCNN架构的图像分类装置及方法,旨在保证在高帧率场景下图像分类效率的基础上,提高图像分类的准确率。
为实现上述目的,本发明采取的技术方案为:
一种基于FPGA和脉冲卷积神经网络SCNN架构的图像分类装置,包括通过FPGA实现的存储器、存储器控制模块、预处理模块、图像压缩模块、全局控制模块和脉冲卷积神经网络SCNN,其中:
所述存储器,用于对图像压缩模块的配置参数,以及脉冲卷积神经网络SCNN的权重数据、脉冲数据和配置参数进行存储、读和写;
所述存储器控制模块,用于对存储器的读和写进行控制;
所述预处理模块,用于对彩色图像进行灰度化,并将灰度化后的灰度图像数据发送至图像压缩模块;
所述图像压缩模块,用于通过从存储器中读取的图像压缩模块的配置参数对接收的灰度图像数据进行压缩,并将压缩图像数据发送至脉冲卷积神经网络SCNN;
所述全局控制模块,用于通过对从存储器中读取的SCNN的配置参数进行编译,获取存储器控制模块、神经元计算模块、突触脉冲产生模块和分类模块各自对应的参数配置并发送;
所述脉冲卷积神经网络SCNN,包括通过神经元计算模块和突触脉冲产生模块实现的多个卷积层、多个池化层和多个全连接层,以及通过分类模块实现的分类层,每个卷积层、池化层和全连接层均由多个LIF神经元构成,分类层由多个分类神经元构成,其中:
所述神经元计算模块,包括至少两个并行排布的由乘累加器和九个数据缓存器组成的计算核,用于对图像压缩模块输出的压缩图像数据,以及存储器输出的SCNN的权重数据和脉冲数据进行乘累加运算,并将运算结果发送到突触脉冲产生模块;
所述突触脉冲产生模块,用于通过神经元计算模块输出的乘累加运算结果产生的脉冲数据,并将脉冲数据分别发送至存储器和分类模块;
所述分类模块,用于通过突触脉冲产生模块输出的脉冲数据获取图像分类结果,并将分类结果发送到外部显示器。
上述基于FPGA和脉冲卷积神经网络SCNN架构的图像分类装置,所述神经元计算模块,其中的九个数据缓存器并行与乘累加器连接。
上述基于FPGA和脉冲卷积神经网络SCNN架构的图像分类装置,所述脉冲卷积神经网络SCNN,通过对神经元计算模块和突触脉冲产生模块进行受控分时复用,实现脉冲卷积神经网络SCNN的卷积层运算、池化层运算和全连接层运算。
一种基于FPGA和脉冲卷积神经网络SCNN架构的图像分类方法,包括如下步骤:
(1)预处理模块对彩色图像数据进行预处理:
预处理模块将接收的彩色图像数据转换为灰度图像数据,并将灰度图像数据发送至图像压缩模块;
(2)图像压缩模块对灰度图像数据进行压缩:
图像压缩模块读取存储器中存储的自己的配置参数,并根据配置参数指定的大小对灰度图像数据进行压缩,然后将压缩图像数据发送至脉冲卷积神经网络SCNN中的神经元计算模块;
(3)获取脉冲卷积神经网络SCNN的权重参数并存储:
(3a)构造与脉冲卷积神经网络SCNN的卷积层、池化层和全连接层层数相同的卷积神经网络CNN;
(3b)获取彩色图像数据集,并将其中至少60%的彩色图像数据及每个彩色图像数据的标签构成训练样本集;
(3c)将训练样本集作为CNN的输入进行迭代训练,得到训练好的卷积神经网络CNN;
(3d)对训练好的卷积神经网络CNN的权重参数进行迁移学习,得到脉冲卷积神经网络SCNN的权重参数,并将SCNN的权重参数写入存储器中;
(4)全局控制模块对SCNN的配置参数进行编译并发送:
全局控制模块对从存储器中读取的SCNN的配置参数进行编译,并将编译所获取的存储器控制模块、神经元计算模块、突触脉冲产生模块和分类模块的配置参数发送至各自所对应的模块中;
(5)存储器读取SCNN的权重参数并发送:
存储器通过存储器控制模块的控制读取SCNN的权重参数,并发送至神经元计算模块;
(6)SCNN对压缩图像进行分类:
(6a)分类模块根据自己的配置参数设置迭代次数T和最大迭代次数Tmax,Tmax≥2,并令T=1;
(6b)神经元计算模块根据自己的配置参数设置卷积层层数Nconv,Nconv≥2;突触脉冲产生模块根据自己的配置参数设置阈值Thersold和最大脉冲累加次数CNTmax,CNTmax≥2;
(6c)神经元计算模块令池化标志位Nstart=1、循环次数N=1,突触脉冲模块令脉冲累加次数CNT=1;
(6d)神经元计算模块对SCNN的权重参数与压缩图像数据进行卷积乘累加运算,并将乘累加运算结果发送至突触脉冲产生模块;
(6e)突触脉冲产生模块判断神经元计算模块的乘累加运算结果是否大于阈值Thersold,若是,产生SCNN的脉冲数据1,否则,产生SCNN的脉冲数据0;
(6f)突触脉冲产生模块判断CNT=CNTmax是否成立,若是,将产生的SCNN·的脉冲数据发送至分类模块,并执行步骤(6g),否则,将产生的SCNN的脉冲数据发送至存储器,并执行步骤(6h);
(6g)分类模块判断T=Tmax是否成立,若是,每个分类神经元统计SCNN的脉冲数据1的数量,包含脉冲数据1数量最大的分类神经元即为分类结果,否则,令T=T+1,并执行步骤(6c);
(6h)存储器通过存储器控制模块的控制读取SCNN的脉冲数据,并将SCNN的脉冲数据发送至神经元计算模块;
(6i)神经元计算模块对SCNN的权重参数与SCNN的脉冲数据进行乘累加运算:
(6i1)神经元计算模块判断Nstart=1是否成立,若是,令Nstart=~Nstart,对SCNN的权重数据与脉冲数据进行池化乘累加运算,并执行步骤(6i3),否则,执行步骤(6i2),其中,符号~[·]为对当前值取反;
(6i2)神经元计算模块判断N≥Nconv是否成立,若是,对SCNN的权重数据与脉冲数据进行全连接乘累加运算,并执行步骤(6i3),否则,对SCNN的权重数据与脉冲数据进行卷积乘累加运算,令Nstart=1,并执行步骤(6i3);
(6i3)神经元计算模块将乘累加运算结果发送至突触脉冲产生模块;
(6j)神经元计算模块令N=N+1,突触脉冲产生模块令CNT=CNT+1,并执行步骤(6e)。
本发明与现有技术相比,具有如下优点:
1.本发明采用的脉冲卷积神经网络SCNN架构中,每个卷积层、池化层和全连接层均由多个LIF神经元构成,LIF神经元的计算能力更强,对数据精度丢失更小,与现有技术相比,有效提高了在高帧率场景下对图像分类的准确率,仿真结果表明本发明图像分类的准确率可以达到96%。
2.本发明采用脉冲卷积神经网络SCNN对图像进行分类,脉冲卷积神经网络SCNN中的数据传输格式为脉冲数据。脉冲数据只有0或1两种情况,计算速度更快,且功耗更低。与现有技术相比,可以提高在高帧率场景下对图像分类的计算速度,仿真结果表明本发明对一副图像分类时间为1ms。
附图说明
图1为本发明图像分类装置的结构示意图;
图2为本发明图像分类方法的实现流程图;
图3为本发明SCNN对压缩图像进行分类的实现流程图。
具体实施方式
以下结合附图和具体实施例,对本发明作进一步详细描述:
参照图1,一种基于FPGA和脉冲卷积神经网络SCNN架构的图像分类装置,包括通过FPGA实现的存储器、存储器控制模块、预处理模块、图像压缩模块、全局控制模块和脉冲卷积神经网络SCNN,采用FPGA和SCNN架构实现图像分类装置是为了降低装置的功耗,提高脉冲卷积神经网络SCNN的计算速度,本实施例的FPGA芯片采用Xilinx公司的XC7K325T-2FFG900C,其中:
所述存储器,用于对图像压缩模块的配置参数,以及脉冲卷积神经网络SCNN的权重数据、脉冲数据和配置参数进行存储、读和写;
本实施例采用DDR3存储器,图像压缩模块的配置参数是对图像压缩模块中的原始图像数据大小、压缩后图像数据大小和双线性插值法中的缩放因子进行配置,脉冲卷积神经网络SCNN的权重数据是指经过CNN迁移学习后得到的权重数据,脉冲数据是指SCNN各层之间传递的数据,SCNN的配置参数包含了SCNN中存储器控制模块、神经元计算模块、突触脉冲产生模块和分类模块各自的配置参数;
所述存储器控制模块,用于对存储器的读和写进行控制;
本实施例中,存储器控制模块控制DDR3存储器的读写使能时序,并根据自己的参数对DDR3存储器的块地址进行分配;
所述预处理模块,用于对彩色图像进行灰度化,并将灰度化后的灰度图像数据发送至图像压缩模块;
本实施例不需要对图像进行脉冲化,直接对彩色图像数据进行灰度化,灰度化可以减少FPGA的存储量,有效节约硬件资源,同时对图像分类准确率的影响不大;
所述图像压缩模块,用于通过从存储器中读取的图像压缩模块的配置参数对接收的灰度图像数据进行压缩,并将压缩图像数据发送至脉冲卷积神经网络SCNN,将灰度图像数据进行压缩,可以在节约硬件资源的同时,提高对脉冲卷积神经网络SCNN的计算速度;
所述全局控制模块,用于通过对从存储器中读取的SCNN的配置参数进行编译,获取存储器控制模块、神经元计算模块、突触脉冲产生模块和分类模块各自对应的参数配置并发送;
本实施例中,全局控制模块对SCNN的配置参数进行截断并提取,分离出存储器控制模块、神经元计算模块、突触脉冲产生模块和分类模块各自对应的配置参数;
所述脉冲卷积神经网络SCNN,包括通过对神经元计算模块和突触脉冲产生模块进行受控分时复用实现的多个卷积层、多个池化层和多个全连接层,以及通过分类模块实现的分类层,每个卷积层、池化层和全连接层均由多个LIF神经元构成,分类层由多个分类神经元构成,采用LIF神经元构成脉冲卷积神经网络SCNN可以提高SCNN对图像的分类精度,因为LIF神经元在其膜电压下降和回升过程更为贴近生物神经元的膜电压下降和回升过程,使得LIF神经元在计算时对数据精度丢失的更少,可以提升对图像分类的准确率,其中:
所述神经元计算模块,包括至少两个并行排布的由乘累加器和九个数据缓存器组成的计算核,每一个计算核都是由九个数据缓存器并行与乘累加器连接来构成,神经元计算模块根据自己的参数配置,用于对图像压缩模块输出的压缩图像数据,以及存储器输出的SCNN的权重数据和脉冲数据进行乘累加运算,最后将运算结果发送到突触脉冲产生模块;
本实施例中,采用256个并行排布的上述计算核,256个并行排布的计算核同时进行乘累加运算,可以保证本装置具有较高的计算速度,神经元计算模块的配置参数主要配置卷积层层数,卷积层层数表示脉冲卷积神经网络具有卷积层和池化层的数量;
所述突触脉冲产生模块,用于通过神经元计算模块输出的乘累加运算结果产生的脉冲数据,并将脉冲数据分别发送至存储器和分类模块;
本实施例中,突触脉冲产生模块模拟LIF神经元脉冲数据产生、膜电压上升和膜电压下降的过程,突触脉冲产生模块的配置参数主要配置LIF神经元的阈值和最大脉冲累加次数,最大脉冲累加次数表示完成一次完整的SCNN前馈运算所需要进行脉冲累加的次数;
所述分类模块,用于通过突触脉冲产生模块输出的脉冲数据获取图像分类结果,并将分类结果发送到外部显示器,分类模块利用分类神经元来对脉冲数据进行统计和比较,得出最终的分类结果。
本实施例中,分类模块的配置参数主要配置最大迭代次数,最大迭代次数是指SCNN完成对一幅图像的分类所需要的运算次数;
参照图2,一种基于FPGA和脉冲卷积神经网络SCNN架构的图像分类方法,包括如下步骤:
步骤1)预处理模块对彩色图像数据进行预处理:
预处理模块将接收的彩色图像数据转换为灰度图像数据,并将灰度图像数据发送至图像压缩模块;
本实施例采用加权平均值法对彩色图像数据进行灰度化处理,彩色图像数据来自于外部的摄像头输入;
步骤2)图像压缩模块对灰度图像数据进行压缩:
图像压缩模块读取存储器中存储的自己的配置参数,并根据配置参数指定的大小对灰度图像数据进行压缩,然后将压缩图像数据发送至脉冲卷积神经网络SCNN中的神经元计算模块;
本实施例采用双线性插值法对灰度图像数据进行压缩,配置参数主要配置了原始图像数据大小、压缩后图像数据大小和双线性插值法中的缩放因子,本实施例将图像数据大小压缩到224*224;
步骤3)获取脉冲卷积神经网络SCNN的权重参数并存储:
步骤3a)构造与脉冲卷积神经网络SCNN的卷积层、池化层和全连接层层数相同的卷积神经网络CNN;
本实施例构造的卷积神经网络CNN,有四层卷积层、四层池化层和两层全连接层;
步骤3b)获取彩色图像数据集,并将其中至少60%的彩色图像数据及每个彩色图像数据的标签构成训练样本集;
本实施例训练采用的图像数据集来自于实验室,一共分为8类,共1000张彩色图像数据,将其中70%的彩色图像数据作为训练样本集;
步骤3c)将训练样本集作为CNN的输入进行迭代训练,得到训练好的卷积神经网络CNN;
本实施例采用BP算法对卷积神经网络CNN进行训练;
步骤3d)对训练好的卷积神经网络CNN的权重参数进行迁移学习,得到脉冲卷积神经网络SCNN的权重参数,并将SCNN的权重参数写入存储器中;
本实施例采用Bodo Rueckauer在2017年发表在第11期《神经科学前沿》的文章中提出的迁移学习算法,将CNN的权重参数进行迁移学习,得到SCNN的权重参数,这种迁移学习算法得到的权重参数,可以使得对分类有用的脉冲数据会更早的产生,而不重要的脉冲数据会晚一些再产生,可以有效提高对图像分类的精度;
步骤4)全局控制模块对SCNN的配置参数进行编译并发送:
全局控制模块对从存储器中读取的SCNN的配置参数进行编译,并将编译所获取的存储器控制模块、神经元计算模块、突触脉冲产生模块和分类模块的配置参数发送至各自所对应的模块中;
本实施例中,存储器控制模块的配置参数指配置DDR3存储器中不同块的起始地址和终止地址,神经元计算模块的配置参数指配置卷积层层数Nconv,突触脉冲产生模块的配置参数指配置阈值Thersold和最大脉冲累加次数CNTmax,分类模块的配置参数指配置迭代次数T和最大迭代次数Tmax;
步骤5)存储器读取SCNN的权重参数并发送:
存储器通过存储器控制模块的控制读取SCNN的权重参数,并发送至神经元计算模块;
步骤6)SCNN对压缩图像进行分类,实现步骤如图3所示:
步骤6a)分类模块根据自己的配置参数设置迭代次数T和最大迭代次数Tmax,Tmax≥2,并令T=1,本实施例中最大迭代次数Tmax为41;
步骤6b)神经元计算模块根据自己的配置参数设置卷积层层数Nconv,Nconv≥2,;突触脉冲产生模块根据自己的配置参数设置阈值Thersold和最大脉冲累加次数CNTmax,CNTmax≥2,本实施例中卷积层层数Nconv为8,阈值Thersold为1,最大脉冲累加次数CNTmax为10;
步骤6c)神经元计算模块令池化标志位Nstart=1、循环次数N=1,突触脉冲模块令脉冲累加次数CNT=1;
步骤6d)神经元计算模块对SCNN的权重参数与压缩图像数据进行卷积乘累加运算,并将乘累加运算结果发送至突触脉冲产生模块;
本实施例中,神经元计算模块进行卷积乘累加运算时,需要用到计算核中所有数据缓存器,第一个时钟周期,神经元计算模块将权重参数分为九份,对应分别输入到每个计算核的九个数据缓存器,第二个时钟周期,神经元计算模块将压缩图像数据分为256*9份,并将分好的压缩图像数据分别输入到256个计算核的9个数据缓存器,第三个时钟周期,乘累加器将第一个数据缓存器中的权重参数与压缩图像数据进行乘累加运算,在接下来的八个时钟,乘累加器对后面的数据缓存器进行乘累加运算,最后,神经元计算模块将256个计算核的乘累加结果发送至突触脉冲产生模块;
步骤6e)突触脉冲产生模块判断神经元计算模块的乘累加运算结果是否大于阈值Thersold,若是,产生SCNN的脉冲数据1,否则,产生SCNN的脉冲数据0,突触脉冲产生模块产生的脉冲数据表示当前层的输出脉冲数据,也是下一层的输入脉冲数据;
本实施例中,突触脉冲产生模块模拟LIF神经元的脉冲发放、LIF神经元膜电压上升和下降的过程,LIF神经元在接收到上一层的乘累加运算结果时,其膜电压会累积,当膜电压高于阈值时,LIF神经元发放脉冲,膜电压回复到静息膜电压,数学上的定义式如下式(1)和(2)所示;
式(1)和式(2)中,V(t)表示LIF神经元在时刻t的膜电压;V(t-1)表示LIF神经元在时刻t-1的膜电压;Z(t)表示LIF神经元在时刻t接收的乘累加运算结果;thersold表示阈值;Spike(t)表示LIF神经元在时刻t产生的脉冲数据,如果LIF神经元在时刻t-1的膜电压与时刻t接收到神经元计算模块的乘累加运算结果相加超过阈值,LIF神经元在时刻t的膜电压更新为两者之和与阈值相减的结果值,并且LIF神经元产生脉冲数据1,否则,LIF神经元在时刻t的膜电压更新为两者之和,LIF神经元产生脉冲数据0,LIF神经元计算所产生的误差更小,使得计算出来的数据更准确,可以有效提高图像分类的准确率;
步骤6f)突触脉冲产生模块判断CNT=CNTmax是否成立,若是,将产生的SCNN的脉冲数据发送至分类模块,并执行步骤(6g),否则,将产生的SCNN的脉冲数据发送至存储器,并执行步骤(6h);
本实施例中,最大脉冲累加次数CNTmax为10,代表脉冲卷积神经网络一共有十层,当脉冲累加次数CNT等于最大脉冲累加次数CNTmax时,表示一次完整的脉冲卷积神经网络SCNN的前馈运算完成,可以进行下一次前馈运算;
步骤6g)分类模块判断T=Tmax是否成立,若是,每个分类神经元统计SCNN的脉冲数据1的数量,包含脉冲数据1数量最大的分类神经元即为分类结果,否则,令T=T+1,并执行步骤(6c);
脉冲卷积神经网络对一副图像的分类需要对这幅图像多次迭代运算才能完成,本实施例中最大迭代次数Tmax为41,表示脉冲卷积神经网络需要一副图像进行41次迭代运算才能完成对图像的分类,所以当迭代次数T=Tmax时,表示SCNN完成对一副图像进行分类;
步骤6h)存储器通过存储器控制模块的控制读取SCNN的脉冲数据,并将SCNN·的脉冲数据发送至神经元计算模块;
步骤6i)神经元计算模块对SCNN的权重参数与SCNN的脉冲数据进行乘累加运算:
步骤6i1)神经元计算模块判断Nstart=1是否成立,若是,令Nstart=~Nstart,对SCNN的权重数据与脉冲数据进行池化乘累加运算,并执行步骤(6i3),否则,执行步骤(6i2),其中,符号~[·]为对当前值取反;
本实施例中,当进行池化乘累加运算时,每个计算核只用到了九个数据缓存器中的四个,表示池化层2*2的卷积核,神经元计算模块在接收到SCNN的权重参数与SCNN的脉冲数据后,第一个时钟周期,神经元计算模块将权重参数分为四份,对应分别输入到每个计算核的四个数据缓存器,第二个时钟周期,神经元计算模块将脉冲数据分为256*4份,并将分好的压缩图像数据分别输入到256个计算核的4个数据缓存器,第三个时钟周期,乘累加器将第一个数据缓存器中的权重参数与压缩图像数据进行乘累加运算,在接下来的三个时钟,乘累加器对后面的数据缓存器进行乘累加运算,得到池化乘累加运算结果值;
步骤6i2)神经元计算模块判断N≥Nconv是否成立,若是,对SCNN的权重数据与脉冲数据进行全连接乘累加运算,并执行步骤(6i3),否则,对SCNN的权重数据与脉冲数据进行卷积乘累加运算,令Nstart=1,并执行步骤(6i3);
本实施例中,全连接乘累加运算时,每个计算核用到了九个数据缓存器中的一个,神经元计算模块在接收到SCNN的权重参数与SCNN的脉冲数据后,第一个时钟周期,神经元计算模块将权重参数分为256份,对应分别输入到每个计算核的第一个数据缓存器,第二个时钟周期,神经元计算模块将脉冲数据分为256份,并将分好的压缩图像数据分别输入到256个计算核的第一个数据缓存器,第三个时钟周期,乘累加器将第一个数据缓存器中的权重参数与压缩图像数据进行乘累加运算,得到全连接乘累加结果值;
步骤6i3)神经元计算模块将乘累加运算结果发送至突触脉冲产生模块;
步骤6j)神经元计算模块令N=N+1,突触脉冲产生模块令CNT=CNT+1,并执行步骤(6e)。
Claims (4)
1.一种基于FPGA和脉冲卷积神经网络SCNN架构的图像分类装置,其特征在于,包括通过FPGA实现的存储器、存储器控制模块、预处理模块、图像压缩模块、全局控制模块和脉冲卷积神经网络SCNN,其中:
所述存储器,用于对图像压缩模块的配置参数,以及脉冲卷积神经网络SCNN的权重数据、脉冲数据和配置参数进行存储、读和写;
所述存储器控制模块,用于对存储器的读和写进行控制;
所述预处理模块,用于对彩色图像进行灰度化,并将灰度化后的灰度图像数据发送至图像压缩模块;
所述图像压缩模块,用于通过从存储器中读取的图像压缩模块的配置参数对接收的灰度图像数据进行压缩,并将压缩图像数据发送至脉冲卷积神经网络SCNN;
所述全局控制模块,用于通过对从存储器中读取的SCNN的配置参数进行编译,获取存储器控制模块、神经元计算模块、突触脉冲产生模块和分类模块各自对应的参数配置并发送;
所述脉冲卷积神经网络SCNN,包括通过神经元计算模块和突触脉冲产生模块实现的多个卷积层、多个池化层和多个全连接层,以及通过分类模块实现的分类层,每个卷积层、池化层和全连接层均由多个LIF神经元构成,分类层由多个分类神经元构成,其中:
所述神经元计算模块,包括至少两个并行排布的由乘累加器和九个数据缓存器组成的计算核,用于对图像压缩模块输出的压缩图像数据,以及存储器输出的SCNN的权重数据和脉冲数据进行乘累加运算,并将运算结果发送到突触脉冲产生模块;
所述突触脉冲产生模块,用于通过神经元计算模块输出的乘累加运算结果产生的脉冲数据,并将脉冲数据分别发送至存储器和分类模块;
所述分类模块,用于通过突触脉冲产生模块输出的脉冲数据获取图像分类结果,并将分类结果发送到外部显示器。
2.根据权利要求1所述的基于FPGA和脉冲卷积神经网络SCNN架构的图像分类装置,其特征在于,所述神经元计算模块,其中的九个数据缓存器并行与乘累加器连接。
3.根据权利要求1所述的基于FPGA和脉冲卷积神经网络SCNN架构的图像分类装置,其特征在于:所述脉冲卷积神经网络SCNN,通过对神经元计算模块和突触脉冲产生模块进行受控分时复用,实现脉冲卷积神经网络SCNN的卷积层运算、池化层运算和全连接层运算。
4.一种基于FPGA和脉冲卷积神经网络SCNN架构的图像分类方法,其特征在于,包括如下步骤:
(1)预处理模块对彩色图像数据进行预处理:
预处理模块将接收的彩色图像数据转换为灰度图像数据,并将灰度图像数据发送至图像压缩模块;
(2)图像压缩模块对灰度图像数据进行压缩:
图像压缩模块读取存储器中存储的自己的配置参数,并根据配置参数指定的大小对灰度图像数据进行压缩,然后将压缩图像数据发送至脉冲卷积神经网络SCNN中的神经元计算模块;
(3)获取脉冲卷积神经网络SCNN的权重参数并存储:
(3a)构造与脉冲卷积神经网络SCNN的卷积层、池化层和全连接层层数相同的卷积神经网络CNN;
(3b)获取彩色图像数据集,并将其中至少60%的彩色图像数据及每个彩色图像数据的标签构成训练样本集;
(3c)将训练样本集作为CNN的输入进行迭代训练,得到训练好的卷积神经网络CNN;
(3d)对训练好的卷积神经网络CNN的权重参数进行迁移学习,得到脉冲卷积神经网络SCNN的权重参数,并将SCNN的权重参数写入存储器中;
(4)全局控制模块对SCNN的配置参数进行编译并发送:
全局控制模块对从存储器中读取的SCNN的配置参数进行编译,并将编译所获取的存储器控制模块、神经元计算模块、突触脉冲产生模块和分类模块的配置参数发送至各自所对应的模块中;
(5)存储器读取SCNN的权重参数并发送:
存储器通过存储器控制模块的控制读取SCNN的权重参数,并发送至神经元计算模块;
(6)SCNN对压缩图像进行分类:
(6a)分类模块根据自己的配置参数设置迭代次数T和最大迭代次数Tmax,Tmax≥2,并令T=1;
(6b)神经元计算模块根据自己的配置参数设置卷积层层数Nconv,Nconv≥2;突触脉冲产生模块根据自己的配置参数设置阈值Thersold和最大脉冲累加次数CNTmax,CNTmax≥2;
(6c)神经元计算模块令池化标志位Nstart=1、循环次数N=1,突触脉冲模块令脉冲累加次数CNT=1;
(6d)神经元计算模块对SCNN的权重参数与压缩图像数据进行卷积乘累加运算,并将乘累加运算结果发送至突触脉冲产生模块;
(6e)突触脉冲产生模块判断神经元计算模块的乘累加运算结果是否大于阈值Thersold,若是,产生SCNN的脉冲数据1,否则,产生SCNN的脉冲数据0;
(6f)突触脉冲产生模块判断CNT=CNTmax是否成立,若是,将产生的SCNN的脉冲数据发送至分类模块,并执行步骤(6g),否则,将产生的SCNN的脉冲数据发送至存储器,并执行步骤(6h);
(6g)分类模块判断T=Tmax是否成立,若是,每个分类神经元统计SCNN的脉冲数据1的数量,包含脉冲数据1数量最大的分类神经元即为分类结果,否则,令T=T+1,并执行步骤(6c);
(6h)存储器通过存储器控制模块的控制读取SCNN的脉冲数据,并将SCNN的脉冲数据发送至神经元计算模块;
(6i)神经元计算模块对SCNN的权重参数与SCNN的脉冲数据进行乘累加运算:
(6i1)神经元计算模块判断Nstart=1是否成立,若是,令Nstart=~Nstart,对SCNN的权重数据与脉冲数据进行池化乘累加运算,并执行步骤(6i3),否则,执行步骤(6i2),其中,~[·]表示对当前值取反;
(6i2)神经元计算模块判断N≥Nconv是否成立,若是,对SCNN的权重数据与脉冲数据进行全连接乘累加运算,并执行步骤(6i3),否则,对SCNN的权重数据与脉冲数据进行卷积乘累加运算,令Nstart=1,并执行步骤(6i3);
(6i3)神经元计算模块将乘累加运算结果发送至突触脉冲产生模块;
(6j)神经元计算模块令N=N+1,突触脉冲产生模块令CNT=CNT+1,并执行步骤(6e)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911389369.5A CN111062450B (zh) | 2019-12-30 | 2019-12-30 | 基于fpga和scnn架构的图像分类装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911389369.5A CN111062450B (zh) | 2019-12-30 | 2019-12-30 | 基于fpga和scnn架构的图像分类装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111062450A true CN111062450A (zh) | 2020-04-24 |
CN111062450B CN111062450B (zh) | 2023-03-24 |
Family
ID=70302953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911389369.5A Active CN111062450B (zh) | 2019-12-30 | 2019-12-30 | 基于fpga和scnn架构的图像分类装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111062450B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112434635A (zh) * | 2020-12-02 | 2021-03-02 | 深圳龙岗智能视听研究院 | 卷积神经网络特征提取方法、系统、嵌入式设备及介质 |
CN113077017A (zh) * | 2021-05-24 | 2021-07-06 | 河南大学 | 基于脉冲神经网络的合成孔径图像分类方法 |
CN114202068A (zh) * | 2022-02-17 | 2022-03-18 | 浙江大学 | 面向类脑计算芯片的自学习实现系统 |
CN114566052A (zh) * | 2022-04-27 | 2022-05-31 | 华南理工大学 | 一种基于车流方向判别高速公路车流监控设备转动的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180157969A1 (en) * | 2016-12-05 | 2018-06-07 | Beijing Deephi Technology Co., Ltd. | Apparatus and Method for Achieving Accelerator of Sparse Convolutional Neural Network |
CN108470190A (zh) * | 2018-03-09 | 2018-08-31 | 北京大学 | 基于fpga定制脉冲神经网络的图像识别方法 |
WO2019107624A1 (ko) * | 2017-11-30 | 2019-06-06 | 주식회사 시스트란인터내셔널 | 시퀀스-대-시퀀스 번역 방법 및 이를 위한 장치 |
-
2019
- 2019-12-30 CN CN201911389369.5A patent/CN111062450B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180157969A1 (en) * | 2016-12-05 | 2018-06-07 | Beijing Deephi Technology Co., Ltd. | Apparatus and Method for Achieving Accelerator of Sparse Convolutional Neural Network |
WO2019107624A1 (ko) * | 2017-11-30 | 2019-06-06 | 주식회사 시스트란인터내셔널 | 시퀀스-대-시퀀스 번역 방법 및 이를 위한 장치 |
CN108470190A (zh) * | 2018-03-09 | 2018-08-31 | 北京大学 | 基于fpga定制脉冲神经网络的图像识别方法 |
Non-Patent Citations (2)
Title |
---|
朱威等: "结合批归一化的直通卷积神经网络图像分类算法", 《计算机辅助设计与图形学学报》 * |
雷杰等: "深度网络模型压缩综述", 《软件学报》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112434635A (zh) * | 2020-12-02 | 2021-03-02 | 深圳龙岗智能视听研究院 | 卷积神经网络特征提取方法、系统、嵌入式设备及介质 |
CN112434635B (zh) * | 2020-12-02 | 2024-02-09 | 深圳龙岗智能视听研究院 | 卷积神经网络特征提取方法、系统、嵌入式设备及介质 |
CN113077017A (zh) * | 2021-05-24 | 2021-07-06 | 河南大学 | 基于脉冲神经网络的合成孔径图像分类方法 |
CN114202068A (zh) * | 2022-02-17 | 2022-03-18 | 浙江大学 | 面向类脑计算芯片的自学习实现系统 |
CN114202068B (zh) * | 2022-02-17 | 2022-06-28 | 浙江大学 | 面向类脑计算芯片的自学习实现系统 |
CN114566052A (zh) * | 2022-04-27 | 2022-05-31 | 华南理工大学 | 一种基于车流方向判别高速公路车流监控设备转动的方法 |
CN114566052B (zh) * | 2022-04-27 | 2022-08-12 | 华南理工大学 | 一种基于车流方向判别高速公路车流监控设备转动的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111062450B (zh) | 2023-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111062450B (zh) | 基于fpga和scnn架构的图像分类装置及方法 | |
CN111626330B (zh) | 基于多尺度特征图重构和知识蒸馏的目标检测方法与系统 | |
CN108133188B (zh) | 一种基于运动历史图像与卷积神经网络的行为识别方法 | |
US20190087713A1 (en) | Compression of sparse deep convolutional network weights | |
US10296804B2 (en) | Image recognizing apparatus, computer-readable recording medium, image recognizing method, and recognition apparatus | |
US20160328644A1 (en) | Adaptive selection of artificial neural networks | |
WO2016182671A1 (en) | Fixed point neural network based on floating point neural network quantization | |
WO2017136104A1 (en) | Spiking multi-layer perceptron | |
KR20180048930A (ko) | 분류를 위한 강제된 희소성 | |
Solovyev et al. | Fixed-point convolutional neural network for real-time video processing in FPGA | |
US20160071005A1 (en) | Event-driven temporal convolution for asynchronous pulse-modulated sampled signals | |
WO2018084941A1 (en) | Temporal difference estimation in an artificial neural network | |
CN114186672A (zh) | 一种用于脉冲神经网络的高效高精度训练算法 | |
CN117154256A (zh) | 锂电池的电化学修复方法 | |
KR20190130443A (ko) | 뉴럴 네트워크의 양자화 방법 및 장치 | |
CN111882028A (zh) | 用于卷积神经网络的卷积运算装置 | |
Blott et al. | Scaling neural network performance through customized hardware architectures on reconfigurable logic | |
Kajkamhaeng et al. | SE-SqueezeNet: SqueezeNet extension with squeeze-and-excitation block | |
WO2023059723A1 (en) | Model compression via quantized sparse principal component analysis | |
CN111788582A (zh) | 电子设备及其控制方法 | |
CN113033795B (zh) | 基于时间步的二值脉冲图的脉冲卷积神经网络硬件加速器 | |
CN114780767A (zh) | 一种基于深度卷积神经网络的大规模图像检索方法及系统 | |
US20230004351A1 (en) | Method and device for additive coding of signals in order to implement digital mac operations with dynamic precision | |
US11657282B2 (en) | Efficient inferencing with fast pointwise convolution | |
WO2021158830A1 (en) | Rounding mechanisms for post-training quantization |
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 |