单图像三维重建算法主要通过深度学习实现,主要分为以下三种技术路线
相比较其他算法,基于NERF的算法一般可以生成更高像素质量、更高分辨率、更高清晰度的虚拟形象。但是这类算法不能生成特定输入的图像。
这个技术路线是将单图像三维重建拆分为两个子任务,分别为形体建模和色彩渲染。每个子任务引入子模型进行建模,同时使用各自的sota算法实现形体建模和色彩渲染。这种技术路线有个难点是模型的参数比较难调,需要在形体建模和色彩渲染之间做取舍。
Who Left the Dogs Out? 3D Animal Reconstruction with Expectation Maximization in the Loop(WLOP)算法研究了怎么重建动物(主要是狗)的形体,可以在不使用3d数据真值的情况下实现对动物形体的重建。模型重建过程基于SMAL的3d先验、二维的关键点与分割图来实现。具体而言,作者使用了一个encoder进行特征学习,之后使用学习到的特征来拟合形体、姿态以及相机参数,三者结合就可以实现整体身形的学习。具体学习的时候,由于给定先验体态和数据集实际的形态不是很匹配,为了更精确的估计形体,作者使用EM算法。E阶段去估测期望形体参数并冻结其他形体参数的更新;M阶段来更新其他形体参数。最后通过迭代更新来实现整个形体的学习。在完成形体的学习后,另外一个要解决的问题就是如何上色,这里使用的算法是Texformer。Texformer是来做人体建模的,可以通过使用输入图像的全局信息进行更加精细的学习,同时尝试融合输入图像与色彩信息来进行完整的染色。模型使用了SMPL来预测体态,同时采用Vision transformer来实现全局信息的学习。
Texformer使用预计算色彩图作为query,图上每个像素对应于三维空间下的一个顶点;使用输入图像作为value;使用二维组件分割图(2D part segmentation map)作为映射图像到UV空间的载体。作者同时使用一个混合蒙版来合并texture flow与RGB色彩来生成效果更好的色彩预测结果。

总结该技术路线的优缺点:
优点:
在神经渲染器没出现之前,我们学习三维模型的基本方式是使用准备好的三维真值,比如给定一个玩具模型以及三维的坐标信息,我们直接去回归基于三维的参数来实现三维建模。神经渲染器的出现则免去了这个麻烦,因为有办法直接用它获得二维投影,这样子的话用二维的真值就可以学习三维的模型特性了,相比较于使用三维真值,绝对是非常有价值而且能商业化的一条路。使用神经渲染器可以实现端到端的学习,学习目标为姿态、身形、相机拍摄参数以及色彩信息等。神经渲染器通过优化像素采样过程支持可导。常见的有neural-render,soft-render与Dib-R等。通过使用可导渲染器构建2D->3D的渲染结果,并使用投影投射回2D,可以计算生成的渲染结果与原始图像的差异,因而可以做到快速估计并学习关键的重建参数。
CMR 这篇论文第一次提出通过学习类目模板来解决三维重建问题,但是模板需要使用运动推断结构(SFM)去计算初始化模板,并且使用蒙版和关键点进行弱监督学习;同时使用球坐标转换的方式映射UV sampling结果,学习并进行渲染上色。具体的框架图请见下图。CMR是一篇非常经典的论文,后面提到的UMR、SMR以及没有提到的u-cmr都是以此为蓝本进一步提升的。尤其是染色的解决方案,基本上后面的论文都是仿照这种方案来做的。

UMR这篇论文尝试使用part segmentation map来代替蒙版和关键点以简化三维重建问题。作者认为物体可以切分为多个子区域,每个区域相互连通,且区域内、区域间的色彩信息是连贯的。因此2D、3D间相互的转换应能维持这种关系。借由这种思路,UMR算法不需要构造类目模板,因而没有类目的限制。同时UMR借助part-segmentation map进一步明晰了物体边界,这对于更加细节的学习物体的色彩有着十分重要的作用。我们之前提到的texformer,选择了part-segmentation map,便是有一部分原因来源于此。

