【动态三维重建】MonST3R:运动中的几何估计
链接:https://monst3r-project.github.io/
标题:MonST3R: A Simple Approach for Estimating Geometry in the Presence of Motion
文章目录
- 摘要
- 一、背景和 baseline
- 1.1 其他方法
- 二、动态的训练
- 2.1 主要思想
- 2.2 数据集
- 2.3 训练策略
- 2.4 下游应用
- 2.5 动态全局点云和摄像机位姿
- 三、实验
- 3.1 设置
- 3.2 单帧和视频深度估计
- 3.3 相机位姿估计
- 3.4 联合稠密重建和姿态估计
- 总结
摘要
从动态场景中估计几何形状,常见方法通常依赖于多阶段的管道或全局优化,将问题分解为子任务,如深度、光流或轨迹估计,然后通过全局优化或多阶段算法进行动态场景重建,容易在每一步中出错。其中的挑战是,需要一个合适的表示,可以表示摄像机运动、多对象运动和几何变形的复杂性,以及注释的训练数据集。
对于静态场景,DUSt3R直接回归一对图像:产生一个pointmap表示——它将每个图像中的每个像素与估计的3D位置(即xyz)关联起来,并将这对点图在第一帧的相机坐标系中对齐。对于多帧,DUSt3R将成对估计累积到一个全局点云中,并使用它来解决许多标准的3D任务,如单帧深度、多帧深度或相机内外参
DUSt3R的推广 :pointmap可以在每个时间步长,以及相同的摄像机坐标系中表示,如图1动态场景的估计点云。其中动态对象根据其移动方式,出现在多个位置。多帧对齐可以通过基于静态场景元素对齐点图对来实现。这允许我们使用相同的网络和权重作为起点。然而,如图2,来自 DUSt3R训练数据分布的两个显著限制 。首先,由于它的训练数据只包含静态场景,DUSt3R无法正确地对齐场景与移动对象的点图;它通常依赖于移动的前景对象进行对齐,导致静态背景元素的对齐出现不正确的对齐。其次,由于其训练数据主要由建筑和背景组成,因此DUSt3R有时无法正确估计前景物体的几何形状,无论它们的运动如何,并将它们放在背景中。原则上,这两个问题都源于训练时间和测试时间之间的域不匹配,可以通过重新训练网络来解决。 而COLMAP经常与复杂的摄像机轨迹或高度动态的场景作斗争,这使得甚至产生用于训练的伪地面真实数据具有挑战性。为了解决这一限制,我们确定了几个具有我们的目的的必要属性的小规模数据集。
Motion DUSt3R(MonST3R),一种几何优先方法,可以直接从动态场景中估计每个时间步的几何。关键是通过简单地估计每个时间步长的pointmap,可以有效地将DUSt3R的表示适应于动态场景,它以前只用于静态场景。然而,这种方法提出了一个重大的挑战:缺乏合适的训练数据,即具有深度标签的带pose的视频。尽管如此,我们表明,通过将问题作为一个微调任务,识别几个合适的数据集,并在这个有限的数据上有策略地训练模型,使模型能够处理动态,即使没有明确的运动表示。在此基础上,我们为几个下游视频特定任务引入了新的优化,并展示了在视频深度和摄像机姿态估计方面的强大性能。
一、背景和 baseline
模型框架。框架是基于VIT的DUSt3R模型,以自监督的方式,预训练交叉视图completion任务。两个图像分别被输入共享编码器中,基于Transformer的解码器对输入特征进行交叉注意处理,末端的两个单独的head输出两个pointmap(第一帧的坐标系下)
baseline与mask。利用动态元素的知识分析DUSt3R对动态场景的适用性:利用GroundTruth的移动mask,在推理过程中在图像和token级别上mask-out 动态对象:用黑色像素替换图像动态区域,用mask token替换相应的token。 然而,这种方法导致了姿态估计性能的下降。可能是因为黑色像素和mask token在训练方面是分布外的。这促使我们在这项工作中解决这些问题
1.1 其他方法
1.Deformable 3D Gaussians
二、动态的训练
2.1 主要思想
MonST3R可以估计动态场景随时间变化的几何形状,如图1,动态对象根据移动方式出现在不同的位置。与DUSt3R类似,对于 t t t时刻的单个图像 I t I^t It,MonST3R预测pointmap X t ∈ R H × W × 3 X^t∈R^{H×W×3} Xt∈RH×W×3。对于一对图像 I t I^t It和 I t ′ I^{t'} It′,采用DUSt3R的全局优化部分中使用的符号。网络预测两个pointmap X t ; t ← t ′ X^{t;t\leftarrow t'} Xt;t←t′, X t ′ ; t ← t ′ X^{t';t\leftarrow t'} Xt′;t←t′,以及置信图 C t ; t ← t ′ C^{t;t\leftarrow t'} Ct;t←t′和 C t ′ ; t ← t ′ C^{t';t\leftarrow t'} Ct′;t←t′ 。上标中的第一个元素 t t t表示pointmap对应的帧, t ← t ′ t\leftarrow t' t←t′表示网络在 t , t ′ t,t' t,t′处接收两帧,点图在 t t t帧对应的坐标下。与DUSt3R的关键区别在于,MonST3R中的每个点图都与一个时间点相关。
2.2 数据集
数据集需要对输入图像、相机姿态和深度进行同步注释。为真实世界的动态场景获取精确的相机姿态尤其具有挑战性,通常依赖于传感器测量或通过运动结构(SfM),同时过滤掉移动的物体。因此,我们主要利用合成数据集,在渲染过程中可以很容易地提取出精确的相机姿态和深度。
对于我们的动态微调,我们确定了四个大型视频数据集:三个合成数据集——PointOdyssey , TartanAir , Spring,以及真实世界的Waymo数据集,如表1。这些数据集包含不同的室内/室外场景、动态对象、相机运动,以及相机姿态和深度的标签。点奥德赛和春天都是综合渲染的场景,动态对象;TartanAir由没有动态对象的不同场景的无人机飞行组成;Waymo是一个带有激光雷达标签的真实驾驶数据集。在训练过程中,我们不对称地对数据集进行采样, 以在PointOdyssey (更动态、可连接的物体)上放置额外的权重,而在TartanAir(良好的场景多样性,但静态)和Waymo(一个高度专业化的领域)上放置更少的权重。图像被降采样,使其最大的维数是512。
2.3 训练策略
由于这种数据集混合的规模相对较小,我们采用了几种训练技术来最大限度地提高数据效率。首先,我们只在冻结编码器的同时,微调网络的预测头和解码器。该策略保留了CroCo特征中的几何知识,并应减少微调所需的数据量。其次,从时间跨度为1到9中采样两帧,为每个视频创建训练对。 采样概率随步幅长度呈线性增加,选择步幅9的概率是步幅1的两倍。提供了像机和场景运动的多样性,以及更大的运动的权重。 第三,我们利用一种视场增强技术,通过对不同图像尺度的center crops。这鼓励了该模型在不同的摄像机内参进行推广。
2.4 下游应用
相机内参和pose的估计 。由于相机参数是基于帧 X t ; t ← t ′ X^{t;t\leftarrow t'} Xt;t←t′中的 p o i n t m a p pointmap pointmap 估计的,因此DUSt3R中列出的假设和计算仍然有效,我们只需要求解焦距 f t f^t ft就可以得到相机内参 K t K^t Kt。为了估计相对姿态 P = [ R ∣ T ] P = [R|T] P=[R∣T],其中R和T分别代表相机的旋转和平移,动态物体违反了使用epipolar矩阵所需的几个假设。相反,我们使用RANSAC(1981)和PnP(2009)。对于大多数场景,其中大多数像素是静态的,随机的样本点将更强调静态元素,相对姿态可以使用inliers来稳健地估计。
可信的静态区域。 我们可以通过比较估计的光流,以及应用 t t t到 t ′ t' t′的pointmap中的摄像机运动所产生的流场,来推断帧 t , t ′ t,t' t,t′中的静态区域。对于几何图形已被正确估计和是静态的像素,这两个流场应该一致。给定一对帧 I t I^t It和 I t I^t It,我们首先计算两组点映射 X t ; t ← t ′ X^{t;t\leftarrow t'} Xt;t←t′, X t ′ ; t ← t ′ X^{t';t\leftarrow t'} Xt′;t←t′,以及 X t ; t ′ ← t X^{t;t'\leftarrow t} Xt;t′←t, X t ′ ; t ′ ← t X^{t';t'\leftarrow t} Xt′;t′←t。然后,我们使用这些pointmap来解决每一帧的相机内参( K t K^t Kt和 K t ′ K^{t'} Kt′),以及从 t t t到 t ′ t' t′的相对相机姿态, P t → t ′ P^{t→t'} Pt→t′= [ R t → t ′ ∣ T t → t ′ ] [R^{t→t'}|T^{t→t'}] [Rt→t′∣Tt→t′]。计算摄像机运动引起的光流场 F c a m t → t ′ F_{cam}^{t→t'} Fcamt→t′ :(通过反向投影每个像素,应用相对摄像机运动,投影回图像坐标)。
其中, x x x为像素坐标矩阵, x ^ \hat{x} x^为 x x x的齐次坐标, π ( ⋅ ) π(·) π(⋅)是投影运算 ( x , y , z ) → ( x / z , y / z ) (x,y,z)→(x/z,y/z) (x,y,z)→(x/z,y/z),D是从点图 X t ; t ← t ′ X^{t;t\leftarrow t'} Xt;t←t′中估计的深度。然后,我们将其与现成的光流方法计算的光流进行比较,通过一个简单的阈值推断静态mask:
2.5 动态全局点云和摄像机位姿
即使是一个短的视频也包含大量的帧(5秒的视频有120帧),这使得从整个视频的成对点图估计中提取单个动态点云非常简单。利成对模型和视频固有的时间结构,同时求解全局动态点云和摄像机姿态的步骤。
video graph。对于全局对齐,DUSt3R从所有成对的帧构建一个连接图,这一过程对于视频来说是非常昂贵的。相反,如图3左侧所示,我们使用滑动时间窗口处理视频,大大减少了所需的计算量。具体来说,给定一个视频 V V V = [ I 0 [I^0 [I0,……, I N ] I^N] IN],我们计算大小为w的时间窗口内的所有对 e = ( t , t ′ ) e=(t,t') e=(t,t′)的pointmap, W t W^t Wt = { ( a , b ) ∣ a , b ∈ [ t , . . . , t + w ] , a ≠ b (a, b) | a, b ∈ [t, . . . , t + w], a \neq b (a,b)∣a,b∈[t,...,t+w],a=b}。为了进一步提高运行时间,我们还采用了分层采样
动态全局点云和姿态优化。主要目标是将所有成对的点图预测(例如 X t ; t ′ ← t X^{t;t'\leftarrow t} Xt;t′←t, X t ′ ; t ′ ← t X^{t';t'\leftarrow t} Xt′;t′←t)累积到相同的全局坐标系中,以生成世界坐标点图 X t ∈ R H × W × 3 X^t∈R^{H×W×3} Xt∈RH×W×3。为此,如图3所示,我们使用DUSt3R的对齐损失,并添加了两个视频特定的损失项:camera trajectory smoothness 和flow projection。
我们首先用相机参数 P t = [ R t ∣ T t ] P^t = [R^t |T^t ] Pt=[Rt∣Tt]、 K t K^t Kt和每一帧深度图 D t D^t Dt重新参数化全局点图 X t X^t Xt。其中 ( i , j ) (i,j) (i,j)表示像素坐标, h ( ) h() h()表示齐次映射。它允许我们直接在相机参数上定义损失。为了简化函数参数的符号,我们使用 X t X^t Xt作为 P t 、 K t 、 D t P^t、K^t、D^t Pt、Kt、Dt的简写
首先,我们使用DUSt3R中的对齐项,它的目的是找到一个刚性变换 P t : e P^{t:e} Pt:e,将每个成对估计与世界坐标点图对齐,因为 X t ; t ← t ′ X^{t;t\leftarrow t'} Xt;t←t′, X t ′ ; t ← t ′ X^{t';t\leftarrow t'} Xt′;t←t′在同一个相机坐标系中:
其中, σ e σ^e σe是成对的尺度因子。为了简化符号,我们将有向边 e = ( t , t ′ ) e=(t,t') e=(t,t′)与 t ← t ′ t\leftarrow t' t←t′ 互换使用。
我们使用 相机轨迹平滑损失 来鼓励相机平滑运动,通过惩罚短时间内的P和T的大变化( I I I为单位矩阵):
我们还使用 flow 投影损失 来鼓励全局点图和相机姿态与实际帧的可信、静态区域的估计的flow 保持一致。更准确地说,给定两帧 t , t ′ t,t' t,t′,使用它们的全局点图、相机内外参数,我们通过取全局点图 X t X^t Xt计算 flow 场(假设场景是静态的,将相机从t移动到t’)。我们鼓励可信的静态区域中的flow场,接近估计的flow场:
其中,可信的静态mask 使用成对的预测值(pointmap和相对姿态)进行初始化的(上一节)。优化中使用全局pointmap和摄像机参数,计算 F c a m g l o b a l F_{cam}^{global} Fcamglobal 并更新可信静态mask。
动态全局点云和相机姿态的完整优化为( x ^ \hat{x} x^包含了 D ^ \hat{D} D^、 P ^ \hat{P} P^、 K ^ \hat{K} K^的所有信息。):
视频深度。很容易获得时间一致的视频深度,由于全局是pointmap由相机姿态和逐帧深度图 D ^ \hat{D} D^参数化的。
三、实验
3.1 设置
训练和推理。我们对DUSt3R的ViT-Base解码器和DPT头进行了25个时代的微调,每个时代使用20,000个采样图像对。我们使用了AdamW优化器,学习速率为5×10−5,每个GPU的mini-batch为4。在2个RTX 6000 48GB图形处理器上训练一天。推理一个60帧的视频与w = 9和步幅2(大约。600对)大约需要30秒。
全局优化。等式(6)的超参数设置为 w s p l o p w_{splop} wsplop=0.01和 w f l o w w_{flow} wflow = 0.01。只在平均值低于20且姿态大致对齐时,才启用flow损失。如果每像素flow损失大于50,则在优化过程中更新运动mask。我们使用Adam优化器进行300次迭代,学习速率为0.01,在一个RTX 6000 GPU上的60帧视频大约需要1分钟
3.2 单帧和视频深度估计
数据集:类似于DepthCrafter,在 KITTI , Sintel和 Bonn数据集上估计视频深度。评估指标包括绝对相对误差(Abs Rel)和inlier的百分比δ < 1.25。所有的方法都输出标度和/或移位不变的深度估计。对于视频深度评估,我们对每个序列对齐单个尺度和/或位移位因子,而单帧评估采用每帧中值尺度。
3.3 相机位姿估计
基准和指标。我们评估了在Sintel、TUM动力学和ScanNet上的方法来测试对静态场景的泛化。在Sintel上,我们遵循与Chen等人(2024)相同的评估方案,排除了静态场景或摄像机运动的场景,总共得到14个序列。对于tum-Dynamic和ScanNet,我们以3的时间步幅采样前90帧,以节省计算。对预测和GroudTruth应用 Sim(3) Umeyama alignment:绝对平移误差(ATE)、相对平移误差(RPE tranas)和相对旋转误差(RPE rot)
3.4 联合稠密重建和姿态估计
图4定性地将我们的方法与CasualSAM和DUSt3R进行视频序列的比较,用于DAVIS的联合稠密重建和姿态估计。对于每个视频序列,我们将叠加的点云与估计的相机姿态对齐,显示为具有不同视点的两行,以便更好地可视化。如图2所示,DUSt3R难以估计移动前景物体的正确几何形状,导致联合摄像机姿态估计和密集重建失败。CasualSAM可靠地估计了摄像机的轨迹,但有时无法为前景物体产生正确的几何估计。MonST3R可以输出可靠的摄像机轨迹,并沿着视频序列重建整个场景
d \sqrt{d} d 1 8 \frac {1}{8} 81 x ˉ \bar{x} xˉ x ^ \hat{x} x^ x ~ \tilde{x} x~ ϵ \epsilon ϵ
ϕ \phi ϕ
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。