Jeong Joon Park等作者

3D重建总是扭曲、空洞、体素化?来看看这个连续场模型吧


扭曲、空洞、体素化仍然是很多 3D重建模型的通病,导致视觉效果很不友好。Facebook、MIT 等近期提出了新型的基于深度学习的连续场 3D 重建模型 DeepSDF,可以生成具备复杂拓扑的高质量连续表面。特别是,由于可以在反向传播过程中顺便求得空间梯度,DeepSDF 能生成非常平滑的表面。


图 1:DeepSDF 通过潜在编码和前馈解码器网络来表征形状的符号距离函数。以上图像是 DeepSDF 在学习到的形状潜在空间中进行两个形状的插值后的光线投射渲染。

深度卷积网络直接用于三维空间时,其时间和空间复杂度会急剧增长,且更经典和紧凑的表面表征(如三角网格或四边形网格)在训练中会出现问题,因为我们可能需要处理未知数量的顶点和任意拓扑。在尝试用深度学习方法处理输入 3D 数据或输出用于目标分割和重建的 3D 推理时,这些挑战对深度学习方法的质量、灵活性和保真度带来了限制。

Facebook Reality Lab 的最新研究展示了一种高效、连续的新型生成 3D 建模表征和方法。该方法利用符号距离函数(Signed Distance Function,SDF)的概念,常见的表面重建技术将 SDF 离散化为规则网格用于估计和衡量去噪,而该方法学习一种生成模型来生成连续场。

该研究提出的连续表征可以被直观地理解为学得的形状分类器,其决策边界是形状本身的表面,如图 2 所示。该研究提出的方法与其他研究一样,试图将潜在空间映射到 3D 复杂形状分布,但最主要的表征方式是不同的。尽管在计算机视觉和图形学社区中隐式表面 SDF 广为人知,但之前尚未有研究直接学习 SDF 的连续、可泛化 3D 生成模型

图 2:本研究提出的 DeepSDF 表征应用于 Stanford Bunny:(a) 隐式表面 SDF = 0,SDF < 0 表示表面内的采样点,SDF > 0 表示表面外的采样点;(b) SDF 的 2D 交叉区域;(c) 从 SDF=0 恢复的渲染后的 3D 表面。注意 b 和 c 都是通过 DeepSDF 恢复的。

该研究的贡献包括:使用连续隐式表面进行生成式形状 3D 建模;基于概率自解码器的 3D 形状学习方法;展示了该方法在形状建模和补全上的应用。该模型可生成具备复杂拓扑的高质量连续表面,并在形状重建和补全方面的量化对比中获得了当前最优结果。举例来说,该模型仅使用 7.4 MB 的内存来表示形状的完整类别(如数千个 3D 椅子模型),这比单个未压缩 512^3 3D 位图内存占用(16.8 MB)的一半还要少。

论文:DeepSDF: Learning Continuous Signed Distance Functions for Shape Representation

论文地址:https://arxiv.org/abs/1901.05103

摘要计算机图形学、3D 计算机视觉和机器人社区已经产生多种方法来表示用于渲染和重建的 3D 几何。这些方法在保真度、有效性和压缩能力方面进行权衡。本研究介绍了 DeepSDF,一种学得的连续符号距离函数(SDF)形状类别表征,能够基于局部和带噪 3D 输入数据实现高质量形状表征、插值和补全。DeepSDF 通过连续体积场来表示形状的表面:场中点的大小表示到表面边界的距离,标记(-)和(+)分别表示该区域是在形状内还是在形状外,因此我们的表征隐式地将形状边界编码为习得函数的零水平集(zero-level-set),同时显式地将空间分类表示为形状内部/外部区域。虽然经典的 SDF 能够以解析或离散体素的形式表示单个形状的表面,但 DeepSDF 可以表示形状的完整类别。此外,该方法在学习 3D 形状表征和补全方面展示出了最先进的性能,和之前的研究相比,模型尺寸减小了一个数量级。

神经网络建模 SDF

本节将展示 DeepSDF,我们的连续形状学习方法。我们将建模形状描述为前馈网络的零等值面决策边界,该网络被训练用来表示 SDF。符号距离函数是一种连续的函数,对于给定的空间点,输出该点至最近表面的距离,该表面的符号则编码该点是在水密表面的内部(负)还是外部(正):

SDF(x) = s : x ∈ R^3 , s ∈ R,(1) 

潜在表面隐式地由 SDF(·) = 0 的等值面表示。该隐式表面的视图可以通过特定算法(例如 Marching Cubes)获取网格的光线投射或光栅化来渲染。

我们的关键想法是用深度神经网络直接从点采样中回归连续的 SDF。获得的训练网络能够预测给定查询位置的 SDF 值,据此我们可以通过评估空间样本提取零级集合表面。这类表面表示能够被直观地理解为学到的二元分类器,因为决策边界是形状本身的表面,如图 2 所示。作为通用函数逼近器,理论上来说,深度前馈网络能够以任意精度学习完全连续的形状函数。但是,由于有限的计算能力,近似的精度实际上要受到有限点样本和网络有限容量的限制,其中点采样引导决策边界

该方法的最直接应用是为给定目标形状训练单个深度网络,如图 3a 所示。给定目标形状,我们准备了一组由 3D 点样本及其 SDF 值构成的 X 对:

X := {(x, s) : SDF(x) = s},(2)

我们在训练集 S 上训练多层全连接神经网络 f_θ 的参数θ,使 f_θ成为目标域Ω中给定 SDF 的良好逼近器:

