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

article/2025/9/24 17:14:34

【论文阅读】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 = { p i } i = 1 N P=\{p_i\}_{i=1}^N P={pi}i=1N,生成包含rN个点的稠密点集 Q = { q i } i = 1 r N Q=\{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生成的特征 F 1 F_1 F1先进行一次上采样得到 F u p ′ F'_{up} Fup,再对 F u p ′ F'_{up} Fup进行下采样得到 F 2 F_2 F2,计算上下采样后特征 F 1 F_1 F1 F 2 F_2 F2的差值∆,对∆进行一次上采样得到 ∆ u p ∆_{up} up,将 ∆ u p ∆_{up} up F u p ′ F'_{up} Fup相加得到 F u p F_{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
L g a n ( D ) = 1 2 [ 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^是真实点云, Q Q Q是生成的fake点云, D ( Q ) D(Q) D(Q)表示判别器输出的置信度。

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

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

  2. Reconstruction Loss
    PU-GAN的Reconstruction Loss直接使用EMD loss以鼓励生成的点落在物体表面
    L r e c = min ⁡ ϕ : Q → Q ^ ∑ q i ∈ Q ∣ ∣ q i − ϕ ( q i ) ∣ ∣ 2 L_{rec}=\min_{\phi:Q\to\hat{Q}}\sum_{q_i\in Q}||q_i - \phi(q_i)||_2 Lrec=ϕ: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个点的点集 Q Q Q,也就是一个patch
    Step1:在 Q Q Q中最远点采样选择M个seed points
    Step2:使用很小的半径 r d r_d rd进行ball query得到一个子集 S i S_i Si,i=1,…,M
    由于在最初数据的预处理中我们将每一个patch进行了初始化,也就是说每一个patch的大小为 π × 1 2 \pi\times 1^2 π×12,而 S i S_i Si的面积为 π × r d 2 \pi\times r_d^2 π×rd2
    所以S_i中的点所占比例期望为 p = π × r d 2 / π × 1 2 = r d 2 p=\pi\times r_d^2 /\pi\times1^2=r_d^2 p=π×rd2/π×12=rd2那么 S i S_i Si中点的数量自然就是 n ^ = r N p \hat{n} =rNp n^=rNp
    利用卡方检验模型计算 ∣ S i ∣ |S_i | Si n ^ \hat{n} n^的偏差 U i m b a l a n c e ( S j ) = ( ∣ S j ∣ − n ^ ) 2 n ^ 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 π r d 2 ∣ S j ∣ 3 \hat{d} =\sqrt\frac{2\pi r_d^2}{|S_j|\sqrt3} d^=Sj3 2πrd2 ,再次利用卡方检验模型计算二者偏差 U c l u t t e r ( S j ) = ∑ k = 1 ∣ S j ∣ ( d j , k − d ^ ) 2 d ^ 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
L u n i = ∑ j = 1 M U i m b a l a n c e ( S j ) ∙ U c l u t t e r ( S j ) L_{uni}=\sum_{j=1}^MU_{imbalance}(S_j)\bullet U_{clutter}(S_j) Luni=j=1MUimbalance(Sj)Uclutter(Sj)最后将上述结合,得到Generator和Discriminator所用到Compound Loss L G = λ g a n L g a n ( G ) + λ r e c L r e c + λ u n i L u n i L_G = \lambda_{gan}L_{gan}(G) + \lambda_{rec}L_{rec} + \lambda_{uni}L_{uni} LG=λganLgan(G)+λrecLrec+λuniLuni L D = L g a n ( 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
在这里插入图片描述
在这里插入图片描述
消融实验
在这里插入图片描述


http://chatgpt.dhexx.cn/article/kxoIAxcg.shtml

相关文章

生成对抗网络——CGAN

1.生成模型原理 1)CGAN的原理 传统的GAN或者其他的GAN都是通过一堆的训练数据,最后训练出了G网络,随机输入噪声最后产生的数据是这些训练数据类别中之一,我们提前无法预测是那哪一个? 因此,我们有的时候…

基于对抗生成网络的滚动轴承故障检测方法

人工智能技术与咨询 点击蓝字 关注我们 来源:《人工智能与机器人研究》 ,作者华丰 关键词: 不平衡工业时间序列;异常检测;生成对抗网络;滚动轴承数据 关注微信公众号:人工智能技术与咨询。了解更多咨询&…

深度学习 - 生成对抗网络

目录 1 GAN产生背景 2 GAN模型 3 CGAN 4 InfoGAN 5 Improved Techniques for Training GANs 6 DCGAN -- Deep convolutional generative adversarial networks 7 GAN应用 1 GAN产生背景 1. 机器学习方法 生成方法,所学到的模型称为生成式模型 生成方法通过观测…

对抗生成网络GAN系列——f-AnoGAN原理及缺陷检测实战

🍊作者简介:秃头小苏,致力于用最通俗的语言描述问题 🍊专栏推荐:深度学习网络原理与实战 🍊近期目标:写好专栏的每一篇文章 🍊支持小苏:点赞👍🏼、…

对抗生成网络原理和作用

我们通过一个demo(gan.py )来讲解对抗生成网络的原理和作用 1、创建真实数据 2、使用GAN训练噪声数据 3、通过1200次的训练使得生成的数据的分布跟真实数据的分布差不多 4、通过debug方式一步步的讲解 二、原理: 1、G(x&…

生成对抗网络

论文阅读笔记,论文链接 Generative Adversarial Network 生成对抗网络 GAN 理解gan的原理 网络思想 在GAN网络当中,有两个网络,一个是生成网络G,另外一个是判别网络D。生成网络G的目的是生成数据,这里的数据可以是图片…

对抗生成网络GAN系列——CycleGAN简介及图片春冬变换案例

🍊作者简介:秃头小苏,致力于用最通俗的语言描述问题 🍊往期回顾:对抗生成网络GAN系列——GAN原理及手写数字生成小案例    对抗生成网络GAN系列——DCGAN简介及人脸图像生成案例 🍊近期目标:写…

MATLAB代码:对于对抗生成网络GAN的风光场景生成算法 关键词:场景生成 GAN 对抗生成网络 风光场景

MATLAB代码:对于对抗生成网络GAN的风光场景生成算法 关键词:场景生成 GAN 对抗生成网络 风光场景 仿真平台: pythontensorflow 主要内容:代码主要做的是基于数据驱动的风光新能源场景生成模型,具体为,通过构建了一种对…

对抗生成网络GAN系列——GAN原理及手写数字生成小案例

🍊作者简介:秃头小苏,致力于用最通俗的语言描述问题 🍊往期回顾:目标检测系列——开山之作RCNN原理详解    目标检测系列——Fast R-CNN原理详解   目标检测系列——Faster R-CNN原理详解 🍊近期目标&a…

GAN——对抗生成网络

GAN的基本思想 作为现在最火的深度学习模型之一,GAN全称对抗生成网络,顾名思义是生成模型的一种,而他的训练则是处于一种对抗博弈状态中的。它使用两个神经网络,将一个神经网络与另一个神经网络进行对抗。 基本思想:&…

一文读懂对抗生成网络的3种模型

https://www.toutiao.com/i6635851641293636109/ 2018-12-17 14:53:28 基于对抗生成网络技术的在线工具edges2cats, 可以为简笔画涂色 前言 在GAN系列课程中分别讲解了对抗生成网络的三种模型,从Goodfellow最初提出的原始的对抗生成网络,到…

对抗生成网络(GAN)详解

目录 前言 目标函数 原理 训练 给定生成器,训练判别器 给定判别器,训练生成器 总结 前言 之前的生成模型侧重于将分布函数构造出来,然后使用最大似然函数去更新这个分布函数的参数,从而优化分布函数,但是这种方法…

对抗生成网络(GAN)简介及生成数字实战

一、简介 生成对抗网络(Generative Adversarial Netword,简称GAN),是一种生成式机器学习模型,该方法由伊恩古德费洛等人于2014年提出,曾被称为“机器学习这二十年来最酷的想法”,可以用来创造虚…

对抗生成网络(Generative Adversarial Net)

好久没有更新博客了,但似乎我每次更新博客的时候都这么说(泪)。最近对生活有了一些新的体会,工作上面,新的环境总算是适应了,知道了如何摆正工作和生活之间的关系,如何能在有效率工作的同时还能…

【PaddleOCR-det-finetune】一:基于PPOCRv3的det检测模型finetune训练

文章目录 基本流程详细步骤打标签,构建自己的数据集下载PPOCRv3训练模型修改超参数,训练自己数据集启动训练导出模型 测试 相关参考手册在PaddleOCR项目工程中的位置: det模型训练和微调:PaddleOCR\doc\doc_ch\PPOCRv3_det_train.…

模型微调(Finetune)

参考:https://zhuanlan.zhihu.com/p/35890660 ppt下载地址:https://github.com/jiangzhubo/What-is-Fine-tuning 一.什么是模型微调 给定预训练模型(Pre_trained model),基于模型进行微调(Fine Tune)。相…

fine-tuning

微调(fine-tuning) 在平时的训练中,我们通常很难拿到大量的数据,并且由于大量的数据,如果一旦有调整,重新训练网络是十分复杂的,而且参数不好调整,数量也不够,所以我们可…

大模型的三大法宝:Finetune, Prompt Engineering, Reward

编者按:基于基础通用模型构建领域或企业特有模型是目前趋势。本文简明介绍了最大化挖掘语言模型潜力的三大法宝——Finetune, Prompt Engineering和RLHF——的基本概念,并指出了大模型微调面临的工具层面的挑战。 以下是译文,Enjoy! 作者 | B…

RCNN网络源码解读(Ⅲ) --- finetune训练过程

目录 0.回顾 1.finetune二分类代码解释(finetune.py) 1.1 load_data(定义获取数据的方法) 1.2 CustomFineTuneDataset类 1.3 custom_batch_sampler类( custom_batch_sampler.py) 1.4 训练train_mod…

FinSH

finSH介绍 FinSH 是 RT-Thread 的命令行组件,提供一套供用户在命令行调用的操作接口,主要用于调试或查看系统信息。它可以使用串口 / 以太网 / USB 等与 PC 机进行通信。 命令执行过程 功能: 支持鉴权,可在系统配置中选择打开/关闭。(TODO…