点云生成:Diffusion Probabilistic Models for 3D Point Cloud Generation

el/2024/4/20 15:11:39

点云生成:Diffusion Probabilistic Models for 3D Point Cloud Generation

  • 简介
  • 论文
    • abstract
    • 1.instruction
    • 2.Related works
    • 3.Diffusion Probabilistic Models for Point Clouds
      • 3.1.Formulation
      • 3.2.Training Objective
      • 3.3.Training Algorithm
    • 4.Model Implementations
      • 4.1. Point Cloud Generator
      • 4.2. Point Cloud Auto-Encoder
    • 5. Experiments
      • 5.1. Experimental Setup
      • 5.2. Point Cloud Generation
      • 5.3. Point Cloud Auto-Encoding
      • 5.4. Unsupervised Representation Learning
    • 6. Conclusions

简介

在这里插入图片描述
2021 CVPR

论文

abstract

  我们提出了一个用于点云生成的概率模型,它是各种三维视觉任务的基础,如点云形状补全、上采样、合成和数据增强。受非平衡热力学中扩散过程的启发,我们将点云中的点视为热力学系统中与热浴接触的粒子,它们从原始分布扩散到噪声分布(熵增理论)。因此,点云的生成相当于学习反向扩散过程,将噪声分布转变为所需形状的分布。具体来说,我们建议将点云的反向扩散过程建模为以某些形状潜变量(latent variable)为条件的马尔可夫链。我们以闭合形式推导出训练的变分约束,并提供了模型的实现方法。实验结果表明,我们的模型在点云生成和自编码方面取得了有竞争力的性能。该代码可在https://github.com/luost26/diffusion-point-cloud。

1.instruction

  随着近年来深度传感和激光扫描的发展,点云作为一种流行的三维形状建模的代表,已经引起了越来越多的关注。在开发点云分析方法方面已经取得了重大进展,如分类和分割[16, 17, 23]。另一方面,学习点云的生成模型在无监督的表征学习中是非常强大的,可以描述数据的分布,这为各种任务奠定了基础,如形状完成、上采样、合成等等。生成模型,如变分自编码器(VAEs)、生成对抗网络(GANs)、正常化流等,在图像生成方面已经显示出巨大的成功[13, 8, 5, 6]。然而,这些强大的工具不能直接推广到点云,因为三维空间中的点的不规则采样模式图像底层的规则网格结构相反。因此,学习点云的生成模型是相当具有挑战性的。之前的研究已经通过GANs[1, 22, 19]、自回归模型[21]、基于流的模型[25]等探索了点云的生成。虽然已经取得了显著的进展,但这些方法对于点云的建模有一些固有的局限性。例如,由于对抗性损失,GANs的训练程序可能不稳定。在本文中,我们提出了一个受非平衡热力学启发的点云概率生成模型,利用反向扩散过程来学习点分布。由于点云是由三维空间中的离散点组成,我们把这些点看作是与热浴接触的非平衡热力学系统中的粒子。在热浴的作用下,粒子的位置以随机的方式演变,扩散并最终遍布整个空间。这个过程被称为扩散过程,通过在每个时间步长上添加噪声,将粒子的初始分布转换为简单的噪声分布[12, 20]。类似地,我们通过扩散过程将点云的点分布连接到噪声分布。当然,为了给点云生成的点分布建模,我们考虑反向扩散过程,它从噪声分布中恢复目标点分布。特别是,我们将这个反向扩散过程建模为一个马尔可夫链,将噪声分布转换为目标分布。我们的目标是学习它的过渡核,使马尔可夫链能够重建所需的形状。此外,由于马尔科夫链的目的是对点分布进行建模,因此仅靠马尔科夫链是无法生成各种形状的点云的。为此,我们引入一个形状潜码(latent code,寻找到一个形状表示的潜在空间,可以通过潜在变量来控制形状,一般是通过一个网络来学习生成的)作为过渡核的条件。在生成的设置中,形状潜码遵循一个先验分布,我们通过归一化流[5,6]对其进行参数化,以实现强大的模型表达能力。在自动编码的设置中,形状潜码是端到端的学习。最后,我们将训练目标制定为最大化点云在形状潜码上的可能性的变分下限,这被进一步制定为封闭形式的可操作表达。我们将我们的模型应用于点云生成、自动编码和无监督表示学习,结果表明,我们的模型在点云生成和自动编码方面取得了有竞争力的性能,在无监督表示学习方面取得了相当的结果。我们的主要贡献包括:

  • 我们为点云提出了一个新的概率生成模型,其灵感来自非平衡热力学中的扩散过程。
  • 我们从点云的可能性的变分下限中推导出一个可操作的训练目标,该目标以一些形状潜码为条件。
  • 广泛的实验表明,我们的模型在点云生成和自动编码方面取得了有竞争力的性能。

2.Related works

Point Cloud Generation:
  早期的点云生成方法[1,7]将点云视为N×3矩阵,其中N为固定的点数,将点云生成问题转换为矩阵生成问题,因此,现有的生成模型很容易适用。例如,[7]将变异自动编码器[13]应用于点云生成。[1]采用基于预训练的自动编码器的生成对抗网络[8]。这些方法的主要缺陷是它们被限制在生成具有固定数量的点云,并且缺乏变异不变的特性。FoldingNet和AtlasNet[26, 10]通过学习从二维斑块到三维空间的映射,将二维斑块变形为点云的形状,从而缓解了这个问题。这两种方法允许通过首先对斑块上的一些点进行采样,然后在这些点上应用映射来生成任意数量的点。此外,斑块上的点在本质上是不改变的。上述方法依赖于启发式的集合距离度量,如Chamfer距离(CD)和Earth Mover的距离(EMD)。正如[25]中所指出的,CD已经被证明会错误地偏向于过度集中于边缘点分布模式的点云,而EMD的计算速度很慢,而近似值可能会导致有偏差的梯度。另外,点云可以被看作是点分布的样本(采样),这种观点激发了对基于似然法的点云建模和生成的探索。PointFlow[25]采用连续归一化流[4, 9]对点的分布进行建模。DPF-Net[14]使用仿生耦合层作为归一化流来模拟分布。PointGrow[21]是一个具有精确似然性的自动回归模型。最近,[2]提出了一个基于分数匹配能量的模型ShapeGF来对点的分布进行建模。我们的方法也将点云视为分布中的样本,但与之前的工作相比,在概率模型方面有所不同。我们利用反向扩散马尔可夫链对点的分布进行建模,实现了简单性和灵活性。具体来说,我们模型的训练过程涉及学习马尔科夫过渡核,其训练目标有一个简单的函数形式。相比之下,基于GAN的模型涉及复杂的对抗性损失,基于连续流的方法涉及昂贵的ODE集成。此外,我们的模型是灵活的,因为与基于流的模型相比,它不要求可逆性,与自动回归模型相比,它不假定排序。
Diffusion Probabilistic Models:
  本工作中考虑的扩散过程与扩散概率模型[20, 11]有关。扩散概率模型是一类潜变量模型,它也使用马尔可夫链将噪声分布转换为数据分布。之前关于扩散概率模型的研究集中在玩具数据和图像的无条件生成问题上。在这项工作中,我们专注于点云的生成,这是一个有条件的生成问题,因为我们工作中考虑的马尔可夫链生成点云的点是以一些形状潜势为条件的。与之前的扩散概率模型的研究相比,这种条件适应性导致了明显不同的训练和采样方案。

3.Diffusion Probabilistic Models for Point Clouds

  在本节中,我们首先提出了点云的正向和反向扩散过程的概率模型。然后,我们制定了训练该模型的目标。该模型的实现将在下一节提供。

3.1.Formulation

  我们把一个点云X(0)={x i(0) }i=1N看作是由N个点组成,作为一个不断发展的热力学系统中的一组粒子。正如第1节所讨论的,点云中的每个点xi都可以被视为从一个点分布中独立采样,我们将其分布表示为q(xi (0) |z)。这里,z是决定点的分布的形状潜码。从物理上讲,随着时间的推移,这些点会逐渐扩散成一个混乱的点集。这个过程被称为扩散过程,它将原来有意义的点分布转化为噪声分布。前向扩散过程被建模为马尔可夫链[12]:
