事件相机中的脉冲神经网络

微信公众号:【事件相机】,交流事件相机的相关科研与应用。欢迎大家关注
请添加图片描述

最近了解了一下脉冲神经网络(Spiking Netrual Network, SNN)在Event Camera中的一些应用。在此稍作整理。由于本人对神经网络了解不多,难免存在理解错误,欢迎大家积极指正。转载请注明出处

1. 脉冲神经网络

脉冲神经网络是1997年[1]提出的一种人工神经网络(Artificial NN, ANN),受生物领域研究的启发,神经网络由多层、每层多个神经元相连。为与CNN(卷积神经网络)等其他ANN进行区分,采用“突触(synaptic)”这个词进行表示。

突触由一个前突触神经元(presynaptic neuron)和后突触神经元(postsynaptic neuron)构成。当前突触兴奋(excitatory)时,会产生一个膜电位(membrance potential),传递一些神经递质给后突触。当膜电位达到一定强度,到达后突触的激活阈值时,后突触会兴奋,产生膜电位,并向后传递。形成了一个完整的SNN。

具体后突触神经元接收到的膜电位强度,有多种模型。一般采用 leaky integrate-and-fire (LIF) 模型,即当到来脉冲时,会累积(integrate)强度,但强度会随着时间进行衰减(leaky),当达到阈值时会激活(fire)。在激活后,产生的膜电位也有多种模型,在论文中称作post-synaptic potential(PSP),一般用kernel形式进行表示。一种常见的Kernel表达式为: K ( t − t i ) = V 0 ( e x p ( − ( t − t i ) τ ) − e x p ( − ( t − t i ) τ s ) ) , K(t-t_i)=V_0(exp(\frac{-(t-t_i)}{\tau})-exp(\frac{-(t-t_i)}{\tau_s})), K(tti)=V0(exp(τ(tti))exp(τs(tti))), 画出的曲线见下图最上方(图中还加入了一个延迟,即刚激活一小段儿时间内没有输出,但简化时可以不考虑)。简化一些的例如指数衰减模型 D ( t ) = H ( t ) e x p ( − t τ u ) D(t) = H(t)exp(\frac{-t}{\tau_u}) D(t)=H(t)exp(τut) ,或再简化为线性衰减。具体的模型应该是与芯片相关的,例如TrueNorth采用的是线性衰减。

在这里插入图片描述图片来源:[2]

coding
SNN的编码方式,主要分为两大类:rate coding 和 temporal coding。前者将脉冲的强度转化为一定时间窗口内的输出脉冲的数量,后者编码考虑了时间的信息。事件相机常用的是temporal coding,毕竟时间信息是非常重要的。具体的膜电位的表达式为: τ d u ( t ) d t = − ( u ( t ) − u r e s t ) + K S , \tau \frac{du(t)}{dt}=-(u(t)-u_{rest})+KS, τdtdu(t)=(u(t)urest)+KS,其中 S = ∑ i δ ( t − S i ) S=\sum_i\delta(t-S_i) S=iδ(tSi)为每个事件的时间戳对应的狄拉克脉冲和; K K K是每个脉冲spike带来的膜电位强度, τ \tau τ是膜电位时间常数。这个式子可以理解为:在没有脉冲到来时,膜电压是不断衰减的,衰减速率和时间常数以及当前电压大小有关,当有脉冲到来时,会突然提升膜电位。写成积分形式是: u ( t ) = ∑ i Δ u ⋅ e x p ( ( t − S i ) / τ ) ⋅ H ( t − t i ) , u(t)=\sum_i \Delta u \cdot exp((t-S_i)/\tau)\cdot H(t-t_i), u(t)=iΔuexp((tSi)/τ)H(tti),可以看出是指数衰减。而 H ( t − t i ) = 1 ,   ( i f   t > = t i ) ;   o r   H ( t − t i ) = 0   ( i f   t < t i ) H(t-t_i)=1 ,\ (if \ t>=t_i); \ or \ H(t-t_i)=0 \ (if \ t<t_i) H(tti)=1, (if t>=ti); or H(tti)=0 (if t<ti)。为什么说这种方式编码进了时间信息?可以看出,当经过一些脉冲后,每个脉冲对膜电位的贡献与时间有关,所以膜电位与脉冲到来的时间是相关的,即引入了时间的信息。

