PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation

news2024/11/15 13:50:02

Abstract

通常情况下研究人员会把点云数据转换为规则的3D体素网格或图像集合。这导致数据不必要的庞大,所以本文引入了一种新型的神经网络,能很好的尊重点云的排列不变性,名称是pointnet,并且能够应用于分类、分割、场景解析等下游任务。同时,网络的架构简单而且非常的高效。

Introduction

首先提到点云是3D几何数据的一种重要类型,但由于其不规则格式,大多数研究者将其转换为规则的3D体素网格或图像集合,导致数据量增加并可能引入量化伪影。

所以本文提出了PointNet,是一种新型的神经网络,能直接处理点云数据,并且很好地尊重了输入点的排列不变性。PointNet提供了一个统一的架构,适用于从物体分类、部件分割到场景语义解析等多种3D识别任务。而且虽然结构简单,pointnet在效率和效果上都很出色。

文章还提供了对pointnet的理论分析,以理解网络学习的内容以及其对输入扰动和损坏的鲁棒性。

PointNet 的应用 适用于分类分割等领域

PointNet的基本架构非常简单,在初始阶段,每个点都以相同的方式独立处理,仅由其三维坐标(x, y, z)表示。网络使用单一对称函数,即最大池化(max pooling),来学习选择点云中有趣或信息丰富的点,并编码选择它们的原因。而最终的全连接层将学习到的最优值聚合成整个形状的全局描述符,用于形状分类或预测每个点的标签。文章还提出了一种数据依赖的空间变换器网络,用于在PointNet处理之前对数据进行规范化,以提高结果。

文章的主要贡献概括如下:

•设计了一种新颖的深度网络架构,适合于在3D中消费无序点集;

•展示了如何训练这样的网络来执行3D形状分类,形状部分分割和场景语义解析任务;

•对方法的稳定性和效率进行了全面的实证和理论分析;

•说明了由网络中选定的神经元计算的3D特征,并对其性能进行了直观的解释。

同时还提到,神经网络处理无序集的问题是一个非常普遍和基本的问题,作者期望这个想法也可以转移到其他领域。

Related Work

这一部分以介绍相关概念为主

Point Cloud Features

这段内容强调了点云特征的设计是为了满足特定任务的需求,并且这些特征需要对某些变换保持不变性。同时,点云特征可以根据其作用范围被分为局部特征和全局特征,而且为特定任务找到最合适的特征组合是一个具有挑战性的问题。

Deep Learning on 3D Data

这段内容讨论了3D数据深度学习的不同方法,包括体素化CNN、多视图CNN、谱CNN和基于特征的DNN,以及它们各自的优势和局限性。

Deep Learning on Unordered Sets

这部分强调了点云作为无序向量集的特性,并指出深度学习领域在处理这类数据结构方面的研究相对较少。同时提到了Oriol Vinyals等人在这一领域的工作,他们尝试使用带有注意力机制的网络来处理无序集,但该研究更多关注于通用集合和NLP应用,没有充分利用点云数据的几何特性。

Problem Statement

这一部分详细描述了所设计的深度学习的框架。点云被表示为一组3D点的集合。为了简化,文中主要使用点的坐标作为特征。

对于物体分类任务,输入的点云可以直接从形状中采样或从场景点云中预分割而来。所提出的深度网络输出所有k个候选类别的k个分数。

对于语义分割任务,输入可以是单个物体用于部分区域分割,或3D场景的子体积用于物体区域分割。模型将为每个点的n个点和每个语义子类别的m个输出n×m个分数。

Deep Learning on Point Sets

这一章分成了三个小部分,分别介绍了点的性质、模型的架构、理论性质的分析。

Properties of Point Sets in Rn

点集是无序的(unordered),意味着网络需要对输入点集中的排列顺序不变。

点之间存在交互(interaction among points),网络需要能够捕捉邻近点的局部结构和组合交互。

点集在变换下是不变的(invariance under transformations),即点集的几何变换不应改变其类别或分割。

PointNet Architecture

