事件相机 vs 帧相机:为那 33 毫秒的盲区付费值不值

事件相机以微秒级速度捕捉高速接触,帧相机则有成熟的生态。何时该为那份速度付费?

阅读约 4 分钟

在两帧之间,相机是失明的。在 30 fps 下,这段失明大约持续 33 毫秒,而在这 33 毫秒里,物理世界会发生很多事:手指在玻璃杯上打滑、销钉从孔里弹出、掉落的工具开始翻滚。传统相机拍下了之前和之后,却错过了事件本身。

事件相机(event camera)正是为弥合这个空档而生。它不按固定时钟拍快照,而是每个像素独立工作,在照到它的光发生变化的那一刻就上报。结果是一串带微秒级时间戳的"事件"流,而不是一系列完整图像。对于需要建立和断开接触的机器人来说,这个区别不是表面文章。

但事件相机不是一次免费的升级。它观察世界的方式,几乎是我们所有工具、模型和数据集都没有预料到的。有意思的问题不是它是否更快,它确实更快,而是对于某条特定的采集管线,这份速度是否值得那份代价。

事件相机究竟如何观察

每个像素异步工作,只在它接收到的光的对数强度越过阈值时,才发出一个事件,其内容只有四样东西:x、y、一个时间戳,以及一个表示变亮还是变暗的极性位。时间分辨率达到微秒级。动态范围极大,常常超过 120 dB,因此传感器在强光和阴影里都能工作。它没有运动模糊,而且输出稀疏,因为只有场景中运动或变化的部分才会产生数据。

代价写在同一页上。事件相机不报告绝对亮度,也没有颜色。它的输出速率取决于场景的运动,因此一台剧烈运动的相机可能会把总线淹没在事件里。IEEE Spectrum robotics 对这类神经形态传感器从实验室走向真实产品的缓慢迁移有持续的报道。

帧相机仍然胜出的地方

绝对亮度、颜色和纹理,正是识别物体、读取标签、解析场景所需要的,而事件相机一样都不提供。更大的优势在生态。几乎每一个预训练视觉模型、每一个大型采集数据集,包括像 Ego-Exo4D 这样的第一人称语料,都是基于帧的。卷积和 transformer 管线期待的是稠密的图像张量。帧传感器还便宜、无处不在。如果你明天想微调一个现成的模型,帧就是那个模型早已理解的格式。

表 1:事件相机与帧相机在机器人采集关键维度上的对比
属性事件相机帧相机
时间分辨率微秒级由帧率决定,通常 30 到 60 fps
动态范围极高,超过 120 dB中等
输出形式异步事件流稠密图像帧
颜色
运动模糊几乎没有快速运动下明显
工具与数据集不成熟非常成熟

事件相机为之而生的接触问题

接触事件既快又稀疏,这恰好是事件数据擅长编码的。打滑检测、撞击发生的确切时刻、零件到位时的振动特征、高速插入,这些都发生在亚毫秒尺度上,而一台 30 fps 的相机无法分辨。研究者已经在 arXiv Robotics (cs.RO) 上探索用事件视觉来捕捉这些瞬态。因为输出稀疏,传感器在安静的时段对带宽也很节省,只在真正发生了什么的时候才花费比特。

幻灯片上没人写的代价

承诺在这里撞上账单。异步的事件流并不适配基于帧的网络。你必须把它转换成体素网格、时间面或合成帧,这要么丢掉一部分你为之付费的时间精度,要么需要很少有团队会运行的专门脉冲网络。带标注的大型机器人事件数据集几乎不存在。把异步流与 30 Hz 视频、高频力信号做真正精确的同步也很难。像 Berkeley BAIR blog 这样团队关于表示的工作提醒我们,选错表示会让下游一切都更艰难。而且大多数人工标注工具都假设输入是帧,因此从第一次点击起,标注就很别扭。

事件相机并不给你更多数据。它在真正要紧的时刻给你数据,作为交换,再塞给你一堆全新的问题。

这对数据层意味着什么

那么,你到底该用哪一个

对今天大多数采集管线来说,答案是帧相机做主,事件相机在你确实需要看清高速接触的地方做补充。事件传感器不会取代帧,就像触觉不会取代视觉。真正的问题是,你是否愿意为那 33 毫秒的盲区付出额外的工程代价,以及你的任务是否真的活在那段盲区里。对富接触的操作来说,答案往往是肯定的。

event-cameraframe-camerahigh-speed-visioncontactperception

来源