在这里插入图片描述
其中q(xi(t)|xi(t-1))是马尔科夫扩散核。该核在前一个时间步长的点上增加了噪声,并对下一个时间步长的点的分布进行建模。按照[20]的惯例,我们将扩散核定义为:
在这里插入图片描述
其中β1 … βT是控制过程扩散率的方差调度超参数。我们的目标是生成具有有意义的形状的点云,由潜在的表征z编码。我们将生成过程视为扩散过程的逆向,从简单的噪声分布p(xi(T))中采样的点被作为输入,该分布接近于q(xi^ (T)^)。然后,这些点通过反向马尔科夫链,最终形成所需的形状。与仅仅向点添加噪声的正向扩散过程不同,反向过程旨在从输入的噪声中恢复期望的形状(学习到加入的噪声并除去,也就可以恢复得到我们想要的点云形状分布),这需要从数据中进行训练。我们将反向扩散过程的生成表述为:
在这里插入图片描述
其中μθ是由参数为θ的神经网络实现来学习的估计均值。 z是编码点云的目标形状的潜码。起始分布p(xi(T))被设定为标准正态分布N (0, I)。给定一个形状潜势z,我们通过反向马尔科夫链传递一组从p(xi(T))中采样的点来获得具有目标形状的点云。为了简洁起见,在下面的章节中,我们使用与整个点云X(0)有关的分布。由于点云中的点是从分布中独立采样的,整个点云的概率只是每个点的概率的乘积:
在这里插入图片描述
在制定了点云的正向和反向扩散过程后,我们将正式确定点云生成的反向扩散过程的训练目标如下。

3.2.Training Objective

  训练反向扩散过程的目标是使点云的对数似然最大化。E[log pθ(X(0))]。然而,由于直接优化精确的对数似然是难以实现的,我们转而最大化其变分下限:
在这里插入图片描述
框出来的即变分下界(EBLO):
在这里插入图片描述
上述变分约束可以被改写为要最小化的训练目标L(详细推导见补充材料):
在这里插入图片描述
由于如公式(5)所述,各点的分布是相互独立的,因此我们进一步扩展训练目标:
在这里插入图片描述
训练目标可以被有效地优化,因为右手边的每一个项都是可操作的,而且q很容易从前向扩散过程中取样。接下来,我们详细说明这些计算项,以揭示如何计算目标。
①可以根据[11]用以下闭式高斯计算出来:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
④是近似的后验分布。使用变分自编码器的语言,它是一个对输入点云进行编码的编码器,它将输入点云X(0)编码为潜码z的分布。它是一个符合惯例的高斯。
在这里插入图片描述
⑤最后一项p(z)是先验分布。最常见的p(z)的选择是各向同性的高斯N(0,I)。除了固定分布外,先验可以是一个可训练的参数分布,它更加灵活。例如,可以采用归一化流[5,6]对先验分布进行参数化。在下一节中,我们将展示如何优化公式(9)中的目标,以训练该模型.

3.3.Training Algorithm

  原则上,训练模型相当于最小化公式(9)中的目标。然而,评估公式(9)需要对所有时间步骤的KL项的期望值进行求和。为了计算期望值,需要对前向扩散过程中的全部轨xi(1), … , xi(T)迹进行采样。为了使训练更简单、更有效,按照[11]的做法,我们在每个训练步骤中都随机选择一个项来进行优化,而不是评估公式(9)中所有时间步长的整个和的期望值。具体来说,这种简化的训练算法如下:
在这里插入图片描述
为了有效地从q(x (t) |x (0))中取样(第5阶段),避免从t = 1开始的迭代取样,我们利用了[11]中的结果,即q(x(t) |x(0))是一个高斯分布:
在这里插入图片描述
q(x(t) |x(0))的高斯性使得通过使用重新参数化技巧[13]对Lt(第6个阶段)进行进一步简化成为可能。我们把这种简化的细节放在补充材料中。最后,请注意,Lz中的KL发散是随机评估的,即
在这里插入图片描述

4.Model Implementations

  上一节中的一般训练目标和算法为制定具体的点云任务奠定了基础。接下来,我们将训练目标分别调整为点云生成和点云自动编码。

4.1. Point Cloud Generator

  利用第3节中的模型,我们提出了一个用于点云生成的概率模型,通过采用归一化流对先验分布p(z)进行参数化,这使得模型更加灵活[18, 5]。具体来说,我们使用一堆仿生耦合层[6]作为归一化流。实质上,仿生耦合层提供了一个可训练的偏置器Fα,它将各向同性的高斯映射到一个复杂的分布。由于该映射是双向的,目标分布的确切概率可以通过变量变化公式计算出来。