作者详细介绍了网络的结构设计,PointNet的架构设计用于直接处理无序的点集,无需事先对点进行排序或转换为规则网格。采用了对称函数,特别是最大池化操作,以确保网络对输入点集的任何排列都具有不变性。每个点首先通过一个共享的多层感知机(MLP),用于提取每个点的局部特征,使用最大池化层来聚合所有点的特征,形成一个全局特征向量,这个向量捕捉了整个点云的总体结构信息。

PointNet架构图。该分类网络以n个点作为输入,进行输入和特征变换,然后通过最大池化对点特征进行聚合。输出是k个类的分类分数。分割网络是分类网络的扩展。它连接全局和局部特征,并输出每个点的分数。“mlp”代表多层感知机,括号内数字为层大小。Batchnorm用于所有带有ReLU的层。Dropout层用于分类网络的最后一个mlp。

分类网络接受n个点作为输入,通过输入变换和特征变换(两个共享的MLP)处理点特征,然后通过最大池化层聚合特征,最终通过一个或多个全连接层输出k个类别的分类得分。分割网络是分类网络的扩展,它在最大池化后将全局特征与局部特征结合,然后通过另一个MLP提取新的局部特征,最后输出每个点的语义类别得分。

其中,T-Net是一个小型的子网络,用于学习输入点云或特征的最佳对齐方式,以提高特征提取的鲁棒性和准确性。为了稳定训练过程,PointNet在特征变换中引入了正则化项,鼓励学习到的变换矩阵接近于正交矩阵,从而保持信息不变性。整个网络是端到端训练的,从原始点云直接到分类或分割结果,无需任何中间的手工特征设计。

Theoretical Analysis

作者首先探讨了网络对于连续集函数的通用逼近能力。他们提出,由于连续集函数的连续性,对输入点集的小扰动不应该导致函数值的大幅度变化。例如,在分类或分割任务中,即使输入点集发生微小变化,分类或分割的分数也不应有太大差异。作者还给出了一个形式化的定理,表明如果一个函数f:X→R是在点集上相对于Hausdorf距离连续的,那么存在一个连续函数h和一个对称函数g,使得对于任何点集S∈X,函数f(S)可以通过g和最大池化操作逼近到任意精度。

接着分析了网络的瓶颈维度和稳定性。他们定义了一个子网络u,它将点集映射到一个固定维度的向量,并且证明了小的输入扰动或噪声点不太可能改变网络的输出。具体来说,如果点集S中的一个关键子集CS被保留,那么无论添加多少额外的噪声点,函数f(S)的输出都保持不变。

此外,这个关键子集的大小受到最大池化层维度K的限制,表明f(S)实际上由点集S的一个有限子集决定,这个子集的大小不超过K。作者进一步解释了这种鲁棒性,将其与机器学习中的稀疏性原则相类比。直观上,PointNet通过一组稀疏的关键点来总结形状。实验部分展示了这些关键点如何形成物体的骨架。

最后,作者通过可视化分析,展示了网络如何识别出对整体形状定义至关重要的点,以及任何包含这些关键点的点云都会产生相同的全局形状特征。这些分析不仅提供了对PointNet工作原理的深入理解,而且证明了网络在实际应用中的稳定性和效率。

Experiment

这个章节分成四个部分,首先,展示了PointNets可以应用于多个3D识别任务。其次,提供了详细的实验来验证网络设计。可视化了网络学习的内容,并分析了时间和空间复杂性。

Applications

这一部分展示了PointNet网络在多个3D识别任务中的应用,包括3D物体分类、物体部分分割和场景语义分割。虽然是第一次应用于点集,但能够实现与现有最先进技术相当或更优的性能。

对于3D物体分类任务,PointNet学习了全局点云特征,这些特征被用于在ModelNet40形状分类基准测试上进行评估。与以往侧重于体积和多视图图像表示的方法不同,PointNet是第一个直接处理原始点云的方法。在训练过程中,通过随机旋转对象以及对每个点的位置添加高斯噪声来进行数据增强。在与其他基于3D输入的方法(包括体积和点云)的比较中,PointNet在推理速度上取得了显著的领先,并且可以很容易地在CPU上并行化。

