点云生成-PointFlow: 3D Point Cloud Generation with Continuous Normalizing Flows

点云生成-PointFlow: 3D Point Cloud Generation with Continuous Normalizing Flows

  • 简介
  • 论文
    • 摘要
    • 1.introduction
    • 2.related works
    • 3. Overview
    • 4. Background
      • 4.1. Continuous normalizing flow
      • 4.2. Variational auto-encoder
    • 5. Model
      • 5.1. Flow-based point generation from shape representations
      • 5.2. Flow-based prior over shapes
      • 5.3. Final training objective
      • 5.4. Sampling
    • 6. Experiments
      • 6.1. 评价指标
      • 6.2. Generation
      • 6.3. Auto encoding
      • 6.4. Unsupervised representation learning
    • 7. Conclusion and future works

简介

2019_ICCV
点云生成-PointFlow: 3D Point Cloud Generation with Continuous Normalizing Flows_第1张图片

论文

摘要

  随着三维点云成为多种视觉和图形应用的首选代表,合成或重建高分辨率、高保真点云的能力变得至关重要。尽管最近深度学习模型在点云的判别任务中取得了成功,但生成点云仍然具有挑战性。本文提出了一个基于规则的概率框架,通过将3D点云建模为分布的分布来生成3D点云。具体来说,我们学习一个两级的分布层次,第一级是形状的分布,第二级是给定形状的采样点的分布。这种提法使我们既能对形状进行采样,又能对形状中的任意数量的点进行采样。我们的生成模型,名为PointFlow,用一个连续的归一化流来学习每一级的分布。归一化流的可逆性使我们能够在训练过程中计算似然,并使我们能够在变分推理框架中训练我们的模型。从经验上看,我们证明了PointFlow在点云生成中达到了最先进的性能。我们还表明,我们的模型可以如实地重建点云,并在无监督的情况下学习有用的表示方法。代码将提供在https: //github.com/stevenygd/PointFlow上。

1.introduction

  点云作为一种三维表示方法正在变得流行,因为它们可以捕捉到比体素网格更高的分辨率,并且是通往更复杂的表示方法(如网格)的垫脚石。学习点云的生成模型可以通过提供更好的点云的先验性,使广泛的点云合成任务受益,如重建和超分辨率。然而,生成点云的一个主要障碍是点云空间的复杂性。对应于椅子的点云最好被认为是对应于椅子表面的分布中的样本,而椅子本身最好被认为是椅子形状分布中的样本。因此,为了根据这一表述生成一把椅子,我们需要描述一个分布的特征,而这一点在现有的生成模型中没有得到充分的探索。在本文中,我们提出了PointFlow,一个用于三维点云的原理性生成模型,它学习分布的分布:前者是形状的分布,后者是给定形状的点的分布。我们的关键见解是,我们不直接对形状中的点的分布进行参数化,而是将这种分布建模为来自先验分布(例如,三维高斯)的三维点的可逆参数化转换。直观地说,在这个模型下,为一个给定的形状生成的点涉及到从一个通用的高斯先验中取样,然后根据这个参数化变换将它们移动到目标形状中的新位置,如图1中所示。
点云生成-PointFlow: 3D Point Cloud Generation with Continuous Normalizing Flows_第2张图片在这种表述中,一个给定的形状只是对这种变换进行参数化的变量,而一个类别只是这个变量的一个分布。有趣的是,我们发现把这个分布也表示为先验分布的变换,会带来一个更具表现力的形状模型。特别是,我们使用最近提出的连续归一化流框架来模拟这两种转换[40,5,16]。这种参数化赋予了几个优点。这些变换的可逆性使我们不仅可以采样,还可以估计概率密度。估计概率密度的能力反过来又使我们能够使用变异推理框架[27]以有原则的方式训练这些模型,在那里我们对点云训练集的对数可能性的变分下限最大化。这种概率性的训练框架进一步让我们避免了训练GANs或手工制作良好的距离度量来测量两组点之间的差异的复杂性。实验表明,PointFlow优于以前最先进的点云生成模型,并在点云重建和无监督特征学习方面取得了引人注目的结果。

2.related works

