一种基于仿生分层脉冲神经网络的AER对象识别方法

文档序号:31078540发布日期:2022-08-09 22:02阅读:130来源:国知局
一种基于仿生分层脉冲神经网络的AER对象识别方法
一种基于仿生分层脉冲神经网络的aer对象识别方法
技术领域
1.本发明涉及一种基于仿生分层脉冲神经网络的aer对象识别方法。


背景技术:

2.神经形态计算作为一种基于生物启发原理的新型计算范式,具有计算效率高,低功耗的特点,已经成为高性能智能计算系统的研究热点之一。近年来受生物视觉系统原理的启发,研究人员开发出神经形态视觉传感器。不同于以恒定速率输出强度图像的传统图像传感器,神经形态视觉传感器只输出像素亮度变化的场景信息,并以地址-事件表示(address-event representation,aer)协议异步输出事件流信息。神经形态视觉传感器也被称为aer传感器。与传统图像传感器相比,aer传感器具有按需输出、高时间分辨率、低延迟和高动态范围等优点。由于aer传感器输出的事件流信息与传统图像传感器输出的二维灰度图像在数据结构上有本质的区别。现有的基于图像的传统计算机视觉算法无法直接处理aer传感器输出的事件流数据,因此需要研究和开发新的处理这些事件流数据的算法。
3.脉冲神经网络(spiking neural networks,snns)使用脉冲信号以异步和稀疏的方式表示和传输信息,能够模拟大脑基于脉冲和事件驱动的计算,具有低功耗和硬件友好的明显优势,是一种理想的仿生神经形态计算范式。snns的这些优势使其天然的适合处理事件流数据。近年来受生物视觉皮层启发的仿生分层snns在aer对象识别中得到越来越多的关注。hmax模型是目前使用最多的受视觉皮层信息处理机制启发的分层模型之一。该模型具有四层网络结构(s1-c1-s2-c2),其中s层和c层分别对应于生物视觉皮层中的简单细胞层和复杂细胞层,层次越高提取的特征越复杂。目前应用于aer对象识别的仿生分层snns的特征提取部分大多借鉴hmax模型的前两层结构(s1-c1),通过基于gabor滤波器的事件驱动卷积层提取事件流数据的特征,然后进行池化操作,之后将特征编码为脉冲信号输入给snn分类器进行分类。这些仿生分层snn一方面只提取了事件流数据的初级方向性特征,并没有进行更深层的特征提取,对于事件流数据的特征提取能力和分类能力有待进一步的提升。另一方面,这些网络中特征提取之后的snn部分只是用于采用全连接结构对提取的特征进行分类,并没有利用snn的学习能力来提取特征。中国专利zl201610093545.0公开一种用于aer的多层脉冲神经网络识别系统,虽然有两个特征提取层t1、t2,但两个特征提取层都是采用基于gabor滤波器的事件驱动卷积提取特征,是按照尺度和角度的不同分配到两个卷积层处理,本质上仍然是在提取初级的方向性特征,并不是进一步提取更复杂的特征。
4.此外,由于aer传感器输出的是场景的亮度变化信息,并且对自身元器件、电路结构、外界环境的影响具有非常高的灵敏度,因此aer传感器输出的事件流数据含有噪声事件,会对识别网络的分类精度产生不利影响。目前的多层脉冲神经网络识别系统都没有对事件流数据进行去噪,都是通过聚类方式基于事件表面进行去噪,计算成本较高且去噪能力有限。


技术实现要素:

5.本发明的目的是提供一种基于仿生分层脉冲神经网络的aer对象识别方法,用以提高受生物视觉皮层启发的分层snns提取事件流数据特征的能力和分类性能。
6.为实现上述目的,本发明的技术方案是:
7.第一种技术方案,一种基于仿生分层脉冲神经网络的aer对象识别方法的过程是:首先将aer传感器输出的原始事件流数据进行基于脉冲神经元的事件流去噪;然后,将去噪后的事件流输入给时空特征提取和分类模块,最后输出分类结果;
8.基于脉冲神经元的事件流去噪:
9.首先将原始事件流数据输入给由lif神经元组成的脉冲神经元层,该层大小与输入事件的分辨率相同。事件的每个像素位置对应一个lif神经元。将aer传感器输出的第i个事件记为ei=(xi,yi,ti),这里(xi,yi)为该事件的像素位置,ti为该事件的时间戳。将输入事件的分辨率记为s
×
s,像素位置(m,n)处产生的所有事件的集合表示为:
10.e
(m,n)
={ei|xi=m,yi=n}
ꢀꢀꢀ
(1)
11.其中,m,n∈[1,2,

,s],i为输出事件的索引序号。每个像素位置的lif神经元接收该像素位置所产生的所有事件。每个事件都会向对应位置的lif神经元产生一个突触后电位,每个lif神经元通过突触后电位的叠加来累积该像素位置的所有事件。像素位置(m,n)处所有事件累积的神经元总膜电压v(
m,n
)为神经元的静息电位和该位置所有事件产生的突触后电位之和,即根据公式(2)计算:
[0012][0013]
其中,表示像素位置(m,n)处产生的第a个事件的时间戳,a=1,2,

,t为时间。v
rest
表示神经元的静息电位,τm表示神经元膜电位衰减时间常数。如果像素位置(m,n)的神经元总膜电压大于或等于预先设定的总膜电压阈值v
thr
,即v
(m,n)
≥v
thr
,则保留该像素位置所产生的所有事件,否则,认为该像素位置的事件是噪声事件,将其从事件流中删除。通过此方式可去掉时间域上孤立的噪声事件,时间域上去噪之后像素位置(m,n)的事件为
[0014][0015]
为了进一步过滤掉在空间域上孤立的噪声事件,在使用上述方法去噪之后,继续通过利用事件的空间信息计算像素位置内事件与其周围空间邻域内事件之间的相关性来过滤掉空间域上孤立的噪声事件。具体过程如下:用像素位置(m,n)处的神经元总膜电压与高斯核函数g的卷积表示该像素位置的事件与其周围邻域内事件的空间相关性,用δ
(m,n)
表示:
[0016]
[0017]
每个像素位置的空间邻域面积设为2r
×
2r,(j,k)表示空间邻域内某一像素位置,其中,j∈[m-r,m+r],k∈[n-r,n+r]且j,k为整数。所使用的高斯核函数的表达式为
[0018][0019]
其中,σ表示标准偏差,x、y表示高斯核函数的两个变量。
[0020]
通过设置合适的空间相关性阈值δ
thr
来过滤掉在空间域上孤立的噪声事件。具体操作如下:如果像素位置(m,n)所产生的事件与其周围邻域内事件的相关性δ
(m,n)
小于预先设定的空间相关性阈值δ
thr
,即δ
(m,n)
<δ
thr
,则认为该像素位置的事件是噪声事件,因此将其从事件流中删除,否则将保留下来。最终去噪之后像素位置(m,n)的事件为
[0021][0022]
第一种技术方案,一种基于仿生分层脉冲神经网络的aer对象识别方法的过程是:首先将aer传感器输出的原始事件流数据进行去噪;然后,将去噪后的事件流输入给时空特征提取和分类模块,最后输出分类结果;
[0023]
所述时空特征提取和分类模块用于事件流时空特征提取和分类:
[0024]
时空特征提取和分类的流程图如图2所示,采用基于奖励调节stdp(r-stdp)学习算法的仿生分层snn来进行时空特征提取和分类,使用的网络结构与hmax模型相同,有s1-c1-s2-c2四层。
[0025]
(1)s1层特征提取:去噪后的事件流数据输入给s1层进行初级时空特征提取,在这里共使用16个不同的gabor滤波器(4个不同尺度和4个不同方向)密集覆盖输入场景。每个输入事件与这些gabor滤波器进行事件驱动卷积。gabor滤波器卷积核go计算为:
[0026][0027]
其中x=x cosθ+y sinθ,y=-x sinθ+y cosθ,x和y是分别是像素的水平和垂直位置,参数λ是余弦因子的波长,θ是方向,σ是有效宽度,γ为纵横比。进行事件驱动卷积时,首先将s1层各特征图的初始响应值设置为0,当输入某个事件时,将每个卷积核覆盖到对应特征图上,卷积核的中心位置对应于该事件的像素位置。通过将卷积核的每个元素添加到该特征图来更新特征图的响应。同时特征图中的每个值的大小随时间按照恒定的变化率τ
leak
向零减少,最终得到s1层特征值。
[0028]
(2)s1层特征编码:将事件驱动卷积后得到的s1层特征值编码成脉冲时间,以输入给后面的网络层进行后续的特征提取和分类。在这里使用强度到延迟的编码方案:对于s1层的每个二维特征图,如果其某位置的特征值为r,则该位置对应的神经元脉冲放电时间为1/r。这样将s1层特征值编码成脉冲时间,得到s1层各层每个位置的神经元的脉冲时间。
[0029]
(3)c1层池化操作:将s1层编码后的脉冲时间输入给c1层进行池化操作,每个c1神经元从其相应池化窗口接收输入脉冲,引入侧向抑制机制为:如果c1层某特征图上某个位置的神经元放电,则位于该层其他特征图上相同位置的c1神经元的电位被重置为0,使其不放电。每个池化窗口只输出该窗口接收到的最早脉冲。此脉冲时间即为该c1神经元的放电
时间。
[0030]
(4)s2层特征提取:c1层神经元的放电脉冲输入给r-stdp卷积层(s2层)来提取更复杂的特征。每个s2层神经元接收s2层同一卷积窗口内c1层神经元的放电脉冲。在每个时间步长,s2层第l个神经元的膜电位更新如下:
[0031]vl
(t
step
)=v
l
(t
step-1)+∑
pwplsp
(t
step-1)
ꢀꢀꢀ
(8)
[0032]
其中v
l
(t
step
)是第t
step
个时间步长时第l个神经元的膜电位,t
step
=1,2,

