跳过正文
  1. Notes/

简单理解 MoGe 与 MoGe-2

· loading · loading · ·
AI Embodied AI
目录
简单理解 MoGe 和 MoGe-2

0. 前言
#

MoGe 是 2025年初提出的一种单目几何重建(Monocular Geometry Estimation,MGE)模型,可以从一张静态图像中预测深度图、相机参数和点云图。该方法主要利用多尺度注意力特征和仿射不变表示,能有效提升几何重建效果。

MoGe-2 是对原始 MoGe 方法的改进,MoGe 生成的点云只有相对距离,而 MoGe-2 能够生成真实的距离尺度。此外,MoGe-2 重建的模型边缘更清晰,法线图的质量也更高,处理速度更快。

这两篇的原论文如下:

MoGe: Unlocking Accurate Monocular Geometry Estimation for Open-Domain Images with Optimal Training Supervision

MoGe-2: Accurate Monocular Geometry with Metric Scale and Sharp Details

1. MoGe
#

在 MoGe 之前的几何重建方法通常是多目方法,即需要输入多张图像才能重建场景;而某些单目几何重建方法预测的通常是尺度不变的点图,这样的方法具有焦距模糊性,即受空间尺度和偏移的影响。MoGe 方法提出预测仿射不变的点图,解决了这个问题,从而实现简单明了的 MGE 方法。

1. 总体框架
#

如图,模型主要由一个 ViT 编码器和一个卷积解码器组成。单帧图像经过网络后,预测仿射不变点图,并排除具有未定义几何形状(例如无穷大)区域的掩码。进一步推导还可得到深度图、相机移位(shift)和焦距(focal)等等。

ViT 网络作为主干网络,对输入图像进行 Patch 分块,提取全局上下文的仿射不变特征。而卷积解码器负责将得到的 token 预测深度图和点云图等。

2. 尺度不变与仿射不变
#

尺度不变(scale-invariant)指的是学习时考虑固定尺度(距离),远处的物体和近处的物体学习到的特征不同;而仿射不变(affine-invariant)指的是学习时不考虑固定尺度,物体有放缩或是平移都不影响学习的特征。如图:

同一个物体具有两张相似的图像,预测的结果应该是相同的。然而由于相机视角和焦距的不同,导致固定尺度下二者是不同的,也就无法使用一致的监督;而如果采用仿射不变的方法,那么二者的仿射是相同的,能采用一致的监督。

设 \(I\) 是输入的单目图像,预测出的仿射一致的点云图为 \(P\) ,尺度缩放系数为 \(s\) ,平移位移为 \(t\) ,则 \(P\cong sP+t\) 。这就是仿射不变性。

仿射不变性能够优化监督过程,提高训练效率,但如何得到真正的相机参数呢?给定预测 3D 坐标和对应 2D 像素,通过最小化投影误差,即可得到相机焦距和 Z 轴偏移,进一步即可得到深度图等。

3. 训练与损失
#

训练过程中,最核心的损失函数就是全局点云损失(Global point map loss),它的目的是最小化所有真实值与仿射点间的差距(全局对齐): $$ L_ G=\sum_ {i\in M}\frac{1}{z_ i}||s\hat p_ i+t-p_ i||_ 1 $$ 由于全局对齐中所有仿射点的参数( \(s,t\) )相同,所以求解这个损失的最小值就是求解最优参数。为了提高计算效率,文章提出了 ROE 求解器(Robust, Optimal, Efficent),将求解变为并行计算,降低了复杂度,且增加截断保证边缘预测的准确性。

另一个重要的损失函数是多尺度局部几何损失(Multi-scale local geometry loss),在单眼几何估计中,不同物体之间的相对距离可能不明确且难以预测。当应用使用所有对象计算的全局对齐时,会阻碍精确的局部几何学习。因此,该损失就是进行局部对齐,并保证局部对齐的一致性。

具体来说就是选择一个点作为球心,取不同尺度的半径的球体进行采样,作为一个局部,应用 ROE 求解器进行局部对齐。

其他损失还有法线损失(Normal Loss)和掩码损失(Mask Loss),起一个辅助监督的作用。

整体训练损失如图:

2. MoGe-2
#

MoGe-2 在 MoGe 的基础上,保留了仿射不变的点云预测和 ROE 求解器,又通过引入度量几何预测并改进其几何粒度来捕获复杂的细节,解决了实际应用中需要求解真实尺度的问题。

仿射不变性可以得到较为准确的相对形状,通过增加一个度量尺度预测,可以在保证相对形状准确的同时,计算真实空间距离。

这里有 MoGe-2 的 Demo,可以通过单帧图像进行三维重建,并任选两点都能进行距离度量。

1. 总体框架
#

如图,MoGe-2 的框架与 MoGe 大体是一致的,但增加了一个度量尺度预测头。将 ViT 的 CLS token 输入到这个头中,负责提取度量尺度因子(Metric scale factor)。将度量尺度因子与仿射不变的点云结合,即可输出带有度量尺度的点云图。

2. 度量尺度几何估计
#

输入单目图像,希望得到具有真实尺度的几何重建,最直接的办法就是直接进行度量尺度预测。然而在 MoGe 中已经知道,尺度不变预测具有焦距模糊性,即受空间尺度和偏移的影响,于是 MoGe 提出了仿射不变预测。但仿射不变的点图只能保证相对尺度的准确,真实距离仍然是难以确定的。因此 MoGe-2 中提出:在保留仿射不变点图的基础上,额外训练一个度量尺度因子,将这个尺度因子与原有的仿射不变点图相乘,即可得到一个具有度量尺度功能的点图。

MoGe-2 尝试了两种策略:卷积头和 CLS token 条件的 MLP,如图:

图中第一个结构是未进行特征解耦的直接进行度量尺度预测的架构,难以在保证相对尺度的情况下训练。

利用卷积头输出单个尺度值,并与仿射不变点映射共享卷积颈的效果不佳。分析可能是仿射特征和度量特征没有解耦,在同一个卷积网络中难以共同学习,全局与局部的特征也难以结合。

而使用 MLP 头直接从 DINOv2 编码器的分类(CLS)标记中学习度量尺度却能得到很好的效果,CLS token 中的全局信息使网络能够预测准确的指标尺度。

3. 用于细节恢复的真实数据细化
#

由于真实训练数据中的噪声和不完整性,模型难以准确重建细粒度结构,而合成数据对于真实世界的泛化性又不够,因此 MoGe-2 利用合成数据的伪标签过滤不正确的深度(Mismatch filtering),并在给定准确的局部几何形状的情况下填充真实数据中缺失的部分(Geometry completion)。

3. 实验
#

代码与数据在这里:microsoft/MoGe

4. 参考文献
#

1.【GitHub开源项目实战】MoGe 单目三维重建模型全解析:从深度图恢复到点云生成的工程落地路径_moge 模型-CSDN博客