点云的深度学习:
  深度学习已经被引入,以提高各种点云判别任务的性能,包括分类[38, 39, 51, 55]、分割[38, 43]和关键点采样[10]。最近,在点云合成任务方面取得了实质性的进展,如自动编码[1, 51, 17]、单视角三维重建[12, 22, 29, 31, 13]、立体重建[45]和点云补全[54, 53] 许多点云合成工作通过从分布中取样N(N是预先定义的)点将点分布转换成N×3矩阵,以便现有生成模型易于适用。例如,Gadelha等人[13]将变分自编码器(VAEs)[27]和Zamorski等人[56]将对抗性自编码器(AAEs)[34]应用于点云生成。Achlioptas等人[1]在原始数据空间和预训练自编码器的潜在空间中探索生成式对抗网络(GANs)[15, 2, 19]用于点云。在上述方法中,自编码器是用启发式损失函数训练的,这些损失函数测量两个点集之间的距离,如Chamfer距离(CD)或earth mover的距离(EMD)。Sun等人[44]应用离散点分布的自回归模型[47],一次生成一个点,也是使用每个形状的固定点数。然而,将点云作为一个固定维度的矩阵处理有几个缺点。首先,该模型被限制为生成固定数量的点。为一个特定的形状获得更多的点需要单独的上采样模型,如[54, 53, 52]。其次,它忽略了点集的置换不变性属性,这可能会导致次优的参数效率。从生成模型的角度来看,启发式集合距离也远非理想的目标,因为它们使VAE/AAE的原始概率解释在作为重建目标时不再适用。此外,精确的EMD计算起来很慢,而近似的EMD可能会导致有偏差或有噪声的梯度。CD已经被证明会错误地偏向于过度集中于边缘点分布模式的点云[1]。最近的一些工作引入了复杂的解码器,包括一个级联[51]或一个较小的解码器的混合物[17],将一个(或一个)二维均匀分布映射到目标点分布,克服了使用固定数量的点的缺点。然而,他们仍然依赖于缺乏概率保证的启发式集合距离。另外,他们的方法只学习了每个形状的点的分布,但没有学习形状的分布。Li等人[30]提出了一个 "夹层 "重建目标,该目标将WGAN[2]损失的一个变体与EMD结合。他们还在潜伏空间中训练另一个GAN来学习形状分布,与Achlioptas等人[1]相似。相比之下,我们的方法只是通过最大化对数似然的变分下限来进行端到端的训练,不需要多阶段训练,也没有基于GAN的方法常见的不稳定性问题。

生成模型:
  有几个流行的深度生成模型框架,包括生成对抗网络[15,2,23],变分动编码器[27,41],自回归模型[35,47],和基于流的模型[8,40,9,25]。特别是,基于流的模型和自回归模型都可以进行精确的似然评价,而基于流的模型在取样方面要高效得多。基于流的模型已经成功地应用于各种生成任务,如图像生成[25, 9, 8]、视频生成[28]和语音合成[37]。此外,最近还有一些工作将流与其他生成模型结合起来,如GAN[18, 7]、自动回归模型[20, 36, 26]和VAEs[26, 46, 6, 40, 46, 5, 16]。大多数现有的深度生成模型旨在学习固定维度变量的分布。在数据由一组集合组成的情况下,学习分布的分布仍然没有得到充分的探索。Edwards和Storkey[11]提出了一个层次化的VAE,名为Neural Statistician,消耗一组集合。他们主要对每个集合只有几个样本的几率情况感兴趣。此外,他们还专注于对集合进行分类或从一个给定的集合中生成新的样本。虽然我们的方法也适用于这些任务,但我们的重点是学习集合的分布和生成新的集合(在我们的例子中是点云)。此外,由于在重建似然和先验建模中使用了归一化流,我们的模型对对数似然采用了更严格的下界。