。w
pl
为该神经元与其第p个突触前神经元之间的突触权值,s
p
为第p个突触前神经元的脉冲序列,如果该突触前神经元在上一个时间步长时放电,则s
p
(t
step-1)=1,否则s
p
(t
step-1)=0。v
l
(t
step
)更新之后,如果该神经元的膜电位超过设定的膜电位阈值,则该神经元发放脉冲,将其脉冲时间记为t
step
,之后其相应的脉冲序列值和膜电位值分别重置为1和0。在s2层也采用了侧向抑制机制,即当s2层某特征图的某位置的神经元放电时,其他特征图上同一位置的神经元的膜电位被重置为零,直到下一个输入到达。此外,同一特征图的卷积窗口内的神经元共享输入突触权值,该窗口内的最早放电的神经元根据r-stdp学习规则修改共享的突触权值。突触权值的修改量计算如下:
[0033][0034]
其中w
pl
是该层的第l个神经元与该神经元的第p个突触前神经元之间的突触权值。t
l
是该层第l个神经元的放电时间,t
p
分别是该神经元的第p个突触前神经元的放电时间。α,β是两个控制因子,如果网络正确识别样本,则反馈信号是奖励信号,则α=1,β=0。反之,反馈信号是惩罚信号,则α=0和β=1。是r-stdp学习规则的学习率,它可以调整权值变化的大小。
[0035]
(5)c2层网络分类决策:将s2层神经元的放电脉冲输入给网络的决策层(c2层)执行全局最大池化操作并进行网络决策。c2层根据s2层神经元发出的最早的脉冲信号进行决策。在网络学习之前,将c2层神经元根据输入类别的数量分成若干组,每组c2神经元对应于一种输入类别的标签,网络对输入样本类别的决策被定义为在该层最早放电的神经元所在组的标签。当网络训练次数达到预先设定值时,会输出分类结果,反之将继续执行训练。训练完成后,将网络s2层的突触权值保存下来。测试样本需要先进行s1层特征提取、s1特征编码和c1层池化操作,然后将c1层输出与保存的s2层突触权值进行卷积操作,将卷积之后的结果输入给c2层进行决策,最后输出测试样本的分类精度。
[0036]
所述的基于仿生分层脉冲神经网络的aer对象识别方法可处理aer视觉传感器输出的原始事件流数据,例如mnist-dvs数据集、poker-dvs数据集或n-cars数据集等aer数据集中的原始事件流数据。
[0037]
本发明还提供一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序在被处理核执行时实现所述的基于仿生分层脉冲神经网络的aer对象识别方法。
[0038]
与现有技术相比,本发明的有益效果是:
[0039]
本发明提出的基于奖励调节stdp学习规则(stdp的英文全称为spike-timing-dependent plasticity,汉语释义为脉冲时间依赖突触可塑性)的仿生分层脉冲神经网络
将传统图像的基于奖励调节stdp学习规则的脉冲神经网络创造性地应用在aer事件流数据上,可以深入提取事件流数据的时空特征,分类时充分利用了脉冲的时间信息,可以提高分类准确性,能够提取更加复杂的特征。
[0040]
本发明识别方法中采用基于脉冲神经元的事件流去噪方式,综合考虑事件的时间和空间信息,计算简便,去噪效果好,计算量低,速度快。
[0041]
本技术在基于gabor滤波器的事件驱动卷积层提取事件流数据的初级特征之后,采用基于奖励调节stdp算法的卷积层进一步提取复杂特征,之后利用基于脉冲神经元的全局池化层进行分类决策。本网络与其他仿生分层snns在三种常用的aer基准数据集上分类精度,本发明识别方法的分类精度都优于对比算法,其中对于较简单的poker-dvs数据集,本网络的分类精度达到了100%,对于较复杂的mnist-dvs数据集,本网络在该数据集上获得94.99%的分类精度,比gabor滤波器和基于软概率分类器结合的snn方法、gabor滤波器和基于tempotron规则的全连接snn结合的方法、以及gabor滤波器和基于stdp规则的全连接snn结合的方法,精度分别高出16.86%、6.85%、和5.03%。而对于在现实环境中记录的n-cars数据集,特征更复杂识别难度更大,本网络在该数据集上获得87.54%的分类精度,分别比gabor滤波器和基于软概率分类器结合的snn方法、gabor滤波器和基于tempotron规则的全连接snn结合的方法高出31.44%和12.74%。实验结果表明,将事件驱动卷积和基于奖励调节stdp学习算法的卷积相结合,可以更加充分的提取事件流数据的时空特征,并且分类性能有很大的提高。
附图说明
[0042]
图1是本发明提出的aer对象识别方法的总体结构流程示意图。
[0043]
图2是本发明事件流数据时空特征提取和分类的流程图。
[0044]
图3是aer数据集为mnist-dvs数据集时,图片去噪前后的二维重构图像。
[0045]
图4是aer数据集为n-cars数据集时,图片去噪前后的二维重构图像。
具体实施方式
[0046]
下面结合实施例及附图进一步解释本发明,但并不以此作为对本技术保护范围的限定。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互结合。
[0047]
实施例1
[0048]
本实施例提供一种了面向aer传感器事件流数据的对象识别方法,可以直接处理aer传感器输出的原始事件流数据,完成事件流数据的去噪、特征提取和分类识别。
[0049]
下面以一个aer数据集(mnsit-dvs,(mixed national institute of standards and technology database)是美国国家标准与技术研究院收集整理的大型手写数字数据库,mnsit-dvs事件流形式的数据集)为例,详细介绍该数据集去噪、特征提取和分类识别的全过程。
[0050]
mnsit-dvs数据集共10000个事件流数据样本,样本分辨率为28
×
28,其中9000个样本构成训练集,其余1000个样本构成测试集。
[0051]
首先使用本发明提出的基于脉冲神经元的事件流去噪方式对mnsit-dvs数据集的
87003.20ghz cpu,内存为32g;gpu为nvidiageforce rtx 2080ti gpu,内存为11gb。
[0064]
采用基于脉冲神经元的事件流去噪方式,综合考虑事件的时间和空间信息,去噪效果好,计算量低,速度快。
[0065]
实施例2
[0066]
本实施例面向aer传感器事件流数据的对象识别方法,可以直接处理aer传感器输出的原始事件流数据,完成事件流数据的去噪、特征提取和分类识别。
[0067]
将去噪之后的事件流训练样本数据集输入给仿生分层脉冲神经网络进行时空特征提取和分类,流程图如图2所示。首先事件流数据输入给s1层进行初级特征提取,在s1层使用了16个gabor滤波器(4个不同尺度和4个不同方向)密集覆盖输入场景,即在输入场景的每个像素位置处使用了16个滤波器。每个输入事件ei=(ti,xi,yi)与这些gabor滤波器的卷积核进行事件驱动卷积,其中ti是第i个事件的时间戳表示该事件的输出时间,(xi,yi)是该事件在传感器中相应像素位置。gabor滤波器的卷积核计算为:
[0068][0069]
x=x cosθ+y sinθ
[0070]
y=-x sinθ+y cosθ
[0071]
其中,x和y是像素的水平和垂直位置,x和y用于实现定向过滤器的旋转,参数λ是余弦因子的波长。θ是方向。σ是有效宽度。γ称为纵横比。对于mnist-dvs数据集,所使用的gabor滤波器的各参数如表1所示。
[0072]
表1mnist-dvs数据集对应的s1层gabor滤波器参数
[0073][0074]
事件驱动卷积的操作如下:首先将s1层的特征图初始值设置为0,当输入事件ei=(ti,xi,yi)时,将每个卷积核覆盖到特征图上,卷积核的中心位置对应于像素位置(xi,yi)。通过将卷积核的每个元素添加到该特征图来更新特征图的值。参考lif神经元的电流泄漏机制,在这里采用了遗忘机制来消除非常旧的事件对当前特征图的影响,即特征图中的每个值的大小都随时间以恒定的线性漏率向零减少。mnist-dvs数据集的泄露率τ
leak
=10s-1
。这样,每个样本的事件流数据经过s1层后,可得到s1层的16个特征图。
[0075]
然后使用强度到延迟的脉冲时间编码方案将mnist-dvs数据集每个样本的16个s1特征图编码成脉冲时间序列。对于每一个s1特征图,如果像素位置(x,y)处的特征值为r,则该位置对应的神经元脉冲放电时间为1/r。也就是说在s1层特征图中强度值越大,相应的脉冲延迟时间越短,即脉冲时间越早。将编码后的所有脉冲时间按照数量平均分配到15个脉冲时间数据包中。这些数据包按照时间先后顺序依次传给网络后续各层,且在每个时间步长,网络每层只处理一个脉冲时间数据包。
[0076]
接下来将mnist-dvs数据集每个样本的16个s1层特征图编码后的脉冲时间序列输
入给c1层进行池化操作。每个c1神经元从其池化窗口接收输入脉冲后,将池化窗口内的最早脉冲时间记为该c1神经元的脉冲时间。如果c1层某特征图上某个位置的神经元放电,则位于该层其他特征图上相同位置的c1神经元的电位被重置为0,使其不放电。
[0077]
经过c1层池化操作之后,mnist-dvs数据集的每个样本有16个c1特征图,特征图的每个值为对应位置c1神经元的脉冲。将c1特征图输入给r-stdp卷积层(s2层)来提取更复杂的特征。对于mnist-dvs数据集,s2层有150个特征图。每个特征图的每个s2神经元接收其卷积窗口内c1层各特征图的神经元脉冲。在接收输入脉冲后,s2神经元更新其膜电位值。在每个时间步长,s2层第l个神经元的膜电位更新如下:
[0078]vl
(t
step
)=v
l
(t
step-1)+∑
pwpl
ε
p
(t
step-1)
ꢀꢀꢀ
(8)
[0079]
其中v
l
(t
step
)是第t
step
个时间步长时第l个神经元的膜电位,t
step
=1,2,

