Deformable 3D Gaussians
OmniRe中提到他们参考了DeformableGS来构建非刚体object的构建,所以看了一下DeformableGS论文,论文是去年9月发表,也是紧跟3DGS的工作,当时对整个结构的改动不是特别大,主要贡献就是在原版上面加入了一个MLP用于二次优化部分高斯属性;
代码地址:https://github.com/ingra14m/Deformable-3D-Gaussians
因为文章已经是去年9月的成果,和现在的论文写法基本一致,所以只对主要贡献点进行翻译;
论文翻译
摘要
隐式神经表示为动态场景重建和渲染的新方法铺平了道路。尽管如此,前沿的动态神经渲染方法严重依赖于这些隐式表示,这些表示经常难以捕捉场景中物体的复杂细节。此外,隐式方法在一般动态场景中难以实现实时渲染,限制了它们在多种任务中的使用。为了解决这些问题,我们提出了一种可变形的3D高斯散射方法,该方法使用3D高斯重建场景,**并在规范空间中用变形场学习它们,以模拟单目动态场景。我们还引入了一种无额外开销的退火平滑训练机制,可以减轻不准确位姿对真实世界数据集中时间插值任务平滑性的影响。**通过差分高斯光栅化器,可变形的3D高斯不仅实现了更高的渲染质量,还实现了实时渲染速度。实验表明,我们的方法在渲染质量和速度方面都显著优于现有方法,非常适合新视角合成、时间插值和实时渲染等任务。我们的代码可在https://github.com/ingra14m/Deformable-3D-Gaussians上获得。
1.引言
高质量地从一组输入图像重建和真实感渲染动态场景对于多种应用至关重要,包括增强现实/虚拟现实(AR/VR)、3D内容制作和娱乐。先前用于模拟这些动态场景的方法在很大程度上依赖于基于网格的表示,如文献[9, 14, 18, 40]中描述的方法所示。然而,这些策略经常面临一些固有的局限性,例如缺乏细节和现实感、缺乏语义信息,以及难以适应拓扑变化。随着神经渲染技术的出现,这种范式经历了显著的转变。隐式场景表示,特别是通过NeRF [28]实现的表示,在新视角合成、场景重建和光线分解等任务中展示了显著的效果。
为了提高基于NeRF的静态场景的推理效率,研究人员已经开发了多种加速方法,包括基于网格的结构[7, 46]和预计算策略[44, 52]。值得注意的是,通过引入哈希编码,Instant-NGP[29]实现了快速训练。在质量改进方面,MipNeRF[2]开创了一种有效的抗锯齿方法,后来被ZipNeRF[4]纳入基于网格的方法中。3D-GS[15]最近将基于点的渲染扩展到高效的CUDA实现,使用了3D高斯,从而实现了实时渲染,并且匹配甚至超过了Mip-NeRF[2]的质量。然而,这种方法是为表示静态场景而设计的,其高度定制的CUDA光栅化流程降低了其可扩展性。
隐式表示已经被越来越多地用于建模动态场景。为了处理动态场景中的运动部分,耦合方法[43, 49]将NeRF置于时间变量的条件之下。相反,解耦方法[23, 30, 31, 34, 39]则采用变形场来通过将给定时间的点坐标映射到规范空间来建模场景。这种解耦的建模方法可以有效地表示非剧烈变化的动态场景。**然而,不管是哪种分类,采用隐式表示来表示动态场景通常既效率低下又效果不佳,表现为收敛速度慢,并且容易过拟合。**受到开创性的NeRF加速研究的启发,许多关于动态场景建模的研究已经整合了离散结构,如体素网格[11, 38]或平面[6, 36]。这种整合提高了训练速度和建模精度。然而,挑战依然存在。利用离散结构的技术仍然在实现实时渲染速度和产生具有足够细节的高质量输出的双重约束下挣扎。这些挑战背后有多个方面:首先,光线投射作为一种渲染方式,在扩展到更高分辨率时经常变得效率低下。其次,基于网格的方法依赖于低级假设。与静态场景相比,动态场景表现出更高的秩,这限制了这种方法可达到的质量上限。
在本文中,为了解决前述的挑战,我们扩展了静态3D-GS并提出了一个用于模拟动态场景的可变形3D高斯框架。为了增强模型的适用性,我们特别关注单目动态场景的建模。我们不是逐帧重建场景[26],而是让3D高斯依赖于时间,并与在规范空间中的可学习3D高斯一起训练一个纯粹的隐式变形场。这两个部分的梯度是从定制的微分高斯光栅化管线中得到的。此外,为了解决由于位姿不准确而在重建过程中导致的时间序列中的抖动问题,我们引入了一种退火平滑训练(AST)机制。这种策略不仅提高了时间插值任务中帧之间的平滑性,还允许渲染更多的细节。
总之,我们工作的主要贡献是:
- 一个用于模拟单目动态场景的可变形3D-GS框架,能够实现实时渲染和高保真度场景重建。
- 一种新颖的退火平滑训练机制,确保时间上的平滑性,同时在不增加计算复杂性的情况下保留动态细节。
- 第一个通过变形场将3D-GS扩展到动态场景的框架,使得在规范空间中学习3D高斯成为可能。
3. Method
我们的方法概述如图2所示。我们方法的输入是一组单目动态场景的图像,以及通过SfM [37]校准的时间标签和相应的相机位姿,SfM还产生了一个稀疏的点云。从这些点开始,我们创建了一组3D高斯 G ( x , r , s , σ ) G(x, r, s, \sigma) G(x,r,s,σ) ,由中心位置 x x x、不透明度 σ \sigma σ 和由四元数 r r r和缩放 s s s获得的3D协方差矩阵 Σ \Sigma Σ 定义。每个3D高斯的视角依赖外观通过球谐函数(SH)表示。为了模拟随时间变化的动态3D高斯,我们将3D高斯和变形场解耦。变形场以3D高斯的位置和当前时间 t t t作为输入,输出 δ x , δ r \delta x, \delta r δx,δr和 δ s \delta s δs。随后,我们将变形的3D高斯 G ( x + δ x , r + δ r , s + δ s , σ ) G(x + \delta x, r + \delta r, s + \delta s, \sigma) G(x+δx,r+δr,s+δs,σ)放入高效的差分高斯光栅化流程中,这是一个基于平铺的光栅器,允许各向异性splats的 α \alpha α混合。通过跟踪累积的 α \alpha α值以及适应性地控制高斯密度,共同优化3D高斯和变形网络。实验结果表明,在经过30k次训练迭代后,3D高斯的形状稳定下来,规范空间也是如此,这间接证明了我们设计的效能。
3.1. 规范空间中通过3D高斯散射的可微渲染
此处和原版公式基本一致,很多论文都有类似写法,不再进行翻译,只对最后两段进行翻译
在优化过程中,自适应密度控制成为一个关键组件,使3D高斯的渲染能够达到理想的结果。这种控制具有双重目的:首先,它根据 σ \sigma σ强制剔除透明高斯。其次,它需要高斯分布的密集化。这种密集化填补了缺乏几何细节的区域,同时细分了高斯较大且有显著重叠的区域。值得注意的是,这些区域往往显示出明显的位移梯度。按照[15],我们使用给定的阈值 t p o s = 0.0002 t_{pos} = 0.0002 tpos=0.0002来识别需要调整的3D高斯。对于不足以捕捉几何细节的微小高斯,我们克隆高斯并将它们朝位移梯度的方向移动一定距离。相反,对于那些明显大且重叠的高斯,我们将它们分割并将其规模除以一个超参数 ξ = 1.6 \xi = 1.6 ξ=1.6。
显然,3D高斯只适合表示静态场景。为每个3D高斯应用一个时间条件的可学习参数不仅违背了可微高斯光栅化管线的最初意图,而且还会导致运动的空间时间连续性的丧失。为了使3D高斯能够表示动态场景,同时保留其各个可学习组件的实际物理意义,我们决定在规范空间中学习3D高斯,并使用一个额外的变形场来学习3D高斯的位置和形状变化。
3.2. 可变形3D高斯
使用3D高斯来模拟动态场景的一个直观解决方案是在每个时间依赖的视图集合中分别训练3D-GS集,然后作为后处理步骤对这些集合进行插值。虽然这种方法对于在离散时间点的多视图立体(MVS)捕捉来说是可行的,但它不适用于时间序列内连续的单目捕捉。为了处理后者,也就是更一般的情况,我们联合学习变形场以及3D高斯。
我们利用变形网络和3D高斯,将运动和几何结构解耦,将学习过程转换到规范空间中,以获得时间无关的3D高斯。这种解耦方法引入了场景的几何先验,将3D高斯的位置变化与时间和坐标联系起来。变形网络的核心是一个多层感知器(MLP)。在我们的研究中,我们没有采用静态NeRF中应用的网格/平面结构,这种结构可以加速渲染并提高其质量。这是因为这样的方法基于低秩假设,而动态场景具有更高的秩。显式的基于点的渲染进一步提升了场景的秩。
给定3D高斯的时间 t t t和中心位置 x x x作为输入,变形MLP产生偏移量,随后将规范的3D高斯转换到变形的空间:
( δ x , δ r , δ s ) = F θ ( γ ( sg ( x ) ) , γ ( t ) ) ( 4 ) (\delta x, \delta r, \delta s) = F_{\theta}(\gamma(\text{sg}(x)), \gamma(t)) \quad(4) (δx,δr,δs)=Fθ(γ(sg(x)),γ(t))(4)
其中 sg ( ⋅ ) \text{sg}(\cdot) sg(⋅)表示一个停止梯度操作, γ \gamma γ表示位置编码:
γ ( p ) = ( s i n ( 2 k π p ) , c o s ( 2 k π p ) ) k = 0 L − 1 ( 5 ) \gamma(p) = (sin(2^k\pi p), cos(2^k\pi p))_{k=0}^{L-1} \quad(5) γ(p)=(sin(2kπp),cos(2kπp))k=0L−1(5)
其中在合成场景中 L = 10 L = 10 L=10用于 x x x, L = 6 L = 6 L=6用于 t t t,而在真实场景中 L = 10 L = 10 L=10用于 x x x和 t t t。我们将变形网络的深度 D = 8 D=8 D=8,隐藏层的维度 W = 256 W=256 W=256。实验表明,将位置编码应用于变形网络的输入可以增强渲染结果中的细节。
3.3. 退火平滑训练
众多真实世界数据集普遍存在的一个挑战是位姿估计的不准确性,这一现象在动态场景中尤为明显。在不精确的位姿下训练可能会导致对训练数据的过拟合。此外,如HyperNeRF [31]中提到的,来自colmap的真实数据集的不精确位姿可能会导致相对于测试或训练集的每个帧之间的空间抖动,导致渲染测试图像与地面实况相比出现明显偏差。先前使用隐式表示的方法从MLP的固有平滑性中受益,使得这些微小偏移对最终渲染结果的影响相对不明显。然而,显式的基于点的渲染往往会放大这种效果。对于单目动态场景,在固定时间的新视角渲染仍然不受影响。然而,对于涉及插值时间的任务,这种在不同时间下不一致的场景可能会导致不规则的渲染抖动。
为了解决这个问题,我们提出了一种专为真实世界单目动态场景设计的新型退火平滑训练(AST)机制:
Δ = F θ ( γ ( sg ( x ) ) , γ ( t ) + X ( i ) ) X ( i ) = N ( 0 , 1 ) ⋅ β ⋅ Δ t ⋅ ( 1 − i τ ) ( 6 ) \Delta = F_{\theta}(\gamma(\text{sg}(x)), \gamma(t) + X^{(i)}) \\ X^{(i)} = N(0,1) \cdot \beta \cdot \Delta t \cdot (1 - \frac{i}{\tau}) \quad (6) Δ=Fθ(γ(sg(x)),γ(t)+X(i))X(i)=N(0,1)⋅β⋅Δt⋅(1−τi)(6)
其中 X ( i ) X^{(i)} X(i)代表第 i i i次训练迭代时线性衰减的高斯噪声, N ( 0 , 1 ) N(0, 1) N(0,1)表示标准高斯分布, β \beta β是一个经验确定的缩放因子,值为0.1, Δ t \Delta t Δt代表平均时间间隔, τ \tau τ是退火平滑训练的阈值迭代次数(经验设置为20k)。
与[34, 38]中引入的平滑损失相比,我们的方法不会增加额外的计算开销。它可以在训练的早期阶段增强模型的时间泛化能力,同时防止后期的过度平滑,从而保留动态场景中物体的细节。同时,它减少了在时间插值任务中观察到的真实数据集的抖动。
5. 局限性
通过我们的实验评估,我们观察到3D高斯的收敛性深受视角多样性的影响。因此,具有稀疏视点和有限视点覆盖的数据集可能会导致我们的方法遇到过拟合的挑战。此外,我们方法的有效性取决于位姿估计的准确性。当我们的方法在Nerfies/HyperNeRF数据集上没有达到最佳的PSNR值时,这种依赖性是显而易见的,这归因于通过COLMAP进行位姿估计时出现的偏差。此外,我们方法的时间复杂度与3D高斯的数量直接成比例。在有大量3D高斯的场景中,训练时长和内存消耗都有可能增加。最后,我们的评估主要围绕中等运动动态的场景。该方法在处理复杂的人类动作,如细微的面部表情方面的能力,仍然是一个未解决的问题。我们认为这些限制是后续研究的有希望的方向。
6 结论
我们介绍了一种新的可变形3D高斯散射方法,专门为单目动态场景建模而设计,它在质量和速度上都超越了现有方法。通过在规范空间中学习3D高斯,我们增强了3D-GS可微渲染管线对动态捕获的单目场景的适用性。至关重要的是,与隐式表示相比,基于点的方法更易于编辑,更适合后期制作任务。此外,我们的方法还融入了一种退火平滑训练策略,旨在减少与时间编码相关的过拟合,同时保持场景细节,而不增加任何额外的训练开销。实验结果表明,我们的方法不仅实现了更优质的渲染效果,而且还能够实时渲染。
参考资料
- https://blog.youkuaiyun.com/u014090429/article/details/112618607:
Sequential
是按顺序执行,ModuleList执行顺序取决于forward里面定义的顺序,Sequential
也可以指定单独执行某一层;