🔬 几何监督的 3D Gaussian Splatting 渲染

NJU-3DV 课题组(姚遥教授)入组项目。通过本项目熟悉 3DGS 算法流程,掌握 3D Vision 领域基本研究方法与工程实践。

🐙 GitHub 仓库
3DGS项目截图

📅 项目汇报与记录

📑 阶段性报告 (Notion)

本项目实施过程中的学习记录与进展汇报:

📝 项目总结

💡 代码思路与架构演进

本项目在 Pointrix 框架基础上进行了深度定制,核心目标是引入几何监督(Geometry Supervision)时序一致性(Optical Flow)约束,以提升稀疏视角下的重建质量。

1. 渲染器改造 (Renderer)

MsplatNormalRender 中扩展了传统的泼溅(Splatting)光栅化流程。除了 RGB 颜色外,新增了光流(Optical Flow)的实时渲染能力:

  • 双目投影机制: 在渲染当前帧 t 时,同时将 3D 高斯投影到下一帧 t+1 的相机视角下。
  • 光流计算: 通过计算两个投影坐标的差值 Δuv = uvt+1 - uvt,得到每个高斯球的瞬时运动场。
  • 光栅化: 将这个运动场作为属性进行 Alpha Blending,从而得到可微分的渲染光流图,用于后续的监督。

2. 损失函数设计 (Loss Design)

为了利用几何先验,在 NormalModel 中构建了多项新的损失函数:

  • 深度监督 (Depth Loss): 引入了 Scale-Shift Invariant(尺度平移不变)的对齐策略。由于单目深度估计(如 MoGe)存在尺度不确定性,代码中通过最小二乘法将渲染深度与先验深度对齐,并引入边缘感知权重 (Edge-aware Weighting),降低物体边缘处的对齐误差影响。
  • 光流监督 (Flow Loss): 使用 Charbonnier Loss 对渲染光流与 GT 光流进行约束。特别加入了稳健性处理(Robustness),过滤掉微小运动噪声,并根据 RGB 图像梯度动态调整权重,保护纹理边缘。

3. 数据流与验证 (Pipeline & Validation)

解决了训练与验证集划分导致的时序断裂问题。在 examples/supervise/model.py 中重构了相机管理逻辑,引入 all_camera_model 维护全局物理帧索引(Original Frame ID)。确保即使在随机采样的验证集中,依然能正确索引到物理上的“下一帧”进行光流验证。

👀 详细实现: 欢迎查阅 GitHub 仓库中的 examples/supervise/model.pyrenderer.py

📂 返回项目页 🏠 返回主页