09

Event Camera × SNN

异步亮度变化与脉冲计算的契合边界

60 MIN
CHAPTER 9/12

先建立一个能用的直觉

事件相机不定时输出整张图,而是像素在对数亮度变化越过阈值时产生事件 e=(x,y,t,p)。p 表示变亮或变暗。

事件流稀疏、异步、时间精度高,与 SNN 的状态和事件通信很契合;但 CNN、Transformer 同样可以处理事件表示。

它到底解决了什么麻烦

事件相机在高速运动、高动态范围与低冗余场景很有价值。算法选择取决于任务、表示、硬件和延迟,不由传感器名称决定。

Math · 不背公式,顺着计算读

每张卡先讲人话,再拆符号、走计算顺序,最后代入一组数。读完后请合上说明,自己复算一次。

公式 1 / 2触发条件
ΔL=logI(t)logI(tref),ΔLC,p=sign(ΔL)\Delta L=\log I(t)-\log I(t_{ref}),\quad |\Delta L|\ge C,\quad p=\mathrm{sign}(\Delta L)
先用一句话读懂

事件相机看的是对数亮度变化量 ΔL,而不是绝对亮度。变化幅度超过阈值 C 才上报;变化方向成为极性 p。

符号分别是谁

L=log I
对数亮度;更接近相对亮度变化
ΔL
当前亮度与该像素上次事件参考亮度之差
C
对比度阈值
p
+1 表示变亮,−1 表示变暗

按这个顺序计算

  1. 对当前像素计算对数亮度。
  2. 减去上次事件对应的参考值,得到 ΔL。
  3. 若 |ΔL|≥C 就产生事件,并令 p=sign(ΔL)。

代入一组数

若参考亮度为 100、当前为 125,则 ΔL=log(125/100)≈0.223;C=0.2 时触发正事件。若降到 80,则 log(0.8)≈−0.223,触发负事件。

公式 2 / 2事件
ek=(xk,yk,tk,pk)e_k=(x_k,y_k,t_k,p_k)
先用一句话读懂

一次事件不是一张小图片,而是一条带时间戳的记录:哪个像素、何时、向哪个方向发生了足够大的亮度变化。

符号分别是谁

k
事件序号,不是固定时间步
xk, yk
触发事件的像素坐标
tk
高精度时间戳
pk
亮度变化极性 ±1

按这个顺序计算

  1. 传感器像素独立监测变化。
  2. 达到阈值的像素立即产生一条记录。
  3. 算法再决定按原始流处理,还是聚合成 frame/voxel。

代入一组数

e=(42,17,3.284 ms,+1) 表示坐标 (42,17) 在 3.284 ms 发生一次变亮事件;它没有携带该像素的 RGB 值。

把几个容易混的概念拆开

Event frame

在时间窗内把事件计数到二维网格;简单但压缩了精确时序。

Voxel grid

把事件按时间分桶并插值到多个通道,便于 CNN/Transformer 使用。

Raw stream

直接处理异步事件保留最多时间信息,但批处理和加速更困难。

跟着机制一步一步走

01

从事件流到网络输入

Raw events 保留最高时间分辨率;event frame 在时间窗内计数;voxel grid 再加入多个时间 bin。表示越规则,越容易使用成熟 CNN/Transformer,但越可能压缩精确时序。

  • Event frame:二维、便于复用图像网络。
  • Voxel grid:保留粗粒度时间结构。
  • Raw event:信息最完整,批处理最困难。
  • SNN:可直接或分 bin 处理,取决于实现与硬件。
02

极性不是颜色

p=+1 表示对数亮度增加越过阈值,p=−1 表示减少。它描述变化方向,不表示物体类别,也不等同于黑白像素。

公式在代码里对应哪一行

这一章更适合在交互实验里逐步观察;代码实验页还提供了完整训练程序。

先写下预测,再动参数

在事件相机实验移动方块:新出现的边缘产生正事件,离开的边缘产生负事件。调速度观察事件密度。

打开交互实验室 →

我最常见到的误解

把 Event Camera 与 SNN 画等号。事件表示可以进入 CNN、Transformer、状态空间模型或混合 ANN–SNN。

到了论文里,它会怎么出现

SpikeSlicer 把 SNN 用作自适应事件切片器,展示了 SNN 作为前端与 ANN 下游协作的另一种路径。

进入论文库 →

别急着翻页,先验算一下

本章检测0/3 已作答

01下列哪项是正确的?

02Voxel grid 相比单张 event frame 主要多保留什么?

03事件极性 p=−1 表示?