仅需0.3秒!高斯助力3D人体重建取得更好效果

论文标题:

Gaussian Shadow Casting for Neural Characters

论文作者:

Luis Bolanos Shih-Yang Su Helge Rhodin

导读:

三维人体建模一直是AR/VR领域的研究热点,这项技术能够从视频中提取出详细的人体三维结构和表面纹理,但传统的技术在处理人体阴影和光照效果时会出现诸多问题。

为了解决这一问题,本文提出了一种新的阴影模型——使用一种高斯密度代理技术来简化传统方法中复杂和开销极大的阴影计算过程。它通过使用一个简单的数学过程去计算光线分布,代替了复杂的光线追踪技术,实现了高效高质量的物体阴影效果计算。

结合现代的神经网络渲染技术,该模型可以更准确地模拟三维人体建模中光照和阴影的效果,使得重建的场景更加自然,特别是在户外阳光直射和阴影较为复杂的环境中。©️【深蓝AI】编译

1. 引入

当前的一些人体三维模型建立的研究能够从视频中重建“可动画”的3D虚拟角色(这里的“可动画”意思是这些虚拟角色在姿态和外观上都是可变的),但这些技术还无法准确处理复杂的光照和阴影效果,这限制着它们的使用场景,比如不能在直射阳光下或使用聚光灯的拍摄现场使用。、此外,这些方法在新环境中重新照明角色时也表现不佳,限制了它们在内容创作中的应用。

该研究基于NeRF技术,通过在相机和场景之间投射光线,并沿这些光线对神经网络进行多次采样,来模拟光线传输并获取场景的密度和颜色。因为这些模型没有包含照明模型,它们学习到的颜色数据中已经包括了光照、阴影和视点依赖的效果。在有强光源(比如太阳)的复杂场景中学习这些模型,会导致模型过度适应观察到的阴影,使得模型无法适应新的姿态,因为阴影是一个全局效应,身体的一个小动作可能会影响整个身体影子的外观。

目前的技术在尝试在NeRF中投射阴影时,尽管可以进行二次光线追踪,但这会带来巨大的计算成本,这里的二次光线追踪,就是单独训练一个学习阴影的模型,与NeRF一起训练,这个模型在NeRF渲染完整个人体之后再把学习到的阴影渲染上去,肉眼可见的高算量!

为了解决这一问题,该研究提出了一个新的解决方案,引入了一个体积密度场以提高阴影投射的效率,同时保持可微分性和优化的平滑性。该方法使用了各向异性高斯密度模型和相关的渲染函数,这些函数能够近似精细的密度,并允许在射线上积分这些高斯密度,从而避免了采样步骤,这个过程笔者解释一下,对于不可微的东西,需要将其进行采样离散化,从而模拟微积分运算(这个过程往往算量高),而由于高斯模型是可微的,因此可以直接进行微积分运算,这样就可以降低整个运算的成本。与现有使用高斯进行渲染的工作不同,该研究不需要仿射近似或后到前排序。此外,通过延迟着色技术,该研究在第一次渲染通道中计算每个像素的反照率、深度和法线,在第二通道中只从估计的表面点向光源投射一个二次光线,使阴影计算不再依赖于NeRF中的样本数量,这两个步骤都能够很大程度的削减计算的开支,提升计算的速度。

该研究的实验结果显示,引入明确的光照处理可以减少在新视角和新姿势合成任务中的伪影发生。它能够从稀疏视角数据中分离出照明和阴影,并且只依赖于单一照明条件。该研究还展示了在没有任何用户输入的情况下优化未知光方向的能力。

在这里插入图片描述
图1|全文方法总览©️【深蓝AI】编译

2. 具体方法与实现

如图1所示:该方法的输入是稀疏的图像,图像中包含一个人体,这个人体的姿态是统一的,随后通过一个Animatable NeRF对图像进行编码和采样,将其转换为一个Lighting Module,这个模型是可以在训练中进行学习和优化的,优化的过程中,一个基于高斯的阴影体积密度场(对应图1中间部分的三张图)会用来学习整个人体的阴影。当模型收敛之后,能够渲染出不同光照下的人体阴影,如图1最后的一部分,能够看到在强烈的阳光下,左图的阴影及光照渲染效果要明显好于右图。

可见本文的核心就是对于阴影的学习,具体的实现笔者将一步一步进行拆分讲解。

2.1 延迟渲染模型