3. Overview

  考虑一组来自特定种类的形状 X = {Xi}iN,其中每一个形状都表示为一组三维点Xi = {xji}j=1Mi。正如第1节所讨论的,每个点xji∈R3最好被认为是从一个点分布Qi(x)中采样的,通常是物体Xi表面的均匀分布每个形状Xi本身就是一个来自形状分布Q(X)的样本,该分布捕捉了这个类别中的形状的样子。我们的目标是学习形状的分布,每个形状本身就是一个点的分布。换句话说,我们的生成模型应该既能对形状进行采样,又能对形状中的任意数量的点进行采样。我们建议使用连续归一化流来模拟给定形状的点的分布。连续归一化流可以被认为是三维欧几里得空间中的一个矢量场,它通过转换一个通用的先验分布(例如,标准高斯)来诱发一个点的分布。为了从诱导的分布中取样,我们只需从先验中取样,并根据矢量场来移动这些点。此外,连续的归一化流是可逆的,这意味着我们可以将数据点移回先验分布来计算确切的似然。这个模型是非常直观和可解释的,允许对生成过程进行仔细检查,如图1所示。
  我们用一个代表形状的潜在变量对每个连续归一化流进行参数化。因此,对形状分布的建模可以简化为对潜变量分布的建模。有趣的是,我们发现连续归一化流在为潜变量分布建模方面也很有效。因此,我们的完整生成模型由两级连续归一化流组成,一个是通过对潜变量的分布建模来对形状分布进行建模,另一个是对给定形状的点分布建模。为了优化生成模型,我们通过引入一个推理网络,从点云中推断出潜变量分布,从而构建一个对数似然的变分下限。在这里,我们得益于连续归一化流的可逆性使似然计算成为可能。这使我们能够以稳定的方式从头到尾训练我们的模型,而不像以前基于GANs的工作需要两阶段的训练[1, 30]。作为一个附带的好处,我们发现推理网络以无监督的方式学习了点云的有用表示。在第4节,我们介绍了一些关于连续归一化流和变分自编码器的背景。然后,我们在第5节详细描述了我们的模型和训练。

4. Background

4.1. Continuous normalizing flow

  归一化流[40]是一系列可逆的映射,将一个初始的已知分布转化为一个更复杂的分布。形式上,让f1, … … ,fn 表示一系列可逆变换,我们想要将其应用于具有分布为P(y)的潜在变量y。x=fn◦ fn−1◦· · · ◦ f1(y)是x输出变量。然后,输出变量的密度由变量变化公式给出:
在这里插入图片描述
其中y可以用逆流变换从x计算出来:y = f1-1◦ - - ◦ fn-1(x)。在实践中,f1, … . , fn通常被实例化为神经网络,其结构使得雅各布系数的行列式容易计算。归一化流已经从离散序列泛化为连续变换[16, 5],通过使用连续时间动态∂y(t) ∂t = f(y(t), t)来定义变换f,其中f是一个具有非限制性结构的神经网络。那么,在开始时间有先验分布P(y)的P(x)的连续归一化流(CNF)模型可以写成。
在实践中,f1, . . . , fn通常被实例化为神经网络,其结构使得雅各布系数det ∂fk ∂yk-1的行列式容易计算。归一化流已经从离散序列泛化为连续变换[16, 5],通过使用连续时间动态来定义变换f,
在这里插入图片描述
其中f是一个具有非限制性结构的神经网络。那么,在开始时间有先验分布P(y)的P(x)的连续归一化流(CNF)模型可以写成:
点云生成-PointFlow: 3D Point Cloud Generation with Continuous Normalizing Flows_第3张图片
和y(t0)可以用逆变换流y(t0) =
在这里插入图片描述
计算。一个黑盒常微分方程(ODE)求解器可以被用来估计连续归一化流的输出和输入梯度[16, 5]。

4.2. Variational auto-encoder

  假设我们有一个随机变量X,我们正在为其建立生成模型。变分编码器(VAE)这个框架,它允许人们从X的观测数据集中学习P(X)[27, 41]。VAE通过一个具有先验分布Pψ(z)的潜变量z和一个解码器Pθ(X|z)进行生成,该解码器捕捉了给定z的X的(希望更简单)分布。在测试时,潜变量z从先验分布Pψ(z)中取样,然后解码器被用于取样以z为条件的X。在训练过程中,它还学习了一个推理模型(或编码器)Qφ(z|X)。编码器和解码器被联合训练以最大化观测变量对数似然的下限,这也被称为证据下限(ELBO)。
