StreamRig 如何做多相机 rig 的流式里程计
本文介绍 Yufei Wei 等人在 2026 年提出的论文 StreamRig: Exploiting Intra-Rig Geometry for Streaming Multi-Camera Odometry,下文简称 StreamRig。论文要解决的是:一组固定安装、同步工作的相机不断拍照时,如何利用相机之间已知的几何关系和已经到达的观测,持续估计这组相机的运动?我们从常见方案的缺口出发,跟着几组连续观测走完 StreamRig 的组内感知、历史读取、位姿输出和换锚过程,再解释训练为什么分两阶段、实验各能说明什么。论文页面
设一个移动平台装有几台同步相机,它们朝向不同方向,视野可以重叠,也可以互不重叠。相机刚性固定在同一平台上,彼此的旋转和平移可事先标定;在运动过程中,这些相对位置保持不变。这样的多相机系统称为 rig,文中也用 rig 指它在某一时刻采集的整组图像。里程计要根据连续到达的图像组估计 rig 的运动:选定一台参考相机后,求出它的轨迹,其他相机的轨迹便可由固定外参推得。
一种做法是把整组相机当作一台拥有多个镜头的“广义相机”:在不同时刻找出可能看到同一物体的图像点,借助标定把这些点转换为各自的空间视线,调整运动估计,使对应视线的几何偏差尽量小。它能直接利用 rig 的刚性关系,传统多相机 SLAM 就走这条路;但对应点可能找错或找不到,动态、重复纹理与弱纹理场景也会让后续优化变难。
另一种做法是先让多视图模型联合看每一组图像,再对相邻两个 rig 估计一次相对位姿,依次接成轨迹。组内几何得到利用,跨时刻却没有持续保存的观测历史。一次估计只看这一对图像;若每段都有一点方向或位移偏差,长轨迹会把它们反复复合。论文的 G2G-chain 对照就属于这一路径。
还可以把各台相机的图像接到原本为单台相机逐帧输入设计的流式模型里,利用模型跨帧的记忆。这条路有时间历史,却把同一时刻的多台相机当成一般的视频输入;已知的相机间几何没有在进入历史前联合使用,需要处理和缓存的图像特征也随相机数增加。
论文把缺口分成两层:组内要利用已知标定,让同一时刻的多台相机共同形成一份几何观测;组间要利用过去的 rig,却不能把每张图像的全部特征一直留在历史中。StreamRig 用冻结的多视图模型处理第一层,再让小得多的可训练后端处理第二层。真实 rig 的训练数据和布局较少,后端还需要先学会怎样把两组不同视角的观测对齐。
先给整套方法一张地图。假设 rig 依次采集第 0、1、2、3 组图像,要处理第 3 组:多视图前端先用第 3 组图像和相机标定生成特征;压缩器让每台相机只留下少量特征;时序模块让第 3 组读取第 1、2 组已缓存的信息,并与第 0 组这个暂时的参考组比较;最后输出“第 3 组相对第 0 组”的位姿。图 1 左上就是这条数据流,左下画的是历史信息怎样读取,右边画训练和实际运行。读图时先抓住这三处,图中尚未解释的英文模块名可随正文再看。

