Spiking-YOLO:Spiking Neural Network for Energy-Efficient Object Detection

主要贡献:

1.第一次将深度SNN应用到目标检测领域

2.channel-wise normalization (一种新的标准化方法,方便数据的处理)

3.signed neuron with imbalanced threshold (一种新的激活函数)

baseline:Tiny YOLO

一、脉冲神经网络(spiking neural network,简称 SNN)

第一代神经网络是感知器,它是一个简单的神经元模型并且只能处理二进制数据。第二代神经网络包括比较广泛,包括应用较多的BP神经网络。但是从本质来讲,这些神经网络都是基于神经脉冲的频率进行编码( rate coded)。

个人理解,第二代的神经网络的反向传播算法无生物基础,大脑中没有类似机制;而SNN将时间概念引入后,具有较强的生物基础。目前SNN的中文资料很少,第一次接触,可参考以下链接:

https://www.jiqizhixin.com/articles/2018-01-13-7

https://zhuanlan.zhihu.com/p/45208720

https://zhuanlan.zhihu.com/p/66907747

二、Method

1、channel-wise normalization(逐通道标准化)

Layer-wise (逐层标准化):即选取每一层中的最大值(maximum activation)对输入进行标准化。对于输入进行归一化,必须选取合适的maximum activation,过大会导致under-activation,而过小会导致over- activation。

这种方法,对输入进行标准化等同于对该层参数进行标准化,即




脉冲神经网络 芯片 脉冲神经网络应用_目标检测


问题:应用该种方法检测效果不佳

分析:如下图所示,使用该种方法进行标准化,会使得标准化后的某些值趋于零。而对于回归问题,数据的精确传输必然会影响回归的效果。举个例子,如果要传输0.007,则在一个周期T内需要的脉冲数量为1000,如果脉冲数不够(这可能和SNN的机制有关系,不是很了解),那么就无法传输,从而导致信息的丢失,影响回归的精确度。


脉冲神经网络 芯片 脉冲神经网络应用_激活函数_02


作者的思路:既然使用每一层的效果不佳,maximum activation选的不合适,那么选取每一层中的各通道的maximum activationxiao应该回比上述方法好一些。于是作者就提出了channel-wise normalization(逐通道标准化)。通道就是说卷积层的每一层输出,即特征图有好几层,每一层可称为一个通道(这里我还纠结了好久)。用公式可描述如下:


脉冲神经网络 芯片 脉冲神经网络应用_激活函数_03


效果如何呢?

这里先补充一个概念:Fire rate,即脉冲出现的频率,定义为N/T。N为给定的一个时间T内脉冲出现的总次数。

通过这种方法,可以看到下图中使用逐通道标准话的fire rate高于逐层标准化的fire rate。Fire rate变大,即意味着表达的值越大,就不会出现上文所述的表达0.007所带来的挑战。


脉冲神经网络 芯片 脉冲神经网络应用_脉冲神经网络 芯片_04


总结:作者的思路清晰,从发现问题、分析问题、解决问题、进行验证,论述有理有据。虽然说这种方法在原文中method这部分被作者写得十分有用,但在最后的实验中,其对最终的检测效果所起作用不如下文中的方法大。

2、Signed neuron featuring imbalanced threshold(阈值失衡的标签神经元)

Leaky-ReLU:(一种激活函数)


脉冲神经网络 芯片 脉冲神经网络应用_神经网络_05


问题:目前的大部分DNN-SNN转换过程中都忽略了激活函数的负数域。可以注意到Tiny YOLO中负值占到了51%(个人觉得这是这篇文章最大的贡献,也是最大的额问题所在,同时也是效果提升的关键所在)。但是在neuromorphic chips(神经形态芯片)中准确的实现leaky-ReLU非常有难度。(为什么难以实现我也不是很清楚)

解决:一种新的激活函数,如下公式和图6所示。


脉冲神经网络 芯片 脉冲神经网络应用_脉冲神经网络原理及应用_06


脉冲神经网络 芯片 脉冲神经网络应用_目标检测_07


三、结果

1、检测结果


脉冲神经网络 芯片 脉冲神经网络应用_激活函数_08


可以看到,文中提出的第二种方法对检测效果的提升作用最大。Vmem 和spike count的区别??


脉冲神经网络 芯片 脉冲神经网络应用_脉冲神经网络 芯片_09


脉冲神经网络 芯片 脉冲神经网络应用_目标检测_10


从上图可以看出channel-norm的spiking-YOLO比layer-norm的spiking-YOLO速度更快。这是逐层标准化的第二个作用吧。

2、耗能的比较


脉冲神经网络 芯片 脉冲神经网络应用_脉冲神经网络 芯片_11


脉冲神经网络 芯片 脉冲神经网络应用_脉冲神经网络原理及应用_12


可以看出,spiking-YOLO相比Tiny-YOLO耗能更小,而通过逐层标准化的耗能小于逐通道标准化。

四、全文总结与展望

SNN第一次应用于目标检测领域,虽然当前的mAP不是很高,但其在耗能更少,且具有前端性。毕竟SNN被称为第三代人工神经网络,更加符合类脑的逻辑。