点云生成-PointFlow: 3D Point Cloud Generation with Continuous Normalizing Flows_第4张图片
我们可以把ELBO解释为负重构误差(第一项)和潜在空间正则器(第二项)之和。在实践中,Qφ(z|X)通常被建模为一个对角高斯N(z|µφ(X), σφ(X)),其平均值和标准差由一个参数为φ的神经网络预测。为了有效地优化ELBO,从Qφ(z|X)中取样可以通过将z重新参数化为z = µφ(X) + σφ(X) *ξ, ,其中ξ∼N (0,I)。

5. Model

  我们现在有了定义我们的点云生成模型所需的辅助工具。使用VAE的术语,我们需要三个模块:将点云编码为形状表示的编码器Qφ(z|X),形状表示的先验Pψ(z),以及给定形状表示的点分布建模的解码器Pθ(X|z)。我们使用一个简单的变分编码器来预测Qφ(z|X),遵循Achlioptas等人[1]的架构。我们对先验Pψ(z)和生成器Pθ(X|z)都使用了连续的归一化流,这将在下面描述。
点云生成-PointFlow: 3D Point Cloud Generation with Continuous Normalizing Flows_第5张图片

5.1. Flow-based point generation from shape representations

  我们首先将一个点集的重建对数似然分解为每个点的对数似然之和:
在这里插入图片描述
我们提出使用CNF的条件扩展来为Pθ(x|z)建模。具体来说,点集X中的一个点x是使用以z为条件的CNF对先验分布P(y)=N (0,I)中的某个点y(t0)进行转换的结果:
在这里插入图片描述
其中gθ是以z为条件的连续时间动态流Gθ。请注意,Gθ的逆值是由
在这里插入图片描述
给出的。x的重建似然性遵循公式(2): 注意log P(Gθ -1 (x; z))可以用高斯先验的封闭形式来计算。
在这里插入图片描述

5.2. Flow-based prior over shapes

  虽然可以在形状表征上使用简单的高斯先验,但已经证明,受限的先验往往会限制VAE的性能[6]。为了缓解这个问题,我们使用另一个CNF来参数化一个可学习的先验。形式上,我们将方程3中的KL发散项改写为:
在这里插入图片描述
其中H是熵,Pψ(z)是具有可学习参数ψ的先验分布,通过将简单的高斯P(w)=N(0,I)转换为CNF得到:
在这里插入图片描述
其中fψ是流Fψ的连续时间动态流。与上述类似,Fψ的逆值由
在这里插入图片描述
给出。先验分布的对数概率可以通过以下方式计算:
在这里插入图片描述

5.3. Final training objective

  将方程4、5、6、7插入方程3,ELBO 的点集X最后可以写成:
点云生成-PointFlow: 3D Point Cloud Generation with Continuous Normalizing Flows_第6张图片
我们的模型通过最大化数据集中所有点集的ELBO来进行端到端的训练 :
在这里插入图片描述
我们可以把这个目标解释为三个部分的总和:
1、先验Lprior(X; ψ, φ) , EQφ(z|x) [log Pψ(z)] 鼓励编码后的形状表示在先验条件下具有高概率,先验条件由第5.2节中描述的CNF建模。我们使用重参数化技巧[27]来实现期望值的可微调蒙特卡洛估计:
在这里插入图片描述
其中µ和σ是各向同性的高斯后验Qφ(z|x)的均值和标准偏差,L简单地设置为1。
2. 重建可能性点云生成-PointFlow: 3D Point Cloud Generation with Continuous Normalizing Flows_第7张图片
是输入点集的重建对数似然,如5.1节所述计算。该期望值也是用蒙特卡洛抽样估计的。
3. 后验熵在这里插入图片描述
是近似后验的熵:
在这里插入图片描述
所有的训练细节(如超参数、模型结构)都包含在附录的B部分。

