Neuromorphic Vision
神经形态视觉像视网膜一样感知场景:事件相机在微秒级报告每个像素的亮度变化。了解事件的工作原理和用途。
神经形态视觉是一种计算机视觉方法,它像生物视网膜和大脑一样感知并处理图像。其核心设备是事件相机,也称动态视觉传感器 (DVS),其像素彼此独立工作,会在亮度变化发生时立即分别报告,而不是按固定频率捕获完整帧。输出是稀疏的事件流,具有微秒级时间精度、高动态范围且几乎没有运动模糊;静态场景几乎不会产生数据。该领域源于 20 世纪 80 年代末加州理工学院 Carver Mead 团队的神经形态工程,他们的模拟芯片模仿神经回路;而脉冲神经网络是与之相适应的自然处理方式,使用同类稀疏、带时间信息的事件进行计算。
事件相机的工作原理#
每个像素都会存储上次发生事件时感知到的亮度对数值。当当前亮度对数值与该参考值的差异超过对比度阈值时,像素就会发出一个事件,其中编码了位置、时间戳和极性(变亮为 ON,变暗为 OFF),随后重置参考值。在对数空间中工作可让像素响应相对对比度,因此同一传感器既能处理深阴影,也能应对直射阳光;其动态范围约为 140 dB,而帧相机约为 60 dB。
同样的规则也可应用于普通视频,以观察输出有多稀疏:
import cv2
import numpy as np
# Read a clip of a person exercising in front of a fixed camera
cap = cv2.VideoCapture("https://github.com/ultralytics/assets/releases/download/v0.0.0/solution_ci_pose_demo.mp4")
ok, frame = cap.read()
reference = np.log1p(cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY).astype(np.float32))
threshold = 0.2 # contrast threshold on log brightness
events, samples = 0, 0
while True:
ok, frame = cap.read()
if not ok:
break
brightness = np.log1p(cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY).astype(np.float32))
# A pixel fires an ON or OFF event only when its brightness changed by more than the threshold
fired = np.abs(brightness - reference) >= threshold
reference[fired] = brightness[fired]
events += fired.sum()
samples += fired.size
print(f"{events:,} events vs {samples:,} pixel values in frames ({100 * events / samples:.2f}%)")它会打印 233,492 events vs 13,593,600 pixel values in frames (1.72%):使用固定相机时,只有正在锻炼的人会在不同帧之间发生变化,因此事件流所包含的数值仅为完整帧的 1.72%。v2e 等模拟器也会以相同方式将视频转换为合成事件训练数据,并可选择先通过帧插值进行上采样,再添加逐像素阈值偏差和噪声。
事件相机与帧相机#
事件相机适用于快速运动、极端光照场景,以及变化很少的常开边缘 AI感知,其带宽随场景中的活动量变化。它们不记录绝对亮度或颜色;静止相机观察静态场景时不会报告任何信息,而移动相机则会因每条边缘都产生事件而让输出激增。iniVation 的 DAVIS 等混合传感器也会使用相同像素捕获标准帧,许多系统则通过传感器融合结合事件相机和帧相机。标准模型,例如卷积神经网络 (CNNs),需要稠密图像,因此处理流水线要么将事件转换为稠密表示,要么直接处理事件:
- 事件帧: 在一个时间窗口内统计每个像素的 ON 和 OFF 事件,生成任何 CNN 都能读取的双通道图像。
- 时间表面和体素网格: 存储每个像素最近的时间戳,或将事件分到多个时间片中,从而保留普通计数会丢弃的时间信息。
- 神经形态芯片上的脉冲网络: Intel 的 Loihi 2 等处理器会直接将事件作为脉冲处理,并且只有事件到达时才消耗能量。
- 强度重建: E2VID 等网络会从事件流重建灰度视频,因此基于帧的模型也能在其上运行。
Ultralytics YOLO 会从数据集 YAML的 channels 键读取输入通道数,例如 10 通道的 COCO8-Multispectral 数据集,因此 YOLO26目标检测模型可以直接使用由 ON 和 OFF 计数组成的双通道事件帧进行训练。