在这里插入图片描述
这里,p(z)是模型中的先验分布,Fα是由仿生耦合层(affine coupling layers)实现的可训练偏置器,pw(w)是各向同性的高斯分布N(0,I)。至于编码器qϕ(z|X(0)),我们采用PointNet[16]作为编码器qϕ(z|X(0))的μϕ和Σϕ架构。将公式(14)代入公式(9),生成模型的训练目标为:
在这里插入图片描述
优化上述目标的算法可以从算法1中自然得出。为了对点云进行采样,我们首先绘制w∼N(0,I),并通过Fα获得形状潜码z。然后,利用形状潜码z,我们从噪声分布p(xi(T) }中采样一些点{xi(T)},并将这些点通过公式(3)中定义的反向马尔科夫链pθ(xi(0:T) |z),生成点云X(0) = {xi(0)}i=1N

4.2. Point Cloud Auto-Encoder

  我们根据第3节中的概率模型实现了一个点云自编码器。我们采用PointNet作为表示编码器,用参数j表示为Eϕ(X(0)),并利用第3.1节中提出的反向扩散过程进行解码,以编码器产生的潜在代码为条件。利用公式(9),我们通过最小化以下适应的目标来训练自编码器:
在这里插入图片描述
为了解码被编码为潜码z的点云,我们从噪声分布p(xi(T) )中抽取一些点{x i(T)},并将这些点通过公式(3)中定义的反向马尔科夫链pθ(xi(0:T)|z),以获得重建的点云X(0) = {xi(0)}i=1N

5. Experiments

  在这一部分,我们评估了我们的模型在三个任务上的表现:点云生成、自动编码和无监督表示学习。

5.1. Experimental Setup

数据集 对于生成和自动编码任务,我们采用ShapeNet数据集[3],其中包含55个类别的51,127个形状。该数据集按80%、15%、5%的比例随机分成训练、测试和验证集。对于表征学习任务,我们使用ShapeNet的训练分集来训练一个编码器。然后,我们采用ModelNet10和ModelNet40[24]来评估由编码器学习的表征。我们从每个形状中抽取2048个点来获取点云,并将每个点归一化为零均值和单位方差。
评价指标 按照先前的工作,我们使用Chamfer距离(CD)和Earth Mover距离(EMD)来评价点云的重建质量[1]。为了评价生成质量,我们采用最小匹配距离(MMD)、覆盖率得分(COV)、1-NN分类器精度(1-NNA)和Jenson-Shannon分歧(JSD)[25]。MMD分数衡量生成样本的保真度,COV分数检测模式塌陷。1-NNA得分是通过1-NN分类器测试生成的样本和参考样本来计算的。如果分类器的性能接近随机猜测,即准确率接近50%,则可以认为生成样本的质量较好。JSD得分衡量生成的样本集和参考样本集的点分布之间的相似性。

5.2. Point Cloud Generation

  我们将我们的方法与以下最先进的生成模型进行定量比较。PC-GAN[1]、GCNGAN[22]、TreeGAN[19]、PointFlow[25]和ShapeGF[2]使用ShapeNet中两个类别的点云:飞机和椅子。按照ShapeGF[2],在评估每个模型时,我们将生成的点云和参考点云归一化到[-1, 1]3的边界中,这样指标就集中在点云的形状而不是比例上。我们使用第5.1节中的指标对模型生成的点云进行评估,并在表1中总结了结果。我们还在图4中可视化了我们的方法所生成的一些点云样本。
在这里插入图片描述
在这里插入图片描述

5.3. Point Cloud Auto-Encoding

  我们评估了提出的自编码器的重建质量,并与最先进的点云自动编码器进行了比较。AtlasNet [10], PointFlow [25] 和 ShapeGF [2]。评估中使用了四个数据集,其中包括ShapeNet的三个类别:飞机、汽车、椅子和整个ShapeNet。我们还报告了重建误差的下限 “神谕”。这个界限是通过计算两个具有相同点数和相同形状的不同点云之间的距离得到的。如表2所示,当用EMD测量时,我们的方法优于其他方法,并且更接近于下限的 "oracle "性能。我们的方法的CD得分与其他方法相当。值得注意的是,当对整个ShapeNet数据集进行训练和测试时,我们的模型在CD和EMD方面都优于其他方法,这表明我们的模型对不同形状的编码具有更高的能力。另外,图5中重建的点云的可视化也验证了我们模型的有效性。
在这里插入图片描述
在这里插入图片描述

5.4. Unsupervised Representation Learning

