Implicit_Functions_in_Feature_Space_for_3D_Shape_Reconstruction_and_Completion

ZhuYuanxiang 2023-09-08 15:32:14
Categories: Tags:

特征空间中的隐式函数应用在3D形状的重建和完成

Chibane_Implicit Functions in Feature Space for 3D Shape Reconstruction and Completion.pdf

Chibane J, Alldieck T, Pons-Moll G. Implicit functions in feature space for 3d shape reconstruction and completion[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 6970-6981.

作者代码

翻译与修改的代码

摘要

虽然许多研究都专注于从图像中进行三维重建,但在本文中我们关注的是从各种三维输入中实现三维形状的重建和补全,这是因为这些三维输入在某些方面是存在缺陷的:体素(低分辨率或高分辨率)、点云(稀疏或稠密),数据(完整或不完整)。这此三维输入正是三维扫描仪的输出结果,而且获得这样的数据也越来越容易,并且它们还是三维计算机视觉算法的过渡数据,因此处理这种三维输入变得越来越重要。最近,经过学习的隐式函数,因其能够产生具有连续性的重建,而表现出了很大的潜力。然而,我们也从这类三维输入的重建中发现了两个不足:

  1. 输入数据中存在的细节没有被保留;
  2. 多关节型的人体重建效果很差。

为了解决这个问题,我们提出了隐式特征网络(Implicit Feature Networks, IF-Nets),这种网络提供了连续的输出,能够处理多种拓扑结构,并且为稀疏的或者存在丢失的输入数据提供了完整的形状,保留了最近学习得到的隐式函数的良好特性,但是最为关键的是网络能够保留输入数据中存在的细节信息,并且能够重建多关节型人体。我们的工作与以往工作的两个关键区别:

  1. 在编码三维形状时,抽取一个具有深度特征的可学习的三维多尺度张量来代替单个矢量,并且这个张量对齐了嵌入了形状的原始的欧几里德空间;
  2. 在分类时,从位于一个连续查询点上的张量中抽取深度特征来代替$(x,y,z)$点坐标。这样的操作强迫模型决策是基于局部的和全局的形状结构而不是点坐标,因为点坐标在欧几里德变换下是随意的。

实验表明,在Shape Net数据集上,IF-Nets明显优于先前的三维物体重建方法,并且获得了更加精确的三维人体重建。代码参考:Implicit Feature Networks

image-20211228141321682

图1:使用本文方法的三维重建结果。(左):稀疏的体素重建;(中):稠密的体素重建;(右):三维单视角点云重建(后背遮挡)。我们的方法发现了连续的输出,处理了多重拓扑(右),并且保存了(中)与(右)的输入细节,在人体关节上效果很好,不像以前的工作。

Sec01 介绍

虽然许多工作关注的是基于图像的三维重建[^23],但是本文关注的是从各种三维输入中实现三维表面重建和形状补全,这些输入在某些方面存在不足:体素栅格(低分辨率或高分辨率)、点云(稀疏或稠密),数据(完整或不完整)。随着三维扫描技术越来越普及,这样的输入也变得无所不在,它们通常是三维计算机视觉算法中间阶段的输出。然而,大多数应用程序的最终输出应该是可渲染的连续的和完整的曲面,这才是我们工作的重点。

对于稀疏栅格和不完整的点云,相比经典方法[^6][^42]来说,基于学习的方法则是更好的选择,因为它们推理对象的全局形状,但是它们也存在输出表示的限制。

最近,隐式函数[^48],[^43],[^10]已经被证明是一种有前途的可用于学习的形状表示工具。其关键思想是,给定一个粗精度形状,将之编码为向量,和一个查询点的$(x,y,z)$的坐标 ,学习一个函数用于决定查询点在形状的内部还是外部。学习后的隐函数可以在任意分辨率的三维查询点上求值,并且采用经典的移动立方体算法(Marching Cubes Algorithm,MCA)提取网格或者曲面。这种输出表示能够支持以任意的分辨率进行形状恢复,并且输出结果是连续的,还可以处理不同的拓扑结果。

虽然这些方法在重建已经对齐的刚性物体时效果很好,但是它们存在两个限制:

  1. 它们不能表示复杂的对象,例如:多关节人体(经常会遇到手臂或者大腿缺失)
  2. 它们不能保留输入数据中已经存在的细节。

发生这种情况是因为

  1. 网络在$(x,y,z)$点坐标上学习了过强的先验,破坏了关节的方差;
  2. 形状编码向量缺少三维结构,导致解码看起来更像形状原型的分类[^66],而不是连续性的回归。

因此,所有现存的基于学习的方法,无论它们是基于体素、网格、点或者隐式函数都存在某些方面的不足。

表1:最近的三维重建方法基于它们的输出表示进行分类,建立了它们的优点与缺点的一览表。体素、点云和网格是非连续性的,受离散化影响的。网格还含有固定的拓扑结构,这个特性限制了可以表示的三维形状的空间。最近的学习隐式函数的方法减轻了这些限制,但是无法保存细节信息或者重建关节。本文提出的IF-Nets方法在三维输入重建中拥有了隐式函数需要的性质,但是还额外地能够保存稠密三维输入中存在的细节信息,以及能够重建多关节型人体。

输出的三维表示 连续输出 多种拓扑 稀疏输入 稠密输入 多关节型
体素 × ×
点云 × ×
网格 × × ×
隐式函数 × ×
本文方法

在本文中,我们提出了 IF-Nets,这个方法与以前的工作相比做好了5个方面(如表1所示):它们是连续的,可以处理多重拓扑,可以为稀疏输入补全数据,保留了隐式函数模型[^48][^43][^10]的好的性质,但是最关键的是它们能够保留输入数据(稠密输入)中存在的细节,并且能够重建多关节型人体。IF-Nets与最近工作[^48][^43][^10]有两个显著区别:

  1. 在编码三维形状时,抽取一个具有深度特征的可学习的三维多尺度张量来代替单个矢量,并且这个张量对齐了嵌入了形状的原始的欧几里德空间;
  2. 对连续查询点提取的深度特征分类,代替直接对$(x,y,z)$点坐标分类

因此,不像以往的工作,IF-Nets不记忆通常的$(x,y,z)$坐标位置,因为这种坐标位置基于欧几里德变换的结果是随意的。代替的方法是基于多尺度特征进行决策,这种特征围绕着点编码了局部的或者全局的对象形状结构。

为了描述 IF-Nets 的优点,我们首先证明了 IF-Nets 相比以前的方法可以更好地重建简单的刚性三维对象。在ShapeNet[^9]中,IF-Nets输出了最佳的结果。对于多关节型人体,我们在包含1600个人体的数据集上训练 IF-Nets 和相关的方法,数据集中包括不同的姿势、形状和衣着。与以往的方法形成鲜明的对比,在缺失的四肢未提供数据的情况下,IF-Nets 可以全局地重建多关节型对象,而且恢复了细节性结构(如:衣料的褶皱)。定量和定性的实验验证了 IF-Nets 在关节生成上更加鲁棒,并且在缺失精细尺度的细节时,生成全局一致的形状。为了推动在三维处理、学习和重建工作上的进一步研究,我们在Implicit Feature Networks - IF-Net (mpg.de)开源了 IF-Nets。

Sec02 相关工作

三维形状重建的方法分类

对于最新的、更加详尽的回顾,我们建议读者参考[^23]。表1中给出了近期三维重建方法的优缺点的简要概述。

Sec0201 体素表示

刚性对象的体素表示

体素是图像栅格中像素的三维扩展,并且允许三维卷积,因此它们经常用于生成和重建[^29][^26][^57][^46]。然而,体素的内存占用通常与分辨率成立方比,这就将早期的工作[^75][^11][^68]限制在小型的$32^3$的栅格中预测形状。更高分辨率的应用[^74][^73][^8]必须接受其他的代价:有限的训练批次、缓慢的训练速度或者有损的二维投影[^63]。多分辨率[^24][^65][^71]重建减少了内存占用,允许了$256^3$大小的栅格。然而,这些方法实现复杂,需要对输入进行多次传递,并且仍然局限于$256^3$大小的栅格,还导致了可见的量化伪影。为了平滑噪声,可以将形状表示为截断符号的距离函数(Truncated Signed Distance Functions,TSDF)[^12]用于学习[^14][^36][^58][^64]。然而,分辨率仍然受到存储TSDF值的三维栅格的限制。

生成的形状模型通常利用神经网络将一维矢量映射为一个体素表示[^18][^74]。与我们一样,论文作者[^40]观察到一维矢量的限制较大,无法生成具有局部结构和全局结构的形状,于是引入了具有跳跃连接的层次隐编码。而我们提出了一个简单得多的三维多尺度特征张量,它与嵌入形状中的原始欧几里德空间对齐。

人体的体素表示

从图像的角度,基于体素的表示[^70][^17][^82]或者基于深度图的表示[^16][^62][^38],CNN人体重建相比基于网格或者基于模板的表示产生了更多的细节,因为预测与输入在像素上是对齐的。不幸的是,这是以身体部件缺失为代价的。因此,一些方法[^70][^62]通过拟合一个表面多人线性模型(Skinned Multi-Person Linear,SMPL)作为重建的后处理步骤。然而,如果原始重建不太完整,这样的处理就很容易失败。特别的是,所有这些方法都处理图像像素,而我们则直接处理三维数据。这些方法受到体素栅络分辨率的限制,而我们的方法则不受影响。

Sec0202 网格表示

刚性对象的网格表示

许多基于网格的方法将形状预测看作模型的变形[^72][^65],因此受限于单个拓扑;或者直接推导出网格的顶点和面片[^20][^13]–虽然这个研究方向很有前途,但是这个方法的计算量非常大,并且无法保证输出没有交集的封闭网格。直接的网格预测也可以使用经典的移动立方体算法(Marching Cubes Algorithm,MCA)[^42]的可学习版本[^40],但是这个方法也受限于潜在的小规模$32^3$的体素网格。[^19]提出了一种有前途的体素与网格的组合方法,但是结果仍然是粗精度。

人体的网格表示

自从引入了(基于网格的)SMPL人体模型[^41],越来越多的论文利用它从点云、深度数据和图像中重建形状和姿态[^28][^32][^33][^47][^69][^79]。由于SMPL没有对服装和人体细节建模,最近的方法对来自SMPL或者来自模板的模型进行预测变形。不幸的是,基于CNN的网格预测往往过于平滑。更多的细节可以通过UV帖面或者几何图像预测法线和位移图[^4][^37][^53]。然而,所有这些方法都需要针对每个新的服装拓扑采用不同的模板[^7][^49],要不就无法产生高质量的重建[^53]。

Sec0203 点云表示

刚性对象的点云表示

处理点云是一个重要的问题,因为它们是许多传感器(激光雷达、三维扫描仪)和计算机视觉算法的输出。由于它是轻量级的,因为在计算机图形学中也被广泛用于表示和操控形状[^50]。基于PointNet的架构[^54][^55]是首先提出直接使用点云用于分类和语义分割。其思想是将一个全连接网络应用于每个点,然后执行一个全局池化操作,以满足数据排列不变性。最近的架构应用核化点卷积[^67]、基于树的图卷积[^60]和规范化流[^77]。点云也用作重建[^15][^25]和生成[^77]的形状表示。与体素与网格不同,点云需要使用经典的方法[^6][^30][^31][^8]进行非平凡(non-trivial)的后处理以获得可以渲染的曲面。

人体的点云表示

研究中较少使用点云表示人体[^5],可能是因为渲染存在困难。最近的研究要么使用PointNet架构[^27],要么使用基于基准点集的架构[^52],实现人体的网格到点云的配准。

Sec0204 隐函数表示

刚性对象的隐函数表示

最近,使用神经网络学习一个连续的隐函数[^43][^48][^10][^44][^35]来表示形状,学习后的神经网络可以输入一个隐编码和一个查询点$(x,y,z)$去预测TSDF值[^48]或者点的二进制占用[^43][^10]。最近的方法[^76]将三维查询点特征与局部图像特征相结合,通过将拥有视点预测(view-point prediction)的二维图像逼近到查询点的投影中,实现了最先进的三维重建结果。这种查询连续点的技巧应用在隐函数的学习中,实现了连续空间中的预测(理论上是任何分辨率),突破了基于体素学习的内存限制。受到这些研究的启发,同时关注到它们存在的问题:不能从三维数据中重建人体关节;[^76]不能将点云或者体素网格作为三维输入,依赖于三维到二维的投影逼近(存在细节损失问题);以及[^43][^10]的重建经常会丢失肢体。我们假设问题的原因是:[^43][^10][^76]只是记住了点的坐标而不是关于形状的推理,以及向量化的隐的一维向量表示[^43][^10]没有与输入对齐,并且缺乏三维结构。我们通过查询深度特征来解决这个问题,这个深度特征是从多尺度特征的三维栅格的连续位置中提取的,并且多尺度特征与三维输入空间是对齐的。这个修改很容易实现,并且获得了更好的重建质量。

人体的隐函数表示

人体形状已经使用TSDF[^12]进行表示,并且这类人体形状表示被用于深度融合和追踪[^45][^61]的研究中。这样的隐表示已经与SMPL[^41]人体模型结合起来使用,从而显著地提升了追踪的稳健性和精确度[^78]。通过输入图像,我们使用隐式网络[^59]来预测带衣服的人体,相比先前的隐函数[^10]研究,产生了更高品质的结果。基于三维查询点和二维图像特征的位置,通过逐点占用预测来实现重建,对于简单的姿势,可以产生非常棒的和精细的结果;但是对于复杂的姿势则面临困难。[^59]没有像我们这样集成了多尺度三维形状表示,它是为图像重建设计的,而我们则专注于从稀疏的和稠密的点云和占位栅格中实现三维重建。像以前的隐式网络一样,我们的方法以任意分辨率生成连续曲面。但重要的是,由于我们的三维多尺度形状表示与输入空间对齐,所以我们的重建保留了整体结构,同时还保留了精细尺度的细节(即使是复杂的姿势)。

Sec03 方法

为了推动隐式特征网络(IF-Nets)的设计,我们首先描述了最近学习得到的隐式函数的公式,在[Sec0301](#Sec0301 背景:从隐性曲面中学习)中指出它们的优势与劣势。在[Sec0302](#Sec0302 隐式特征网络)中解释了IF-Nets。在图2中描述了IF-Nets的关键概念。

image-20211228141718619

图2:IF-Nets的概览:给定一个(不完整的或者低分辨率的)输入,计算一个多尺度特征的三维栅格,对输入形状的全局的和局部的性质进行编码。然后,在连续点的位置$\mathbf{p}$从栅格中抽取了深度特征$\mathbf{F}_1(\mathbf{p}),\cdots,\mathbf{F}_n(\mathbf{p})$。仅基于抽取的这些特征,解码器$f(\cdot)$判断点$\mathbf{p}$是在曲面的内部(类别是1)或者外部(类别是0)。就如最近的基于隐函数的工作,我们的方法也可以在任意分辨率下查询,并且重建一个连续曲面。不像以前的方法使用点坐标进行推理,我们的方法仅基于每个点的深度特征,满足了关节型结构重建的需要,并且保留了输入的细节。

Sec0301 背景:从隐性曲面中学习

当最近的工作[^48][^43][^10]从3D输入中学习隐式重建时,它们的推理和输出的形状表示(有符号的距离或者二进制占用),在概念上是相似的。这里,我们描述了[^43]中的占用公式。请注意,这些方法的优势和限制都是相似的。他们都使用一个隐向量$\mathbf{z}\in\mathcal{Z}\subset\mathbb{R}^m$编码三维形状。然后,形状的一个连续表示通过一个神经函数获得:
$$
f(\mathbf{z,p}):\mathcal{Z}\times\mathbb{R}^3\mapsto[0,1]
$$
函数的输入为一个查询点$\mathbf{p}\in\mathbb{R}^3$和隐式编码$\mathbf{z}$,隐式编码$\mathbf{z}$用于分类点在曲面的内部(类别为1)还是外部(类别为0)。于是,曲面隐含地表示为点的决策面${\mathbf{p}\in\mathbb{R}^3|f(\mathbf{z,p})=t}$,其中$t$为阈值参数(在IF-Nets中$t=0.5$)。

函数$f(\cdot)$一旦学习得到,就可以用于连续点位置的查询,不像典型的体素栅格存在的分辨率限制。为了构造一个网格,移动立方体算法(Marching Cubes Algorithm,MCA)[^42]可以被应用在占用栅格(Occupancy Grid)的预测上。这个优雅的公式打破了以前表示上的障碍,允许复杂拓扑结构的细节重建,并且在许多任务上(如:基于图像、占用栅格、点云中实现刚性物体重建)被证明有效。然而,我们也观测到这类模型存在两个限制:

  1. 它们无法表示复杂的对象,如:关节式物体;
  2. 它们无法保存输入数据的细节。

我们使用IF-Nets解决这些问题。

Sec0302 隐式特征网络

我们发现前面的公式存在的两个潜在的问题:

  1. 直接输入点坐标$\mathbf{p}$到网络,将会导致形状结构的推理被绕过,而是通过直接记忆典型的对象原型的点占用。这将严重损害旋转和平移的重建方差,而这个方差是用于分割、识别和检测的二维卷积网络的成功基石。
  2. 在单个向量$\mathbf{z}$中编码完整的形状会丢失数据中存在的细节,并且丢失了与嵌入形状的原始三维空间的对齐性质。

在本文中,我们提出了一个新颖的编码和解码串联操作,能够解决基于点云或者占用网格完成三维重建任务时存在的上述两个限制。给定一个对象的三维输入数据$\mathbf{X}\in\mathcal{X}$,其中$\mathcal{X}$描述了输入的空间,$\mathbf{p}\in\mathbb{R}^3$表示一个三维点,我们希望预测$\mathbf{p}$在对象的里面还是外面。

形状编码

为了替换在单个向量$\mathbf{z}$中编码形状,我们构建了数据$\mathbf{X}$的丰富编码。这个要求输入位于离散的体素网格上,即:$\mathcal{X}=\mathbb{R}^{N\times N\times N}$,其中$N\in\mathbb{N}$表示输入的分辨率。为了处理点云,我们先对其简单地离散化,然后对输入下采样,接着是卷积用于增加感受野和通道,同时降低分辨率,就如在二维上的惯常操作[^34]。反复地在输入数据$\mathbf{X}$上应用这个过程$n$次后,我们创建了多尺度深度特征网格(Multi-Scale Deep Feature Grid)$\mathbf{F}_1,\cdots,\mathbf{F}_n,\mathbf{F}_k\in\mathcal{F}_k^{K\times K\times K}$,其中降低的分辨率$K=\frac{N}{2^k-1}$,每个阶段$\mathcal{F}_k\subset\mathbb{R}^{F_k}$的通道维度变量$F_k\in\mathbb{N}$。在早期阶段(从$k=1$开始)特征网格$\mathbf{F}_k$捕捉高频(形状细节),在后期阶段(以$k=n$终止)特征网格$\mathbf{F}_k$拥有大范围的感受野,从而捕捉数据的全局结构。这样使得模型能够在获得输入中存在的细节时,对缺失的或者稀疏的数据进行推理。我们将编码器表示为:
$$
g(\mathbf{X}):=\mathbf{F}_1,\cdots,\mathbf{F}_n
$$

形状解码

为了替换直接对点坐标$\mathbf{p}$进行分类,我们在位置$\mathbf{p}$从特征网格中抽取了学习到的深度特征$\mathbf{F}_1(\mathbf{p}),\cdots,\mathbf{F}_n(\mathbf{p})$。很有可能是因为我们的编码具有与输入数据对齐的三维结构,由于特征网格是离散的,我们使用三线性插值去查询连续的三维点$\mathbf{p}\in\mathbb{R}^3$。为了将局部近邻信息编码到点的编码中,即使只有小感受野(如:$\mathbf{F}_1$)的早期网格中,我们在查询点$\mathbf{p}$自身的位置处提取特征,此外还在沿着笛卡尔轴距离为$d$的邻近点提取特征:
$$
{\mathbf{p}+a\cdot\mathbf{e}_i\cdot d\in\mathbb{R}^3|a\in{1,0,-1},i\in{1,2,3}}
$$
其中,$d\in\mathbb{R}$是到中心点$\mathbf{p}$的距离,$\mathbf{e}_i\in\mathbb{R}^3$是第$i$个笛卡尔坐标轴的单位向量,详见[补充材料](Implicit Functions in Feature Space for 3D Shape Reconstruction and Completion-Supplementary Material.md)中的描述。

然后,点编码$\mathbf{F}_1(\mathbf{p}),\cdots,\mathbf{F}_n(\mathbf{p}),\mathbf{F}_k(\mathbf{p})\in\mathcal{F}_k$被送入基于全连接神经网络参数化的逐点解码器$f(\cdot)$去预测点$\mathbf{p}$在形状的内部还是外部:
$$
f(\mathbf{F}_1(\mathbf{p}),\cdots,\mathbf{F}_n(\mathbf{p})):
\mathcal{F}_1\times\cdots\times\mathcal{F}_n\mapsto[0,1]
$$
比较公式(1)与(4),网络使用基于局部的和全局的形状特征替换了点的坐标对点进行分类,因为点的坐标在旋转、平移和关节型变换时是随意的。此外,我们的多尺度编码在推理全局形状的时候保留细节是可能的。

Sec0303 训练模型

为了训练等式(2)中的多尺度编码器$g_\mathbf{w}(\cdot)$和等式(4)中的解码器$f_{\mathbf{w}}(\cdot)$,其中$\mathbf{w}$是参数化的神经网络权重,${\mathbf{x}_i,\mathcal{S}i}{i=1}^T$是三维输入$\mathbf{X}_i$和对应的三维基准对象曲面$\mathcal{S}i$的数据对,其中$i\in1,\cdots,T$,$T\in\mathbb{N}$描述的是这样的训练样例的数目。符号$g{\mathbf{w}}(\mathbf{X,p}):=\mathbf{F}_1^{\mathbf{w}}(\mathbf{p}),\cdots,\mathbf{F}_n^{\mathbf{w}}(\mathbf{p})$描述了在点$\mathbf{p}$的多尺度编码的估计。

为了创建训练点样本,对于每个基准曲面$\mathcal{S}i$,我们抽样了$S$个点$\mathbf{p}i^j\in\mathbb{R}^3,j\in1,\cdots,S$,其中$S\in\mathbb{N}$。为了这个目的,基准曲面$\mathcal{S}i$首先要保证水密性。其次,计算基准占用$o_i(\mathbf{p}i^j)\in{0,1}$,形状内部的点估计为1,形状外部的点估计为0。接下来,通过基准曲面上的采样点$\mathbf{p}{i,j}^S\in\mathcal{S}i$和增加的随机替换点$\mathbf{n}{i,j}\sim\mathcal{N}(0,\mathbf{\Sigma})$,如:$\mathbf{p}i^j:=\mathbf{p}{i,j}^\mathcal{S}+\mathbf{n}{i,j}$,在曲面附近创建点采样$\mathbf{p}i^j$。为了这个目的,我们使用了对角协方差矩阵$\mathbf{\Sigma}\in\mathbb{R}^{3\times3}$,其中$\mathbf{\Sigma}{i,i}=\sigma$。通过在曲面附近很小的$\sigma_1$抽样$50%%$,在曲面周围较大的$\sigma_2$抽样$50%$可以得到好的结果。为了训练,优化得到的网络权重$\mathbf{w}$,通过最小化小批量损失:
$$
\begin{align*}
\mathcal{L_B}(\mathbf{w}):
&=\sum
{i\in\mathcal{B}}\sum
{j\in\mathcal{R}}
L(f_\mathbf{w}(g_\mathbf{w}(\mathbf{X}_i,\mathbf{p}i^j)),o_i(\mathbf{p}i^j))\
&=\sum
{i\in\mathcal{B}}\sum
{j\in\mathcal{R}}
L(f_\mathbf{w}(\mathbf{F}_1^\mathbf{w}(\mathbf{p}_i^j),\cdots,\mathbf{F}_n^\mathbf{w}(\mathbf{p}_i^j)),o_i(\mathbf{p}_i^j))
\end{align*}
$$
其在给定的小批量$\mathcal{B}$的训练曲面$i\in\mathcal{B}\subset1,\cdots,T$和子样本$\mathcal{R}$的点样本$j\in\mathcal{R}\subset1,\cdots,S$上求和。对于小批量损失$\mathcal{L_B}$的每次估计,子样本$\mathcal{R}$是再生成的。对于$L(\cdot,\cdot)$,我们使用标准交叉熵损失。通过最小化$\mathcal{L_B}$,我们基于端到端的方式,联合训练编码器$g_\mathbf{w}(\cdot)$和解码器$f_\mathbf{w}(\cdot)$。实验中超参数使用的具体值请参考补充材料。

Sec0304 推理模型

在测试阶段,目标是在给定一个离散的和不完整的三维输入$\mathbf{X}$,重建一个连续的和完整的表示。首先,我们使用学习到的编码器网络去重建多尺度特征网格$g(\mathbf{X})=\mathbf{F}_1,\cdots,\mathbf{F}_n$。然后,我们使用逐点解码器网格$f(g(\mathbf{X,p}))$在连续的点位置$\mathbf{p}\in\mathbb{R}^3$(参见Sec0302)去创建占用预测。为了重建网格,我们基于需要的分辨率的网格在点上估计了IF-Nets。然后,输出的高分辨率占用网格被变换到一个使用经典MCA算法[^42]的网格。

Sec04 实验

在本节中,我们验证了IF-Nets在三维形状重建任务中的有效性。事实证明,IF-Nets可以解决最近的基于学习的方法在这类任务上存在的两个局限性:

  1. IF-Nets既可以保留输入数据中存在的细节,还能够推理不完整的数据;
  2. IF-Nets能够在复杂服装上重建人体关节。

为此,我们执行了复杂度不断升高的三个实验:

  1. 点云补全(Sec0401)
  2. 体素超级分辨率(Sec0402)
  3. 单视图人体重建(Sec0403)

基线

对于DMC和PSGN,我们使用的是作者在网上提供的实现[^43]。我们训练了所有的方法直到它们出现的是最小检验值。基于每个考虑的实验设置都重复地进行了训练。为了展示一致的比较,我们修改了IMNET的实现从而能够在所有的ShapeNet类别上进行联合训练。对于IMNET和OccNet,我们保持了由方法的作者提出的抽样策略。对于IMNET,我们遵循了作者的方法,在训练期间对训练数据采样执行渐进分辨率增长。

度量

为了定量地评估重建的质量,我们考虑了三个已经建立的度量(详见[^43]中的定义与实现):

数据

我们考虑了两种数据集:

  1. 一种数据集包含了人体的三维扫描数据(从Twindom购买),用于评估不完整的人工关节形状的重建任务;
  2. 知名的ShapeNet[^9]数据集,由刚性对象组成,具有相当典型的形状,如:汽车、飞机和步枪。

ShapeNet数据已经被预先由[^76]预处理为水密的,这种数据允许计算基准占用,并且缩放每个形状的最大包围盒边界的长度为1。我们在所有的实验和评估中使用预处理的ShapeNet数据,并且都基于[^11]进行训练与测试数据的分割。然而,在某些对象中预处理失败,导致输出的对象破碎出现大洞。因此,为了得到有意义的评估,508个严重扭曲的物体被移除。所有使用过的物体的筛选列表与代码一起被发布。

一个具有挑战性的数据集,数据集中包含了扫描得到的人体,人体包含了高度变换的人体关节,关节由复杂的、多变的衣服拓扑(如:外套、裙子、帽子)所包裹。扫描数据是由商业的三维扫描仪也捕获。扫描数据已经在高度上进行了归一化和居中处理,但是相比ShapeNet对象,呈现出了不同的旋转变化。

Sec0401 点云补全

表2:在ShapeNet上点云重建的结果。左边的数字表明基于300个点的得分,右边的数字表明基于3000个点的得分。倒角-$L_2$的结果$\times10^{-2}$。

image-20211229165419398

第一个任务,应用IF-Nets到补全稀疏的和稠密的点云问题上,分别从ShapeNet曲面模型中抽样300个点(稀疏)和3000个点(稠密),要求我们的方法补全所有的曲面数据。补全点云极具挑战性,因为它需要在同一时间既保留输入的细节,还推理缺失的结构。在图3中,我们展示了与基线方法的比较,在保留局部细节和恢复全局结构方面都超越了基线。对于稠密点云,我们的优势是显著的。因为只有我们的方法能够重建汽车的一对后视镜和衣柜的附加搁板。我们进一步定量比较了我们的方法及相关的数字(见表2)。我们的方法在所有的度量上大幅度地击败了SOTA。事实上,使用3000个点作为输入,所有竞争者产生的结果都比输入自身的倒角距离要大,表明它们在保留输入细节上是失败的。当补全缺失结构时,仅IF-Nets保留了输入的细节。

image-20211229164309784

图3:两种输入类别的定性结果:ShapeNet数据集的点云(上)和体素(下)。每个类别都被拆分为稀疏(上两行)和稠密(下两行)。

Sec0402 体素超级分辨率

表3:在ShapeNet上体素网格重建结果。对于每个测度,左列表示的是来自于$32^3$分辨率的得分,右列表示的是来自于$128^3$分辨率的得分。倒角-$L_2$的结果$\times10^{-2}$。

image-20211229173146938

第二个任务,应用我们的方法到三维超级分辨率中。为了有效地解决这个任务,我们的方法需要在输入中不存在重建细节时,再次保留输入的形状。我们的方法在图3(下)中与基线并排地进行了比较。当大部分基线方法要么输出了不存在的结构,要么补全失败,我们的方法仍然一贯地生成了精确的、具有高度细节的结果(具体的数值比较参考表3), 并且在所有测度上超越了基线。

image-20220218141418474

图4:基于人体数据集的稀疏($32^3$,上面)和稠密($128^3$,下面)的3D体素超分辨率的定量结果。

图4中最后两个例子表明了当前隐方法的局限性:如果一个形状与训练集差别较大,当前的这些方法要么失败,要么返回一个与见过的样本相似的结果。结果,我们假定当前的这些方法不适合形状原型分类不充分的任务,人体就是这类问题,因为其需要面对不同的形状和关节。为了验证我们的假设,我们还在人体数据集上进行了三维超级分辨率处理。这个验证展示了更加显著的优势:我们是唯一一种能够持续重建所有肢体,并且还产生高度细节结果的方法。基于隐式学习的基线产生的都是截断的或者完全缺失的肢体。我们在定量分析上也显著地超越了所有基线(见表4)。

表4:在人体数据集上体素网格重建的结果。左列表示的是来自于$32^3$分辨率的得分,右列表示的是来自于$128^3$分辨率的得分。倒角-$L_2$的结果$\times10^{-2}$。IF-Nets在不完整数据设置上一贯地超越了其他基线。IF-Nets的性能在稠密数据上展示了显著地增长,然而其他基线则没有什么改变。这个证明IF-Nets是第一个学习得到的方法(据我们所知的),能够准确地重建三维数据中存在的稠密信息。

image-20211229174620526

Sec0403 单视图人体重建

最后,为了展示IF-Nets的全部功能,我们在单视图人体重建中应用它们。在这个任务中,输入中仅给出了局部三维点云,这是深度的照相机的典型输出。我们实施这个实验在具有挑战性的人体数据集上,通过渲染一个$250\times250$分辨率的深度图像,产生了大约5000个点在主题的可视面。为了成功地完成这个任务,我们的模型必须同时完成新颖的人体关节重建、保留精细的细节,并且补全遮挡区域的缺失数据(输入中只包含基础形状的一侧)。尽管存在这些挑战,我们的模型能够重建看似合理的和具有高度细节的形状。在图5中,我们从四个不同的角度展示了输入和输出。请注意,像疤痕、皱纹或者单个手指这样的精细结构也出现在重建的形状中。虽然背面区域(被遮挡的部分)相比可见区域的细节更少,但是IF-Nets依然生成了看似合理的曲面。

image-20220218141709592

图5:从点云中实现3D单视角重建(注:背面是完全未知的)。对于四个不同的单视角点云,我们的重建展示了四个不同的视点。

这也可以定量地分析:我们的IoU是$0.86$、倒角-$L_2$是$0.011\times10^{-2}$、法向一致性$0.90$。输入点云的倒角-$L_2$是$0.252\times10^{-2}$。定量的结果在$32^3$的重建质量和$128^3$完全体素输入之间(见表4),这再次验证了IF-Nets可以补全单视图数据。在补充的视频中,我们展示了从视频中得到的BUFF数据集上[^80]完成单视图重建得到的附加结果(模型无需再次训练或者精调)。

Sec05 讨论和结论

在本文中,我们为有缺陷的三维输入引入了用于三维重建和补全的IF-Nets。首先,我们讨论了一个包含了三维多尺度的深度特征的编码,它与嵌入形状的欧几里德空间对齐。其次,我们不直接对$(x,y,z)$坐标进行分类,而是对在它们的位置提取的深层特征进行分类。实验表明,IF-Nets能够提供连续的输出,可以重建多种拓扑结构,例如:不同服装中的三维人体、ShapeNet的三维对象。定量分析,IF-Nets的性能在所有任务上显著地优于所有SOTA基线。在单视角点云重建中(在可见部分具有细节,在遮挡部分缺失数据)展示了IF-Nets的优势:保留输入中的细节,补全形状的遮挡部分的细节,即使遮挡部分是关节类形状。

未来的工作是探索IF-Nets的泛化性,使其能够对局部输入中细节的假设条件进行采样。我们还计划分两个阶段解决基于图像的重建:首先预测一个深度图,其次使用IF-Nets补全形状。

随着越来越多的计算机视觉重建方法生产了局部三维点云和体素,以及三维扫描和深度相机变得更易得到,在未来三维(有缺陷的和不完整的)数据将会无处不在,而IF-Nets有潜力成为这类数据重建和补全的重要组成部分。