,15。w
pl
为该神经元与其第p个突触前神经元之间的突触权值,s
p
为第p个突触前神经元的脉冲序列,如果该突触前神经元在上一个时间步长时放电,则s
p
(t
step-1)=1,否则s
p
(t
step-1)=0。v
l
(t
step
)更新之后,如果该神经元的膜电位超过设定的膜电位阈值v
thr0
,则该神经元发放脉冲,将其脉冲时间记为t
step
,之后其相应的脉冲序列值和膜电位值分别重置为1和0。这里膜电位阈值v
thr0
取值为50。s2层也采用了侧向抑制机制,当s2层某特征图的某位置的神经元放电时,其他特征图上同一位置的神经元的膜电位被重置为零,直到下一个输入到达。同一特征图的卷积窗口内的最早放电的s2神经元根据r-stdp学习规则修改该层特征图共享的突触权值。突触权值的修改量计算如下:
[0080][0081]
其中w
pl
是该层的第l个神经元与该神经元的第p个突触前神经元之间的突触权值。t
l
是该层第l个神经元的放电时间,t
p
分别是该神经元的第p个突触前神经元的放电时间。α,β是两个控制因子,如果网络正确识别样本,则反馈信号是奖励信号,则α=1,β=0。反之,反馈信号是惩罚信号,则α=0和β=1。是r-stdp学习规则的学习率,它可以调整权值变化的大小。对于mnistdvs数据集,s2层的学习率s2层的初始突触权值是随机产生的,平均值为0.8,标准差为0.05。
[0082]
经过s2层卷积操作之后,每个s2层特征图的每个位置的输出为对应位置s2神经元的脉冲。最后将s2层得到的特征图输入给网络的决策层(c2层)执行全局最大池化操作并进行网络决策,即每个c2神经元的脉冲时间为其对应的池化窗口内的最早放电的s2神经元的脉冲时间。
[0083]
在网络学习之前,将c2神经元根据输入类别的数量分成若干组,每组神经元对应于一种输入类别的标签。对于10分类的mnist-dvs数据集,c2神经元被分成10组,每组设置了15个神经元,每组对应于一种类别的标签。通过这种方式,网络对mnist-dvs训练数据集中的每个样本类别的决策被定义为在决策层中放电最早的c2神经元所在分组的标签。如果网络的决策是正确的(不正确的),网络将会获得奖励(惩罚)信号,该信号被用来调节r-stdp卷积层输入突触权值的修改。对于mnist-dvs数据集当网络训练次数达到epoch=80时,表示网络训练完成,反之将继续执行训练。
[0084]
训练完成后,将网络s2层的突触权值矩阵保存下来。然后将mnist-dvs数据集的1000个测试样本经过去噪处理后,依次输入给仿生分层脉冲神经网络,这里网络s2层的突触权值不再根据奖励调节stdp算法修改,使用训练完成后保存的突触权值。由c2层进行每个样本类别的判别,最后输出mnist-dvs数据集测试样本的分类精度为94.99%。
[0085]
表2本网络与其他仿生分层snns在三种事件流数据集上分类精度
[0086][0087]
本发明未述及之处适用于现有技术。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1