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的机制有关系,不是很了解),那么就无法传输,从而导致信息的丢失,影响回归的精确度。
作者的思路:既然使用每一层的效果不佳,maximum activation选的不合适,那么选取每一层中的各通道的maximum activationxiao应该回比上述方法好一些。于是作者就提出了channel-wise normalization(逐通道标准化)。通道就是说卷积层的每一层输出,即特征图有好几层,每一层可称为一个通道(这里我还纠结了好久)。用公式可描述如下:
效果如何呢?
这里先补充一个概念:Fire rate,即脉冲出现的频率,定义为N/T。N为给定的一个时间T内脉冲出现的总次数。
通过这种方法,可以看到下图中使用逐通道标准话的fire rate高于逐层标准化的fire rate。Fire rate变大,即意味着表达的值越大,就不会出现上文所述的表达0.007所带来的挑战。
总结:作者的思路清晰,从发现问题、分析问题、解决问题、进行验证,论述有理有据。虽然说这种方法在原文中method这部分被作者写得十分有用,但在最后的实验中,其对最终的检测效果所起作用不如下文中的方法大。
2、Signed neuron featuring imbalanced threshold(阈值失衡的标签神经元)
Leaky-ReLU:(一种激活函数)
问题:目前的大部分DNN-SNN转换过程中都忽略了激活函数的负数域。可以注意到Tiny YOLO中负值占到了51%(个人觉得这是这篇文章最大的贡献,也是最大的额问题所在,同时也是效果提升的关键所在)。但是在neuromorphic chips(神经形态芯片)中准确的实现leaky-ReLU非常有难度。(为什么难以实现我也不是很清楚)
解决:一种新的激活函数,如下公式和图6所示。
三、结果
1、检测结果
可以看到,文中提出的第二种方法对检测效果的提升作用最大。Vmem 和spike count的区别??
从上图可以看出channel-norm的spiking-YOLO比layer-norm的spiking-YOLO速度更快。这是逐层标准化的第二个作用吧。
2、耗能的比较
可以看出,spiking-YOLO相比Tiny-YOLO耗能更小,而通过逐层标准化的耗能小于逐通道标准化。
四、全文总结与展望
SNN第一次应用于目标检测领域,虽然当前的mAP不是很高,但其在耗能更少,且具有前端性。毕竟SNN被称为第三代人工神经网络,更加符合类脑的逻辑。