GPS-Gaussian:Generalizable Pixel-wise 3D Gaussian Splatting for Real-time Human Novel View Synthesis

前置知识

1)仿射变换
\quad 所谓仿射变换,就是向量经过一次线性变换加一次平移变换,用公式可以表示为:
在这里插入图片描述

\quad 其中,p为变换前原始向量,q为变换后目标向量,A为线性变换矩阵,b为平移变换向量。
\quad 对于二维图像而言,p和q分别是某个像素点在原图和仿射变换后的图中的未知(x, y)。因此,p、q可以写成如下形式:
在这里插入图片描述
\quad 所以,仿射变换矩阵T如上形式,是一个3*3的矩阵。它的作用是将某一个图片中的所有像素点的位置进行改变,映射到一个新图中。注意:在这个过程中,只改变像素点的位置,不改变像素点的值。
\quad 一般来讲,我们要想求T,需要三组点的对应值,即可将T中的所有元素求出来。求出T后,就可以对图中所有的像素点进行仿射变换。
在这里插入图片描述

\quad 仿射变换的效果如下:两幅图中已用红色圆点分别表示出选定的三角形点,可以看出,虽然图像整体出现变化,但对应的点像素值是相同的。总的来讲:仿射=平移+旋转。
[图片]
在这里插入图片描述

\quad 仿射变换有两个性质:共线不变性和比例不变性。

  • 共线不变性:任一直线经仿射变换的像(image)仍是一直线
  • 比例不变性:直线上各点之间的距离比例维持不变

2)透视变换(projective transformation)
\quad 图像的几何变换主要分为:刚性变换(平移、旋转)、相似变换(缩放、剪切)、仿射变换和透视变换(也称为投影变换)。刚性变换、相似变换、仿射变换都属于平面变换(线性)。
\quad 透视变换属于空间变换(非线性)。例如想要实现如下效果,将扑克牌单独提取出来。
在这里插入图片描述

\quad 透视变换是将一个图像投影到新的视平面,该过程包括:1.将源二维坐标系转换为三维坐标系;2.将三维坐标系投影到新的二维坐标系。仿射变换属于透视变换的特例。透视变换能够保持“直线性”,即原图中的直线,在经透视变换后仍为直线。
简而言之,就是将一个平面通过一个投影矩阵投影到指定平面上。示意图如下所示,利用透视中心、原像素点、目标点三点共线的条件。
在这里插入图片描述
\quad 透视变换的公式为:
在这里插入图片描述
\quad (x,y,1)为源目标点,要移动的目标点为(X, Y, Z)。但是就像仿射变换那样,要使Z那个位置为1,才是一个二维坐标。所以在新视平面上的二维坐标(x’, y’)。这也正是为什么说仿射变换是透视变换的特例,因为仿射变换的Z直接就等于1。
在这里插入图片描述

\quad 透视变换矩阵需要4组坐标点才可以计算出来。
3)雅各布矩阵
\quad 雅可比(Jacobian)是一个在数学中用于描述多元函数的导数的矩阵,用于表示一个向量值函数的各个分量相对于输入变量的偏导数。
在这里插入图片描述

4)SSIM图像质量损失
\quad 在图像重建、压缩等领域,评价输出图像与原图的差距,最常用的一种损失是MSE。它的计算如下,就是element-wise的计算重建图像与原图的像素差的平方,然后在全图求平均。
在这里插入图片描述

\quad 但是,MSE反应的距离,与我们人类的感受有时会有很大的区别。比如下图,有时MSE相差很大的两张图,在我们人类看来反而没什么差别。
在这里插入图片描述

\quad 因此,SSIM损失要做的事是更偏重于两个图的结构相似性,而不是逐像素的计算两者的差异。SSIM损失从亮度、对比度、结构三个方面来评价两张图像的相似性。

一、动机

\quad 尽管NeRF的加速技术取得了进步,但是基于NeRF的NVS方法普遍上仍然是time-consuming,因为他们需要在scene space中查询 dense points。
\quad 另一方面,显式表示,特别是点云,由于其高速甚至实时的渲染性能而引起了持续的关注。一旦与神经网络集成,基于点的graphics与NeRF相比,实现了一种很有前途的显式表示,具有相当的真实性和极高的效率。再到最近,3DGS实现了实时和高质量的渲染。但尽管实现了实时的推理,3DGS依赖于per-subject《3DGS》或 per-frame《Dynamic 3DGS》的参数优化。因此,这在交互式场景中是不切实际的,因为一旦场景或角色改变,它需要高斯参数的re-optimization。
\quad 在这篇文章中,我们 target a 泛化性的3DGS,直接以前馈的方式而不是per-subject optimization来回归高斯参数。受learning-based human reconstruction领域中发展的启发,PIFu-like 方法,我们的目标是从具有不同 human topologies、clothing styles和pose-dependent deformations的大规模三维人体扫描模型中学习人类高斯表示的回归(本文也是data-driven方法)。
\quad 具体而言,我们引入了一个2D Gaussian parameter maps,然后还有一个iterative depth estimation module