图 1 原论文图 2。左上从图像、相机标定出发,经过组内感知、特征压缩和历史读取,输出两组之间的运动;左下的箭头规定历史可见范围;右侧分别是先学组间对齐、再学流式推理,以及运行时定期更换参考组。
1. 从相邻位姿链到一段历史的参考位姿
先看四次到达的 rig,按顺序叫作第 0、1、2、3 组。相邻位姿链分别估计第 0 到 1、1 到 2、2 到 3 组的运动;要知道第 3 组相对第 0 组在哪里,必须把三个估计依次复合。举个一维平移的例子:真实每段前进 1 米,若每段都多估 0.05 米,三段接起来就是 3.15 米,而实际只有 3 米。
StreamRig 把第 0 组暂时固定为这一段历史的参考组,论文称它为 anchor rig(锚点 rig)。第 1、2、3 组到来时,都估计自己相对第 0 组的位姿;预测第 3 组时还能读取第 1、2 组留下的历史特征。比如真实第 3 组在第 0 组前方 3 米,模型可以直接预测这段 3 米的相对位移,而无需先得到三个各为 1 米的预测再相加。这避开了块内逐步复合误差,但并不保证一次预测 3 米比三次短距离预测准;锚点离得太远也会变难。锚点指的是一组较早的相机观测及其坐标系,不是图像中的特征点,也不是已知的世界位置。
锚点不能永远留在起点。rig 运动一段距离后,当前图像和锚点图像可能没有共同视野,位移也会超出模型训练过的范围,缓存还会持续增长。StreamRig 每处理一段 rig,就将该段最后一组作为下一段的锚点,把两段的变换接起来。这样一段内少做逐帧复合,整条轨迹又只需保留有限长度的活动历史。锚点更换间隔的取舍会在推理与实验部分具体分析。
这也解释了论文为什么预测相对位姿。没有预建地图或外部绝对定位测量时,图像本身并不指定世界坐标原点;同一条轨迹整体平移、旋转后,相机看到的相对运动仍相同。里程计通常把起始 rig 定为坐标起点,先估计局部相对变换,再复合成以该起点表示的轨迹。StreamRig 预测的是当前 rig 相对当前锚点的位姿,二者常隔着多个时刻,并非只预测相邻两组。论文没有比较一个直接回归全局坐标的网络;它报告的推理效率主要来自特征压缩、键值缓存与周期换锚,不能简单归因于“只预测相对位姿”。
这里的“位姿”同时包含旋转和平移。为了说清每个变换的方向,约定 把在坐标系 表示的点转换到坐标系 ;两次变换可以按下标相接的顺序相乘,例如 。每组都选第 0 台相机的坐标系作为该组的参考系。
有了这个约定,再看论文的正式任务。记时刻 的相机组为 ,其中 是第 台相机的图像, 是内参;内参描述焦距等像素到视线的关系。已知外参 把相机 的坐标变到同一组的相机 坐标,它描述相机之间固定的安装关系。若第 组是当前锚点,系统在时刻 使用从 到 已到达的图像,输出
把当前组的参考相机坐标变到锚点组的参考相机坐标。 只是“三维旋转加三维平移”的刚体变换集合。帽子表示模型预测值; 表示当前只能使用已经到达的图像。输出带米制尺度;要得到以起点为坐标系的整条轨迹,还需在换锚时组合变换。真值轨迹只用于训练标签和实验评估,推理时不可见。
有了相对位姿的定义,沿图 1 左侧的数据流,先看一组同步图像怎样变成可供时序模块使用的几何特征。
2. 每个 rig 先成为有几何约束的观测
继续跟着第 3 组。假设它有前向和侧向两台相机:两张图像中的“同一列像素”一般指向不同空间方向,因为镜头参数和安装朝向都不同。模型若只接收两串图像特征,便需要自己猜这些特征之间的几何关系。这里的内参给出像素对应的视线,外参给出两台相机在 rig 上的相对位置和朝向。它们只说明观测从哪里、朝哪里发生,不直接给出被观察物体的距离或 rig 的运动。
同一图像像素 对应相机坐标系下的一条射线。为说明标定的作用,把方向归一化为 ,并令 ,则这条射线在 rig 参考系中是
和 的单位是长度;射线方向无量纲。以侧向相机的一个像素为例:先用 求它在侧向镜头中的方向,再用 转到参考相机的方向,从侧向相机在参考系中的位置 沿这个方向延伸,就是该像素可能看到的空间位置。式子没有替像素解出深度 。两台无重叠视野的相机也不会因此在同一时刻直接形成三角测量。它只是解释标定提供了什么信息,不是 StreamRig 在此显式执行的计算步骤。
StreamRig 把这些信息交给已预训练、在本任务中冻结的多视图模型 MapAnything。它接收第 3 组的 张图像、逐像素射线方向和相对外参。DINOv2 图像编码器先把每张图像表示成许多 patch token:一个 token 是一块图像的特征向量,而非一个已确定三维坐标的点。模型把射线和相机位姿的编码融入这些向量,再通过交替注意力让不同相机的特征互相读取。于是侧向相机某个图像块的输出可以带有别的相机提供的上下文。这里没有声称它一定找到了同名三维点;论文将这一阶段的输出称为带组内几何依据的特征。一个 rig 的输出是
这里 是相机数, 是每台相机保留的图像块数, 是每块特征的维数。 仍按相机分开存放,但每块特征已经经过跨视角交流。外参只在这一步输入;后面的可训练模块接收 ,没有再次读取 ,也没有写死某一种相机布局。训练时冻结的前端特征可以预先缓存,梯度只更新后端。若标定本身错误,前端融合的几何也可能被误导;训练中的标定扰动只能提高容忍度,不能提供在线自标定。
第 3 组的特征接下来要进入历史。若一个五相机 rig 的全部特征都长期参与时序注意力,每个时刻就有 个 token,之后每来一组都会扩大读取与缓存的负担。Rig-Resampler 对每台相机分别准备 个可学习查询,通过两层交叉注意力读取该相机的 256 个特征。可以把一个查询理解成一个要从 256 块里收集信息的槽位:它与各块算相关程度,按权重汇总成一个新向量。16 个槽位产生 16 个向量;下一台相机独立做同样的事,不把所有相机先混成一串,得到
查询参数在相机之间共享;增加一台相机只多产生 个压缩后的 token,不需增加一套查询参数。五相机的历史输入于是从 1280 降到 80 个 token。顺序很关键:先让已标定的多视图前端联合看完整组,再按相机压缩,保留每个向量来自哪台相机。压缩并没有一个手工指定的“运动信息清单”;后续位姿损失推动它保留对运动有用的信息。16 个并非无损替代 256 个,论文用 8、16、32 个的消融衡量精度和成本。
3. 因果桥接让当前组读取历史
第 0、1、2 组也走过同一套前端与压缩器,现在每组都只剩按相机分开的少量向量。第 3 组到来时,时序模块要同时完成两件事:读取第 1、2 组的历史信息;比较第 3 组与第 0 组这个参考组。前者要求旧状态可缓存,后者又希望参考组能针对当前观测产生响应,这就是因果桥接(CausalBridge)要解决的矛盾。
桥接层共有八层。进入前,每个向量先加上几种可学习的“角色标记”,让同一套参数认出它属于哪台相机、是参考组还是查询组,以及参考组里的哪台是坐标系基准。把第 组第 台相机压缩后的向量记为 ,加标记后的向量记为 ,论文写作
是相机 的标记; 与 分别表示普通查询组和锚点组。方括号里的 是条件指示数:条件成立取 1,否则取 0;所以只有锚点组的参考相机 会再加 。这些标记说明角色,没有把“第几时刻”写进向量;先后约束由下面的可见范围提供。
为什么不让第 0 组直接看第 3 组?第 0 组早已处理并缓存;若在第 3 组到来时改写它,先前基于它算出的状态就得重新计算,流式推理失去意义。可是位姿头要同时利用“参考端”和“当前端”的特征。StreamRig 为每个查询时刻 复制一份原锚点已经标记、尚未经过桥接层的压缩特征,称为锚点快照 。原锚点仍是固定的历史来源;这个副本只参与本次查询,可以与当前组交换信息,不写回旧缓存。第 1、2、3 组各有自己的 ,副本之间也不相互传递。
桥接层的精确定义是
表示 在一层注意力里可读取的组。组内 token 可以自由交互。第一行规定快照只读自己和当前组;第二行规定当前组读自己的快照、自己和锚点之后的中间组。这里 含当前组,因而当前组也能内部交互。原始锚点 不作为当前组的另一个历史入口,它通过副本 参与这次比较。
用第 0、1、2 组具体走一次。第 0 组是锚点;第 1 组来时,复制第 0 组的输入向量得到 ,让 与第 1 组相互读取,再保存第 1 组在八层中形成的键和值。注意力里的“键”用于和当前查询比较,决定该读多少;“值”是按这些权重汇总的内容。缓存它们,就不必每次新组到来都重新计算旧组。第 2 组来时,重新从第 0 组复制出 ,而非继续更新 ; 只看第 2 组,第 2 组则看 和已缓存的第 1 组。注意力一层使用上一层的输出,因此“互相读取”并非同一层即时互相修改:第一层中快照读取当前组,第二层中当前组就能读取已经融入当前信息的快照。接着第 3 组照此建立 ,读取第 1、2 组的缓存。旧组不用因为第 3 组到来而重算。