该小节主要描述作者如何提升速度:要学习人体的影子,就需要了解人体的姿态渲染,因为每个姿态的影子都是不同的,而这个渲染过程的计算量很大,需要加速!

角色的姿态通过每个关节的局部到世界的转换矩阵来表示。该方法中设计的一个关键元素是一个延迟的照明模型,它将渲染过程分为两个阶段:第一阶段计算反照率、表面法线和深度;第二阶段添加阴影和遮蔽。

这个过程的核心是:由一个封闭形式的数学模型来计算阴影。在体积身体模型中,该模型通过最小化重建图像和渲染图像之间的投影差异来进行优化,也就是大家熟知的L1损失函数;随后通过通过沿主视图射线采样颜色和密度,并将这些样本整合以计算每个像素的反照率,然后通过兰伯蒂反射模型计算出反射的颜色,这个模型最大的特点就是延迟渲染。

延迟渲染的好处在于,它允许仅在每个像素而不是每个采样位置计算照明信息,从而显著提高计算速度。为了适应这种方法,作者调整了模型以产生表面法线和深度,从而为每个像素的视图光线提供数据。通过将密度公式转换为带有等值线损失的有符号距离函数来获得表面法线,然后通过对距离与原始查询位置的微分来估计法线。

同时,作者将深度与反照率结合起来,通过整合沿射线的样本和传输率来计算。此外,作者还固定了定向光的强度,这有助于简化模型,避免过度的参数化并减少歧义。

笔者简要为各位总结:这个延迟渲染模型的主要作用就是对训练和渲染进行一个加速,作者通过调整照明信息的最小计算单位(采样点->每个像素)以及一些相关的小trick,实现了延迟渲染,从而提升了整体的速度。

2.2 基于高斯的阴影投影

本节即将介绍的是关于阴影部分的渲染质量提升,正好对应本文的两个贡献:速度与质量。

作者使用一组高斯模型来表示身体形状,每个高斯模型严格地附着在骨架模型的不同关节上。这些高斯模型通过它们的位置(平均值)、方向(通过旋转矩阵定义)和大小(沿各轴的标准偏差)来描述。该设置通过使用各向异性高斯来高效地模拟阴影,这种高斯在不同轴向可以变化尺度和方向。

每个关节的高斯由几个参数定义:3D空间中的平均位置、描述高斯大小的轴对齐标准偏差,以及通过6自由度表示给出的方向。此外,每个高斯还具有一个密度值,指示它对整体模型的贡献程度。图2能够清晰地看出高斯模型是如何描述人体的:随着高斯数量的增加(从a-c,d是GT网格)人体的模型能够被描述更清晰。

还记得前文我们说过什么吗?要学习阴影的渲染,首先要了解人体的姿态,这里通过高斯表示人体模型,能够更精确的描述人体的姿态,从而为后续的阴影渲染做好了铺垫。

在这里插入图片描述
图2|基于高斯的人体模型©️【深蓝AI】编译

在渲染和动画方面,该模型使用每个高斯的密度函数,该函数使用查询位置与高斯平均值的差异来计算,并考虑方向和大小因素。场景中任何给定点的整体密度随后是该点每个高斯密度的总和,根据该特定帧的关节位置和方向进行调整。

该方法通过避免像传统体积渲染技术(如NeRF)那样沿射线采样多个点,从而促进动态场景中高效的阴影投射。相反,高斯模型允许快速和闭合形式的集成,这加快了与光照和阴影相关的计算,使得该模型特别适合需要实时渲染的计算图形和动画应用。

使用高斯描述完人体姿态后,下一步就是使用高斯光纤追踪技术,结合这个人体姿态的描述,对阴影进行学习和渲染。

高斯光线追踪技术通过3D各向异性高斯模型来创建一维高斯密度,并进一步计算整个模型的光线遮挡和透射率。简单来说,就是通过特定的光线(具有特定的起点和方向)穿过一个3D的高斯模型,这个模型可以简化为一系列的一维高斯模型的叠加。每条光线的遮挡程度可以通过这些一维高斯的积分来计算,这个积分值反映了光线被物体吸收的程度,从而影响了透射率。通过这种方法,可以计算出一个阴影图的值,这个值是通过计算光线从它的起点到射线结束时被物体遮挡的总量来确定的。文中的数学公式详细描述了如何从三维高斯模型中派生出一维高斯密度函数的形式,并进一步用于计算光线遮挡和透射率,笔者将最重要的几条公式罗列如下:

