跳转至

MOSAIC-GS: Monocular Scene Reconstruction via Advanced Initialization for Complex Dynamic Environments

会议: CVPR 2026
论文: CVF Open Access
代码: 待确认
领域: 3D视觉 / 单目动态高斯泼溅
关键词: 单目动态重建, 高斯泼溅, 场景流初始化, 刚性约束, Poly-Fourier 轨迹

一句话总结

MOSAIC-GS 把单目动态场景重建的「运动估计」从光度优化阶段挪到一个四步预处理流水线里——先检测/分割/追踪动态物体,再用刚性约束精修出场景流,并用 Poly-Fourier 曲线把轨迹直接初始化给动态高斯,配合静态/动态高斯解耦,从而在质量与 SOTA 相当(LPIPS 反超)的同时把训练和渲染速度提升好几倍。

研究背景与动机

领域现状:NeRF 和 3DGS 在静态场景重建上已经很成熟,扩展到动态场景的工作主要走两条路——逐帧形变(为每帧存高斯变换,内存大、长序列不可扩展)或连续运动建模(用可学习函数表示高斯轨迹,更紧凑但难抓复杂/快速运动,尤其只靠光度线索时)。

现有痛点:单目动态重建本质上欠约束——缺乏多视角约束,几何和时序一致性难恢复。现有方法普遍训练慢、内存/存储开销大、渲染慢,且在复杂运动区有明显伪影;很多还重视觉真实度而轻物理一致性,从新视角看就扭曲。这在机器人、嵌入式这类视角受限、算力有限的平台上尤其要命。

核心矛盾:作者的关键洞察是——在光度优化阶段从纯视觉数据推断场景动态既低效又不可靠。预实验显示,光度优化对初始化极度敏感:没有准确的运动估计,大部分动态区的点在早期就被剪枝掉了,模型得花很多迭代去找回丢失的数据,既慢质量又差。

本文目标:与其在优化里费劲推运动,不如把高质量的运动先验「喂」进初始化——让初始化携带的不只是高斯位置和颜色,还有可靠的运动轨迹。

切入角度:充分利用视频里已有的几何/物理线索——深度、光流、动态物体分割、逐点追踪,再加刚性约束,在初始化阶段就估出初步的 3D 场景动态。

核心 idea:用一个「检测→分割追踪→刚性精修场景流→Poly-Fourier 初始化」的预处理流水线,把动态恢复前置到光度优化之前,并把场景解耦成静态/动态两套高斯以提升参数效率。

方法详解

整体框架

输入是单目视频 + 相机内外参 + 逐帧深度(传感器或单目深度模型给)。MOSAIC-GS 的核心是一个四步预处理流水线,把运动恢复前置到光度优化之前:(1) 用光流 + 对极几何检测动态区域;(2) 用 SAM2 分割并追踪动态实例;(3) 用 TAP 逐点追踪 + 刚性变换精修出场景流;(4) 把精修场景流编码成 Poly-Fourier 曲线、自适应采样点来初始化静态/动态高斯。这些参数作为初始值喂给最后的光度优化阶段,其中静态和动态分别用两套独立高斯(参数效率更高),但联合光栅化渲染,并用深度 Pearson 相关损失强化几何一致性。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["单目视频 + 相机参数<br/>+ 逐帧深度"] --> B["动态区域检测<br/>RAFT 光流 + Sampson 对极误差"]
    B --> C["实例分割与追踪<br/>SAM2 + 反向回溯"]
    C --> D["场景流估计与刚性精修<br/>TAP 提升 + Kabsch/RANSAC"]
    D --> E["Poly-Fourier 轨迹初始化<br/>解线性方程组得系数"]
    E --> F["静态/动态解耦光度优化<br/>双套高斯 + 深度 Pearson 损失"]

关键设计

1. 动态区域检测:用 Sampson 对极误差从相机运动里剥出真实场景运动

