球面插值保单位四元数,相机位姿RRA@30达90.5

QuacamFM: Quaternion-Constrained Flow Matching for Camera Pose Estimation

Bao-Long Tran, Cuong Le, Tahereh Dehdarirad, Fredrik Viksten, Per-Erik Forssén

cs.CV

2026-09-26

林雪平大学提出QuacamFM,用球面插值在单位球上做旋转流匹配。CO3Dv2十帧输入RRA@30达90.5,优于PoseDiffusion的86.7,无需对应点,推理0.46秒。

这篇在解决什么

稀疏无序多视图里估相机位姿,几何约束天生不够。传统 SfM 靠图像对应点和 bundle adjustment:重叠少时匹配立不住,COLMAP 经常直接不收敛,图 3 里缺失的相机锥就是这种情况。PoseDiffusion 一类概率模型用扩散采样多组位姿假设,旋转写成单位四元数,去噪时却把它当普通 4 维向量做加减。单位长度一破,这个 4 维向量就不再表示纯 3D 旋转,轨迹也会在球面上乱跳。

表示选了流形,生成过程却按欧氏空间在走。

方法

林雪平大学提出 QuacamFM,旋转和位移拆成两条流。

旋转走四元数约束的 flow matching。源是随机轴角再转成单位四元数,目标是 ground-truth 旋转。最优传输路径用球面线性插值 slerp:在单位球面 S³ 上沿测地线走,角速度恒定,像地球上两点之间的大圆航线,不会穿进球里。8 层 Transformer(8 头,FFN 维度 1024)吃当前四元数、时间 t 和图像特征,预测角速度 ω,用 L1 回归到这条测地线的角速度。积分不用加法,把 ω 收成增量四元数,再用 Hamilton 乘积乘到当前姿态上。Hamilton 乘积是四元数乘法,用来合成两次旋转,次序不能随便换。每一步都还在 S³ 上。

位移仍用欧氏 lerp 流匹配,从高斯噪声积到目标平移。

对照变体 QuacamFM-lerp 把四元数当 4 维向量直线插值,每步再归一回单位长度。架构和训练超参完全一样,只换传输路径,用来量约束本身值多少。

视觉条件是可微调的 DINO-ViT,图像裁到物体中心、缩到 224×224,取 1、1/2、1/3 三个尺度特征再平均。随机抽一张当参考相机放到原点、旋转设成单位元,平移用变换后范数的中位数归一,消掉绝对坐标系和尺度。训练每步随机抽 3 到 30 帧。总损失是角速度、平移速度、重建旋转、重建平移四项,权重分别是 1.0、1.0、0.1、2.0。

结果

CO3Dv2、10 帧输入、A100 上的主结果:

方法RTA@30RRA@30AUC@30推理(s)
COLMAP+SPSG28.244.425.13.26
PoseReg61.365.545.50.03
RelPose++84.388.766.54.49
PoseDiffusion79.986.766.58.83
PoseDiffusion w/o GGS72.882.856.00.39
QuacamFM-lerp77.275.851.30.46
QuacamFM86.790.567.30.46

@30 阈值三项全最高。更严的 @15,平移 RTA@15 是 74.2,低于带几何引导的 PoseDiffusion(79.8)。旋转 RRA@15 是 82.0,低于 RelPose++ 的 84.5。这两家都要额外优化:PoseDiffusion 最后 10 步做对极几何引导采样 GGS,10 帧要 8.83 秒;RelPose++ 做 50 次旋转一致性迭代,4.49 秒。去掉 GGS 的 PoseDiffusion 耗时 0.39 秒,和 QuacamFM 的 0.46 秒同一量级,这时 QuacamFM 全面领先。

lerp 变体把旋转精度砸下去一截:RRA@30 从 90.5 掉到 75.8,比无 GGS 的 PoseDiffusion(82.8)还差。事后归一救不了欧氏直线在球面上抄近路。

未见的 10 个 CO3Dv2 类目上,QuacamFM 的 RRA@15 是 64.9、AUC@30 是 51.1,略高于带对应点的 PoseDiffusion(62.8 / 50.8)。RealEstate10K 没再训练:旋转 RRA@15 为 78.3,与 PixSfM 打平,高于 PoseDiffusion 的 76.8。平移 RTA@15 只有 50.6,低于 PoseDiffusion 的 67.2 和 PixSfM 的 64.2,AUC@30 为 42.7,低于 PixSfM 的 49.4。转盘式物体数据训出来的平移,迁到室内外自由运动会掉。

backbone 消融里 ViT-DINO 的 RRA@15 是 82.0,监督 ResNet50 是 77.9,ResNet50-DINO 是 78.4。积分步数 30 步最好,20 步 RRA@15 为 79.5,50 步 81.0,80 步 79.8,加步数没有单调变好。

为什么重要

给稀疏无序多视图估位姿一个很具体的设计结论:旋转如果写成单位四元数,生成过程就得在 S³ 上积分,不能当 R⁴ 向量加噪声再归一。改的是积分公式,推理仍是 0.46 秒量级,不需要对应点和后优化。

少图、重叠差、SfM 容易挂的物体中心拍摄,这个设定用得上。场景级自由运动、平移要准的时候,带 GGS 的 PoseDiffusion 或 PixSfM 仍然更稳。这是流形约束做对之后的渐进改进,没有换掉整个几何管线。

局限与存疑

论文自己写了:没有接入对极几何约束,因为抽对应点和优化太贵。这直接对上 RealEstate10K 平移落后、@15 阈值被 PoseDiffusion 反超这两件事。

还有几处站不稳。CO3Dv2 的 GT 来自 COLMAP 对 200 帧的重建,再用 COLMAP 当稀疏基线,有循环评价的味道。野外自拍只有定性图,没有数字。训练分布是转盘式物体视频,迁到 RealEstate10K 时平移掉一截,摘要仍写 generalizes well。旋转还站得住,平移谈不上。四元数双覆盖(q 与 −q 是同一旋转)正文没说怎么处理。30 步最优、更多步变差,也没分析是过积分还是网络在中间 t 上不准。

术语

原文与代码

社区讨论

相关论文

全部论文解读