【论文阅读】PU-GAN:点云上采样的对抗生成网络


在本文中,作者提出了一种点云上采样的对抗网络模型,那么什么是点云的上采样任务呢?
简单来说,点云上采样任务就是输入稀疏点云,输出稠密点云,同时需要保持住点云的基本形状、均匀程度等特征。
GAN就是生成对抗网络,点云上采样作为生成式任务,使用GAN来实现点云的上采样是自然而然的想法。

1 motivation
由深度相机和激光雷达传感器产生的原始点云常常是稀疏的、有噪声的并且不均匀的,这为下游任务的后续处理造成了困难。而就上采样而言,PU-Net和MUP等方法取得的效果十分有限。

而PU-GAN在kitti数据集上的表现也十分出色。

2 contribution
1. 文章针对点云上采样任务提出了一种GAN框架的解决方案,并取得了良好的效果
2. 局部结构具有新意,提出了一个up-down-up unit来expand point features,使用self attention unit来enhance features integration quality。
3. 设计了复合损失来提高结果的均匀性并且支持对抗网络的训练
4. 在KITTI这样的真实扫描的场景中做了上采样实验,并且依然取得了良好的效果,展现了强大的泛化能力。

3 solution
目标是上采样,给定N个点的无序稀疏点集P={pi}i=1NP=\{p_i\}_{i=1}^NP={pi}i=1N,生成包含rN个点的稠密点集Q={qi}i=1rNQ=\{q_i\}_{i=1}^{rN}Q={qi}i=1rN,但输出点集Q并不要求是P的超集,但Q要满足两个条件:
(i) Q要和P一样能够描述潜在目标的基础几何,因此Q中的点要位于且覆盖目标表面;
(ii) Q中的点要在目标表面均匀分布,即使输入点集P中的点是稀疏且不均匀的。

4 architecture

Generator部分负责由稀疏点云进行点云上采样输出稠密点云
Discriminator部分负责区分真实稠密点云和Generator生成的点云。

4.1 Generator

生成器部分大体使用了PU-Net的架构,但与PU-Net又有所不同。
PU-Net共有四个部分:

  1. patch extraction,从给定的点云中提取不同尺度和分布的点块
  2. point feature embedding,分层特征学习和多层特征聚合将原始的3D坐标映射到特征空间
  3. feature expansion,拓展特征数量
  4. coordinate reconstruction,全连接层重建输出点云的三维坐标

而PU-Gan的Generator共有3部分:

  1. Feature Extraction,本部分采用了Patch-based Progressive 3D Point Set Upsampling(3PU)(也即后文中的MPU)中的方法,使用稠密连接层来提取特征,以此获得长程和全局信息
  2. Feature Expansion,作者在这里设计了up-down-up expansion unit来增强特征的变化,以此生成更多不同的点分布
  3. Point Set Generation,首先将特征还原为3D坐标,使用最远点采样保留相距更远的rN个点,保证点集的均匀性

在实际训练中,作者首先对训练数据进了预处理,在每个点云模型表面随机生成200个种子位置,并在种子周围利用测地线距离生成一个patch,将每个patch normalize到一个unit sphere上,在每个patch上利用Poisson disk sampling生成目标点集,在训练时从中随机选择N个点生成输入点集P。

Feature Extraction借鉴了Patch-based Progressive 3D Point Set Upsampling(3PU)中的方法,使用稠密连接层提取特征

在Feature Expansion部分中,作者设计了up-down-up expansion unit,PU-Net直接复制点的特征,并且利用独立的MLP对特征进行处理,这样导致扩展后的特征与输入过于相似,从而影响上采样质量。而3PU将16×的上采样分成4个2×上采样,成功地保留了丰富的细节,但训练过程十分复杂。
作者设计的up-down-up expansion unit将MLP生成的特征F1F_1F1先进行一次上采样得到Fup′F'_{up}Fup,再对Fup′F'_{up}Fup进行下采样得到F2F_2F2,计算上下采样后特征F1F_1F1F2F_2F2的差值∆,对∆进行一次上采样得到∆up∆_{up}up,将∆up∆_{up}upFup′F'_{up}Fup相加得到FupF_{up}Fup,这种方法既避免了冗长的多步训练,同时又能够促进细粒度特征的生成。

在Feature Expansion部分里,上采样过程中PU-GAN并没有使用PU-Net里直接复制点特征的方式,而是使用了采用了Folding Net中的grid机制,在每个复制后的特征后加上唯一的2D向量,以增加其形状特征。(复制的点特征所使用的2D向量相同?)
在特征整合方面使用了自注意力机制。


而在down的部分中没有什么特别的地方,先将特征进行reshape,而后利用MLP拟合原特征
最后利用1×1卷积进行降维来三维重建

4.2 Discriminator
判别器中并没有十分特别的地方,本部分大体借鉴了PCN的架构,将池化后的特征与提取的特征直接进行连接以结合局部和全局信息,使用自注意力机制进一步增强特征提取能力,最后通过MLP回归最终的置信值。