SMR通过插值三维重建过程中的关键属性来实现建模。由于物体重建后,身形、纹理以及身体关键部位对应关键点位置应尽量与原图保持一致,作者提出(c)、(d)两种限制来保持重建后物体的一致性。此外通过保持2D->3D->2D的双向投影来确保2D输入与预测一致,并使用GAN来对相机拍摄角度、纹理信息、物体三维等信息进行插值,生成新的数据,补充训练集,以获得较好的效果。

该技术路线的优缺点:
优点:
神经辐射场(NERF)也是最近兴起的渲染器,和神经渲染器的功能类似,但是相比较而言,有其自身更独特的优点。神经辐射场的工作原理是,使用三维空间信息以及二维姿态信息,基于视图的辐射场以及体积密度,学习三维空间坐标与二维视角并投射到RGB颜色值上。
具体实现方式是使用固定的条件编码加上多层感知机(MLP)把输入翻译成像素值以及体素密度。之后进行体态重建将二维输入直接映射到三维。在神经辐射场之前,三维重建的做法是,使用基于voxel-grid的方法表示三维物体,或三维物体对应的特征;
前者极大地消耗了内存,因而只能用于低精准度的三维物体重建;后者需要额外的解码器去解码特征为RGB像素,使得多维度的一致性不够好。在使用神经辐射场之后,相比于基于网格的方法,这种方法不会空间离散、不限制拓扑形态,对于物体的学习有更好的效果。最后还是要提一下,NERF实现很多都是基于GAN的。其中的原因之一是,GAN对于训练数据不足有着很大的补充作用。
Graf基于神经辐射场,引入生成对抗网络,使用unpose图像进行训练。目的是生成未知视域下的三维重建结果。其中生成器主要负责基于图像二维坐标进行采样,每次取得一个patch(K*K个点),然后从这些点里面使用分层采样的方式再采样出N个点进行精细化学习。生成器额外引入了Z_shape和Z_appearance两种隐层编码,可以直接学习体态和表观特征,同时将两种特征解耦,做到分别预测。判别器主要负责比较采样得到的patch与预测生成的patch。训练过程中从感知域比较大的patch开始,然后逐步缩小。
Pi-gan基于Graf做了改进。它使用基于周期激发函数的正弦表示网络来加强神经辐射场中的位置编码效果,以生成更宽视角下的重建结果。相比较于graf,使用siren替代了位置编码,使用基于style-gan的映射网络使得形态和表观特征只依赖于给定输入。同时使用阶段训练以逐步收敛模型。
ShadeGAN在pi-gan的基础上考虑了光照对于三维重建的影响,目的是去进一步解决三维重构场景下形态和颜色相互影响导致重建效果不佳的问题。作者认为,一个好的三维重建模型,在不同的光照条件下去渲染,形态应该相差不大。同时,作者提出了表面追踪的方法来提升体素渲染的速度。相比于pi-gan的唯一不同是,作者引入了基于光照的限制,同时输出不再直接输出颜色,而是输出经过映射前的输入,目的是希望引入光照来进行后处理,具体处理方法为Lambertian shading。

CIPS-3D基于pi-gan进一步改进。作者发现现有方法(比如pi-gan)通过编辑浅层向量来隐性控制角度,然而并不能实现基于高分辨率下任意渲染角度的重建;同时在训练不完全的情况下会出现镜像对称的次优解。因此,作者提出调制SIREN模块来去处理生成的不同图像的尺度对于重建的影响。同时,作者发现使用方向作为输入会导致不同维度成像不一致,因而采用输入点的方式来替代。另外,作者发现了生成结果有概率出现镜像对称问题。为了处理这个问题,使用隐式神经表达网络来把隐式特征化为对应的RGB像素,同时追加了一个附加判别器,以处理镜像对称问题。实验证明这种处理方式起到了很好的效果。

该技术路线的优缺点:
优点: