Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Spiking Neural Network

脉冲神经网络(SNN)像生物神经元一样,以定时脉冲传递信息,用于低功耗神经形态 AI。内容涵盖神经元和训练。

脉冲神经网络(SNN)是一种神经网络,其神经元通过称为脉冲的离散、全有或全无事件进行通信,这更接近生物神经元的信号传递方式。每个神经元会在内部膜电位中累积传入脉冲,膜电位缓慢衰减;只有当膜电位超过阈值时,神经元才会发出自己的脉冲。信息体现在哪些神经元何时发放脉冲上,因此 SNN 会随着数据到达而处理数据,并且只在发生脉冲时执行计算。这种事件驱动的稀疏性使 SNN 适用于神经形态芯片上的低功耗边缘 AI,也使其天然适合事件相机;事件相机同样以异步事件的形式报告变化。Wolfgang Maass 于 1997 年将 SNN 描述为第三代神经网络模型,此前的两代分别是阈值单元和具有连续激活函数的网络。

脉冲神经元的工作原理#

应用最广泛的模型是漏积分发放(LIF)神经元。在每个时间步,其膜电位都会按固定比例衰减,随后加上加权输入脉冲;如果膜电位达到阈值,神经元就会发出脉冲并重置。输入较弱的神经元无法达到阈值,而输入较强的神经元会频繁发放,因此发放频率可以编码输入强度。下面的模拟使用不同的恒定输入电流驱动三个 LIF 神经元:

import torch

# Three leaky integrate-and-fire neurons, each driven by a constant input current
current = torch.tensor([0.15, 0.3, 0.6])
decay, threshold = 0.8, 1.0  # fraction of potential kept per step, firing threshold

potential = torch.zeros(3)
spike_counts = torch.zeros(3)
for step in range(20):
    potential = decay * potential + current  # leak, then integrate the input
    spikes = (potential >= threshold).float()  # fire where the threshold is crossed
    potential = potential * (1 - spikes)  # reset neurons that fired
    spike_counts += spikes

print(f"Spikes in 20 steps: {spike_counts.tolist()}")

它会输出 Spikes in 20 steps: [0.0, 4.0, 10.0]。输入为 0.15 时,膜电位会稳定在 0.15 / (1 − 0.8) = 0.75,低于阈值,因此该神经元从不发放。输入为 0.3 时会产生 4 个脉冲;输入为 0.6 时则每隔一个时间步就会超过阈值,产生 10 个脉冲。snnTorch等库提供此类 LIF 层,将其作为可在 GPU 上训练的 PyTorch模块。

用脉冲编码信息#

SNN 使用数据前必须先将数据转换为脉冲,编码方式会同时影响准确率和速度:

  • 频率编码:一个数值会转换为发放频率,如上面的模拟所示。这种方式鲁棒,但需要许多时间步才能精确表示数值。
  • 时间编码:一个数值会转换为脉冲的时序,例如亮度较高的像素发放得更早,因此用很少的脉冲就能传递信息。
  • 事件传感器:神经形态视觉相机在像素亮度发生变化时输出类似脉冲的事件,具有微秒级时序且没有固定帧率,因此其数据可以直接输入 SNN。

训练 SNN#

脉冲是阶跃函数,其导数几乎处处为零,因此标准反向传播无法通过它传递梯度。有三种方法可以绕过这一问题。ANN 到 SNN 转换会使用 ReLU激活函数训练普通网络,再将每个激活值映射为发放率。替代梯度训练在前向传播中保留硬脉冲,但在反向传播中用平滑函数的导数代替,然后像训练循环神经网络(RNN)那样通过时间反向传播进行训练。脉冲时序依赖可塑性(STDP)是一种受生物学启发的局部规则:当输入脉冲先于输出脉冲时,它会增强突触,并且能够在没有标签的情况下学习。近期大多数高准确率 SNN 都直接使用替代梯度训练,这种方法所需的时间步远少于转换网络;而转换仍是从现有模型出发最简单的途径。

神经形态硬件#

SNN 在专为其设计的芯片上最节能。神经形态处理器将内存放在许多小型核心旁,通过脉冲消息通信,并且只在脉冲到达时计算;由于脉冲是二进制的,每个突触事件只需进行加法而非乘法。IBM 的 TrueNorth(2014)在单个芯片上集成了 100 万个神经元,曼彻斯特大学的 SpiNNaker 使用大型 ARM 核心阵列,而 Intel 的 Loihi 2则为 Hala Point 提供支持;Hala Point 是一个于 2024 年推出的研究系统,配备 1,152 个 Loihi 2 处理器和 11.5 亿个神经元。在为密集矩阵运算而设计的标准 GPU上,SNN 的运行速度通常比同等的传统网络慢。

SNN 与传统神经网络的比较#

  • 信号:传统网络,包括卷积神经网络(CNN)和 Transformer,会在一次前向传播中将连续值传过每个神经元。SNN 会在多个时间步中传递二进制脉冲,并且任一时刻大多数神经元都保持静默。
  • 准确率:传统网络在标准图像基准上仍然领先;SNN 主要通过替代梯度训练和借鉴传统模型的架构缩小了差距。
  • 效率:在神经形态硬件上,对于事件相机数据流和持续监听音频等稀疏、事件驱动的输入,SNN 的能耗低得多。

应用场景#

  • 基于事件的视觉与机器人:在一项 2024 年发表于《Science Robotics》的研究中,TU Delft 的研究人员使用 Intel Loihi 驱动一架无人机,该无人机搭载完全由脉冲神经网络构成的视觉与控制网络,以 200 Hz 将原始事件相机数据映射为运动指令。
  • 始终开启的传感:关键词检测、手势识别和传感器异常检测都能受益于 SNN:在没有变化时,SNN 几乎不耗电。
  • 目标检测:SpikeYOLO 是由 Xinhao Luo、Man Yao 等人在 ECCV 2024 上提出的脉冲检测器,基于 Ultralytics 代码库构建,并通过脉冲驱动模块简化了 Ultralytics YOLOv8 架构;采用整数值训练和脉冲驱动推理,它在 COCO 上达到 48.9% mAP50-95。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来