跳到主要内容
起居室老虎
返回

Integer-Valued Training and Spike-Driven Inference Spiking Neural Network for High-performance and Energy-efficient Object Detection

1,620 字约 6 分钟

原文:arXiv:2407.20708 · Luo et al., ECCV 2024

摘要: 脑启发的脉冲神经网络(Spiking Neural Networks, SNNs)在生物合理性和低功耗方面相比于人工神经网络(Artificial Neural Networks, ANNs)具有优势。然而,由于性能较差,SNNs 的应用目前仅限于简单的分类任务。在这项工作中,我们专注于缩小 ANNs 和 SNNs 在目标检测任务上的性能差距。我们的设计围绕网络架构和脉冲神经元展开。首先,当将 YOLO 系列模型转换为相应的脉冲版本时,过于复杂的模块设计会导致脉冲退化。我们通过简化原始 YOLO 并结合元 SNN 模块,设计了一种 SpikeYOLO 架构来解决这个问题。其次,在将膜电位转换为二进制脉冲的过程中,目标检测对量化误差更加敏感。为应对这一挑战,我们设计了一种新的脉冲神经元,该神经元在训练期间激活整数值,同时通过在推理过程中扩展虚拟时间步,保持脉冲驱动。我们在静态和神经形态目标检测数据集上验证了所提出的方法。在静态的 COCO 数据集上,我们获得了 66.2% 的 mAP@50 和 48.9% 的 mAP@50:95,分别比之前的最先进 SNN 提高了 15.0% 和 18.7%。在神经形态的 Gen1 数据集上,我们达到了 67.2% 的 mAP@50,比具有相同架构的 ANN 提高了 2.5%,并且能效提高了 5.7 倍。代码:https://github.com/BICLab/SpikeYOLO

1. Intro

目前 Direct-Trained 的 SNN 精度和 ANN 有差距,面临的问题包括:

  1. 量化误差
  2. 像 YOLO 这样比较深的网络直接插入 Neuron,脉冲会逐渐退化,后面的 neuron 几乎不发放,导致模型精度很差

Contributions:

  1. SpikeYOLO:我们在 SNNs 中探索了适用于处理目标检测任务的架构,并提出了 SpikeYOLO,它简化了 YOLOv8 并结合了元 SNN 块。这启发我们,复杂的模块设计在 ANN 中可能适用,但不一定适合 SNN 的架构设计。
  2. I-LIF 脉冲神经元:我们提出了 I-LIF 脉冲神经元,将整数值训练与脉冲驱动推理相结合。前者用于减少脉冲神经元的量化误差,后者则是 SNNs 低功耗特性的基础。
  3. 性能表现:该方法在目标检测数据集上以低功耗实现了出色的准确性,展示了 SNNs 在复杂视觉任务中的潜力。在 COCO 数据集上,我们获得了 66.2% 的 mAP@50 和 48.9% 的 mAP@50:95,分别比之前的最先进 SNN 提高了 15.0% 和 18.7%。在 Gen1 数据集上,SpikeYOLO 比具有相同架构的 ANN 模型高出 2.5%,能效提高了 5.7 倍。

SNN Training Method: 梯度替代,这边没有讨论 STDP 相关的内容。

SNN Architecture Design: 基于 CNN 的和基于 transformer 的,其中 Spiking Resnet 系列的网络长期占据主导地位,因为残差链接可以解决 SNN 随着深度增加出现的性能退化的问题。Transformer 在最近流行起来并且成为 SOTA。SpikeYOLO 借鉴了 YOLOv8 的结构和 Meta-SpikeFormer 的元 SNN 块的思想。

Quantization Errors in SNNs: 转换的方法一般可以增加 timestep 来减少量化误差,但是直接训练的方法不能这么做,所以一般是通过调整 threshold 和膜电位的分布之间的关系。

Object Detection: 反正就是目前的 SNN 的精度都不是很好。

3. Method

3.1. Network Input

input: X∈ℝT×C×H×WX \in \mathbb{R}^{T \times C \times H \times W},TT是 timestep,CC是通道数,H×WH\times W是空间分辨率。静态图像被重复编码成每个 timestep 上的重复输入,网络的第一层将输入的连续值编码成脉冲信号;来自 DVS 的数据一般是在固定的时间窗口内将事件聚合为一帧,然后逐帧输入网络。

3.2. SpikeYOLO Architecture

3.2.1 Network Output

输出NN个目标的(fn,cn,xn,yn,wn,hn)(f_n, c_n, x_n,y_n,w_n,h_n),分别为置信度,类别,中心坐标和尺寸。

3.2.2. Macro Design

单阶段,划分为多个网格,每个网格分开识别。保留传统的 backbone-neck-head 架构,但是删除 ANN 中类似 C2F 这样的在同一个特征图上重复提取特征的操作, 因为这样的操作在 ANN 上可以提高精度,但是换成 SNN 之后表现很差。

image.png

3.2.3. Micro Design

模仿 Meta-SpikeFormer 构建了 Meta-SNN Block,可以写作:

U′=U+SepConv(U),U′′=U′+ChannelConv(U′) U' = U + \text{SepConv}(U),\\ U'' = U' + \text{ChannelConv}(U')

U∈RT×C×H×WU\in R^{T\times C\times H\times W}是输入,SepConv (⋅)\text{SepConv }(\cdot)是一种 inverted separable convolution module,就是首先用 11 的卷积扩展通道数,然后在做其他卷积,然后再用 11 的卷积还原通道数。MobileNetv2 是 77 然后 33,可以写成

SepConv(U)=Convdw2(Convpw2(SN(Convdw1(SN(Convpw1(SN(U)))))))), \text{SepConv}(U) = \text{Conv}_{dw2}(\text{Conv}_{pw2}(\text{SN}(\text{Conv}_{dw1}(\text{SN}(\text{Conv}_{pw1}(\text{SN}(U)))))))),

其中Convdw1(⋅)\text{Conv}_{dw1}(\cdot)和 Convdw2(⋅)\text{Conv}_{dw2}(\cdot) 是深度卷积, Convpw1(⋅)\text{Conv}_{pw1}(\cdot) 和 Convpw2(⋅)\text{Conv}_{pw2}(\cdot) 是点卷积。 SN(⋅)\text{SN}(\cdot) 是脉冲神经元层。ChannelConv(⋅)\text{ChannelConv}(\cdot) 是通道混合器模块,促进了跨通道信息的融合。我们在目标检测任务中重新设计了 ChannelConv(⋅)\text{ChannelConv}(\cdot) 。

对于 SNN-Block-1,有

ChannelConv1(U′)=Conv(SN(Conv(SN(U′)))), \text{ChannelConv1}(U') = \text{Conv}(\text{SN}(\text{Conv}(\text{SN}(U')))),

其中 Conv(⋅)\text{Conv}(\cdot) 是一个扩展比例为 r=4r = 4 的标准卷积。相反,在处理高阶特征时,SNN-Block-2 使用重参数化卷积来最小化参数数量,其表达式为:

ChannelConv2(U′)=RepConv(SN(RepConv(SN(U′)))),RepConv(U′)=Convpw2(Convdw1(Convpw1(U′))), \text{ChannelConv2}(U') = \text{RepConv}(\text{SN}(\text{RepConv}(\text{SN}(U')))),\\ \text{RepConv}(U') = \text{Conv}{pw2}(\text{Conv}_{dw1}(\text{Conv}_{pw1}(U'))),

3.3. I-LIF Spiking Neuron

Integer-LIF 的想法是在训练的时候保持整数的输入输出,而在推理的时候才变成 spike 的形式。

image.png

image.png

在训练的时候,膜电位计算到的数据只 Clip 之后四舍五入,然后发放一个整数给下一层也就是

S[t]=Clip(round(U[t]),0,D) S[t] = \text{Clip}(\text{round}(U[t]), 0, D)

D 是支持的最大的整数。在推理的时候,每个 timestep 被拓展为 D 个 timestep。

4. Experiments

在普通图片数据集 COCO2017 和 DVS 数据集 Gen1 上都做了实验。

image.png

image.png

消融实验:

image.png

image.png

image.png

5. Conclusion

本研究显著缩小了 SNNs 和 ANNs 在目标检测任务上的性能差距。我们通过网络架构和脉冲神经元的设计实现了这一目标。提出的 SpikeYOLO 架构摒弃了原始 YOLO 系列中的复杂模块设计,采用了简单的元脉冲块来构建模型。随后,提出了能够进行整数值训练和脉冲驱动推理的 I-LIF 脉冲神经元,以减少量化误差。我们在 COCO 数据集上将 SNN 领域的性能上限分别提高了 +15.0%(mAP@50)和 +18.7%(mAP@50:95)。在神经形态的 Gen1 数据集中,SpikeYOLO 在相同架构下比 ANN 达到了更好的性能和更低的功耗。此外,我们研究了在不同数据集中具有等效架构的 ANNs 和 SNNs 的性能,结果表明重新设计的 SNN 架构表现更佳。本研究使 SNNs 能够处理复杂的目标检测任务,并能激发 SNNs 在更多视觉场景中的应用。