此外,我们评估了我们的自编码器所学到的表征。首先,我们用整个ShapeNet数据集训练一个自动编码器。在训练过程中,我们通过应用沿重力轴的随机旋转来增强点云,这与之前的工作相一致。然后,我们使用训练好的编码器学习ModelNet-10和ModelNet-40中点云的特征表示,并使用训练分割中的点云代码及其类别训练线性SVM。最后,我们使用测试分割来测试SVM,并在表3中报告了准确性。我们运行AtlasNet和ShapeGF的官方代码来获得结果,因为其论文中没有提供结果。对于PC-GAN和PointFlow,我们使用论文中报告的结果。我们的编码器的性能可以与相关的最先进的生成模型相媲美。此外,我们使用t-SNE[15]将编码器产生的ModelNet-10点云的潜伏代码投射到二维平面,并在图7中展示。可以看出,大多数类别之间都有明显的边际,这表明我们的模型能够学习到有信息的表征。此外,我们在图6中可视化了潜伏代码之间的内插和外推。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6. Conclusions

  我们从非平衡热力学的扩散过程中得到启发,提出了一种新的点云概率生成模型。我们将点云生成的反向扩散过程建模为以某些形状潜势为条件的马尔可夫链,并从点云的可能性的变异约束中得出一个可操作的训练目标。实验结果表明,所提出的模型在点云生成和自动编码方面达到了最先进的性能。


http://www.ngui.cc/el/3376884.html

相关文章

大数据(一)

平台 1.概念:就是操作系统。(windows,linux,Mac) 2.跨平台:java可以运行在任意的操作系统上,一次编写到处运行。 3.原理:实现跨平台需要依赖虚拟机–java虚拟机。 注释 什么是注释…

while和do—while循环语句

while循环语句 格式: while(判断条件语句){ ​ 循环体语句; } 扩展格式: 初始化语句; while(判断条件语句){ ​ 循环体语句; ​ 控制条件语句; } 实例一 猜字…

if-else条件语句

if-else条件语句 语法: if(布尔表达式) { //如果布尔表达式为true将执行的语句 } 实例一 输入分数,判断段位 public static void main(String[] args){ Scanner scnew Scanner(System.in);System.out.println("请输入分数");int x sc.…

面向过程

面向过程 A:面向过程: 强调的是过程,所有的事情都需要自己完成 B:面向对象: 是一种更符合我们思想习惯的思想(懒人思想,我把事情自己不做,交给别人去做) 可以将复杂…

unity获取到网络时间和本地时间

unity获取到网络时间和本地时间获取到网络时间unity获取本地时间2018年11月26日 16:30:10做一个时间的显示,unity有获取到系统时间的api DateTime 当时考虑到网络游戏几个人的时间还是统一比较好,因此做了一个获取网络时间 上代码 获取到网络时间 先做…

关于bigAutocomplete的自动补全功能

1. 首先献上官网地址和资源这个官网什么的我不知道,好像没官网,哈哈哈哈直接百度云链接:https://pan.baidu.com/s/1ehti6Ue6cNtBipjkCtxWSQ 密码:lq2kjquery.bigautocomplete.cssjquery.bigautocomplete.js 2.具体前端后端代码&am…

关于富文本框KindEditor的使用

1. 首先献上官网地址和资源 js&#xff0c;css等资源百度云链接&#xff1a;https://pan.baidu.com/s/1tbSeToJQ1BYsXNPKChX7Zg 密码&#xff1a;xry2 2.具体前端后端代码&#xff08;html没有加入其他样式&#xff09; 引入上面的js和css <textarea id"description&…

通过oracle触发器调用存储过程发送http请求

什么是触发器&#xff0c;什么是存储过程&#xff0c;我不说&#xff0c;我也不知道 现在我要说的是怎么通过触发器调用存储过程发送http请求 --触发器&#xff1a;--语法&#xff1a;create [or replace] tigger 触发器名 触发时间 触发事件 on 表名[for each row]beginpl/s…

对String,StringBuilder,StringBuffer的理解

平时我们一般涉及到字符串的拼接&#xff0c;最本能最直接的方法就是. String s1 "Hello"; s1s1"word"; 当数据拼接次数比较少的时候&#xff0c;这样的方法无可厚非&#xff0c;但是一旦次数较多时&#xff0c;这样的方法效率很低&#xff0c;而且浪费…

Redis的基本介绍以及在linux上的安装

1.什么是redis?有什么特性&#xff1f; Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 特性&#xff1a; Redis 与其他 key - value 缓存产品(memcached)有以下三个特点&#xff1a; ①、…