Spiking-YOLO: Spiking Neural Network for Energy-Efficient Object Detection
Spiking-YOLO: Spiking Neural Network for Energy-Efficient Object Detection
2021-04-19 21:18:15
Paper: https://ojs.aaai.org/index.php/AAAI/article/view/6787/6641
Code (Un-Official): https://github.com/cwq159/PyTorch-Spiking-YOLOv3
1. Background and Motivation:
本文提出一种基于 SNN 的物体检测方法,即从 ANN 到 SNN 的转换,从而实现低功耗的物体检测。为了解决在 ANN2SNN 转换过程中存在的如下两点问题:
a). Inefficiency of conventional normalization methods;
b). Absence of an efficient implementation method of leaky-ReLU in an SNN domain.
作者提出了两种对应的方法进行应对:Channel-wise normalization and signed neuron with an imbalanced threshold.
2. Our Approach:
2.1. Channel-wise data-based normalization
常规的脉冲神经元中,用到阈值的方法进行脉冲发放的控制。但是如何设置该阈值,是一个头大的问题,设置的太低和太高会导致过发放、欠发放的问题。为了解决该问题,权重和阈值权重,均需要仔细的选择,以进行充分平衡的激活。前人也提出了很多归一化的方法,其中,较为著名的是 Layer-wise normalization。但是,作者的实验表明,在 deep SNN 中采用这些方法进行归一化,会在物体检测任务上得到严重降低的结果。然后作者对这种现象进行了分析,如图1所示:
其中,x 轴是 channel index,y 轴是 normalized maximum activation values. 绿色和红色的线分别表示每一层归一化之后的激活 average 和 minimum values。可以发现,被处理后的激活值变得非常小,这使得在物体检测任务上,效果变得很差。为了解决该问题,作者提出了一个更加细粒度的归一化方法,称为 channel-wise normalization 来确保快速和高效的信息传递。与常规 layer-wise 的方式不同,作者这里用的是 channel-wise 的方式:
其中,i 和 j 均为 channel 的索引。
从具体做法的角度来说,第 l 层的权重 w,会被每一层的最大激活 \lambda_j^l 进行归一化。最大激活是从 training dataset 中计算得到的。在紧跟着的 layer,被归一化的激活再乘以上一层的最大激活,以得到归一化前的原始激活先验。算法的细节如 算法1 和 图2 所示。
关于为何会改善发射率,作者专门进行了分析,如图3 和 图4 所示,在多个卷积层上均得到了明显的改善。
2.2. Signed Neuron Featuring imbalanced threshold:
作者提到在 SNN 领域中,有效地 leaky-ReLU 方法并没有得到广泛的讨论。作者提出了一种新的方法来达到 leak-ReLU 的效果(signed neurons with IBT, imbalanced threshold):
如图 6 所示,
3. Experimental results:
==