
文章目录
- 3D 数据与 PointNet
- 一、3D 数据应用领域与点云介绍
-
-
- 第一步:求中心点
- 第二步:计算协方差矩阵
- 第三步:特征值分解
-
- 二、点云数据可视化
- 三、点云任务与数据特性
- 四、PointNet 的出发点
- 五、PointNet 网络架构
- 参考
3D 数据与 PointNet
一、3D 数据应用领域与点云介绍

注:点云为自动驾驶和增强现实提供场景几何信息,是许多 3D 感知任务的基础数据。
self-driving cars,augmented reality

注:激光雷达或深度传感器对物体表面采样,得到由离散三维点组成的点云。
如何获取 3D 数据:传感器扫描后得到的就是点云数据,如何利用点云数据呢?

注:示例包含 ModelNet40 分类数据和 ShapeNet 部件分割数据。

注:ModelNet40 按物体类别组织样本,如飞机、椅子、桌子和汽车等。

注:该样本约含 1 万个点,每行保存一个点的坐标和法向量。

注:此数据集中每个点由 X、Y、Z、Nx、Ny、Nz 六个数描述,后三项为法向量。
深度负责告诉你“点在哪里”,法向量告诉你“这个点所在表面朝哪里”。
法向量怎么计算?核心思想:
找这个点周围的一圈邻居点,拟合一个小平面,然后求这个平面的垂直方向。
数学上怎么求?通常使用 PCA(主成分分析):
假设某个点附近有 N 个点:
P
i
=
(
x
i
,
y
i
,
z
i
)
P_i=(x_i,y_i,z_i)
Pi=(xi,yi,zi)
第一步:求中心点
P
ˉ
=
1
N
∑
P
i
\\bar{P}=\\frac{1}{N}\\sum P_i
Pˉ=N1∑Pi
第二步:计算协方差矩阵
C
=
1
N
∑
(
P
i
−
P
ˉ
)
(
P
i
−
P
ˉ
)
T
C=\\frac1N\\sum(P_i-\\bar P)(P_i-\\bar P)^T
C=N1∑(Pi−Pˉ)(Pi−Pˉ)T
第三步:特征值分解
C
v
=
λ
v
Cv=\\lambda v
Cv=λv
得到三个方向:
最大特征值方向:
点云变化最大的方向
第二方向:
次大变化方向
最小特征值方向:
变化最小方向
变化最小方向就是:平面的法向量
例如一个桌面:
x方向变化很大
y方向变化很大
z方向几乎不变
所以:
最大:
→
第二:
↓
最小:
↑
最终:
Normal = (0,0,1)
点云法向量就是点云表面的朝向信息,通过分析一个点附近邻域的几何结构,找到该局部平面的垂直方向;它让点云从“只有位置”升级为“有几何形状的信息”。
桌面:
Normal:
向上
墙:
Normal:
水平
沙发:
多个方向
法向量可以作为几何特征。

注:1 万个六维点可表示为 10000×6 的矩阵;点数和属性维数取决于具体数据集。
二、点云数据可视化

注:在 CloudCompare 中将六列依次指定为三维坐标 X、Y、Z 和法向量 Nx、Ny、Nz。

注:飞机由离散点的位置关系表示,即使没有纹理,也能看出机翼和机身轮廓。

注:椅子点云展示了座面、靠背和椅腿等几何结构。
三、点云任务与数据特性

注:PointNet 可用于物体分类、部件分割和场景语义分割。

注:语义分割为场景中的每个点预测类别,部件分割则区分单个物体的不同组成部分。

注:传统多视图方法先把 3D 模型渲染为多张 2D 图像,再通过视图池化汇总特征进行分类。
计算上不高效

