先建立一个能用的直觉
事件相机不定时输出整张图,而是像素在对数亮度变化越过阈值时产生事件 e=(x,y,t,p)。p 表示变亮或变暗。
事件流稀疏、异步、时间精度高,与 SNN 的状态和事件通信很契合;但 CNN、Transformer 同样可以处理事件表示。
它到底解决了什么麻烦
事件相机在高速运动、高动态范围与低冗余场景很有价值。算法选择取决于任务、表示、硬件和延迟,不由传感器名称决定。
Math · 不背公式,顺着计算读
每张卡先讲人话,再拆符号、走计算顺序,最后代入一组数。读完后请合上说明,自己复算一次。
事件相机看的是对数亮度变化量 ΔL,而不是绝对亮度。变化幅度超过阈值 C 才上报;变化方向成为极性 p。
符号分别是谁
- L=log I
- 对数亮度;更接近相对亮度变化
- ΔL
- 当前亮度与该像素上次事件参考亮度之差
- C
- 对比度阈值
- p
- +1 表示变亮,−1 表示变暗
按这个顺序计算
- 对当前像素计算对数亮度。
- 减去上次事件对应的参考值,得到 ΔL。
- 若 |ΔL|≥C 就产生事件,并令 p=sign(ΔL)。
代入一组数
若参考亮度为 100、当前为 125,则 ΔL=log(125/100)≈0.223;C=0.2 时触发正事件。若降到 80,则 log(0.8)≈−0.223,触发负事件。
一次事件不是一张小图片,而是一条带时间戳的记录:哪个像素、何时、向哪个方向发生了足够大的亮度变化。
符号分别是谁
- k
- 事件序号,不是固定时间步
- xk, yk
- 触发事件的像素坐标
- tk
- 高精度时间戳
- pk
- 亮度变化极性 ±1
按这个顺序计算
- 传感器像素独立监测变化。
- 达到阈值的像素立即产生一条记录。
- 算法再决定按原始流处理,还是聚合成 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 已作答