在3D物体部分分割任务中,PointNet被评估在ShapeNet部分数据集上。PointNet将部分分割任务表述为每个点的分类问题,并使用mIoU作为评估指标。与其他利用点几何特征和形状之间对应关系的传统方法相比,PointNet在大多数类别中都取得了更好的性能,并且在模拟的Kinect扫描数据上测试了这些方法的鲁棒性。

最后,在场景语义分割任务中,PointNet的部件分割版本被扩展应用于场景的语义分割,其中点标签变为语义对象类别而不是对象部分标签。在Stanford 3D语义解析数据集上进行了实验。每个扫描点都使用13个类别中的一个进行注释。PointNet在该数据集上的表现显著优于使用手工设计特征的基线方法,并且能够输出平滑的预测,对缺失点和遮挡具有鲁棒性。

这个部分证明了PointNet在3D识别任务中的多样性和有效性,展示了其在不同基准测试中的性能。

Architecture Design Analysis

这一部分探讨了PointNet架构设计的各个方面,包括对照实验验证设计选择的有效性,以及网络超参数的影响。

作者首先比较了不同的顺序不变性方法。他们使用ModelNet40形状分类问题作为测试基础,比较了在未排序和排序的点上应用多层感知机(MLP)、将输入点视为序列的递归神经网络(RNN),以及基于对称函数的模型。实验结果表明,最大池化操作在性能上取得了显著的优势,从而证实了在PointNet中使用最大池化作为对称函数的选择。

接下来,论文展示了输入和特征转换的有效性。作者通过一系列控制实验展示了输入转换和特征转换(用于对齐)的积极效果。特别是,使用输入转换可以提高0.8%的性能。正则化损失对于高维变换工作是必要的。结合这两种转换和正则化项,可以达到最佳性能。

此外,作者还展示了PointNet对各种输入损坏的鲁棒性。他们使用与先前相同的最大池化网络架构,并将输入点标准化到单位球内。实验结果表明,即使在缺失50%的点时,准确率仅下降了2.4%和3.8%。网络对异常点也具有鲁棒性,如果在训练期间见过这些异常点,即使有20%的点是异常点,网络的准确率仍然可以保持在80%以上。此外,网络对点的扰动也表现出鲁棒性。

最后,论文通过可视化分析,展示了PointNet如何通过稀疏的关键点集来总结形状,这些关键点集在理论上构成了PointNet的全局形状特征。通过可视化关键点集和上界形状,作者展示了PointNet的鲁棒性,即丢失一些非关键点也不会改变全局形状。

Visualizing PointNet

这一部分通过可视化的方式深入探讨了PointNet网络内部的学习过程和关键点集(Critical Point Sets, CS)以及上界形状(Upper-bound Shapes, NS)。这些可视化结果不仅展示了PointNet如何捕捉点云数据的全局结构特征,还揭示了网络对于输入点集的鲁棒性。

作者首先描述了关键点集的概念,这些点集是网络通过最大池化层提取的,并且足以定义给定点云的全局形状特征。可视化结果显示,这些关键点集通常对应于物体的骨架或主要特征,即使在部分点缺失的情况下,也能够保持对整体形状的有效描述。

接着,论文展示了上界形状,这是一种理论上的构造,它包含了所有可能的点云,这些点云与原始输入点云产生相同的全局形状特征。通过这种构造,作者说明了PointNet的鲁棒性——即使输入点云中包含一些非关键点的扰动或缺失,网络的输出仍然保持稳定。

此外,论文还提供了关键点集和上界形状的可视化示例,这些示例展示了在不同形状上PointNet的表现。通过这些示例,读者可以直观地看到网络如何识别和利用点云中的关键信息,并且理解这些关键点如何联合起来定义了物体的整体结构。

最后,论文指出这些可视化结果不仅有助于理解PointNet的工作原理,也为进一步改进网络结构和优化算法提供了有价值的见解。通过观察网络如何响应不同的点集变化,研究人员可以更好地调整网络参数,提高模型的性能和泛化能力。

Time and Space Complexity Analysis

这一部分对PointNet在分类任务中的时间和空间复杂度进行了详尽的分析,并将结果与其他主流的3D数据分类架构进行了比较。