5.4. Sampling

  为了对一个形状表示进行采样,我们首先画出w˜∼N(0,I),然后把它通过Fψ,得到z˜=Fψ(˜w)。为了生成一个给定形状表示z˜的点,我们首先从N(0,I)中抽取一个点y˜∈R3,然后把y˜通过Gθ,以z˜为条件,产生一个形状上的点:x˜=Gθ( ˜w; z)。为了对一个大小为M˜的点云进行采样,我们只需重复M˜次。结合这两个步骤,我们就可以从我们的模型中抽取一个有M˜个点的点云
在这里插入图片描述

6. Experiments

  在本节中,我们首先介绍了现有的点云生成指标,讨论了它们的局限性,并介绍了一种克服这些局限性的新指标。然后,我们使用以前的指标和提议的指标,将提议的方法与以前的点云生成模型进行比较。我们还评估了我们模型的自动编码器部分的重建和表示学习能力。

6.1. 评价指标

  按照先前的工作,我们使用Chamfer距离(CD)和Earth mover距离(EMD)来衡量点云之间的相似性。形式上,它们的定义如下:点云生成-PointFlow: 3D Point Cloud Generation with Continuous Normalizing Flows_第8张图片
其中X和Y是具有相同点数的两个点云,φ是它们之间的偏射。请注意,大多数以前的方法在其训练目标中使用CD或EMD,如果在相同的度量下进行评估,它们往往会被看好。然而,我们的方法在训练中不使用CD或EMD。让Sg是生成的点云的集合,Sr是参考点云的集合,|Sr| = |Sg|。为了评估生成式模型,我们首先考虑Achlioptas等人[1]介绍的三个指标。

  • Jensen-Shannon Divergence(JSD)是计算边际点分布之间的:
  • 在这里插入图片描述
    其中Pr和Pg是参考集和生成集中的点的边际分布,通过将空间离散为283个体素并将每个点分配给其中一个体素来近似。然而,它只考虑边际点的分布,而不考虑单个形状的分布。一个总是输出 "平均形状 "的模型可以在不学习任何有意义的形状分布的情况下获得一个完美的JSD分数。
  • 覆盖率(COV)衡量参考集中的点云与生成集中至少一个点云相匹配的部分。对于生成集中的每个点云,其在参考集中的最近邻居被标记为匹配:
    在这里插入图片描述
    其中D(-, -)可以是CD或EMD。虽然覆盖率能够检测到模式塌陷,但它并不能评估生成的点云的质量。事实上,即使生成的点云与参考点云之间的距离任意大,也有可能达到完美的覆盖率。
  • 最小匹配距离(MMD)被提出来作为衡量质量的一个指标来补充覆盖率。对于参考集中的每个点云,计算其与生成集中最近邻居的距离并取平均值:
  • 在这里插入图片描述
    其中D(-, -) 可以是CD或EMD。然而,MMD实际上对Sg中的低质量点云非常不敏感,因为它们不太可能与Sr中的真实点云相匹配。在极端情况下,我们可以想象Sg主要由非常低质量的点云组成,在Sr的每个模式中还有一个点云,但却有一个合理的MMD得分。如上所述,所有现有的指标都有其局限性。正如后面所显示的,我们还根据经验发现,所有这些指标有时给生成的点云的分数甚至比真实的点云还要好,这进一步使人怀疑它们是否能确保公平的模型比较。因此,我们引入了另一个指标,我们认为它更适合于评估点云的生成模型。
  • 1-近邻精度(1-NNA)是由Lopez-Paz和Oquab[32]提出的用于双样本测试,评估两个分布是否相同。它也被探索作为评估GANs的一个指标[50]。设S-X=Sr∪Sg-{X},NX是S-X中X的最近邻居。1-NNA是1-NN分类器的留空精度:
    在这里插入图片描述
    其中Ⅱ[-] 是指标函数。对于每个样本,1-NN分类器根据其最近的样本的标签,将其分类为来自Sr或Sg。如果Sg和Sr是从相同的分布中采样的,那么在有足够数量的样本的情况下,这样一个分类器的准确率应该收敛到50%。准确率越接近50%,Sg和Sr就越相似,因此模型学习目标分布的效果就越好。在我们的设置中,最近的邻居可以用CD或EMD来计算。与JSD不同,1-NNA考虑的是形状分布之间的相似性,而不是边际点分布之间的相似性。与COV和MMD不同,1-NNA直接测量分布的相似性,并将多样性和质量都考虑在内。