二、相关工作

1)Neural Implicit Human Representation.
\quad INR的优点是:memory efficiency和topological flexibility。
\quad 姿态和穿着的巨大变化使用于人体的泛化性NeRF是一项更具挑战性的任务,因此最近的工作通过利用人类先验简化了问题。例如,NHP 和GM-NeRF采用SMPL人体模型,Key-NeRF使用3D骨骼关键点来编码空间信息,但这些额外的过程增加了计算成本,并且不准确的先验估计会误导最终的渲染结果。
\quad 此外,尽管在加速单一场景NeRF方面取得了巨大进展,但针对交互式场景的efficient generalizable NeRF仍有待进一步发展。
2)Deep Image-based Rendering.
\quad Image-based rendering使用加权混合机制从一组多视图图像中合成新的视图,这通常是从几何代理(geometry proxy)计算出来的。
\quad geometry proxy的意思是指一种用于替代复杂几何结构的简化模型或对象。这个简化的模型通常用于提高计算效率、降低计算成本,或者在某些情况下作为原始几何的替代,以便更有效地处理、渲染或操作图形数据。
\quad 在NVS领域中,geometry proxy就是指重建出的显式点云、mesh surface,或隐式的SDF、Occ网格等。

三、Preliminary

\quad 3D-GS用point primitives显式地构造了一个静态的3D场景,每一个高斯可以被一个协方差矩阵Σ和平均值μ定义:
在这里插入图片描述

\quad 为了被梯度下降有效优化,这个协方差矩阵Σ被分解为一个缩放矩阵S和一个旋转矩阵R:
在这里插入图片描述

\quad 然后利用a view transformation W和 一个透视变换的仿射变换的Jacobian,将3D高斯从三维空间投影到二维空间中。
在这里插入图片描述

\quad 投影到二维空间后,然后使用point-based alpha-blend rendering(跟NeRF中使用的很像),
在这里插入图片描述

\quad c是颜色(由球谐系数定义),α是密度。

四、方法

\quad 方法的总体框架如下:
在这里插入图片描述

\quad 一旦给定一个目标的新视点,我们选择两个相邻的视图,并使用一个共享的图像编码器提取图像特征)。然后用一个深度估计器以这两个图像的特征作为输入,估计这两个图像的深度图(depth maps)。这两个图形的前景区域的深度值和RGB值分别决定了每个高斯点的三维位置和颜色,而三维高斯点的其他参数则以像素级的方式进行预测。其他参数图与深度图和源RGB图像结合起来,在二维图像平面上formulate高斯表示,并进一步不投影到三维空间中。从这两个source views进行反投影出来的高斯,被用于渲染新的views。

4.1. View Selection and Depth estimation
\quad 不同于普通的三维高斯分布,它在所有源视图上优化每个高斯点的特征,我们通过对两个邻近视图进行插值来合成新的目标视图。
\quad 一个场景如果有N个稀疏图像。对于target view,通过将目标视图与source views的向量相乘,就可得出哪些视图是最近的。然后选择最近的两个视图来作为 the ‘working set’ of two-view stereo。
选择完views后,将他们输入编码器网络获取dense feature maps
在这里插入图片描述

\quad 深度图是我们连接二维图像平面和三维高斯表示的框架的关键组成部分。注意,双视角的深度估计,相当于disparity estimation。对于一个视角中的某个pixel (u, v),视察估计的目的是在另一个视角中找到(u+x, v)。
\quad 立体匹配也称作视差估计,或双目深度估计。它的目的是在一个视角的某个坐标中,找到另一个视角下对应的坐标。这样做的前提是考虑每个像素的位移被约束为一个水平线。
\quad 只要给定相机参数,视察预测可以被很容易地转换为深度图。因此这篇文章没有太区分这两者的概念。本文主要启发于Raft-stereo。
\quad 构造3D cost volume的方法如下,给定两个特征图,使用一个矩阵乘法来获得。
在这里插入图片描述

