pointnet和pointnet++点云分割和分类

目录

[1. pointnet](#1. pointnet)

[1.1 点云数据的特点](#1.1 点云数据的特点)

[1.2 模型功能](#1.2 模型功能)

[1.3 网络结构](#1.3 网络结构)

[1.3.1 分类网络](#1.3.1 分类网络)

[1.3.2 分割网络](#1.3.2 分割网络)

[2. pointnet++](#2. pointnet++)

[2.1 模型](#2.1 模型)

[2.2 sampling layer组件](#2.2 sampling layer组件)

[2.3 grouping layer](#2.3 grouping layer)

[2.4 pointnet](#2.4 pointnet)


1. pointnet

1.1 点云数据的特点

(1)无序性:不同于图像中的像素数组或体积网格中的体素数组,点云是一组没有特定顺序的点。换句话说(permutations of the input set in data feeding order. ),点云中的点集合排列顺序改变了,点云本身的目标类别和分割结果是不变的(符合交换律,比如加法、乘法、取最值等操作)。

(2)点之间的交互:点不是孤立的,而相邻的点形成了一个有意义的子集。因此,该模型需要能够从附近的点捕获局部结构,以及局部结构之间的组合相互作用。

(3)变换 无关性:作为一个几何对象,点集的特征表示应该对某些变换是不变的。例如,++旋转和平移++点不应该修改全局点云类别或点的分割。

1.2 模型功能

(1)模型输入:网络的输入是坐标点集合(x,y,z);

(2)分类输出:输出有两个分支,分类分支输出是k个scores对应k个类别,哪个值大就是那个类别;

(3)分割输出:分割分支输出的是nxm的矩阵scores,有n个点,每个点有m个分数,m个分数对应m个语义分割类别,哪个值大,当前点就属于哪个类别。

1.3 网络结构

1.3.1 分类网络

(1)input transform和feature transform是个小网络,其中input transform用来预测放射变换矩阵,用于对齐输入的点云数据,feature transform是用来对齐特征数据,后期的论文证明是没多大用处的,可以忽略;

(2)论文中n是1024(均匀采样),论文中只用到了(x,y,z)坐标,所以输入是nx3点云矩阵,首先经过mlp(64,64),即两个多层感知机全连接网络,维度变化3->64->64,输出nx64特征向量;

(3)再经过3个多层感知机,维度变化64->64->128->1024,升维度,输出nx1024特征向量,方便后面的maxpooling提取全局特征(即降维操作);

(4)提取特征后,使用maxpooling操作,提取全局特征,nx1024,每个点有1024维度特征,求所有点的全局特征,就是在每个维度上取最大值,则nx1024 -> 1x1024;这1024个数据就代表真个点云数据的全局特征;

(5)再接一个mlp(512,256,k),作为分类层,1024->512->256->k全连接节点变换,k个类别分数,哪个值大就是那个类别。

1.3.2 分割网络

(1)前面的特征提取层是一样的,提取得到局部特征nx64,和全局特征1x1024;

(2)融合局部特征和全局特征,直接concat在一起,变成nx1084,每个点都有1084维度特征;

(3)再接mlp层,维度变换1084->512->256->128,再接mlp层,维度变化128->128->m,这样特征矩阵变化nx1084 -> nxm;

(4)nxm,即n个点,每个点都有m个类别分数,哪个大,则当前点的分割类别就属于对应的类别。

2. pointnet++

pointnet模型简单一句话,就是mlp提取特征,再经过分类层进行分类,即可完成对输入点云数据的分类,公式概括如下。

其中MAX是最大池化层。

由于只是使用maxpooling来聚合整个点云的特征,pointnet是不能捕获不同尺度下的局部特征。pointnet适用于目标数据的尺度变化不大的场景。

2.1 模型

(1)pointnet++特征提取层是一个层级特征提取层,由(sampling,grouping and pointnet三个组件组成), 然后就是分割头(unet形式)和分类头(全连接层)。

(2)网络输入的是Nx(d+C)矩阵,N是点个数,d维坐标,C维点特征,输出矩阵是N'x(d+C'),其中N'是采样后的点个数,C'是点特征向量维度。

(3)每次grouping layer对局部进行KNN聚类,输入到pointnet layer再对每个cluster提取特征,这个过程相当于2D卷积操作,同样是使用层级结构,放大感受野,提取多尺度特征。

2.2 sampling layer组件

sampling layer是迭代最远距离采样IFPS算法,用采样后的点云尽可能的覆盖到原始点云所在范围,代表当前点云数据,论文中是提取1024个点,详细IFPS算法介绍可参考:

iterative farthest point sample (IFPS or FPS)-CSDN博客

如果输入Nx(d+C),则输出N'x(d+C)

2.3 grouping layer

(1)输入点集合坐标Nx(d+C)和对应的中心坐标N'xd,对每一个中心坐标利用KNN在点集合中找K个最近的点,在一个cluster中,找出的每个点维度是(d+C)特征;

(2)对于一个cluster的维度则是Kx(d+C),有N'个中心,则输出维度是N'xKx(d+C)

2.4 pointnet

(1)输入是N'xKx(d+C),有N'个聚类中心点,每个聚类中心有K个点;

(2)对每个cluster投入到pointnet层,提取特征,即Kx(d+C) -> (d+C');

(2)有N'个cluster,所以输出的是N'x(d+C')。

真正实现的时候是:(b,npoints,nsamples,features) = (b,N',K,d+C),要channel first,变成

(b,features,npoints,nsamples) = (b,d+C,N',K),比如变成(64,3,1024,16)

待续。。。

相关推荐
牛客企业服务25 分钟前
2025年AI面试推荐榜单,数字化招聘转型优选
人工智能·python·算法·面试·职场和发展·金融·求职招聘
视觉语言导航1 小时前
RAL-2025 | 清华大学数字孪生驱动的机器人视觉导航!VR-Robo:面向视觉机器人导航与运动的现实-模拟-现实框架
人工智能·深度学习·机器人·具身智能
**梯度已爆炸**1 小时前
自然语言处理入门
人工智能·自然语言处理
ctrlworks1 小时前
楼宇自控核心功能:实时监控设备运行,快速诊断故障,赋能设备寿命延长
人工智能·ba系统厂商·楼宇自控系统厂家·ibms系统厂家·建筑管理系统厂家·能耗监测系统厂家
BFT白芙堂2 小时前
睿尔曼系列机器人——以创新驱动未来,重塑智能协作新生态(上)
人工智能·机器学习·机器人·协作机器人·复合机器人·睿尔曼机器人
Brduino脑机接口技术答疑2 小时前
脑机新手指南(二十一)基于 Brainstorm 的 MEG/EEG 数据分析(上篇)
数据挖掘·数据分析
aneasystone本尊2 小时前
使用 MCP 让 Claude Code 集成外部工具
人工智能
静心问道2 小时前
SEW:无监督预训练在语音识别中的性能-效率权衡
人工智能·语音识别
羊小猪~~2 小时前
【NLP入门系列五】中文文本分类案例
人工智能·深度学习·考研·机器学习·自然语言处理·分类·数据挖掘
xwz小王子2 小时前
从LLM到WM:大语言模型如何进化成具身世界模型?
人工智能·语言模型·自然语言处理