6.2. Generation

  我们将我们的方法与现有的三种点云生成模型进行比较:raw-GAN[1]、latent-GAN[1]和PC-GAN[30],使用它们公开的或通过联系作者获得的正式实现。我们使用ShapeNet[3]数据集中的三个类别之一的点云来训练每个模型:飞机、椅子和汽车。这些点云是通过从网状表面均匀地取样得到的。每个类别中的所有点都被归一化为每个轴的零均值和全局的单位方差。按照先前的惯例[1],我们在训练和测试期间对每个形状使用2048个点,尽管我们的模型能够对任意数量的点进行采样。我们还报告了从训练集取样的点云的性能,这被认为是一个上限,因为它们是来自目标分布。在表1中,我们报告了不同模型的性能,以及它们的参数总数(全)或生成途径(gen)的数量。我们首先注意到,所有之前的指标(JSD、MMD和COV)有时会给模型生成的点云分配一个比来自训练集的点云更好的分数(以灰色标记)。1-NNA指标似乎没有这个问题,总是给来自训练集的形状一个更好的分数。根据1-NNA,我们的模型在所有三个类别中都优于所有基线,并且在大多数情况下,通过其他指标评估,也获得了最好的分数。此外,我们的模型在比较的模型中具有最少的参数。在附录的C节中,我们进行了额外的消融研究,以显示我们模型的不同组成部分的有效性。图3显示了一些由我们的模型生成的新型点云的例子。图4显示了从给定输入中重建的点云的例子。
点云生成-PointFlow: 3D Point Cloud Generation with Continuous Normalizing Flows_第9张图片
点云生成-PointFlow: 3D Point Cloud Generation with Continuous Normalizing Flows_第10张图片
点云生成-PointFlow: 3D Point Cloud Generation with Continuous Normalizing Flows_第11张图片

6.3. Auto encoding

  我们进一步定量比较了我们基于流量的自动编码器与l-GAN[1]和AtlasNet[17]的重建能力。按照AtlasNet的设置,我们在ShapeNet数据集中的所有形状上训练我们的自动编码器,AtlasNet是这项任务中最先进的。自动编码器只用重建似然目标Lrecon来训练。在测试时,我们对每个形状的4096个点进行采样,并将它们分成一个输入集和一个参考集,每个集由2048个点组成。然后我们计算重建的输入集和参考集1之间的距离(CD或EMD)。虽然我们的模型不是直接用EMD训练的,但它获得了最好的EMD分数,甚至高于用EMD训练的l-GAN和AtlasNet,后者的参数多出40多倍。

6.4. Unsupervised representation learning

  我们最后评估了我们的自动编码器的表示学习能力。具体来说,我们提取在完整的ShapeNet数据集中训练的自动编码器的潜在表征,并在ModelNet10或ModelNet40上训练一个线性SVM分类器[49]。只有在这个任务中,我们按照先前的工作[55, 1],将每个单独的点云归一化为每轴零均值和全局单位方差。在训练自动编码器时,我们还沿重力轴应用随机旋转。这项工作的一个问题是,不同的作者一直在使用不同的编码器架构和不同的参数数量,这使得我们很难进行苹果对苹果的比较。此外,不同的作者可能使用不同的预处理协议(Yang等人[51]也指出了这一点),这也会影响数字。在表2中,我们仍然显示了以前的论文所报告的数字,但也包括了与l-GAN[1]的比较,该模型使用相同的编码器架构和完全相同的数据来训练。在ModelNet10上,我们模型的准确率分别比l-GAN(EMD)和l-GAN(CD)高1.5%和0.9%。在ModelNet40上,三个模型的性能非常接近。
点云生成-PointFlow: 3D Point Cloud Generation with Continuous Normalizing Flows_第12张图片

7. Conclusion and future works

  在本文中,我们提出了PointFlow,这是一个点云的生成模型,由两级连续的归一化流组成,用变异推理训练。未来的工作包括应用于其他任务,如从单一图像重建点云。

你可能感兴趣的:(计算机视觉,人工智能,机器学习,深度学习,神经网络)