4.3 Loss
由于是GAN网络,本文设计了较多Loss Function,主要分为Generator和Discriminator两部分。
4.3.1 Discriminator Loss
Discriminator中的loss只有一个,即adversarial loss
Lgan(D)=12[D(Q)2+(D(Q^)−1)2]]L_{gan} (D)=\frac{1}{2}[D(Q)^2+(D(\hat{Q})-1)^2] ]Lgan(D)=21[D(Q)2+(D(Q^)1)2]]
其中Q^\hat{Q}Q^是真实点云,QQQ是生成的fake点云,D(Q)D(Q)D(Q)表示判别器输出的置信度。

4.3.2 Generator
Generator Loss包括了reconstruction loss,repulsion loss,uniform loss和adversarial loss.

  1. Adversarial Loss
    Lgan(G)=12[D(Q)−1]2L_{gan}(G)=\frac{1}{2}[D(Q)-1]^2Lgan(G)=21[D(Q)1]2

  2. Reconstruction Loss
    PU-GAN的Reconstruction Loss直接使用EMD loss以鼓励生成的点落在物体表面
    Lrec=min⁡ϕ:Q→Q^∑qi∈Q∣∣qi−ϕ(qi)∣∣2L_{rec}=\min_{\phi:Q\to\hat{Q}}\sum_{q_i\in Q}||q_i - \phi(q_i)||_2Lrec=ϕ:QQ^minqiQqiϕ(qi)2
    其中ϕ:Q→Q^\phi:Q\to\hat{Q}ϕ:QQ^是一个双射

  3. Uniform Loss
    U-GAN最为突出的贡献就是设计了Uniform Loss来控制生成的点云的均匀性。
    为了评估一个点集的均匀性,PU-Net中的NUC度量在对象表面上划分相同大小的disk,并计算disk中点的数量。因此,NUC忽略了点的局部均匀性。图6显示了三个点的patch,这些点的分布差异很大,但它们包含相同数量的点,NUC度量不能区分它们的分布均匀性。

    本文设计的Uniform Loss则同时考虑了全局和局部均匀性
    第一项:
    对于有rN个点的点集QQQ,也就是一个patch
    Step1:在QQQ中最远点采样选择M个seed points
    Step2:使用很小的半径rdr_drd进行ball query得到一个子集SiS_iSi,i=1,…,M
    由于在最初数据的预处理中我们将每一个patch进行了初始化,也就是说每一个patch的大小为π×12\pi\times 1^2π×12,而SiS_iSi的面积为π×rd2\pi\times r_d^2π×rd2
    所以S_i中的点所占比例期望为p=π×rd2/π×12=rd2p=\pi\times r_d^2 /\pi\times1^2=r_d^2 p=π×rd2/π×12=rd2那么SiS_iSi中点的数量自然就是n^=rNp\hat{n} =rNpn^=rNp
    利用卡方检验模型计算∣Si∣|S_i |Sin^\hat{n}n^的偏差Uimbalance(Sj)=(∣Sj∣−n^)2n^U_{imbalance}(S_j)=\frac{(|S_j|-\hat{n})^2}{\hat{n}}Uimbalance(Sj)=n^(Sjn^)2通过第一项控制全局点的数量的分布

第二项
计算S_i中第k个点最近邻居结点的距离d_(j,k),假设相邻点为六边形,且S_i表面平整,则预期距离为d^=2πrd2∣Sj∣3\hat{d} =\sqrt\frac{2\pi r_d^2}{|S_j|\sqrt3}d^=Sj3

2πrd2

,再次利用卡方检验模型计算二者偏差Uclutter(Sj)=∑k=1∣Sj∣(dj,k−d^)2d^U_{clutter}(S_j)=\sum_{k=1}^{|S_j|}\frac{(d_{j,k}-\hat{d})^2}{\hat{d}} Uclutter(Sj)=k=1Sjd^(dj,kd^)2通过第二项控制局部点的均匀性
将二者合起来,便得到了Uniform Loss
Luni=∑j=1MUimbalance(Sj)∙Uclutter(Sj)L_{uni}=\sum_{j=1}^MU_{imbalance}(S_j)\bullet U_{clutter}(S_j)Luni=j=1MUimbalance(Sj)Uclutter(Sj)最后将上述结合,得到Generator和Discriminator所用到Compound LossLG=λganLgan(G)+λrecLrec+λuniLuniL_G = \lambda_{gan}L_{gan}(G) + \lambda_{rec}L_{rec} + \lambda_{uni}L_{uni}LG=λganLgan(G)+λrecLrec+λuniLuniLD=Lgan(D)L_D = L_{gan}(D)LD=Lgan(D)

5 Experiments
5.1 Data Set
本文采用PU-Net和MPU的数据集147个3D模型,随机选择其中120个模型进行训练,剩下的作为测试

5.2 Evaluation Metric
本文使用了四个metric进行评估:
i) point-to-surface distance(P2F)
ii) Chamfer distance(CD)
iii) Hausdorff distance(HD)
iv) 上文所使用的Uniform loss

