目录
一、概述
该论文首次提出了一种无需任何相机参数和深度信息,从未校准图像中预测3D高斯模型的方法。该论文建立在MASt3R模型架构之上,并添加了高斯解码器预测3DGS原语。
(1)在MASt3R基础上加了一个高斯预测头,可以从未校准的图像中预测高斯原语,而MASt3R只能预测3D点云。
(2)训练过程中只训练高斯预测头,其他部分使用预训练好的MASt3R模型,利用了MASt3R的泛化能力,并且减少重复训练消耗。
(3)提出一种新的损失掩码策略,可以更好地处理输入相机看不见的部分的外推视点,避免预测这些无法观测的区域。
二、相关工作
1、近期工作
在三维新视图合成领域(NVS),NeRF技术依赖于光线追踪的方式,通过密集收集图片送入神经网络训练隐式神经辐射场。3DGS通过训练3D高斯原语,并通过光栅化方法来提高训练和渲染速度。
在pixelSplat、MVSplat、GPS-Gaussian、SplatterImage、Flash3D模型都需要依赖相机参数预测3DGS原语,FlowCam论文考虑了未知相机参数的问题,但仍需要将图片按序的输入,而该论文Splatt3R中考虑到对于未知相机参数的影响,不需要按序输入。
GGRt论文中考虑不使用已知相机或内在技术的情况下建立3DGS模型,但仍需要密集的采集图像集进行迭代优化来拟合3DGS原语(依赖密集图像集),而且在梯度过大,过于偏离正确位置的情况下容易陷入局部最优(存在局部最优,可能难以泛化到未校准图像)。
2、DUSt3R
DUSt3R:提出了一种从一对无校准立体图像中预测点云的方法,但是预测的点云无法直接渲染,原因有三:一是,点云中点的具体位置并不清晰,二是,由于输出经过了归一化,缺乏真实的尺度信息,三是,由于输出是建立在相机坐标系下,需要全局对齐到世界坐标才能得到真实三维点云场景,但DUSt3R没有做这一步。
DUSt3R的流程:
(1)输入一对RGB图像,分别经过一个共享权重的ViT编码器得到特征。
(2)将这两个特征输入到两个Transformer解码器中,解码器通过交叉注意力机制交换信息(类似于配准前面的匹配工作)。
(3)利用两个回归头输出两个点云以及置信度。这两个点云都是在第一个图片坐标系下。
(4)损失函数两部分构成,三维空间回归损失和置信度感知损失。
三维空间回归损失:预测点云与地面GT点云之间的欧式距离的归一化。(所以也就照应了前面没有比例的问题)。
置信度感知损失:置信度分数的似然函数。
总损失:在每个像素下的三维空间回归损失与置信度感知损失的差。
3、MASt3R
MASt3R:考虑在DUSt3R基础上增加了密集局部特征图回归的头部,并使用InfoNCE损失进行训练,并且采用了由粗到细的匹配方案,在多个尺度进行匹配(参考了CoFiNet?),另外输出更为密集的3D点云,同时估计相机的位姿。
下图为网络结构(跟DUSt3R类似吧)
MASt3R流程:
(1)特征预测头:相较于DUSt3R,增加了新的,用来预测局部的特征,实现为两层MLP加一层GELU。
(2)快速最近邻匹配:用于两个预测的特征图和点云提取特征或者点云对应关系。最近邻公式其实就是满足条件像素i(或者特征,点云位置)在中的最近邻是像素j在的最近邻。
(3) Coarse2Fine:首先在小分辨率图像中进行匹配,得到粗的对应关系,再逐渐迭代到高分辨率的图像的进行匹配。(这不就是CoFiNet吗,乐)
(4)损失函数:由三部分构成,在之前的基础上加了匹配损失函数。
匹配损失函数:采用InfoNCE损失,鼓励每个局部描述子只与另一幅图像中表示同一3D点的描述子匹配。
总损失:。
三、Splatt3R
Splatt3R的网络结构由MASt3R的Backbone,新增加的高斯头,点云与3D高斯参数结合,视角渲染四个部分。
1、MASt3R的Backbone
首先使用MASt3R训练一个Backbone然后frozen住。对于特征预测头只是用于前期训练MASt3R Backbone阶段的损失函数,对于后面Splatt3R的损失函数是用不到的。对于点云头只输出点云。
2、高斯预测头
在训练Splatt3R的部分,我们只训练高斯预测头。高斯预测头预测四个参数(偏移量,协方差矩阵,球谐函数,不透明度),然后3D高斯的平均位置转换为偏移量加原来的3D高斯位置,其实这个就是MVSplat对于3D高斯原语的预测方法。
3、点云与3D高斯参数结合
这一部分就是将点云位置,作为3D高斯的位置,然后将高斯预测头预测的偏移量叠加到点云位置上,输出3D高斯原语。
另外在原来训练好的MASt3R模型进行frozen,也保证了3D高斯原语训练时由于梯度离正确位置过远,而导致陷入局部最优,也之间监督3D点云位置到高斯原语之间的一条单调递减的损失函数,保证训练。(其实就是锁住原始3D点云位置x,但是3D点云位置一定可以做3D高斯椭球集的中心初始化吗??)
4、3D高斯渲染
首先使用3D高斯参数直接进行3DGS渲染,另外使用Mask的策略,只对被重建的部分进行监督,避免对看不见的区域进行更新。
在训练过程中Splatt3R会选择两张上下文图像(允许上下文无关视图监督?)和三张目标图像,由于上下文图像之间存在一定的直接对应关系,另外目标图像中也存在一定像素在上下文图像中。但由于模型会预测无限远的距离,这不仅浪费一些无用的计算,也会将较远的距离(看不到的图像)叠加在三维场景中,造成错误图像视角,所以论文加入了一些掩码在损失中,用于限制损失的计算范围,避免模型去预测无法从输入图像中推断的区域。
5、损失函数
损失函数由两部分组成,MSE和LPIPS的损失,并且我们只计算掩码覆盖的区域的损失。
MSE损失用于限制生成图像与目标图像之间的像素级差异(均方差)
LPIPS损失用于衡量生成图像与目标图像之间的相似度。
总损失:,一般建议
四、实验
1、对比实验
对比视角不同下的的不同模型的性能,视角越近重叠越高,视角越远重叠越低。
2、消融实验
标签:Uncalibrated,Pairs,shot,高斯,损失,MASt3R,图像,点云,3D From: https://blog.csdn.net/m0_60177079/article/details/142828188参考文献:Splatt3R: Zero-shot Gaussian Splatting from Uncalibrated Image Pairs