\quad 有了3D cost volume后,使用《Raft: Recurrent all-pairs field transforms for optical flow》中的更新算子,从其中来查询T次两个视角的深度图,然后选择最后一次更新的结果拿来凸上采样到全分辨率的图像。
在这里插入图片描述
4.2. Pixel-wise Gaussian Parameters Prediction
\quad 这篇文章,以一个pixel-wise manner来在2D 图像平面上构造3D Gaussians(这一点很有意思)。也就是说构造一张Gaussian maps。
\quad 在图形学中,特别是在基于球谐系数的光照模型中,漫反射通常可以表示为球谐系数的线性组合。光照环境的球谐系数可以用于近似描述场景中光照的变化,其中漫反射是这些变化的一个重要组成部分。
简而言之,漫反射可以通过球谐系数来近似。
\quad 这个Gaussian maps由如下5个参数图组成,每一个参数图分别代表3D position,color,rotation,scaling,opacity。
在这里插入图片描述
\quad 给定预测的深度图D,利用相机参数K的投影矩阵P∈R3×4结构,位于x处的像素可以立即从图像平面反投影到三维空间。对下面这个式子的理解是,将一个二维坐标x和它对应的深度值输入给一个反投影矩阵P,然后就可以得到该二维坐标对应的三维坐标在哪里。注意,这个投影矩阵P的所有参数都是可学习的。
在这里插入图片描述
\quad 考虑到以人为中心的场景的主要特征是漫反射,我们直接用source image作为color map,而不是预测SH系数。
在这里插入图片描述

\quad 我们认为,剩下的三个高斯参数通常与(1) pixel level local features,(2) a global context of human bodies, and (3) a detailed spatial structure 相关。因此作者这里想做的是构造出包含着三种信息的高斯特征,然后基于这个特征来预测三种map。image feature已经推导出了(1)和(2)的强线索。因此,这里构造了一个额外的但架构相同的编码器,将depth map作为它的映射,作用是输出spatial feature,来体现(3)的这种信息。构造好了两个feature后,再用一个像U-Net的解码器D将这两种特征进行融合。
在这里插入图片描述
\quad 这个┏就是得到的高斯特征。基于这个高斯特征,有好几个CNN预测头,专门预测每种参数图。rotation map需要被归一化,因为它表示一个四元组,scaling map和opacity map需要激活以满足他们的范围。
在这里插入图片描述

4.3. Joint Training with Differentiable Rendering
\quad 有了这几个pixel-wise Gaussian parameter maps后,将它们lift到3D空间,然后聚合到一起形成3D Gaussian cloud,然后对其渲染出一个新视图来进行训练。
\quad 在训练时,损失函数主要包括两个方面。
\quad 一个是对渲染出的新视图进行监督。这里用了两种损失,一个是L1损失,一个是SSIM损失,两个超参数权重分别是0.8和0.2。
在这里插入图片描述

\quad 另一方面是对深度进行监督。与Raft-stereo相同,在中间过程的所有预测到的深度图序列上,以指数递增的权重(μ为0.9),执行L1监督损失。
在这里插入图片描述
5.实验部分
\quad 由于在最开始的训练步骤中如果深度估计不稳定的话,会对高斯参数回归有很大的影响,因此作者对深度估计模块进行了40k次迭代的预训练。(这是一个问题)
\quad 训练完深度估计模块后,再联合训练深度估计模块和高斯参数预测模块,执行100 k次迭代。花了15个小时。

5.1 数据集和指标
\quad 在一个cycle内,有8个cameras。每两个相邻的cameras是45°。在一次训练中,每次source images是两个相邻的图像,然后在这两个视角之间随机选取三个新视角进行渲染,评价。
\quad 为了评价在真实场景的鲁棒性,作者捕捉了4个characters的相同8-cameras设置以及额外的8个camera views作为评估数据。
评价时,之评价前景区域的渲染结果。

5.2 baseline
\quad 对比时,仍然是与泛化性方法进行对比,包括ENeRF、FloRen、IBRNet。所有的这些方法,都采用本文设置的方法来进行训练、对比。
\quad 此外,还与同时使用8个views进行优化的3D-GS进行了对比。
\quad 一旦遮挡发生,新视图中的一些区域在source view中是看不见的。在这种情况下,输入视图中深度模糊会导致ENeRF和IBRNet呈现不合理的结果,因为这些方法在进行特征聚合时会被混淆。在这些情况下,不可靠的几何代理也使FloRen产生模糊的输出,即使它使用了depth和flow流精炼网络。
\quad 在我们的方法中,由大量人体图象学习到的human priors帮助缓解遮挡带来的不良反应。此外,3D-GS需要几分钟来进行优化,并在这样一个稀疏的摄像机设置中产生新视图的噪声渲染结果

5.3 消融实验
在这里插入图片描述

\quad 当去除深度特征后,如上所示,质量下滑了一些。

猜你喜欢

转载自blog.csdn.net/DUDUDUTU/article/details/135161218