综述|PointNet、PointNet++、 F-PointNet基于深度学习的3D点云分类和分割

article/2025/9/14 5:06:56

点击下方卡片,关注计算机视觉工坊公众号

干货第一时间送达

1cfab7fff85c7e062cd1620ee1083483.png

作者:黎国溥,3D视觉开发者社区签约作者,CSDN博客专家,华为云-云享专家。

编辑:3D视觉开发者社区

     前言     

PointNet是由斯坦福大学的Charles R. Qi等人在《PointNet:Deep Learning on Point Sets for 3D Classification and Segmentation》一文中提出的模型,它可以直接对点云进行处理的,对输入点云中的每一个点,学习其对应的空间编码,之后再利用所有点的特征得到一个全局的点云特征。Pointnet提取的全局特征能够很好地完成分类任务,但局部特征提取能力较差,这使得它很难对复杂场景进行分析。

PointNet++是Charles R. Qi团队在PointNet论文基础上改进版本,其核心是提出了多层次特征提取结构,有效提取局部特征提取,和全局特征。

F-PointNet将PointNet的应用拓展到了3D目标检测上,可以使用PointNet或PointNet++进行点云处理。它在进行点云处理之前,先使用图像信息得到一些先验搜索范围,这样既能提高效率,又能增加准确率。

一、PointNet

PointNet: Deep Learning on Point Sets for 3D Classificationand Segmentation

论文地址:https://arxiv.org/abs/1612.00593

开源代码-原论文实现:

https://github.com/charlesq34/pointnet

开源代码-Pytorch实现:

https://github.com/fxia22/pointnet.pytorch

71ae9c3bceeec14078c62289fbb99b91.png

1.1 PointNet思路流程

1)输入为一帧的全部点云数据的集合,表示为一个nx3的2d tensor,其中n代表点云数量,3对应xyz坐标。

2)输入数据先通过和一个T-Net学习到的转换矩阵相乘来对齐,保证了模型的对特定空间转换的不变性。

3)通过多次mlp对各点云数据进行特征提取后,再用一个T-Net对特征进行对齐。

4)在特征的各个维度上执行maxpooling操作来得到最终的全局特征。

5)对分类任务,将全局特征通过mlp来预测最后的分类分数;对分割任务,将全局特征和之前学习到的各点云的局部特征进行串联,再通过mlp得到每个数据点的分类结果。

1.2 PointNet网络结构

它提取的“全局特征”能够很好地完成分类任务。下面看一下PointNet的框架结构:

396a87b85ee7989142f01e7f3e6b7fb5.png

下面解释一个网络中各个部件的作用。

1)transform:

第一次,T-Net 3x3 ,对输入点云进行对齐:位姿改变,使改变后的位姿更适合分类/分割。

第二次,T-Net 64x64 ,对64维特征进行对齐。

2)mlp:多层感知机,用于提取点云的特征,这里使用共享权重的卷积。

3)max pooling:汇总所有点云的信息,进行最大池化,得到点云的全局信息。

4)分割部分:局部和全局信息组合结构(concate,语义分割)

5)分类loss:交叉熵,分割loss:分类+分割+L2(transform,原图的正交变换)

1.3 T-Net网络结构

将输入的点云数据作为nx3x1单通道图像,接三次卷积和一次池化后,再reshape为1024个节点,然后接两层全连接,网络除最后一层外都使用了ReLU激活函数和批标准化。

1.4 模型效果

ModelNet40 上的分类结果:

66a6c3a35c8c6c8e509fb7386674bdd4.png

ShapeNet部分数据集上的分割结果:

b50747533a4d3b03d217f19c877dfbad.png

不足:缺乏在不同尺度上提取局部信息的能力

二、PointNet++

PointNet++: Deep Hierarchical Feature Learning on Point Setsin a Metric Space

论文地址:https://arxiv.org/abs/1706.02413

开源代码地址:

https://github.com/charlesq34/pointnet2

d7c59b16d3ffcd15bbbf360525f1b566.png

Pointnet提取的全局特征能够很好地完成分类任务,由于模型基本上都是单点采样,代码底层用的是2Dconv,只有maxpooling整合了整体特征,所以局部特征提取能力较差,这使得它很难对复杂场景进行分析。

PointNet++的核心是提出了多层次特征提取结构,有效提取局部特征提取,和全局特征。

2.1 思路流程

先在输入点集中选择一些点作为中心点,然后围绕每个中心点选择周围的点组成一个区域,之后每个区域作为PointNet的一个输入样本,得到一组特征,这个特征就是这个区域的特征。

81f8c797b4cb59849ac0a27b556dcac7.png