作者首先总结了PointNet的空间复杂度,即网络中的参数数量,以及时间复杂度,即每样本所需的浮点运算次数。他们指出,PointNet在参数数量上远远少于多视图卷积网络(MVCNN)和子体积卷积网络(Subvolume),使得PointNet在空间效率上具有显著优势。

接着,论文对比了PointNet与其他架构的时间复杂度。作者指出,尽管MVCNN和Subvolume通过在输入数据上应用多个旋转或视图的池化操作来提高性能,但PointNet在计算效率上仍然具有数量级的优势。PointNet的计算复杂度与输入点的数量成线性关系(O(N)),与基于卷积的体积方法的时间复杂度随体积大小呈立方增长的特性形成鲜明对比。

此外,作者还强调了PointNet在实际应用中的可扩展性。提出使用NVIDIA 1080X GPU在TensorFlow上运行PointNet时,能够每秒处理超过一百万点的点云分类任务,或者每秒处理大约两个房间的语义分割任务。

最后,论文通过表格形式列出了不同架构的参数数量和每样本的浮点运算次数,直观地展示了PointNet在空间和时间复杂度上的优势。作者证明了PointNet不仅在理论上具有高效的计算特性,而且在实际应用中也展现出了卓越的性能。

Conclusion

在这项工作中,我作者提出了一种新的直接使用点云的深度神经网络PointNet。该网络为许多3D识别任务提供了统一的方法,包括对象分类、部件分割和语义分割,同时在标准基准上获得与最先进的技术相当或更好的结果。同时还提供理论分析和可视化来理解这个网络

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1989614.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大模型入门无敌!《大模型基础》教材发布,已开源!

浙江大学DAILY实验室毛玉仁研究员、高云君教授领衔撰写的《大模型基础》教材第一版付梓。 本书旨在针对大语言模型感兴趣的读者系统地讲解相关基础知识、介绍前沿技术。作者团队将认真严肃开源社区以及广大专家学者的建议,持续进行月度更新,致力打造易读…

SQLServer Manager Studio扩展开发从入门到弃坑(针对17 ,18 。19)

Visualstudio的已经开发好了 可以在这里找到。 (如果低版本不适用,那么,我还要重新下载老版本vs开发一版) image.png image.png ,可这个就是不行,直接运行点这些按钮加载失败,而我直接不调试模式,则直接什么…

【运维类】智慧运维系统建设方案(PPT原件完整版)

建设方案目录: 1、智慧运维系统建设背景 2、智慧运维系统建设目标 3、智慧运维系统建设内容 4、智慧运维系统建设技术 5、智慧运维系统建设流程 6、智慧运维系统建设收益 企业对运维管理的需求: 1、提高运维效率:降低运维成本,提高…

我定制了一个属于自己的录屏软件

相信很多朋友都用过不同软件的录屏功能,但是这些软件多少还让存在一些缺点,让我们在录屏的时候不能得心应手。 今天我就来手把手教大家自己来制作一个私人订制的浏览器录屏器, 录屏器 我们可以使用浏览器的屏幕捕获API接口来帮助我们来捕获…

java里的序列化反序列化、HttpMessageConverter、Jackson、消息转化器、对象转化器...都是啥?

前段时间在学习SSM框架(spring boot、spring MVC、mybatis)后端项目的时候,发现他们的项目里:响应类Result类要实现Serializable接口、转化响应给前端的时间数据的格式要用到什么“消息转换器”MappingJackson2HttpMwssageConvert…

Vue:Vue3-TypeScript-Pinia-Vite-pnpm / 基础项目 / 20240807

一、项目技术栈 / 依赖 序号技术栈版本解释1node20.14.02vue 3.4.31 3vite 5.3.4 4TypeScript 5.2.2 5 types/node 22.0.2 解决TypeScript项目中缺少对应模块的类型定义文件的问题6 element-plus 2.7.8 ui组建7 types/js-cookie js-cookie 3.0.6 3.0.5 8 sass 1.77.8 9 hu…

zdppy+vue3+onlyoffice开发文档系统实战20240807上课笔记 解决了最近文档页面几个遗留的文档