图 2 讲解用的三时刻示意。箭头表示信息流向;图中的 R0、R1、R2、A2 分别对应正文的 。快照可与当前组交互,历史组只向当前组供给缓存,原锚点和历史缓存都没有接收未来图像的路径。
当锚点和当前图像已没有共同视野,中间组提供沿途的观测上下文。注意力允许网络使用这些信息,但论文没有证明网络在内部建立了显式三维点对应;快照消融所支持的是查询相关的锚点表示有助于估计。所有读取路径只涉及当前与更早观测,所以训练可一次处理整段窗口,推理时则复用早先组在八层中留下的键值。所谓“因果”在这里就是:第 1 组的缓存不会包含第 2、3 组将来才拍到的图像。
4. 位姿头把两端表示变成刚体变换
八层之后,第 3 组的向量带有可读取的第 1、2 组信息, 也已针对第 3 组形成参考端表示。但它们仍只是特征向量,不是运动参数。位姿头对当前组的每台相机 准备两个可学习查询,一个汇集旋转线索,一个汇集平移线索。每个查询只读取两部分桥接输出: 中参考相机的向量,以及第 3 组中相机 的向量。随后两个三层感知机分别预测旋转和平移。
旋转先用六个数表示:把它们看成两个三维向量,先将第一个归一化为一根轴,再从第二个减去沿第一根轴的分量并归一化,最后用叉积得到第三根轴。这就是文中的 Gram–Schmidt 正交化;它让预测结果成为合法的三维旋转矩阵,记作 。旋转矩阵和三维平移合起来就是前面用到的 位姿。六个数是网络的中间输出,最终运动仍是三维旋转加三维平移。
系统实际使用当前组参考相机 的输出,即 。其余相机也各自预测一份位姿,是为了训练时给更多视角施加一致的监督;推理轨迹只取参考相机的结果。如何不额外测量其他相机的真值?利用固定外参即可。若 把时刻 的相机 坐标变到同一组的相机 0 坐标,则它们的真值目标由
得到:等号右边先执行 ,再执行 ,正好把“当前相机 ”一路变到“锚点参考相机”。如此便能从一条参考相机的真值轨迹导出其他相机的训练标签。预测时则无须真值位姿;网络直接从图像特征回归当前运动。这里没有显式重投影误差、局部 BA 或在线几何优化来修正每次前馈回归。
5. 两阶段训练先学组间对齐,再学在线历史
前端已有多视图几何先验,随机初始化的重采样器、桥接层和位姿头却还不会将特征对齐为相对位姿。训练也不能只靠固定 rig 的少量布局,期待后端自动学会各种基线与位移。论文把训练分成两阶段,三块后端模块与参数在阶段切换时保持不变,冻结前端则始终不更新。
Stage I 先学两组观测之间的定位,论文称 group relocalization。 这里的 group 暂时还不是物理平台上几台相机同时拍的 rig,而是沿一台相机的轨迹截取的短图像窗口。窗口中的图像有已知相对位姿,因此可像一组带标定的多视角输入那样交给冻结前端。若两个窗口有共同视野,就能组成一对训练输入,甚至可以来自不同会话或轨迹;利用已有的相机位姿求出两组的相对变换作为标签。后端此时看的是“两组能不能对齐、相对运动是什么”,并允许双向注意,还不用承担在线历史的因果限制。这样能先在更多布局和位移上学会读取冻结特征。训练会给输入外参加约 、 米的扰动,而位姿目标不扰动,学习在标定有噪声时仍回归正确位姿。
Stage II 再学真正的流式 rig 里程计。 输入换成目标平台连续采集的同步多相机组,例如前文的第 0、1、2、3 组;双向注意换成因果掩码;窗口中第 1、2、3 组各自有锚点快照,分别用它们相对第 0 组的真值位姿监督。输入外参恢复为干净标定。重采样器、桥接层和位姿头延续 Stage I 的参数,变化的是训练输入、可见范围和每个查询都要受监督的方式。因而后端先学“不同观测组怎样对齐”,再学“在线到达时怎样利用中间历史”。去掉 Stage I,在相同训练设置下 NCLT 的平移漂移从 2.77% 升到 41.37%;这说明冻结特征本身还不足以让随机后端直接学好流式运动。
两个阶段的监督都是相对位姿。训练需兼顾近处与远处:若一个目标距锚点 1 米,预测多了 0.1 米;另一个目标距锚点 10 米,预测多了 1 米,它们的相对误差都是 10%,未经归一化的绝对误差却相差十倍。远距离样本因而可能主导平移梯度。论文按真值位移长度归一化平移误差,旋转误差则衡量预测旋转与真值旋转有多接近。对固定查询间隔 的真值 和预测 ,损失为
是查询组与锚点相隔的采样步数; 对同一 的样本和相机取平均,再对各个 的 求平均。 是矩阵各元素平方和开根号, 是向量各分量绝对值之和。旋转项比较预测旋转与真值旋转的相对矩阵和单位矩阵:完全相同就得到单位矩阵、误差为零;先取平方均值再开根号,小旋转误差时近似随角度增长。平移项把三个坐标的绝对误差取平均,再除以真值位移长度; 米防止近零位移导致分母失控。论文取 。归一化仍要求预测正确的米数,不能只预测轨迹形状。
Stage II 的训练窗口长度 从 6 到 48 取样,概率与 成正比;相邻两组之间跳过多少原始帧另从平台相关区间均匀取样。长窗仍被充分看见,但短窗中的近距离目标不会被固定长窗的大量远距离目标淹没。这里的 是训练时一次取多少组;下一节还用 表示推理时每隔多少组换锚,推理值可以另选,并不必须等于某次训练窗口。论文将固定 、去掉平移归一化、改成平方根归一化及只监督比例尺度分别做消融,结果支持混合窗口和度量归一化共同维护近远距离的学习。整个后端约 7460 万参数,占 6.38 亿参数系统的 11.7%;Stage II 总计训练 57.6 万个窗口,批量 16,使用 AdamW 和余弦退火。NCLT 默认设置的估计训练成本约 48 RTX 4090 GPU 小时。
6. 换锚使长序列的活动状态有界
到达一个新 rig 时,前端只编码它一次,重采样器压缩后,当前向量与本次锚点快照进入 CausalBridge。先前 rig 在各层留下的键值直接复用,位姿头给出 。若一直只输出“相对当前锚点”,锚点更换后,各段坐标系会断开。系统因此保存已走过路段相对于初始坐标系 的累计位姿。设 是当前锚点在初始坐标系下的位姿,则当前的全局位姿由
得到。沿用一维例子:若第 0 组是起点,第 3 组相对它预测在前方 3 米,便可记录第 3 组全局位置为 3 米;第 3 组成为新锚点后,下一组若相对新锚点预测前进 1 米,全局位置就是 3+1=4 米。三维情况下不能简单相加,必须按上式先旋转再平移地复合变换。块内多个查询都相对同一锚点读出,只在换锚时把新锚点接进累计轨迹。每处理 个 rig,块的最后一组 成为下一块的锚点;保存 ,清空旧活动窗口,再从 继续。 是一个块内保留的 rig 数,不是相机数;活动状态最多涉及约 个压缩向量及对应层的键值。重采样降低每个时刻的状态大小,周期换锚限制历史长度,两者作用不同。
退化成相邻 rig 的成对链,短块要反复复合估计误差。块太长时,锚点到当前的位移可能超出训练见过的范围;即使注意力能读取更长历史,位姿头也未必能外推。论文图 4 的 NCLT 曲线在中间 形成低谷:默认训练跨度 6–48 的模型在约 最低, 已明显变差。把训练跨度扩到 256 或 512 能把可用的换锚区间推远,却没有降低最优漂移,估计训练成本从 48 升到 270、710 GPU 小时。