之后中心点不变,扩大区域,把上一步得到的那些特征作为输入送入PointNet,以此类推,这个过程就是不断的提取局部特征,然后扩大局部范围,最后得到一组全局的特征,然后进行分类。

2.2 整体网络结构

PointNet++ 在不同尺度提取局部特征,通过多层网络结构得到深层特征。PointNet++按照任务也分为 classification (分类网络)和 segmentation (分割网络)两种,输入和输出分别与PointNet中的两个网络一致。

e8887bdbe9d479b7ce3009c8844c677b.png

PointNet++会先对点云进行采样(sampling)和划分区域(grouping),在各个小区域内用基础的PointNet网络进行特征提取(MSG、MRG),不断迭代。

对于分类问题,直接用PointNet提取全局特征,采用全连接得到每个类别评分。对于分割问题,将高维的点反距离插值得到与低维相同的点数,再特征融合,再使用PointNet提取特征 。

比较PointNet++两个任务网络的区别:

在得到最高层的 feature 之后,分类网络使用了一个小型的 PointNet + FCN 网络提取得到最后的分类 score;

分割网络通过“跳跃连接” 操作不断与底层 “低层特征图”信息融合,最终得到逐点分分类语义分割结果。(“跳跃连接”对应上图的 skip link connection;低层特征图 具有分辨率较大,保留较丰富的信息,虽然整体语义信息较弱。)

2.3 网络结构组件

1)采样层(sampling)

激光雷达单帧的数据点可以多达100k个,如果对每一个点都提取局部特征,计算量是非常巨大的。因此,作者提出了先对数据点进行采样。作者使用的采样算法是最远点采样(farthest point sampling, FPS),相对于随机采样,这种采样算法能够更好地覆盖整个采样空间。

2)组合层(grouping)

为了提取一个点的局部特征,首先需要定义这个点的“局部”是什么。一个图片像素点的局部是其周围一定曼哈顿距离下的像素点,通常由卷积层的卷积核大小确定。同理,点云数据中的一个点的局部由其周围给定半径划出的球形空间内的其他点构成。组合层的作用就是找出通过采样层后的每一个点的所有构成其局部的点,以方便后续对每个局部提取特征。

3)特征提取层(feature learning)

因为PointNet给出了一个基于点云数据的特征提取网络,因此可以用PointNet对组合层给出的各个局部进行特征提取来得到局部特征。值得注意的是,虽然组合层给出的各个局部可能由不同数量的点构成,但是通过PointNet后都能得到维度一致的特征(由上述K值决定)。

2.4 不均匀点云组合grouping方法:

不同于图片数据分布在规则的像素网格上且有均匀的数据密度,点云数据在空间中的分布是不规则且不均匀的。当点云不均匀时,每个子区域中如果在分区的时候使用相同的球半径,会导致部分稀疏区域采样点过小。作者提出多尺度成组 (MSG)和多分辨率成组 (MRG)两种解决办法

1)多尺度组合MSG:对于选取的一个中心点设置多个半径进行成组,并将经过PointNet对每个区域抽取后的特征进行拼接(concat)来当做该中心点的特征,这种做法会产生很多特征重叠,结果会可以保留和突出(边际叠加)更多局部关键的特征,但是这种方式不同范围内计算的权值却很难共享,计算量会变大很多。

6d56f4efad9dab1cb104e79ba7bee67c.png

2)多分辨率组合MRG:MRG避免了大量的计算,但仍然保留了根据点的分布特性自适应地聚合信息的能力。对不同特征层上(分辨率)提取的特征再进行concat,以b图为例,最后的concat包含左右两个部分特征,分别来自底层和高层的特征抽取,对于low level点云成组后经过一个pointnet和high level的进行concat,思想是特征的抽取中的跳层连接。

当局部点云区域较稀疏时,上层提取到的特征可靠性可能比底层更差,因此考虑对底层特征提升权重。当然,点云密度较高时能够提取到的特征也会更多。这种方法优化了直接在稀疏点云上进行特征抽取产生的问题,且相对于MSG的效率也较高。

选择哪一种:

当局部区域的密度低时,第一矢量可能不如第二矢量可靠,因为计算第一矢量的子区域包含更稀疏的点并且更多地受到采样不足的影响。在这种情况下,第二个矢量应该加权更高。

另一方面,当局部区域的密度高时,第一矢量提供更精细细节的信息,因为它具有以较低水平递归地表达较高分辨率检查的能力。

2.5 模型效果

分类对比:

3ca62d53caa541e118dc491d679f029f.png

 分割对比:

6fd2a2ef79541b345d020ff2bf2695bd.png

小结