小技巧 vite配置 open: true 可以自动打开浏览器。 目前 遗留任务 1、在名称前面,渲染这个文档的图标 2、大小的基本的单位是kb,超过1024kb则换成mb,主要是这两个单位 3、数据按照最近访问时间倒序 4、给文件名价格链接,实现和…

C语言深度剖析(部分)--剩下随缘更新

C语言深度剖析 关键字auto-最宽容大度的关键字 变量的分类 代码块:用{ }括起来的区域 局部变量:包含在代码块中的变量,局部变量具有临时性,进入代码块,自动形成局部变量,退出代码块自动释放。 全局变量…

鸿蒙AI功能开发【hiai引擎框架-人脸比对】 基础视觉服务

hiai引擎框架-人脸比对 介绍 本示例展示了使用hiai引擎框架提供的人脸比对能力。 本示例模拟了在应用里,选择两张图片,计算两个图中最大人脸的相似度 需要使用hiai引擎框架人脸比对接口hms.ai.face.faceComparator。 效果预览 使用说明:…

C++ STL专题 list的底层实现

目录 1.模拟实现list 2.节点模板讲解 3.迭代器模板讲解 3.1为什么template 有三个类型参数 (1).class T (2).class ref (3).class ptr 3.2 *重载 3.3 ->重载 3.4 前置和后置的重载 3.5 前置--和--后置的重载 3.6 和!的重载 4. list模板讲解 4.1 begin()函数 …

[译] How things get done on the Go Team

6天前,掌舵Go语言团队12年Rsc在golang-dev/群组发文宣布,将在9月1号后辞去当前职位,转去做 Gaby 和 Oscar. 这对于Go语言发展无疑是里程碑式的事件。 本篇内容是根据6月份他和另外两位同事参与Go Time音频录制内容的整理与翻译,英…

代码随想录算法训练营Day22 | Leetcode 77 组合 Leetcode 216 组合总和Ⅲ Leetcode17 电话号码的字母组合

前言 回溯算法中递归的逻辑不重要,只要掌握回溯的模板以及将问题转化为树形图,整个问题就很好解决了,比二叉树简单。 Leetcode 77 组合 题目链接:77. 组合 - 力扣(LeetCode) 代码随想录题解:…

K-means聚类算法的应用以及实现

K-means 聚类算法属于无监督学习,它会将相似的对象归到同一个簇中,该算法原理简单,执行效率高,并且容易实现,是解决聚类问题的经典算法。 尽管如此,任何一款算法都不可能做到完美无瑕,K-measn 算…

计算机毕业设计选题推荐-房屋租赁系统-Java/Python项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

【python】python心理健康医学数据分析与逻辑回归预测(源码+数据集+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

php 中 (0 == ‘abc‘) 为真

https://andi.cn/page/621653.html

第129天:内网安全-横向移动WmiSmbCrackMapExecProxyChainsImpacket

这里这个环境继续上一篇文章搭建的环境 案例一: 域横向移动-WMI-自带&命令&套件&插件 首先上线win2008 首先提权到system权限 wmic是windows自带的命令,可以通过135端口进行连接利用,只支持明文方式,优点是不用上传别…

解决IDEA中Maven项目依赖已存在但仍报找不到的错误

问题描述: 如图显示的是lombok存在 这里已经导入lombok依赖包 如图所示依赖包确实已经导入 解决方案: 点击后会重新启动项目,操作后我们重新配置一下maven 设置完后,点击重新引入就行

JAVA实战项目笔记02

一、新增员工 1.接口设计 2.设计数据库的employee表 3.设计DTO DTO:封装前端提交过来的数据 实体类如下:包含更多属性 public class Employee implements Serializable {private static final long serialVersionUID 1L;private Long id;private Str…

vivado OPT_SKIPPED

当跳过候选基元单元的逻辑优化时,OPT_skipped属性 更新单元格以反映跳过的优化。当跳过多个优化时 在同一单元格上,OPT_SKIPPED值包含跳过的优化列表。 架构支持 所有架构。 适用对象 OPT_SKIPPED属性放置在单元格上。 价值观 下表列出了各种OPT_design选…