前言:用SNN脉冲神经网络做基于事件相机的图像重建的文章
论文地址:【here】
代码地址:【here】
目前的重建方法:用ANN人工神经网络
问题:人工神经网络,计算密集型,消耗大的功率,不利于处理低时延事件
解决:稀疏事件数据可以有效地与神经形态硬件芯片相结合,用于低功率脉冲神经网络(SNN)应用(神经形态芯片可以参考这篇知乎)
因此,本文结合了SNN,提出了第一个基于SNN的做事件相机图像重建的文章,并提出了一种混合电位辅助SNN(PAEVSNN),它利用自适应膜电位(AMP)神经元来改善EVSNN的时间感受域。
1.输入表征
基于距离传播的体素网格,和E2VID一样
2.脉冲神经元的设计
代码
class LIFNode(BaseNode):
def __init__(self, tau: float = 2., v_threshold: float = 1.,
v_reset: float = 0., surrogate_function: Callable = surrogate.Sigmoid(),
detach_reset: bool = False):
assert isinstance(tau, float) and tau > 1.
super().__init__(v_threshold, v_reset, surrogate_function, detach_reset)
self.tau = tau
def extra_repr(self):
return super().extra_repr() + f', tau={self.tau}'
def neuronal_charge(self, x: torch.Tensor):
if self.v_reset is None:
self.v = self.v + (x - self.v) / self.tau
else:
if isinstance(self.v_reset, float) and self.v_reset == 0.:
self.v = self.v + (x - self.v) / self.tau
else:
self.v = self.v + (x - (self.v - self.v_reset)) / self.tau
代码
class MpLIFNode(MpNode):
def __init__(self, tau: float = 2., v_threshold: float = 1.,
v_reset: float = 0., surrogate_function: Callable = surrogate.Sigmoid(),
detach_reset: bool = False):
assert isinstance(tau, float) and tau > 1.
super().__init__(v_threshold, v_reset, surrogate_function, detach_reset)
self.tau = tau
def extra_repr(self):
return super().extra_repr() + f', tau={self.tau}'
def neuronal_charge(self, x: torch.Tensor):
if self.v_reset is None:
self.v = self.v + (x - self.v) / self.tau
else:
if isinstance(self.v_reset, float) and self.v_reset == 0.:
self.v = self.v + (x - self.v) / self.tau
else:
self.v = self.v + (x - (self.v - self.v_reset)) / self.tau
网络架构
第一种:EVSNN
第二种:PA-EVSNN
其中,每一层的SNN神经元网络
可以由构成
其代码层的组成为一层卷积,一层batchnorm归一化和一层LIFNode,实现局部连接的神经元
self.static_conv = nn.Sequential(
nn.Conv2d(1, 32, kernel_size=5, padding=2, bias=False),
nn.BatchNorm2d(32),
LIFNode(v_threshold=v_threshold, tau = tau, v_reset=v_reset, surrogate_function=surrogate.ATan()),
)
为了扩大感受野,网络设计了三层降采样,在更小的感受野区域与领域神经元进行连接,因此实现全局连接
对比实验
该网络与ANN相比,能达到和ANN网络差不多的效果
功耗对比
参数量有明显下降
是第一篇用SNN做重建的文章,用SNN神经元构建卷积网络学权重的思想以及代码部分都很值得学习,但是在功耗和性能上优势不太能体现出来