f_θ(x) ≈ SDF(x), ∀x ∈ Ω,(3) 

根据以下 L_1 损失函数,通过最小化 X 中点的预测和真实 SDF 值之间的损失总和来完成训练:

L(f_θ(x), s) = | clamp(f_θ(x), δ) − clamp(s, δ) |,(4)

其中 clamp(x, δ) := min(δ, max(−δ, x)) 引入了参数δ来控制与表面的距离,我们期望在该距离上保持测量的 SDF。δ值越大,光线追踪速度越快,因为每个样本都会提供安全步长的信息。较小的δ值可用于将网络容量集中在表面附近的细节上。

为了生成图 3a 所示的 3D 模型,我们使用δ = 0.1 和有 8 个全连接层的前馈神经网络,每个层都会应用 dropouts。此外,所有层都有 512 个神经元,并使用 ReLU 作为非线性激活函数。回归 SDF 值的输出层的非线性激活函数是 tanh。我们发现使用 BN 并没有什么效果,于是应用了权重归一化方法。在训练过程中,我们使用了 Adam 优化器。一旦训练完成,表面将隐式表示 f_θ(x) 的 0 等值面,可以通过光线投射或移动立方体算法可视化。该方法的另一种优越特性是准确的表面法线可以通过网络的反向传播得到空间梯度即∂f_θ(x)/∂x。

图 3:在单个形状的 DeepSDF 实例化中,形状信息包含在网络中;而在编码形状的 DeepSDF 中,形状信息包含在编码向量中,并和 3D 样本位置拼接。在两种案例中,DeepSDF 都能生成 3D 查询位置的 SDF 值。

图 4:不同于由编码器生成潜在编码的自编码器,自解码器直接接收潜在向量作为输入。在训练刚开始的时候,每一个数据点都会被分配一个随机初始化的潜在向量。并且潜在向量会通过标准反向传播和解码器权重一起优化。在推断过程中,解码器权重是固定的,此时会估计最优的潜在向量。

图 5:使用 OGN 记忆的汽车形状对比(右图);因为 DeepSDF 提供定向表面法线,我们的模型(左)保有视觉友好的细节和渲染结果。

结果

表 1:benchmark 方法纵览。AtlasNet-Sphere 只能描述拓扑球体,体素/八叉树类方法(也就是 OGN)只能提供 8 个方向法线,AtlasNet 不能提供定向法线。我们的任务评估:k 表示已知形状,U 表示未知形状,C 表示形状完备。

表 2:在 ShapeNet 上训练的汽车已知形状表征的对比。CD=Chamfer 距离(3 万点)乘以 103,EMD=Earth Mover 的距离(500 点)。

表 3:在编码未知形状时,DeepSDF 在大量形状类别和指标上显著优于 AtlasNet。

图 6:DeepSDF 和 AtlasNet [22] 之间的重建结果对比。注意,AtlasNet 无法捕捉椅子的精细细节,从 (f) 中可以看到沙发和飞机上的洞。

表 4:对 ShapeNet 数据集中未知形状的局部范围扫描的形状补全效果对比。

理论3D建模MITFacebook深度学习
3
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

权重归一化技术

权重归一化是一个深度神经网络训练的技巧,从字面意思看来Weight Normalization就是对每一层网络权重进行归一化。

计算机图形技术

图像数据处理、计算机图像(英语:Computer Graphics)是指用计算机所创造的图形。更具体的说,就是在计算机上用专门的软件和硬件用来表现和控制图像数据。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

光线追踪技术

在计算机图形学中,光线跟踪是一种渲染技术,用于通过将光的路径跟踪为图像平面中的像素并模拟虚拟对象对光线的接收效果来生成图像。 该技术能够产生非常高的视觉真实感,通常高于典型扫描线渲染方法,但计算成本更高。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

决策边界技术

在具有两类的统计分类问题中,决策边界或决策曲面是一个超曲面,它将底层的向量空间分成两组,每组一个。分类器会将决策边界一侧的所有点分为属于一个类,而另一侧属于另一个类。也即二元分类或多类别分类问题中,模型学到的类别之间的分界线。

映射技术

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

插值技术

数学的数值分析领域中,内插或称插值(英语:interpolation)是一种通过已知的、离散的数据点,在范围内推求新数据点的过程或方法。求解科学和工程的问题时,通常有许多数据点借由采样、实验等方法获得,这些数据可能代表了有限个数值函数,其中自变量的值。而根据这些数据,我们往往希望得到一个连续的函数(也就是曲线);或者更密集的离散方程与已知数据互相吻合,这个过程叫做拟合。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

查询技术

一般来说,查询是询问的一种形式。它在不同的学科里涵义有所不同。在信息检索领域,查询指的是数据库和信息系统对信息检索的精确要求

前馈神经网络技术

前馈神经网络(FNN)是人工智能领域中最早发明的简单人工神经网络类型。在它内部,参数从输入层经过隐含层向输出层单向传播。与递归神经网络不同,在它内部不会构成有向环。FNN由一个输入层、一个(浅层网络)或多个(深层网络,因此叫作深度学习)隐藏层,和一个输出层构成。每个层(除输出层以外)与下一层连接。这种连接是 FNN 架构的关键,具有两个主要特征:加权平均值和激活函数。

生成模型技术

在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。 它给观测值和标注数据序列指定一个联合概率分布。 在机器学习中,生成模型可以用来直接对数据建模(例如根据某个变量的概率密度函数进行数据采样),也可以用来建立变量间的条件概率分布。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

推荐文章
暂无评论
暂无评论~