图 3 裁自原论文图 4。横轴是推理时的换锚块长度 ,实线和虚线分别是平移、旋转漂移;三种颜色对应训练最大跨度 48、256、512,星号标出超出训练窗口的测试,顶部横条是估计训练成本。曲线支持“更长训练可扩大可用范围”,不支持“训练越长最优误差越低”。
论文还给出一个可选的长历史模式:不按固定块换锚;距当前超过 8 步的 rig 每台相机仅保留前 4 个潜在 token,并删去其余键值,训练时用相应带状掩码。这样远处历史仍可寻址,逐步延迟维持较低,但旧 rig 仍不断增加,显存会随序列增长,短距离精度也付出代价。它与默认的有界活动状态不是同一种内存保证。
7. 实验怎样区分组内几何、历史与训练的收益
方法讲完,再看证据能回答什么。论文在四种布局上评估完整序列:NCLT 是五相机环视 Segway,TartanGround 是四向仿真地面机器人,KITTI-360 是 0.59 米双目加两台侧视鱼眼,ZJH 是 7 厘米前向双目加两台斜视相机的人形机器人。ZJH 仅用仿真轨迹训练,在三个真实机器人序列上零样本评估。它们让作者分别观察环视、复杂运动、城市行驶和仿真到真实平台的表现,但并非四次只改变一个因素的受控实验。
先读懂指标,才知道下面的数字在说什么。 是分段相对平移漂移,以百分比表示:可以粗略理解为“走过一段距离后,估计的相对位移与真值相差该段长度的多少比例”,例如 100 米段的 3% 约对应 3 米的相对平移误差。 是沿每 100 米路程折算的相对旋转误差,单位为度/100 米。论文在 NCLT 与 KITTI-360 统计 100–800 米段,在 TartanGround 与 ZJH 统计 10–80 米段;段长、场景和运动都不同,所以不拿不同数据集的百分比直接比难度。
方法都从各自预测组成完整轨迹。对于本来不知道“一米有多长”的单目方法,评估时允许每条序列统一乘一个尺度;度量方法通常按原始米制结果评估。这一差别会影响比较的解释。完整轨迹的 ATE 是与真值对齐后的绝对位置误差:SE(3) 对齐只允许整体旋转和平移,Sim(3) 对齐还允许整体缩放。ZJH 的仿真与真实机器人间尺度未知,是例外:所有方法在该数据集都按每条序列一个全局尺度评估。下表取论文表 I 的平移/旋转漂移;MA-AB 使用了查询组真值外参,属于可利用答案信息的 oracle,不参与通常方法排名。
| 方法 | NCLT | TartanGround | KITTI-360 | ZJH 真实机器人 |
|---|---|---|---|---|
| G2G-chain,完整 rig 的成对链 | 6.08 / 3.54 | 16.40 / 37.16 | 4.59 / 2.77 | 6.63 / 48.50 |
| CUT3R,单目前向流式 | 9.51 / 4.80 | 22.72 / 29.06 | 3.59 / 1.63 | 4.61 / 39.85 |
| StreamRig,完整 rig 的因果历史 | 2.77 / 1.39 | 12.70 / 17.90 | 2.59 / 0.98 | 3.48 / 14.88 |
每格依次为 (%)/ (度/100 米)。先只看同一列内的 G2G-chain 与 StreamRig:它们使用相同图像、标定、冻结前端与特征;前者只预测相邻两组并逐次接起来,后者读取中间缓存并相对较远锚点预测。NCLT 的平移漂移由 6.08% 到 2.77%,这个比较支持“在同等组内输入基础上,历史与换锚设计带来了收益”。但两者的后端结构也不同,不能把差值全部归给某一个注意力部件。再看单目 CUT3R:它连输入相机数与模型都不同,差距不能单独算作“多加相机”的收益。四组上 StreamRig 的两项漂移均低于表中的非 oracle 对照;这并不等于每项 ATE 都更低,例如 KITTI-360 上 STream3R 经 Sim(3) 对齐的 ATE 为 53.6 米,StreamRig 度量尺度、经 SE(3) 对齐的 ATE 为 63.7 米,二者的尺度协议也不同。