复杂场景点云一般采用PointNet++进行处理,而简单场景点云则采用PointNet。

如果只从点云分类和分割两个任务角度分析,分类任务只需要max pooling操作之后的特征信息就可完成,而分割任务则需要更加详细的local context信息。

三、F-PointNet

FrustumPointNets for 3D Object Detection from RGB-D Data 

论文地址:https://arxiv.org/pdf/1711.08488.pdf

开源代码:https://github.com/charlesq34/frustum-pointnets

c407a1a74cfcc4c97c204d8107d5fc08.png

F-PointNet 也是直接处理点云数据的方案,但这种方式面临着挑战,比如:如何有效地在三维空间中定位目标的可能位置,即如何产生 3D 候选框,假如全局搜索将会耗费大量算力与时间。

F-PointNet是在进行点云处理之前,先使用图像信息得到一些先验搜索范围,这样既能提高效率,又能增加准确率。

3.1 基本思路 

首先使用在 RGB 图像上运行的 2D 检测器,其中每个2D边界框定义一个3D锥体区域。然后基于这些视锥区域中的 3D 点云,我们使用 PointNet/PointNet++ 网络实现了 3D实例分割和非模态 3D 边界框估计。总结一下思路,如下:

1. 基于图像2D目标检测。

2. 基于图像生成锥体区域。

3. 在锥体内,使用 PointNet/PointNet++ 网络进行点云实例分割。

它是在进行点云处理之前,先使用图像信息得到一些先验搜索范围,这样既能提高效率,又能增加准确率。先看看下面这张图:

在这张图里,左上角的意思是先把图像和点云信息标定好(这个属于传感器的外参标定,在感知之前进行;获取两个传感器之间旋转矩阵和平移向量,就可以得到相互的位置关系)。

f60d8375a6b41398e2a2a75110045d29.png

左下角是用目标检测算法检测出物体的边界框(BoundingBox),有了边界框之后,以相机为原点,沿边界框方向延伸过去就会形成一个锥体(上图的右半部分),该论文题目里frustum这个词就是锥体的意思。

然后用点云对该物体进行识别的时候,只需要在这个锥体内识别就行了,大大减小了搜索范围。

3.2 模型框架

模型结构如下:(可以点击图片放大查看)

abad811086cda072b369bf88f10ab47d.png

网络共分为三部分,第一部分是使用图像进行目标检测并生成锥体区域,第二部分是在锥体内的点云实例分割,第三部分是点云物体边界框的回归。

3.3 基于图像生成锥体区域

09064bbc5e3a5270b50d09d9e0d927e2.png

由于检测到的目标不一定在图像的正中心,所以生成的锥体的轴心就不一定和相机的坐标轴重合,如下图中(a)所示。为了使网络具有更好的旋转不变性,我们需要做一次旋转,使相机的Z轴和锥体的轴心重合。如下图中(b)所示。

eb19f93a8192d36cb0a782ed04f0f690.png

3.4 在锥体内进行点云实例分割

实例分割使用PointNet。一个锥体内只提取一个物体,因为这个锥体是图像中的边界框产生的,一个边界框内也只有一个完整物体。

在生成锥体的时候提到了旋转不变性,此处完成分割这一步之后,还需要考虑平移不变性,因为点云分割之后,分割的物体的原点和相机的原点必不重合,而我们处理的对象是点云,所以应该把原点平移到物体中去,如下图中(c)所示。

6628b6d976b1537ec4325a923d06d153.png

3.5 生成精确边界框

生成精确边界框的网络结构:

0c0d88f7bf002e57bff364445f97ea85.png

从这个结构里可以看出,在生成边界框之前,需要经过一个T-Net,这个东西的作用是生成一个平移量,之所以要做这一步,是因为在上一步得到的物体中心并不完全准确,所以为了更精确地估计边界框,在此处对物体的质心做进一步的调整,如下图中(d)所示。

14c6977265428cde7cbfe4650d934463.png

下面就是边界框回归了,对一个边界框来讲,一共有七个参数,包括:

  • 中心点:  

  • 长宽高:  

  • 角度:  

最后总的残差就是以上目标检测、T-Net和边界框残差之和,可以据此构建损失函数。

3.6 PointNet关键点

3.6.1 F-PointNet使用2D RGB图像

F-PointNet使用2D RGB图像原因是:

1.当时基于纯3D点云数据的3D目标检测对小目标检测效果不佳。所以F-PointNet先基于2D RGB做2D的目标检测来定位目标,再基于2d目标检测结果用其对应的点云数据视锥进行bbox回归的方法来实现3D目标检测。