注:点云具有无序、非结构化和采样密度不均等特点,不能直接套用规则网格上的普通卷积。
| 无序性 | 点的排列顺序没有实际意义 | 模型需要具备排列不变性 |
| 非结构化 | 不像图像具有规则网格,点之间没有固定邻接关系 | 需要通过 KNN、半径搜索、KD-Tree、体素等方式构建邻域 |
| 稀疏性 | 点主要分布在物体表面,三维空间中大量区域为空 | 适合使用稀疏卷积、体素化等方法降低计算量 |
| 密度不均匀 | 近处点密、远处点稀,不同表面(垂直、倾斜)采样密度不同 | 特征提取需要适应不同尺度和不同点密度 |
| 三维几何信息明确 | 每个点直接包含 (x,y,z) 坐标 | 可以直接计算距离、高度、形状、法向量和空间关系 |
| 局部结构明显 | 邻域内可能呈现平面、曲面、边缘或线状结构 | 可通过法向量、曲率和局部特征描述几何形态 |
| 噪声和离群点较多 | 受测距误差、反射、天气和传感器误差影响 | 通常需要滤波、去噪和离群点剔除 |
| 遮挡与缺失 | 只能采集传感器可见的物体表面 | 目标点云往往不完整,识别与配准难度增加 |
| 视角相关 | 不同传感器位置采集到的点云形态不同 | 需要考虑多视角融合、配准和坐标变换 |
| 对旋转和平移敏感 | 同一物体变换坐标系后,点坐标会发生变化 | 模型需要处理旋转、平移和尺度变化 |
| 属性多样 | 除坐标外,还可包含颜色、反射强度、时间戳和语义标签 | 能融合更多信息,但数据处理更加复杂 |
| 数据量大 | 单帧可能包含数万到数百万个点 | 带来较高的存储、邻域搜索和推理成本 |

注:无序性,上图的点交换,点云没影响

注:受扫描距离和视角影响,近处点通常更密,远处或遮挡区域更稀疏。
四、PointNet 的出发点

注:PointNet 直接接收原始点集,端到端完成分类、部件分割或场景解析。
当下深度学习的核心思想就是一条龙服务(End2End)

注:点的排列顺序不应改变输出,因此网络需要置换不变性;max 和求和都是对称函数。

注:直接对三维坐标取最大值只得到很少的统计量,会丢失大量几何信息。
能不能先升维再做 max 操作
h
(
x
)
h(x)
h(x): 特征升维函数(对应神经网络的隐层),将输入映射到更高维度的空间,eg 3->16->64->128->256->512->1024
g
g
g: 聚合函数(即图中的 Max 操作),用于整合高维特征。
γ
\\gamma
γ: 后续的复合变换或输出层,用于得到最终的结果。

注:PointNet 先用共享网络把每个点映射到高维特征,再用最大池化汇聚全局信息。
升维其实就是神经网络的 hidden layer
五、PointNet 网络架构

注:共享 MLP 逐点提取特征,对所有点做最大池化得到全局特征,最后由 MLP 输出结果。

注:分类分支使用全局特征预测物体类别;分割分支结合全局特征与逐点特征,为每个点分类。
分类是上面蓝色区域所示

注:两个 T-Net 分别学习输入坐标和中间特征的对齐变换,提高模型对几何变换的适应性(便于理解整体流程,把 T-Net 抹去了)。

注:输入从 N×3 逐点映射到 N×64、N×1024,再经最大池化得到 1024 维全局特征。

注:分类分支把 1024 维全局特征送入多层感知机,最终输出 K 个类别分数。
eg:2048 个点云,每个点云 1024 维特征,max 后得到 1024,MLP 后 K-dimension 向量

注:分割分支将全局特征复制到每个点,与 64 维局部特征拼接成 N×1088,再输出每个点的 M 类分数。
1024 global feature 复制了 N 份和前面的 64 维局部特征 concat,64+1024 = 1088
参考
https://www.bilibili.com/video/BV1edjczQEcZ?spm_id_from=333.788.videopod.episodes&vd_source=a2337ee1e48dbaccac1746d36aed6c99&p=7

网硕互联帮助中心
![打卡信奥刷题(3491)用C++实现信奥题 P10734 [NOISG 2019 Prelim] Experimental Charges-网硕互联帮助中心](https://www.wsisp.com/helps/wp-content/uploads/2026/08/20260805014046-6a72949eaf30f-220x150.png)





评论前必须登录!
注册