s = T = exp ⁡ ( − ∑ i = 0 J ∑ k = 0 K ∫ 0 L G i k ′   d t ) s = T = \exp \left( -\sum_{i=0}^{J} \sum_{k=0}^{K} \int_{0}^{L} G'_{ik} \, dt \right) s=T=exp(i=0Jk=0K0LGikdt) G i k ′ = C ⋅ exp ⁡ ( − ( μ − r ) 2 2 σ 2 ) G'_{ik} = C \cdot \exp \left( -\frac{(\mu - r)^2}{2\sigma^2} \right) Gik=Cexp(2σ2(μr)2) C = exp ⁡ ( − 0.5 ( μ − r 0 ) T Σ − 1 ( μ − r 0 ) ) C = \exp \left( -0.5 \left( \mu - r_0 \right)^T \Sigma^{-1} \left( \mu - r_0 \right) \right) C=exp(0.5(μr0)TΣ1(μr0))

上述过程有点类似于3DGS的Splatting过程,通过将穿过人体高斯模型的光线,splatting到2D平面上,从而产生阴影的渲染,这个过程模拟了光的直线传播,也就是阴影产生的本质原因。由于人体由高斯模型进行表示,穿过人体的光线也用高斯表示,因此哪部分光会被遮挡,哪部分光不会被遮挡,被遮挡后的光线应该呈现何种状态,渲染出什么样的阴影,本质上都是高斯之间的运算,并且由于是2D平卖弄,因此都是一维高斯密度函数的计算,这个过程十分简单且高效,因为高斯是可微的,从而能够精确的渲染出角色的阴影。

3. 实验

作者进行了大量的可视化实验,因为阴影的渲染实际上是很难找到GT作为对比计算数值的,所以可视化是一个很好的论证方式;同时作者也给出了他们重建模型的图像质量数值,从数值实验的各种图表可以看出:在比较重要的PSNR上,该方法在各个数据集中的表现基本上都有一些提升,但本文注重的并不是提升整体的图像质量,而是提升阴影的渲染能力,因此大家不用太care这里的提升是否足够“显著”。

在这里插入图片描述
图3|数值实验结果©️【深蓝AI】编译

接下来是本文的重头戏,也就是阴影渲染可视化实验。

在这里插入图片描述
图4|阴影可视化渲染(固定姿态)©️【深蓝AI】编译

在这里插入图片描述
图5|阴影可视化渲染(新姿态)©️【深蓝AI】编译

可以从这部分实验很明显地看出:不管是固定姿态的渲染,还是合成的新姿态的渲染,就阴影部分来说,该方法都取得了非常出色的效果。尤其是在室外的场景下,大家注意看阴影部分与人体的贴合程度,还有阴影的边界,都渲染得十分清晰,对于一些棱角部位的影子,也显得渲染的十分“丝滑”,由此可见该方法提出的基于高斯的阴影渲染技术十分的有成效!

随后作者还对比了方法的运行速度,如图6所示:

在这里插入图片描述
图6|渲染速度实验结果©️【深蓝AI】编译

这个图的正确解读姿势,主要关注最后一个“+”后面的内容,这部分是渲染的方法,本文提出的方法即为“GSC”,前三个表格能够看到,加了GSC后,相比于没加的17.13,GSC只需要用0.3秒即可很大程度的提升阴影的质量,而如果要使用基于NeRF的方法,则需要4秒左右,已经拉开了近10多倍的差距。后四个表格体现的是随着采样数量的增加,耗时的变化关系,可以看到从最少的8组到最大的64组,采样的组数提升了8倍,但是时间上只从最开始的20秒加到了40秒,只多用了一倍的时间,即可提升八倍的采样数量,这个买卖还是十分划算的,这也体现了该方法在速度上的优势。

4. 总结

本文提出了一个高斯阴影模型实现了在不同环境中的三维人体模型重建的,并能够实现非常出色的阴影渲染效果。这个模型适用于动态场景,并且可以进行迭代细化。重建的角色即便在新环境中重新定位和重新照明,也能够拥有逼真的阴影渲染。同时本文还通过延迟渲染等小trick加快了计算的速度,使得该方法能够以很少的计算成本(0.3秒)为代价,大大提升模型的阴影渲染能力。

编译|阿豹

审核|Los

移步公众号【深蓝AI】,第一时间获取自动驾驶、人工智能与机器人行业最新最前沿论文和科技动态。

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值