针对「单目缺多视角约束、难判断哪里在动」,作者不依赖容易被噪声深度污染的完整 3D 重建误差,而是用对极几何。给相邻两帧 \(I_t, I_{t+1}\),先用 RAFT 算稠密光流 \(u_t\),再对每个像素对应 \(x\) 算 Sampson 对极误差 \(e_{\text{epi}}(x) = \frac{(x'^\top F x)^2}{(Fx)_1^2 + (Fx)_2^2 + (F^\top x')_1^2 + (F^\top x')_2^2}\),其中 \(F\) 是由相机内外参导出的基础矩阵。对极误差高的像素无法只用相机运动解释——可能来自真实运动、光流误差或相机参数误差,作者用阈值 \(e_{\text{epi}}(x) > \tau_{\text{epi}}\) 过滤出动态候选。这一步把「动/静判断」建立在几何约束上,比直接用 3D 重建误差更稳。

2. 实例分割与追踪:用 SAM2 + 反向回溯把帧间动态区凝成时序一致的物体掩码

单纯靠对极误差阈值在某些场景不够,作者引入 prompt 式分割追踪模型 SAM2。逐帧先提取动态区的边界框:若之前没检到动态物体就直接拿框当 prompt;否则先减去已追踪实例的掩码避免重复追踪,再用剩余区域的框生成新实例掩码 \(M^j_t\),并用置信度阈值 \(p_{\text{conf}}(M^j_t) < \tau_{\text{mask}}\) 滤掉不可靠检测。高置信掩码加入追踪器并按固定间隔前向传播。处理完所有帧后,为了照顾「早期是静止、后来才动」的物体,再做一次反向传播把物体掩码延伸到更早的帧。结合分割和追踪能解决遮挡和不完美掩码带来的歧义,产出时序一致的实例标识。

3. 场景流估计与刚性精修:逐点追踪提升到 3D,再用刚体变换降噪补缺

作者在动态区随机采 \(N_p = 10000\) 个查询点,用点追踪(BootsTAPIR)追踪成 2D 轨迹,按和分割掩码的多数重叠把每条轨迹分配给某个动态物体 \(j\),丢掉主要落在静态背景上的轨迹。再用深度图 + 相机内外参把 2D 轨迹提升到 3D 得到场景流。关键的精修在于:对每个物体 \(j\),取可见的点对用 Kabsch 算法 + RANSAC 估计最佳对齐的刚体变换 \((R^j_t, t^j_t)\),按 \(P^i_{t+1} := R^j_t P^i_t + t^j_t\) 更新位置;前向处理完再反向做一遍,补上「物体可见但点未观测」的帧,剩余完全不可见的点用最近的可见帧插值。刚性约束既降低追踪噪声,又能在场景的未观测区域高效推断运动——这正是单目场景最缺的。

4. Poly-Fourier 轨迹初始化 + 静态/动态解耦:把运动直接写进初始化,而非优化里学

这是全文最核心的差异点。多数前作要在光度优化阶段才去学轨迹系数,作者反其道而行——直接从精修后的场景流初始化 Poly-Fourier 曲线系数。对每条轨迹 \(\{P^i_t\}\) 解线性方程组 \(Ax = y\),其中基函数 \(\phi(t) = [1, t, t^2, \sin(\omega t), \cos(\omega t)]^\top\),解出的系数 \(x = [a_0, a_1, a_2, \ldots, b_1, c_1, \ldots]\) 紧凑地编码了整条时序轨迹,用来初始化动态高斯的形变参数。同时每个高斯的颜色取自对应 RGB 像素、尺度用 LoG(Laplacian of Gaussian)范数结合深度估计,做到自适应匹配局部细节密度。

场景被解耦成静态集 \(G_s\) 和动态集 \(G_d\)\(G = G_s \cup G_d\)),各自独立初始化、独立稠密化策略:静态高斯只有常规参数,动态高斯额外存 Poly-Fourier 系数表示均值和旋转的时变偏移,位置偏移为 \(\Delta\mu(t) = \sum_k a_k t^k + \sum_k (b_k\cos(k\omega t) + c_k\sin(k\omega t))\),均值 \(\mu(t) = \mu_0 + \Delta\mu(t)\)。旋转上作者不像 Gaussian Flow 那样直接给基四元数加时变偏移,而是把 Poly-Fourier 输出加单位四元数再归一化成合法单位四元数 \(\Delta q(t)\)、再用四元数乘法 \(q(t) = \Delta q(t)\otimes q_0\),避免非法四元数更新带来的伪影。此外作者不建模时变颜色形变,防止模型用人造颜色变化来掩盖运动不准——这既提升紧凑性又强制运动归运动。

损失函数 / 训练策略

光度优化阶段总损失为 \(\mathcal{L} = (1-\lambda_{\text{ssim}})\mathcal{L}_{\text{L1}} + \lambda_{\text{ssim}}\mathcal{L}_{\text{SSIM}} + \lambda_{\text{depth}}\mathcal{L}_{\text{depth}}\),前两项是光度损失,\(\mathcal{L}_{\text{depth}}\) 用参考深度强化几何一致。为应对时序上深度尺度不一致,深度损失实现为 Pearson 相关损失——它保留相对几何、对绝对尺度变化不变,避免噪声深度的绝对值污染优化。Poly-Fourier 默认阶数为 32。

实验关键数据

主实验

在 iPhone DyCheck 和 NVIDIA Dynamic Scene(原版 + Gaussian Marbles 修改版)上评测,单张 RTX 4090。

数据集 方法 PSNR↑ LPIPS↓
DyCheck Gaussian Flow 16.22 0.311
DyCheck Shape of Motion 17.32 0.295
DyCheck MoSca 19.32 0.264
DyCheck MOSAIC-GS (本文) 18.40 0.255
NVIDIA(原版) MoSca 26.72 0.070
NVIDIA(原版) MOSAIC-GS (本文) 26.26 0.060
NVIDIA(Marbles版) Gaussian Marbles 23.68 0.069
NVIDIA(Marbles版) MOSAIC-GS (本文) 23.79 0.069

PSNR 上 MOSAIC-GS 普遍是次优(仅次于 MoSca),但 LPIPS 在三个数据集都取得最好或并列最好——作者论证 LPIPS 更贴近人眼感知,本文在动态区重建出更锐利的细节,虽然细节多反而可能略降 PSNR。在 Marbles 修改版上,作者用「仅在可见区评测」的协议重测所有方法,MOSAIC-GS 在 PSNR 和 LPIPS 都拿到 SOTA。

效率对比

方法 训练时间↓ 渲染速度↑
Gaussian Marbles 5–9 h 200 FPS
Gaussian Flow 23 min 52 FPS
MoSca 50 min 38 FPS
MOSAIC-GS (本文) 10.5 min 180 FPS

训练时间含预处理,其中纯光度优化只约 5 分钟。相比 MoSca 训练快约 5 倍、渲染快约 4.7 倍。

消融实验(DyCheck)

配置 mPSNR↑ mLPIPS↓ 训练时间(min)↓
Full model 18.40 0.255 5.06
去掉形变初始化 16.99 0.298 5.41
去掉流刚性精修 18.11 0.265 4.83
去掉静态/动态解耦 14.65 0.456 8.26
去掉深度监督 18.13 0.264 4.87
Fourier 阶 24 18.37 0.261 4.91
Fourier 阶 16 18.29 0.265 4.68

mPSNR / mSSIM / mLPIPS 是「masked」指标——只在 ground-truth 可见性掩码(covisibility mask)内统计,避免不可见区污染评分。

关键发现

  • 静态/动态解耦贡献最大:去掉后 mPSNR 暴跌到 14.65、训练时间反升到 8.26 min——因为静态区初始化变差、场景流精修出错,且每个高斯都得存形变参数,算力大涨。
  • 运动初始化是第二关键:去掉动态高斯形变系数初始化,mPSNR 从 18.40 掉到 16.99,印证「准确运动先验」对单目重建的重要性。
  • 刚性精修与深度监督各有约 0.3 dB 增益,前者在复杂运动场景尤其明显。
  • Fourier 阶数影响相对小:高阶(32)在 Wheel 这类细节多、快运动场景更能抓复杂运动;低阶更紧凑、适合资源受限场景。
  • 零成本附加应用:预处理里给动态高斯分配了实例 ID,重建天然产出时序一致的分割,可零额外开销做物体移除/隔离/换色/编辑。

亮点与洞察

  • 「把运动前置到初始化」的范式转变:与其在光度优化里和欠约束的单目运动死磕,不如先用现成的光流/分割/追踪/刚性约束把场景流估出来,再直接初始化高斯轨迹——既快又准,消融里它(形变初始化)是仅次于解耦的第二大贡献。
  • 直接解方程初始化 Poly-Fourier 系数:把轨迹系数从「优化里学」改成「从精修场景流解线性方程组得到」,是个很干净的工程洞察,省掉大量优化迭代。
  • 静态/动态双套高斯:只有动态高斯背形变参数,静态高斯保持轻量,参数效率和速度双赢;而且分离后静态区初始化更准,连带让场景流精修也更稳。
  • 不建模时变颜色:刻意砍掉颜色形变,逼模型用真实运动而非「人造变色」去解释外观变化,是个反直觉但有效的紧凑化设计。

局限与展望

  • 重度依赖初始分割掩码和场景流的质量,会继承外部模型(RAFT/SAM2/BootsTAPIR/深度估计)的误差——这是「把运动前置」范式的固有代价。
  • 场景流精修在「整个动态物体在训练视角里都不可见」时可能不足,刚性约束也救不回完全没观测的物体。
  • PSNR 始终次于 MoSca,作者用「细节多→LPIPS 更好但 PSNR 略降」来解释 ⚠️——这套说辞在追求 PSNR 的评测里说服力有限,质量-感知的取舍需读者自行判断。

相关工作与启发

  • vs MoSca(当前 SOTA):MoSca 用 Motion Scaffold Graph 把轨迹连成时空结构、靠逐帧形变建模,质量(PSNR)最高但训练 50 min、渲染 38 FPS;MOSAIC-GS PSNR 略低但 LPIPS 反超,训练/渲染快约 5×/4.7×,靠的是紧凑表示 + 解耦 + 准初始化减少优化步数。
  • vs Gaussian Flow:两者都用 Poly-Fourier/连续运动表示,但 Gaussian Flow 在优化里学系数、还建模时变颜色;MOSAIC-GS 从场景流直接初始化系数、砍掉颜色形变、改进旋转参数化避免非法四元数,质量和速度都更好。
  • vs Gaussian Marbles / Shape of Motion:这些走逐帧形变/轨迹混合,内存大、训练动辄数小时;MOSAIC-GS 用解耦 + 紧凑编码把训练压到约 10 min,在 Marbles 版数据集上以约 7 min 训练拿到 SOTA。

评分

  • 新颖性: ⭐⭐⭐⭐ 「运动恢复前置到初始化 + 直接解方程初始化轨迹系数」是清晰有价值的范式转变,但各组件多是现成模块的精巧组合。
  • 实验充分度: ⭐⭐⭐⭐ 三个数据集 + 细致消融 + 公平的可见区评测协议,但 PSNR 始终次优、对完全不可见物体未给定量分析。
  • 写作质量: ⭐⭐⭐⭐ 流水线四步讲得清楚、动机(初始化敏感性)有预实验支撑,公式略多但自洽。
  • 价值: ⭐⭐⭐⭐ 训练/渲染快数倍且零成本支持分割编辑,对机器人/嵌入式等资源受限场景实用性强。