learning
以上部分基本介绍的是SNN如何进行编码(codes),其实编码方式有多种,请查看参考文献[2]。之后我们关心SNN网络如何进行训练。所谓训练,就是加强或减弱前后两个神经元之间的权重。一种常见训练模型,称作 tempotron learning rules,表示了后神经元刺激强度的组成,表达式为: V ( t ) = ∑ i ω i ∑ t i K ( t − t i ) + V r e s e t , V(t)=\sum_i \omega_i \sum_{t_i}K(t-t_i)+V_{reset}, V(t)=iωitiK(tti)+Vreset, 即膜电位是前面所有前突触神经元的加权和。在训练时,我们要调整的就是他们之间的权重 ω i \omega_i ωi

训练也可以分为有监督和无监督两大类,无监督更适用于聚类,一种简单的训练思路是,当前后两个神经元激活顺序是“前-后”时,如果分类结果正确,则加强这两个之间的权重。如果激活顺序是反的,则意味着前神经元对后神经元起抑制作用或不相关,则减少权重。这种方法被称作:Spike-timing-dependent plasticity(STDP),

对于有监督的训练,我们知道对应的标签,所以当标签正确是,进行加强;标签错误时,减小权重。一种权重更新方式见下图:
在这里插入图片描述
图片来源:[3]

在搞清楚基本原理之后,我们分析一种常见的思路。

2. 基于SNN的事件相机目标识别

这里通过[4]这种方法,介绍SNN如何进行目标识别。这种方法被后面论文反复提到,称作HFirst。同时HOTS[5]也是一种反复被提到的方法。总得来说,这些方法大思路基本相同。

在这里插入图片描述
图片来源:[6]。这种方法是[4][5]的结合。由于配图比较清楚,所以用了[6]的配图。

总得来说,从图像到分类结果,主要有两部分:feature extraction(或encoding)和classifier(或learning)。前者负责从event的数据中提出特征(脉冲信号),后面识别脉冲信号的模式,进行分类。

常用的脉冲信号提取的方法是采用Gabor filter。在[1]中作者表示,对于一个回形针,摆放不同角度时,对不同神经元激活程度不同,大概是15°能够明显区分不同神经元活跃程度。所以Gabor filter也是以15°进行划分。以7*7为例,event图像中每个像素都经过7*7的Gabor filter进行处理,输出就是信号的强度。每个像素对应了12个Gabor filter的结果。当某一个的强度累积到阈值后,对应的突触神经元被激活,同时重置掉其他Gabor filter的累积。这一层被称作S1层(Simple 1)。这一层通过类似于池化连接到C1层(Complex 1)。关于S1,C1是SNN中的概念,之前的研究表明貌似人感知就是这种结构。[6]指出,C1的存在降低了Spiking的频率,而[6]又经过了一次S2C2,完成特征提取部分。至于需要经过几次S和C层我目前看到最多也就2层。

提取之后的结果通过Classifier进行分类。学习过程类似于第1章提到的。根据标签和对应类别输出的脉冲频率,调整对应的权重。具体涉及内容较多,不做展开。

3. SNN与CNN在Event Camera中的比较

这里就不得不说一说CNN在EB中的使用。由于CNN是卷积的形式,所以需要有完整的图像。event的图像由两种获得方式:一种是使用重建,得到重建灰度图;另一种是进行累积,固定数量/固定频率/衰减积分等方式得到图像,再进行CNN。

传统的CNN方法也经过了一些改进,例如异步CNN方法(论文忘了名字,待补充参考文献),提出了根据event的异步数据更新CNN的思路;稀疏CNN方法,对于稀疏的累积图进行卷积,提高了效率[7]。

但总得来说,CNN的方法不能充分利用时间信息,而时间信息是事件流的重要信息,而SNN也将脉冲的时间信息进行了编码,所以SNN能够更加充分的利用时间这个信息。但SNN的方法,目前不能够像CNN一样得到bounding box一类的检测结果,暂时只看到了全图的分类与模式识别等应用。所以CNN和SNN的方法各有优劣。

参考文献

  1. Networks of Spiking Neurons. The Third Generation of Neural Network Models
  2. Spiking Neural Networks: Principles and Challenges
  3. An Event-based Hierarchy Model for Object Recognition
  4. HFirst: A Temporal Approach to Object Recognition
  5. HOTS: A Hierarchy of Event-Based Time-Surfaces for Pattern Recognition
  6. An Event-based Hierarchy Model for Object Recognition
  7. Event-based Asynchronous Sparse Convolutional Networks

おすすめ

転載: blog.csdn.net/tfb760/article/details/108921708
おすすめ