5.3 Result


消融实验

【论文阅读】PU-GAN:点云上采样的对抗生成网络相关推荐

  1. 李弘毅老师GAN笔记(一),对抗生成网络(GAN)简单介绍

    更新: 原文已经搬运至网站:https://www.link2sea.com/archives/388,后续也将在该网站进行更新. 查看博主更多文章请前往:https://www.link2sea.c ...

  2. 悉尼大学陶大程:遗传对抗生成网络有效解决GAN两大痛点

    来源:新智元 本文共7372字,建议阅读10分钟. 本文为你整理了9月20日的AI WORLD 2018 世界人工智能峰会上陶大程教授的演讲内容. [ 导读 ]悉尼大学教授.澳大利亚科学院院士.优必选 ...

  3. PU-Net:一种基于数据的3D点云上采样网络

    点击上方"视学算法",选择"星标" 干货第一时间送达 论文下载: https://openaccess.thecvf.com/content_cvpr_2018 ...

  4. 【三维深度学习】基于片元的渐进式三维点云上采样模型

    点云上采样对于从稀疏三维数据重建稠密三维点云十分有效.但面对非规则.无需.稀疏.噪声和不完整的点云结构,图像领域的超分辨.补全.稀疏加密等方法无法直接用于点云上采样中.PointNet系列方法基于全连 ...

  5. 【三维深度学习】点云上采样网络PU-Net 代码分析

    PU-Net的代码是基于Tensorflow code,并从PointNet++和PointSetGeneration中进行了诸多借鉴.PU-Net是一个点云上采样模型,可以将非规则的点云输入通过点云 ...

  6. 【三维深度学习】点云上采样网络PU-Net

    点云上采样网络PU-Net,这篇论文的任务是在给定较为稀疏点云集合的基础上生成更为稠密的点,通过训练学习隐含的几何特征并利用更为稠密的点表示出来.与图像超分辨类似,但这一问题却需要处理非栅格点云数据: ...

  7. 【点云上采样】三维点云特征上采样

    一维和二维数据上采样通常是通过插值的方法来增加点的个数.三维点云上采样理论上也可以通过这个方法来进行.这些上采样的方法均是增加点的数量.但三维空间中点的分布并不是很均匀,不便于定义插值点的位置.因此, ...

  8. GAN对抗生成网络原始论文理解笔记

    文章目录 论文:Generative Adversarial Nets 符号意义 生成器(Generator) 判别器(Discriminator) 生成器和判别器的关系 GAN的训练流程简述 论文中 ...

  9. 论文阅读笔记:《一种改进的图卷积网络半监督节点分类》

    论文阅读笔记:<一种改进的图卷积网络半监督节点分类> 文章目录 论文阅读笔记:<一种改进的图卷积网络半监督节点分类> 摘要: 引言 非欧几里得数据 1 深度池化对偶图神经网络 ...

最新文章

  1. malloc为什么会报错:memory corruption
  2. Linux系统下如何安装软件包
  3. 苹果手机透明桌面_苹果官网上,一个透明手机壳卖300多块钱,是不是在耍我们?...
  4. Linux实现开机自动运行普通用户脚本
  5. 【面试必备】Swiftamp;nbsp;面试题及其答案
  6. Leecode 869. 重新排序得到 2 的幂——Leecode每日一题系列
  7. 有人不会使用计算机的反义,现代汉语练习题及答案
  8. 抖音春晚红包百亿互动量级背后,火山引擎浮出水面
  9. 一周3篇顶刊!颜宁团队今年已发5篇Science/PNAS等顶级论文
  10. 报名 | 上道沙龙:科技如何赋能传统金融?
  11. mac系统ps快捷键大全-来自三人行慕课
  12. 计算机房应该配哪种灭火器,机房应选用哪种灭火器?
  13. 写switch case语句不加break会怎样。
  14. 副族元素从上到下原子半径_原子的大小以原子半径来表示
  15. S曲线C语言实现,利用robomodule+STM32F429+直流伺服电机进行简单验证
  16. 带隙基准(BG)的基本原理与结构
  17. 命令控制qq自动申请远程控制
  18. Win11右键菜单还原Win10
  19. Java Swing实用小工具开发
  20. 客服系统竞品分析报告Shein

热门文章

  1. 【武器系统】【2005.09】寻的导弹动力学建模、制导与控制
  2. 高通SDM450 ADC读取电池驱动调试
  3. 【收藏】Android开源项目和 框架
  4. Tomcat Connector运行模式从bio方式改成nio方式
  5. 【NOIP2013模拟】导弹防御塔
  6. 怎样路由器重启换IP?
  7. oppoa92s能否刷安卓9_oppoA92s刷机教程_强制卡刷官方系统方法
  8. mysql中show的用法_完全解析MySQL数据库中Show命令用法
  9. 交换机show命令的用法
  10. PowerPoint2010的妙用之截图