1.本发明属于机器学习中的深度学习领域,具体涉及一种基于改进脉冲神经网络的神经形态视觉目标分类方法。
背景技术:2.近年来,以人工神经网络(artificial neural networks,anns)为代表的深度学习在图像识别、自然语言处理等领域取得了巨大的成功,但由于人工神经网络模型运行机制与生物学中实际观察到的大脑运行机制有着根本不同,其难以实现真正的强人工智能。脉冲神经网络(spiking neural networks,snns)以更具生物可解释性的脉冲神经元模型作为基本单元,与基于脉冲频率编码信息的人工神经网络相比,拥有低时延和低能耗等优势,可以模拟各种神经信号和任意的连续函数,是进行复杂时空信息处理的有效工具。
3.以“事件(脉冲)”为基础的神经形态视觉事件流由基于仿生学原理设计的事件相机通过异步测量每个像素点的亮度变化而产生,事件流对亮度变化的时间、位置和亮度变化极性进行编码。与传统相机相比,事件相机提供了具有吸引力的性能:高时间分辨率(微秒级)、非常高的动态范围(140db vs 60db)、高像素带宽(khz数量级),从而有效减少了运动模糊。由于snns对输入脉冲的处理具有超低时延特性,因此通常使用脉冲神经网络来处理视觉事件流,从而充分利用视觉事件流的高时间分辨率进行实时输出(微秒级时延输出)。然而现有的典型脉冲神经网络结构难以充分利用脉冲事件流数据的样本容量,故其视觉目标分类上的表现不如人工神经网络。
4.目标识别与分类是神经形态视觉的一个重要任务。目前,现有的神经形态视觉目标识别与分类学习算法主要有如下三种类型:
5.(1)基于时间编码的脉冲时间依赖可塑性的非监督式算法。时间编码方式使得这种学习算法可以有与输入几乎同步的输出,但时间依赖可塑性学习算法主要通过局部的神经元活动来改变突触权重,很难实现高性能。
6.(2)基于频率编码的ann转snn非直接训练式监督算法。通过将训练好的anns模型映射为对应的snns,使得这种学习算法目前可以获取与anns相当的网络性能。但是,这种转换方法并没有利用事件流中的时间信息,且存在着诸多约束条件,例如激活函数只能使用relu等。
7.(3)基于频率编码的误差反向传播直接训练式监督算法。通过训练误差在时间和空间上进行反向传播来进行突触的权重的学习,代表性算法为基于时间的反向传播算法(backpropagation
‑
through
‑
time,bptt)。但是,由于脉冲函数不可微分等原因,在深层snns在训练中存在梯度消失(爆炸)等问题,难以获取好的网络性能。
8.现有的基于脉冲神经网络的神经形态视觉目标分类方法,无论是时间编码方式还是频率编码方式中的哪一种,脉冲神经网络结构(由于梯度问题,网络较浅)和训练方式(转换方法不能利用时间信息)存在的固有问题,使得神经形态视觉目标分类准确率的提升都是一个难题。现有技术中,基于lif(leaky integrity and fire)神经元模型的脉冲神经网
络使用误差反向传播算法进行监督学习,这使得研究者们可以使用gpu进行加速训练,还可以使用在深度学习中十分成熟的pytorch等训练工具。一般地,较深的网络结构是提升网络性能的必要条件,然而训练中存在的脉冲不可微分导致的梯度问题使得深度脉冲神经网络在训练中难以收敛。
技术实现要素:9.为克服上述现有技术的不足,本发明提供了一种基于改进脉冲神经网络的神经形态视觉目标分类方法。该方法通过对输入数据进行重新聚合,改进脉冲神经网络基本构造神经元模型,来实现高性能的神经形态视觉目标分类。本发明提出的方法首先将脉冲事件流数据聚合成事件帧序列,在训练网络时采用时间随机裁剪方法确定输入网络的数据,这相当于增加可供网络训练的数据量;接着改进了构建了基于改进lif神经元的脉冲神经网络,通过加强网络在较长时间序列中提取时空特征的能力,避免了训练深度脉冲神经网络,使得浅层改进脉冲神经网络在神经形态视觉目标分类任务中也能得到较高的准确率。
10.为实现上述目的,本发明采用如下技术方案来实现的:
11.一种基于改进脉冲神经网络的神经形态视觉目标分类方法,该方法首先将脉冲事件流数据聚合成事件帧序列,在训练网络时采用时间随机裁剪方法确定输入网络的数据,这相当于增加可供网络训练的数据量;接着改进了构建了基于改进lif神经元的脉冲神经网络,通过加强网络在较长时间序列中提取时空特征的能力,避免了训练深度脉冲神经网络,使得浅层改进脉冲神经网络在神经形态视觉目标分类任务中也能得到较高的准确率。
12.本发明进一步的改进在于,该方法具体包括以下步骤:
13.s1:获取神经形态视觉目标分类数据集;
14.s2:脉冲事件流序列化聚合:将神经形态视觉目标分类数据集中的时空脉冲事件流数据,按照设定的时间分辨率dt聚合成新的事件帧序列数据;
15.s3:构建改进脉冲神经网络模型:改进泄露
‑
积累
‑
发射lif脉冲神经元在时间维度上的突触连接方式,基于改进lif神经元层搭建改进脉冲神经网络;
16.s4:对于脉冲事件流序列化聚合后的数据集,从序列中随机抽取样本作为输入,训练和测试所构建的改进脉冲神经网络;
17.s5:保存训练好的改进脉冲神经网络结构和网络参数,该网络参数即为对应的神经形态视觉目标分类所需要的参数。
18.本发明进一步的改进在于,步骤s2具体分三步进行:
19.第一步,获取神经形态视觉目标分类数据集中时空脉冲事件流,由集合e={e
i
|e
i
=[x
i
,y
i
,t
′
i
,p
i
]}确定;其中e
i
为脉冲事件流中的第i个脉冲事件,(x
i
,y
i
)为第i个脉冲事件的像素坐标,t
′
i
为第i个脉冲事件在整个时间流中的时间戳,p
i
为第i个脉冲事件的光强变化极性,事件相机异步输脉冲事件流的时间分辨率为dt
′
,空间分辨率为h
×
w;
[0020]
第二步,基于事件相机输出的脉冲事件流,聚合时间分辨率为dt
′
的事件帧,以t
′
时刻聚合为例,将t
′
时刻产生的若干个事件集合e
t
′
组装成张量x
t
′
,其中,e
t
′
={e
i
|e
i
=[x
i
,y
i
,t
′
,p
i
]},x
t
′
∈r
h
×
w
×2;
[0021]
第三步,基于时间分辨率为dt
′
的事件帧,x
t
=f(x
′
t
)生成t时刻的事件帧张量x
t
∈r
h
×
w
×2,其中,dt=β
×
dt
′
,β为聚合时间因子;x
′
t
={x
t
′
|t
′
∈[β
×
t,β
×
(t+1)
‑
1]};f为累加
操作等一般性计算操作。
[0022]
本发明进一步的改进在于,步骤s3中,改进lif脉冲神经元层数学表达式为:
[0023][0024]
其中,x
t,n
‑1为t时刻第n
‑
1层输入的事件帧,h
t
‑
1,n
为t
‑
1时刻第n层的内部状态量,u
t,n
为t时刻第n层的膜电势,x
t,n
为t时刻第n层传递到下一层的空间输出,h
t,n
为t时刻第n层传递到下一时刻的时间输出。
[0025]
本发明进一步的改进在于,rnns_model构成模型的网络为循环神经网络;
[0026]
所述lif_model的数学表达式为:
[0027][0028]
其中,函数g为阶跃函数,其中,函数g为阶跃函数,表示hadamard乘积;
[0029]
基于改进lif脉冲神经元层,lif神经元层和全连接层,构建改进脉冲神经网络。
[0030]
本发明进一步的改进在于,步骤s4具体包括:
[0031]
在训练改进脉冲神经网络时,若事件帧数据按照设定的时间分辨率dt一共生成的t
total
个事件帧,从中随机抽取t个事件帧作为训练输入,t<t
total
;
[0032]
在测试改进脉冲神经网络时,使用滑动窗口方法在时间维度上对事件帧序列进行预处理,获得固定大小为t的预分割片段,作为测试数据;预分割片段设置为m个,对同一个数据预分割出来的m份测试数据输入网络得到m个预测结果,当有m/2个以上的结果预测正确时,判定这个测试数据预测正确。
[0033]
相对于现有技术,本发明至少具有如下有益的技术效果:
[0034]
1、本发明所述学习系统中,通过将事件流数据重新聚合成事件帧数据(张量数据),使得脉冲神经网络学习和推理中可以使用gpu作为训练加速工具、使用pytorch等深度学习平台语言工具。
[0035]
2、本发明所述学习系统中,通过使用随机时间裁剪方法获取t个事件帧作为训练输入进行网络训练,这相当于增加了可供训练使用的数据量,因此能够有效提升所获取的网络模型的性能。
[0036]
3、本发明提供了一类改进lif神经元模型。使用改进lif神经元模型组成全连接(卷积)脉冲神经网络,相对于基于lif模型的脉冲神经网络能够大幅度提升神经形态视觉的目标识别与分类精确度。
附图说明
[0037]
图1为本发明所提供的一种基于改进脉冲神经网络的神经形态视觉目标分类方法流程示意图。
[0038]
图2为神经形态视觉数据集cifar10
‑
dvs中的一个事件流数据(鱼类),经过脉冲事件流序列化聚合模块后的一种输出。即,将100,000微秒的脉冲事件流聚合成9个分辨率为10毫秒的事件帧。
[0039]
图3为改进脉冲神经网络的一种网络构造方式。
[0040]
图4为lif脉冲神经元模型示意图。
[0041]
图5为改进lif脉冲神经元(rnns_lif)模型示意图。
[0042]
图6为一种改进lif脉冲神经元(rnn_lif)模型示意图。
[0043]
图7为一种改进lif脉冲神经元(lstm_lif)模型示意图。
[0044]
图8为一种改进lif脉冲神经元(gru_lif)模型示意图。
具体实施方式
[0045]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0046]
本发明的目的是提供一种基于改进脉冲神经网络的神经形态视觉目标分类方法,有效的解决神经形态视觉的目标识别与分类问题。为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0047]
图1为本发明所提供的一种基于改进脉冲神经网络的神经形态视觉目标分类方法流程示意图,包括:
[0048]
s1:获取神经形态视觉目标分类数据集。
[0049]
s2:脉冲事件流序列化聚合,将数据集中的时空脉冲事件流数据,按照设定的时间分辨率dt聚合成新的事件帧序列数据,具体分三步进行:
[0050]
第一步,获取神经形态视觉目标分类数据集中时空脉冲事件流。所述时空脉冲事件流包含了多个时空脉冲事件,采用地址事件表达协议进行描述。具体地,所述时空脉冲事件流由集合e={e
i
|e
i
=[x
i
,y
i
,t
′
i
,p
i
]}确定;其中e
i
为脉冲事件流中的第i个脉冲事件,(x
i
,y
i
)为第i个脉冲事件的像素坐标,t
′
i
为第i个脉冲事件在整个时间流中的时间戳,p
i
为第i个脉冲事件的光强变化极性。其中,事件相机异步输脉冲事件流的时间分辨率为dt
′
,空间分辨率为h
×
w。
[0051]
第二步,基于事件相机输出的脉冲事件流,聚合时间分辨率为dt
′
的事件帧。所述事件帧序列采用张量进行描述。具体地,以t
′
时刻聚合为例,将t
′
时刻产生的若干个事件集合e
t
′
组装成张量x
t
′
。其中,e
t
′
={e
i
|e
i
=[x
i
,y
i
,t
′
,p
i
]},x
t
′
∈r
h
×
w
×2。
[0052]
第三步,基于时间分辨率为dt
′
的事件帧,生成时间分辨率为dt的事件帧。即,使用公式x
t
=f(x
′
t
)生成t时刻的事件帧张量x
t
∈r
h
×
w
×2。其中,dt=β
×
dt
′
,β为聚合时间因子;x
′
t
={x
t
′
|t
′
∈[β
×
t,β
×
(t+1)
‑
1]};f为一般性聚合函数,可以是累加操作、加权累加操作或“与或非”等操作。
[0053]
当dt
′
=1μs,β=3时,“与”聚合方法的一个示例如下图所示:
[0054]
[0055]
图2展示了,数据集cifar10
‑
dvs数据集中的一个数据(鱼类),当输入为900,000微秒的脉冲事件流,聚合方法为“或”操作,聚合时间因子为10,000时,脉冲事件流序列化聚合模块的输出。即,图2中展示了事件流聚合而成的9个分辨率为10毫秒的事件帧。
[0056]
s3:构建改进脉冲神经网络模型:改进lif脉冲神经元在时间维度上的突触连接方式,基于改进lif神经元层搭建改进脉冲神经网络。通过以一定的网络连接方式组合改进lif脉冲神经元层、lif神经元层和全连接层,构建所需要训练和测试的改进脉冲神经网络。图3展示了一种改进lif脉冲神经元层、lif神经元层和全连接层组建的一种网络连接方式。
[0057]
如图4所示,构造经典脉冲神经网络的lif神经元可以通过如下公式描述:
[0058][0059]
其中,函数g为阶跃函数,其中,函数g为阶跃函数,表示hadamard乘积,x
t,n
‑1为t时刻第n
‑
1层输入的事件帧,h
t
‑
1,n
为t
‑
1时刻第n层的内部状态量;u
t,n
为膜电势;将膜电势与神经元阈值u
th
进行比较,并将x
t,n
作为空间输出传递到下一层,h
t,n
作为lif神经元的时间输出传递到下一时刻。
[0060]
lif神经元通过公式来聚合空间输入x
t,n
‑1和神经元上一时刻内部状态h
t
‑
1,n
。聚合后的结果u
t,n
为lif神经元的膜电势。lif神经元的这种时空信息聚合方式,实际上是一种时间上的直接连接,其缺点在于,在聚合单个lif神经元的膜电势时,只聚合了此神经元在上一个时刻的中间状态,并没有考虑同一层中其他神经元中间状态对神经元膜电势的影响。
[0061]
在本发明中,通过改进lif神经元中膜电势的获取方式,获得了一类改进lif神经元模型。如图5所示,本发明中使用处理序列数据的循环神经网络(recurrent neural networks,rnns)来聚合空间输入x
t,n
‑1和神经元上一时刻内部状态h
t
‑
1,n
。所述改进lif神经元层模型数学表达式为:
[0062][0063]
其中,x
t,n
‑1为t时刻第n
‑
1层输入的事件帧,h
t
‑
1,n
为t
‑
1时刻第n层的内部状态量;将x
t,n
‑1和h
t
‑
1,n
分别作为rnns_model的空间输入和时间输入,选定rnns_model的一个输出作为膜电势u
t,n
;将膜电势与神经元阈值进行比较,并将x
t,n
作为空间输出传递到下一层,h
t,n
作为lif神经元的时间输出传递到下一时刻。
[0064]
所述rnns_model可以是循环神经网络(recurrent neural network,rnn)、长短期记忆网络(lstm,long short
‑
term memory)、双向循环神经网络(bidirectional rnn,bi
‑
rnn)和门控循环单元网络(gated recurrent unit networks,gru)等循环神经网络模型。
[0065]
所述发射或泄露机制(lif_model)表达式为:
[0066]
[0067]
其中,函数g为阶跃函数,其中,函数g为阶跃函数,表示hadamard乘积。
[0068]
如图6所示,一种rnns_model,使用rnn模型聚合x
t,n
‑1和h
t
‑
1,n
获得膜电势u
t,n
,可以得到rnn_lif神经元模型:
[0069][0070]
如图7所示,一种rnns_model,使用lstm模型聚合x
t,n
‑1和h
t
‑
1,n
获得膜电势u
t,n
,可以得到lstm_lif神经元模型:
[0071][0072]
如图8所示,一种rnns_model,使用gru模型聚合x
t,n
‑1和h
t
‑
1,n
获得膜电势u
t,n
,可以得到gru_lif神经元模型:
[0073][0074]
在上文所述模型中,权重矩阵w和输入中间状态向量h或空间输入向量之间的运算为矩阵乘法,此时网络模型为改进脉冲神经网络。当权重矩阵w和输入中间状态向量h或空间输入向量之间的运算为卷积运算时,则网络模型变为改进卷积脉冲神经网络。
[0075]
s4:对于脉冲事件流序列化聚合后的数据集训练和测试所构建的改进脉冲神经网络。
[0076]
在训练改进脉冲神经网络时,使用随机时空裁剪方法从所有事件帧数据中选出t个事件帧作为神经网络模块训练输入,所述t个事件帧采用张量进行描述。即,在单个时空脉冲事件流数据中,按照设定的时间分辨率dt一共可以生成的t
total
个事件帧,从中随机抽取t(t<t
total
)个事件帧作为训练输入。
[0077]
在测试改进脉冲神经网络时,使用滑动窗口方法在时间维度上对事件帧序列进行预处理,获得固定大小为t的预分割片段,作为测试数据。预分割片段设置为m个,对同一个数据预分割出来的m份测试数据输入网络可以得到m个预测结果,当有m/2个以上的结果预测正确时,判定这个测试数据预测正确。
[0078]
s5:保存训练好的改进脉冲神经网络结构和网络参数,该网络参数即为对应的神经形态视觉目标分类所需要的参数。
[0079]
为了更好地说明本发明的有益效果,下面给出本发明所述方法在神经形态视觉目标分类数据集dvs128 gesture上的实验结果。
[0080][0081][0082]
在dvs128 gesture数据集上,我们设置了不同时间分辨率下,事件帧序列t=60时,在全连接脉冲神经网络和卷积脉冲神经网络中的实验结果。由上面两个表格可以看出,无论是基于全连接的脉冲神经网络,还是基于卷积的脉冲神经网络,lif
‑
lstm相比较于经典snn的网络性能在所有时间分辨率上都有所提升。此外,在dt较小时,lif
‑
lstm的提升效果更加明显,这说明lstm
‑
lif相较于经典snn在具有较低时延的同时能够保持高性能。
[0083]
以上列举的仅是本发明的具体实施例。显然,本发明不限于以上实施例,还可以有许多变形。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。