智能传感器: 像素内计算如何实现 3000 FPS 特征追踪
计算机视觉面临着一个瓶颈问题。在传统的设置中——无论是智能手机、VR 头显还是无人机——摄像头传感器仅仅充当一个“傻瓜式”的容器。它捕获数百万个光子,将其转换为数字值,然后将海量的原始数据流传输到外部处理器 (CPU 或 GPU) 以分析它看到了什么。
这种数据传输代价高昂。它消耗电力,产生延迟,并限制了系统的反应速度。如果你剧烈晃动标准相机,图像会变得模糊,处理器也会丢失它所在位置的追踪。但是,如果传感器不仅仅是一个容器呢?如果每个像素都有自己的大脑呢?
这就是 像素处理器阵列 (Pixel Processor Arrays, PPAs) 的前提。在一篇题为 “Descriptor-In-Pixel: Point-Feature Tracking for Pixel Processor Arrays” 的精彩论文中,来自曼彻斯特大学和 Visionchip Limited 的研究人员提出了一种方法,让传感器本身执行高速特征追踪,从而无需将图像发送到计算机。
结果如何?一个运行速度超过 3000 帧每秒 (FPS) 的系统,即使在剧烈运动中也能可靠地追踪点特征。

如图 1 所示,当标准智能手机摄像头在晃动下变成模糊的一团时,PPA 系统却保持了清晰、连续的追踪。让我们深入了解他们是如何做到这一点的。
硬件: 什么是像素处理器阵列?
要理解软件,我们首先需要理解硬件。研究人员使用了 SCAMP-7 , 这是一款 PPA 传感器原型。与手机中的 CCD 或 CMOS 传感器不同,SCAMP-7 不仅仅拥有光电二极管。

如图 2 所示,该传感器由 \(256 \times 256\) 的 处理单元 (Processing Elements, PEs) 网格组成。每个 PE 包含:
- 光传感器: 用于捕获像素值。
- 本地内存: 数字寄存器 (用于二进制数据) 和模拟寄存器 (用于连续值) 的混合体。
- 处理器: 能够执行算术和逻辑运算。
- 邻域互连: 允许像素与其邻居进行通信。
整个阵列以 SIMD (单指令多数据流) 模式运行。这意味着中央控制器广播一条指令 (例如“将寄存器 A 加到寄存器 B”) ,所有 65,536 个像素会在其本地数据上同时执行该指令。这种大规模并行架构使得“像素内描述符”方法成为可能。
核心概念: 像素内描述符 (Descriptor-In-Pixel)
在传统的计算机视觉 (如 SLAM 或视觉里程计) 中,我们追踪特定的兴趣点——角点或边缘——称为 点特征 (point-features) 。 为了将一个点从一帧追踪到下一帧,计算机通常会提取一个“描述符”,这是一个描述该点周围视觉纹理的独特数字指纹。
研究人员引入了一种称为 像素内描述符 (Descriptor-In-Pixel) 的范式。每个像素处理器不是将图像发送到 CPU 来计算这些指纹,而是计算并 存储 其自身位置的描述符。
1. 创建描述符
该系统使用类似于流行的 BRIEF 或 BRISK 方法的二进制描述符。描述符是通过比较中心点周围成对像素的亮度形成的。

如上面的方程所示,如果像素 \(p_{i(1)}\) 比像素 \(p_{i(2)}\) 亮,则该位为 1;否则为 0。由于 SCAMP-7 上的内存非常紧张,研究人员使用了较短的 8 位描述符。这看起来很小,但由于帧率非常高,对于追踪来说已经足够了。
2. 响应图
一旦每个像素都存储了一个描述符,系统就需要找到特征的位置。它是通过计算 响应图 (Response Map) 来实现的。
在每一帧中,系统将像素内存中存储的描述符与 当前 图像数据进行比较。PPA 计算存储的描述符与新图像的匹配程度。因为这是并行发生的,整个传感器会立即生成相似度的“热力图”。

图 3 展示了这个过程。左上角是输入图像。彩色地图显示了特定描述符与图像“匹配”的位置。
研究人员利用 PPA 的模拟功能改进了标准的二进制匹配 (汉明距离) 。他们不仅仅是计算匹配的位数,而是根据像素的 强度差 对匹配进行加权。

这个公式确保了强烈的视觉特征产生强烈的响应,而微弱、嘈杂的区域 (如平坦的墙壁) 产生低响应,从而使追踪更加可靠。
“拼缀”策略 (The “Patchwork” Strategy)
这是该方法最巧妙的地方。为了执行同时检测 (寻找新特征) 和追踪 (跟随旧特征) ,研究人员将像素阵列划分为不同的区域。

如图 4 所示:
- 追踪补丁: 如果一个特征当前正在被追踪,它的特定描述符会被复制到其最后已知位置周围的一个小的 \(9 \times 9\) 像素补丁中。
- 搜索区域: 在其他所有地方 (图中的白色区域) ,像素加载通用的“搜索描述符”以寻找新的、有趣的点。
这就创建了一个 拼缀响应图 (Patchwork Response Map) 。

在图 5 (左) 中,你可以看到结果。地图大部分是黑暗的,但你可以看到亮点。一些点对应于 \(9 \times 9\) 框内的被追踪特征。其他的则是在搜索区域中弹出的新特征。
算法如何运行
整个过程在传感器上循环运行。这种方法的妙处在于没有任何原始图像数据离开芯片。传感器只输出特征的坐标。
以下是分步流程:

- 更新布局: 系统根据上一帧决定哪些像素是“追踪”像素,哪些是“搜索”像素。
- 计算响应: 并行阵列计算响应图 (如上所述) 。
- 斑点检测: 系统在响应图中寻找明亮的“斑点”。
- 非极大值抑制 (NMS): 为了定位特征的确切中心,它会抑制亮度不是峰值的相邻像素。
- 位置更新: 记录特征的新坐标。如果特征稍微移动,下一帧中的 \(9 \times 9\) 补丁将以新位置为中心。
如果被追踪特征的响应下降得太低 (意味着它被遮挡或丢失) ,系统会将其丢弃,该区域将可用于搜索新特征。
为什么速度改变了一切
你可能会问: 为什么我们需要 3000 FPS?这是不是大材小用?
对于这种特定的追踪方法,高速度实际上是一个使问题变得 更简单 的必要条件。
- 无运动模糊: 在 3000 FPS 下,曝光时间极短。即使你晃动相机,图像仍然清晰。
- 小搜索窗口: 在标准的 30 FPS 相机中,一个点在两帧之间可能会跳跃 50 个像素。你必须搜索一个巨大的区域才能再次找到它。在 3000 FPS 下,一个点的移动非常微小——通常小于一个像素。这使得研究人员能够使用那些小的 \(9 \times 9\) 追踪补丁。

图 7 直观地展示了这种差异。智能手机视频 (右) 是一团模糊的颜色。SCAMP-7 (左) 显示了特征的清晰轨迹 (彩色线条) ,完美地追踪了场景的结构。
性能与结果
研究人员在 SCAMP-7 原型上实现了这一点,并达到了超过 3000 FPS 的速度。

表 1 显示了时间的去向。计算响应图耗时最长 (192 \(\mu\)s) ,但每帧的总时间仍然只有大约 321 \(\mu\)s。
与 FAST 的比较
为了验证鲁棒性,他们将自己的方法与在相同硬件上运行的标准 FAST 角点检测器进行了比较。他们对两种方法进行了不同类型的运动测试: 晃动、扫视和平移。

图 8 揭示了结果。图表显示了“特征寿命”——即一个特征被成功追踪了多久。
- 蓝色条 (我们的) : 显示许多特征被追踪了数秒。
- 红色条 (FAST) : 大多数特征几乎立即丢失 (0-0.5 秒) 。
- 绿线 (比率) : 所提出的方法要好得多,在剧烈运动期间,其保留特征的时间有时是标准方法的 20 倍到 40 倍。
结论
“像素内描述符”论文展示了我们处理计算机视觉方式的根本转变。通过将“大脑”移入“眼睛”,研究人员消除了困扰现代摄像头的带宽瓶颈。
该系统实现了与原始图像相比 >1000 倍的数据传输减少 , 功耗仅为 1 瓦左右,并且运行速度之快让运动模糊成为过去式。虽然由于原型的限制,当前的实现使用了简单的 8 位描述符,但这一概念证明了像素处理器阵列对于敏捷机器人、无人机和 VR 系统等速度和效率至关重要的领域来说,是一项充满希望的技术。
](https://deep-paper.org/en/paper/file-1905/images/cover.png)