图 4 裁自原论文图 3。黑色虚线是真值,实线与彩色虚线是不同方法在 NCLT、TartanGround、KITTI-360、ZJH 的轨迹例子。作者为展示形状对整条序列做了 Sim(3) 对齐;这张定性图只说明轨迹偏离的样子,总体精度以表 I 的完整序列统计为准。
为了回答“是否真从 rig 的多相机观测获益”,论文在 KITTI-360 上只改变进入同一前端与后端配置的相机子集。单前向相机、前向双目、双目加两台侧视相机的 分别是 4.84%、3.59%、2.59%, 分别是 1.92、1.33、0.98 度/100 米。第二台前向相机扩展视野有限,却增加已标定的双目视差;侧视相机继续扩展观测方向。这支持联合多相机输入有效,但不能仅凭三行数字拆分视差和视野各自的贡献。
冻结前端也不是可有可无的黑箱。论文在另一组统一的 NCLT 训练设置下,把 MapAnything 换成 Depth Anything 3 或 X;三者都能收敛并呈现随 变化的 U 形曲线,其最佳平移漂移分别为 4.20%、5.61%、6.78%。这组数值与上表 2.77% 来自不同的初始化和训练预算,不能直接相减。它表明后端接口可以适配其他多视图前端,也表明前端提供组内几何的方式会影响最后的位姿质量。
论文还逐项拿掉或替换设计,看误差是否变化。在 NCLT 上,把每次生成的锚点快照改成静态锚点, 从 2.77% 升到 3.41%,对应前文“参考端针对当前组更新”的作用。每相机只留 8 个压缩向量时为 3.27%,留 32 个为 2.82%;16 个是计算和精度的折中,而不是绝对最准确的数量。固定 48 帧训练窗口为 3.33%,去掉位移归一化为 3.55%,去掉 Stage I 则为 41.37%,分别对应近远距离样本平衡和先学组间对齐的必要性。加入旋转时间位置编码为 2.98%,本设置下没有带来收益。TartanGround 和 ZJH 的相应消融大体支持同样方向,但 32 个向量的旋转收益与平移收益并不完全一致。
效率比较按 RTX 4090、BF16、批量 1、从 RGB 到位姿、连续 512 次输入计时。StreamRig 每个五相机 rig 中位延迟 26.2 毫秒、峰值显存 2.6 GiB;CUT3R 每个单相机帧为 31.3 毫秒、3.9 GiB。StreamRig 的前端与重采样占 24.9 毫秒,桥接与位姿头约 1.3 毫秒,增加相机的主要边际成本仍在前端。G2G-chain 若每对重新编码两组要 50.9 毫秒;若缓存上一组特征, 的链与 StreamRig 做同等前端工作,论文强调的优势便是相近成本下使用更长历史改善精度。原论文图 1 的示例精度与速度来自不同配置,不能读成一次同时测得的精度—速度点。
小结
回到第 0 至第 3 组的例子,StreamRig 每到一组,先让已知标定参与组内多视图感知,再把每台相机的特征压成少量可缓存的向量。第 3 组到来时,它读取第 1、2 组留下的信息,同时与第 0 组为本次查询生成的快照交互,最后输出相对第 0 组的运动。训练先让后端学会对齐两组观测,再让它在只能读取历史的条件下做同一件事。第 3 组若成为新锚点,系统保存它相对起点的位姿,清空旧活动历史,继续下一段。这个过程把组内几何、跨时刻观测和有限缓存接到了一条因果数据流上。
论文的证据覆盖了四种 rig、相机数控制、前端替换、快照与训练消融,也留下清楚的边界:结果依赖标定和预训练特征;超出训练位移范围的长锚点预测会退化;长历史模式没有有界内存保证;位姿回归后没有在线重投影优化。作者只展示了重访检索的探索性观察,没有定量验证可用的闭环校正,因此长期系统漂移仍需另行处理。
参考文献
Wei, Y., Ye, S., Wang, Q., Zheng, X., Huang, Q., Xiong, R., and Wang, Y. “StreamRig: Exploiting Intra-Rig Geometry for Streaming Multi-Camera Odometry.” arXiv:2609.40244, 2026. 论文页面,PDF。