2.使用纯3D的点云数据,计算量也会特别大,效率也是这个方法的优点之一。

使用成熟的2D CNN目标检测器(Mask RCNN)生成2D检测框,并输出one-hot 分类向量(即基于2D RGB图像的分类)。

3.6.2 锥体框生成

2D检测框结合深度信息,找到最近和最远的包含检测框的平面来定义3D视锥区域frustum proposal。然后在该frustum proposal里收集所有的3D点来组成视锥点云(frustum point cloud)。

3.7实验结果 

 与其他模型对比:

e9b7c7833f7d42edf131f359efb26918.png

e9bce9c66f330bf61d56d948042d5ef9.png

模型效果:

ee4b3bf153e520b7d6dad3c03a3046fd.png


3.8 优点

(1)舍弃了global fusion,提高了检测效率;并且通过2D detector和3D Instance Segmentation PointNet对3D proposal实现了逐维(2D-3D)的精准定位,大大缩短了对点云的搜索时间。下图是通过3d instance segmentation将搜索范围从9m~55m缩减到12m~16m。

85a34a870766ed40073a7efd8d2a947d.png

(2)相比于在BEV(Bird's Eye view)中进行3D detection,F-PointNet直接处理raw point cloud,没有任何维度的信息损失,使用PointNet能够学习更全面的空间几何信息,特别是在小物体的检测上有很好的表现。下图是来自Hao Su 2018年初的课程,现在的KITTI榜有细微的变动。

(3)利用成熟的2D detector对proposal进行分类(one-hot class vector,打标签),起到了一定的指导作用,能够大大降低PointNet对三维空间物体的学习难度。

3.9 模型代码

开源代码:GitHub - charlesq34/frustum-pointnets: Frustum PointNets for 3D Object Detection from RGB-D Data

作者代码的运行环境:

系统:Ubuntu 14.04 或 Ubuntu 16.04

深度框架:TensorFlow1.2(GPU 版本)或 TensorFlow1.4(GPU 版本)

其他依赖库:cv2、mayavi等。

d906aaf874e204e1edbf0c73821c2dc1.png


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

相关文章

PointNet++分类与分割详解

前言 PointNet是一个用于对不规则形状的点云数据进行分类和分割任务的深度神经网络。相对于传统的基于网格的3D数据表示方法,点云数据更易于获取和处理。PointNet的另一个优势是它引入了多尺度层次结构,可以处理更为复杂的点云数据。相比于第一版的Point…

【点云分类和分割】简述PointNet和PointNet++的理解

Hello大家好,最近阅读了PointNet和PointNet两篇论文,本人觉得这是点云方向入手的比较简单的入门论文,下面阐述一下自己对这两篇论文的理解 一、首先点云是非常重要的三维数据结构,但是其有着非常特殊的性质,不规则性和…

PointNet解读

PointNet解决的问题: 如上图所示: 1.点云图像的分类(整片点云是什么物体) 2.点云图像的部件分割(整片点云所代表的物体能拆分的结构) 3.点云图像的语义分割(将三维点云环境中不同的物体用不同…

基于深度学习方法的点云算法3——PointNet++(点云分类分割)

基于深度学习方法的点云算法3——PointNet(点云分类分割) 请点点赞,会持续更新!!! 基于深度学习方法的点云算法1——PointNetLK(点云配准) 基于深度学习方法的点云算法2——PointNet…

论文解读PointNet(用于点云处理的深度学习框架)

随着最近几年神经网络在CV、NPL等领域取得重大的成果,因此就有学者希望将神经网络应用于3D任务中。在这篇文章(PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation)出现之前,一般在3D任务中用的最多的…

最全PointNet和PointNet++要点梳理总结

一、基本简介 本篇博文主要是对 PointNet,PointNet 论文的要点进行梳理和总结。认真阅读本博文后,不仅能够深刻理解论文的核心算法思想,而且对模型训练数据、模型的训练流程也能了然于胸。如果想阅读原论文以及翻译,参考下面的链接…

苹果将强制开发人员启用双因素认证提高安全

苹果的开发人员在近期应该都收到了公司的电子邮件通知,知会他们在今年2月27日之后,都必须启用双因素认证才能登入开发人员账号。苹果在邮件中指出,为了让开发人员的账号更为安全,从2月27日起,不管是要登入苹果的开发人…

关闭appleid双重认证_Apple ID 被停用如何解决?

苹果帐户被停用一般是因为输错密码次数过多,或者登录的设备数过多。账户被停用后,iPhone 就会弹出“您的帐户已在 App Store 和 iTunes 中被禁用”等提示。 如果看到一条内容为 " 您的帐户已在 App Store 和 iTunes 中被禁用 " 的信息&#xf…

苹果规定开发人员得使用双认证登入 以确保帐号安全

苹果的开发人员在近期应该都收到了公司的电子邮件通知,知会他们在今年2月27日之后,都必须启用双因素认证才能登入开发人员账号。 苹果在邮件中指出,为了让开发人员的账号更为安全,从2月27日起,不管是要登入苹果的开发人…

苹果怎么解ID锁?苹果ID锁解锁办法汇总

苹果ID锁很多人了解都不是很清楚,而且很多人认为用爱思助手刷机可以刷掉ID锁,如果你的手机出现ID锁后,那你就必须输入Apple ID账号密码才能激活后,无论之后你再怎么刷机都是需要账号密码才能激活的。 苹果解ID锁的办法在网上也是五…

苹果手机账号验证失败连接不上服务器,苹果手机让检查Apple ID 电话号码点击后验证失败,连接服务器失败出错...

这个问题应该是信号或者网络连接的问题,也可能是该时段服务器连接量过大。 建议换个时间段尝试,或者关掉wifi使用数据连接尝试验证。 双重认证是一种相对较新的安全保护机制,直接内建于 iOS、macOS、Apple tvOS、watchOS 和 Apple 网站中。它…

苹果开发者账号:忘记AppleID的安全提示问题怎么办?

方法一:通过iPhone重设安全问题 1、使用账号密码在设置里登录任意一台iOS 9及以上系统的手机 2、登录一段时间(大概一个月)之后,点击开启双重认证 3、 刚登陆的时候开启双重认证的话还需要回答安全提示问题。所以等一段时间再开启…

最近发现有很多人一直在问苹果ID双重认证怎么关闭。

最近发现有很多人一直在问苹果ID双重认证怎么关闭? 其实我想说大家都粗心了,双重认证是和ios版本没有关系的,无论什么IOS版本开通的双重认证都是可以关闭的。https://support.apple.com/zh-cn/HT204915 最后一段有说明哦。 其实苹果在官网上已…

苹果手机iCloud钥匙串的加密缺陷

什么是iCloud钥匙串 苹果钥匙串是苹果电脑,手机,平板上的密码管理器,帮助用户保存管理账号密码。开启iCloud云同步后,可以在用户的所有设备间同步账号密码,同时也会备份一份在iCloud上。 由于苹果默认会开启iCloud云同…

苹果激活锁怎么解除?手把手教你关闭激活锁

苹果激活锁怎么解除?苹果手机上的激活锁可以确保我们的设备和信息安全,在设备丢失或者被窃的时候,开启的激活锁可以帮助我们减少损失。很多人不太了解苹果手机的激活锁,今天就教大家关闭激活锁的方法。 情景一:抹掉设备 有些时候我们会抹掉自己的设备,如果在抹掉设备之前…

苹果icloud文件服务器,你真的会用苹果iCloud吗?这7个隐藏功能,你未必全知道...

苹果的iCloud,可能只有当手机弹出“你的iPhone云储存空间不足时”,你才会感知到它的存在,在很多人的印象当中,它只是一个照片自动备份的工具 其实除了储存照片,它还有其它的作用,这些作用将有利于你的工作效…

苹果免密支付怎么关闭_有人苹果手机被盗刷了!那是设置有问题...

最近在家憋的实在难受,唯一能出门的理由也就是下楼买菜了... 付款的时候,意外的发现自己开启了「免密支付」,虽说很方便,但总觉得有一丝不安全。 这不我刚在网上看到一个新闻,某位 iPhone 用户的 Apple ID 突然不能登陆…

ios重签工具避免双重认证

由于苹果发布的新规定,从 2019 年 2 月 27 日开始,开发者要开启双重身份验证才可以登录账户、查看证书,有了双重认证,只能通过用户信任的设备才能访问 Apple ID。例如,你有一台 iPhone 并且要在未授权的 Mac 上登录&am…

apple 关闭双重认证_这次Apple可以关闭工作吗?

apple 关闭双重认证 A recent poll in The Register asked who is more closed, Microsoft or Apple? A whopping 55% of respondents thought that dubious honor belongs to Apple (21% said Microsoft, and 24% said they were both equals in the matter). 《 The Registe…

关闭appleid双重认证_iPhone 丢失怎么办?开启双重认证就能解决!

现在很多同学手里都不止一台苹果设备。 像我一台 iPhone11 Pro 主力机,一台 iPhoneSE 备用机,再加上 iPad Pro 和MacBook Pro...别问为啥,因为我家里有矿! 但是 Apple ID 只有一个,所以我通常会选择设置「双重认证」来…