⬆︎
×
TOC
Hyplus目录

3D点云深度学习综述

3D点云深度学习经典算法+SOTA模型架构介绍(原创&引用),持续更新。

相关综述论文:

1 经典算法

点云基础教程:3D点云基本概念&资源归档Open3D使用教程(Python版)

根据数据输入和网络结构,目前点云深度学习算法主要分为基于点(Point-based)、基于体素(Volumetric-based)、多视图(Mutli-View based)、混合方法(Hybrid Methods):

A taxonomy of deep learning methods for 3D point clouds.

1.1 Point-based

基于点的方法

1.1.1 Pointwise MLP

PointNet在点云深度学习算是开创性的工作,直接输入点云进行1\times 1卷积操作,解决了点云的无序性等问题。

1.1.1.1 PointNet

论文:PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation (2016)
详解:PointNet、PointNet++网络结构详解&PyTorch实现

PointNet网络结构的灵感来自于点云的特点。对于一个欧式空间里的点云,有三个主要特征:

  • 无序性:虽然输入的点云是有顺序的,但是显然这个顺序不应当影响结果。
  • 点之间的交互:每个点不是独立的,而是与其周围的一些点共同蕴含了一些信息,因而模型应当能够抓住局部的结构和局部之间的交互。
  • 置换不变性(Permutation Invariance):比如点云整体的旋转和平移不应该影响它的分类或者分割。

网络分为分类(Classification)和分割(Segmentation)2个分支,分类时取全局特征,分割时将全局特征(global feature)和局部特征进行融合(local embedding):

pointnet

为了解决点云刚性变换(旋转或平移)不变性,设计了T-net预测一个D\times D(此处取D为3和64)的矩阵,其作用为使得无论何角度输入的点云数据,经过变换后都能保证点云角度是固定的,保证了旋转不变性。PointNet进行了两次T-net变换:第一次是对点云进行调整,可理解为将点云旋转出一个更有利于分类或分割的角度;第二次是对64维的特征进行变换。

使用最大池化(Max-pooling)进行点云特征聚合,先把每个点映射到高维空间,在高维空间中做对称性的操作,提取全局特征,保证与点顺序无关。

1.1.1.2 PointNet++

论文:PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space (2017)
详解:PointNet、PointNet++网络结构详解&PyTorch实现

PointNet++在PointNet基础上进行了改进。由于PointNet是逐点进行特征提取,无法学习到点与点之间的关系,对局部信息的整合能力较差,PointNet++结合2D CNN感受野的思想进行了改进:

pointnet++

网络主体由多个集合抽象层(Set Abstraction,SA)组成,每个SA由采样层(Sampling)、分组层(Grouping)和PointNet层构成。在Sampling中利用最远点采样(FPS)选取一定数量的点,再根据这些点使用球查询(Ball Query)选取周围半径的球形区域内的点进行Grouping,然后将该Group中的点输入到PointNet提取点特征,即邻域内点的特征。

分割任务中进行了上采样(特征传播,Feature Propagation),采用反距离加权进行插值(距离的导数作为权重)。

1.1.2 Convolution-based

基于卷积的方法

1.1.2.1 PointConv

论文:PointConv: Deep Convolutional Networks on 3D Point Clouds (2019)
GitHub:github.com/DylanWusee/pointconv

论文提出了一种将2D CNN扩展到3D点云中的方法——PointConv。参考2D图像的概念,一般常用3 \times 35\times 5等卷积,提取的特征即为每个位置的权重之和:

PointConv卷积

对于局部区域的点云,由于位置不固定,权重亦是不确定的,因此在3D卷积中权重W(\delta_x,\delta_y,\delta_z)的基础上,PointConv运算新增了一个反向密度表示S(\delta_x,\delta_y,\delta_z),密度越大,点的权重越小(点密度越大,取点时取哪个影响不大;点密度较小,即只有1~2个点,此时点的权重大些),公式如下所示:

\text{PointConv}(S,W,F)_{xyz}=\sum\limits_{(\delta_x,\delta_y,\delta_z)\in G}S(\delta_x,\delta_y,\delta_z)W(\delta_x,\delta_y,\delta_z)F(x+\delta_x,y+\delta_y,z+\delta_z)

密度计算利用核密度估计(Kernel Density Estimation,KDE)算法估计,输入点相对坐标、点密度、点特征(法向量等)。Pointconv局部卷积网络图如下所示:

PointConv卷积局部

整个网络结构如下所示:

整体PointConv

由于PointConv卷积比较占用显存,又提出了改进版Efficient Pointconv,如下所示,只用了原始网络1/64的显存:

Efficient PointConv

1.1.2.2 KPConv

论文:KPConv: Flexible and Deformable Convolution for Point Clouds (2019)
PyTorch实现:github.com/HuguesTHOMAS/KPConv-PyTorch

论文提出了核心点卷积(Kernel Point Convolution,KPConv),公式如下,其中x为点,x_i为点x半径r范围的点,f_ix_i的特征向量,g为核函数:

(\mathcal{F} * g)(x)=\sum\limits_{x_{i} \in \mathcal{N}_{x}} g\left(x_{i}-x\right) f_{i}

基本思想:以点x为球心,半径r确定一个球体;在球体内确定若干个核心点,每个核心点带一个权重矩阵;对于落在球体范围内的点,用核函数计算出该点的权重矩阵W,用W对该点的feature进行变换;反复执行上一步,得出一系列新feature,最后将feature累加作为点x的feature。

与通常图像卷积的对比如下图所示:

KPConv

更多核心点卷积解析详见KPConv:点云核心点卷积 (ICCV 2019)

1.1.2.3 Point Transformer

论文:Point Transformer (2020)
GitHub:github.com/Pointcept/Pointcept

Transformer的注意力机制对数据的排列和数量不敏感,这与点云的特性相符合,由此Point Transformer提出对局部数据做注意力计算。在向量自注意力计算的基础上提出了新的公式,如下所示,其中数据集子集\mathcal{X}(i) \subseteq \mathcal{X}\mathbf{x}_{i}k邻近点集组成;\varphi,\psi,\alpha为逐点特征变换(pointwise feature transformations),例如线性投影(linear projections)或MLP;\delta为位置编码(position encoding)函数;\rho为归一化函数,例如Softmax;映射函数\gamma是一个2层线性层+ReLU激活的MLP:

\mathbf{y}_{i}=\sum\limits_{\mathbf{x}_{j} \in \mathcal{X}(i)} \rho\left(\gamma\left(\varphi\left(\mathbf{x}_{i}\right)-\psi\left(\mathbf{x}_{j}\right)+\delta\right)\right) \odot\left(\alpha\left(\mathbf{x}_{j}\right)+\delta\right)

Point Transformer Layer结构如下:

Point Transformer

分割与分类网络总体结构如下:

Point Transformer网络

1.1.3 Graph-based

DGCNN

论文:Dynamic Graph CNN for Learning on Point Clouds (2019)
GitHub:github.com/WangYueFt/dgcnn

由于点云是离散的,缺乏拓扑关系,通过建立点与点之间的联系,可以增强点云的表达能力,因此设计了EdgeConv。EdgeConv在网络每层都动态构建图结构,以点云中的点作为顶点选其k邻近,构建边,计算edge feature,再聚合edge feature,得到点的新feature。EdgeConv图层如下图所示:

EdgeConv

DGCNN的网络结构图如下所示,其中上分支用于分类,下分支用于分割:

DGCNN

1.2 Volumetric-based

基于Voxel(体素)的方法,即将三维空间按照一定尺度划分为多个网格。

1.2.1 VoxelNet

论文:VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection (2017)
PyTorch实现:github.com/ModelBunker/VoxelNet-PyTorch

VoxelNet将点云先划分网格,对网格内的点云提取特征,然后利用3维卷积操作,进行目标检测。

VoxelNet

网络结构如上图所示,主要过程如下:

  1. 网格划分:点云用一个长方体进行切割,注意沿XYZ轴的尺寸分别为W\times H\times D,。
  2. Grouping:将点云数据分至Voxel中。
  3. Random Sampling:对Voxel中的点进行随机采样,若点数量过大,只取T个。
  4. Stacked Voxel Feature Encoding(VFE):对Voxel中的点提取特征。VFE层如下图所示,先对每个点全连接获取特征(Point-wise Feature),(此时点之间未建立联系),使用Maxpooling得到点之间的局部关系(Locally Aggregated Feature),再连接(Concatenate)这两个feature作为下一次输入:
VFE层

1.2.2 VoTr

论文:Voxel Transformer for 3D Object Detection (2021)
GitHub:github.com/PointsCoder/VOTR

Voxel Transformer(VoTr)将Transformer应用于点云Voxel检测方法,总体架构图如下:

VoTr

为了以加速多头注意中非空体素的搜索过程的速率,提出了Fast Voxel Query,模型如下图所示,主要是构建了一个GPU-based的哈希表,存放所有非空体素的索引:

Fast Voxel Query

详见3D目标检测 | VoTr | 室外 | 纯点云|CVPR2021

1.3 Mutli-View based

MVCNN

论文:Multi-view Convolutional Neural Networks for 3D Shape Recognition (2015)
PyTorch实现:github.com/jongchyisu/mvcnn_pytorch

多视图方法将点云从不同“视角”投影得到二维渲染图,作为训练数据,然后用图像的卷积算法进行训练,得到最后结果,再反投影到3D中。Multi-view CNN(MVCNN)的网络结构图如下所示:

MVCNN

基本方法:根据虚拟相机生成多个视图图像,分别提取特征,再用Pooling提取聚合多个视图的特征,再经过CNN,最终输出类别信息。

1.4 混合方法

PVCNN

论文:Point-Voxel CNN for Efficient 3D Deep Learning (2019)
GitHub:github.com/mit-han-lab/pvcnn

论文提出了Point-Voxel的方式来实现高效又轻量化的点云深度学习。PVCNN由低分辨率的基于体素的分支和高分辨率的基于点的分支组成——基于体素的分支提取粗粒度的邻域信息,基于点的分支中对单个点的特征进行细粒度的补充。网络结构如下:

PVCNN

体素分支将点转成了低分辨的体素分支,提取粗粒度的邻域信息,低分辨率卷积降低了显存;点分支对点提取特征,由于无需再计算邻域信息(如KNN,极耗时间),补充了细粒度的特征,综合两者特点,相较于一般的体素法节省了10倍的GPU,相较于基于点的方法速度提升了7倍。


2 相关任务及SOTA模型

点云深度学习的任务主要集中在以下几个方面:分类(Classification)、分割(Segmentation)、目标检测(Object Detection)、实例分割(Panoptic Segmentation)、配准(Registration)、点云重构(Reconstruction)等。

2.1 分类(Classification)

3D计算机视觉分类数据集:

  • ModelNet40:用于点云分类的数据集,包含40个对象类别,如飞机、汽车、植物等,训练集大小为9843,测试大小为2468。
  • ScanObjectNN:包含约15000个实物扫描对象,分为15个类别、2902种独特实例,带有全局和局部坐标、法线、颜色属性及语义标签。

2.1.1 PointGPT

论文:PointGPT: Auto-regressively Generative Pre-training from Point Clouds (2023)

PointGPT将GPT概念扩展到点云上,在ModelNet40数据集精度达到95.9%,ScanObjectNN达到93.4%。

Point2Vec

详见PointGPT 论文解读,点云的自回归生成预训练

2.1.2 Point2Vec

论文:Point2Vec for Self-Supervised Representation Learning on Point Clouds (2023)

Point2Vec是一种将Data2Vec框架扩展到点云领域的自监督学习方法,通过解决位置信息泄露问题,在点云的形状分类、少样本学习和部分分割等下游任务上表现出色。

Point2Vec

2.1.3 ULIP-2

ULIP论文:ULIP: Learning a Unified Representation of Language, Images, and Point Clouds for 3D Understanding (2023)
ULIP-2论文:ULIP-2: Towards Scalable Multimodal Pre-training for 3D Understanding (2024)
GitHub:github.com/salesforce/ulip

ULIP-2利用多模态模型,结合LMM、图像和点云进行预训练,对齐到统一的特征空间,为点云生成描述信息。

ULIP-2

2.1.4 PointMLP

论文:Rethinking Network Design and Local Geometry in Point Cloud: A Simple Residual MLP Framework (2022)
PyTorch实现:github.com/salesforce/ulip

PointMLP提出了点云残差模块,利用残差模块不断提取局部特征,重复多次逐渐扩大感受野,获取完整的几何信息。

PointMLP

详见【文献笔记】PointMLP

2.2 语义分割(Semantic Segmentation)

语义分割数据集:

  • ShapeNetPart:从ShapeNetCore数据集选择了16个类别共16881个样本,每个样本有2000多个点,每个3D物体被细分并进行了进行语义信息标注。
  • S3DIS:斯坦福大学发布的用于室内场景理解的大规模数据集,包含6个大型室内空间的点云数据,涵盖了办公室、教室、会议室等多种场景,共有270个房间,每个点都有精确的三维坐标、颜色信息以及语义标签,标注了13个物体类别。
  • SemanticKITTI:自动驾驶的点云数据集,采用Velodyne激光器进行采集,包含城市道路、高速、乡村道路数据。
  • ScribbleKITTI:基于kitti的一个数据集,只对点云做了粗略标注,验证利用弱监督实现点云3d分割的数据集。论文代码采用Cylinder3D模型,在只使用8%标注的情况下,可达到95.7%的全监督性能。
  • nuScenes:自动驾驶数据集,数据场景覆盖了城市、住宅区、郊区、工业区各个场景,也涵盖了白天、黑夜、晴天、雨天、多云等不同时段不同天气状况,包括点云、影像、地图等数据。
  • STPLS3D:一个通过航空拍摄、三维重建生成的点云数据集。
  • SensatUrban:一个城市级规模的摄影测量点云数据集,包含了30亿个点,覆盖了6平方公里的城市场景,支持13个类别,如地面、植被、汽车等。
  • ScanNetV2:RGB-D数据集,约1.2T,共1513个采集场景数据、21个类别的对象,其中1201个场景用于训练,312个场景用于测试。有四个评测任务:3D语义分割、3D实例分割、2D语义分割和2D实例分割。
  • npm3d:包含巴黎城市的道路点云数据。

2.2.1 Window Normalization

论文:Window Normalization: Enhancing Point Cloud Understanding by Unifying Inconsistent Point Densities (2022)
GitHub:github.com/DBDXSS/Window-Normalization

考虑到不同区域点云的密度不同,利用Window-Norm(Window Normalization)替换KNN提取特征,如下所示:

window-norm

整体网络结构如下,包含下采样、GWN、PA2M三大模块:

GWN

2.2.2 Superpoint Transformer

论文:Efficient 3D Semantic Segmentation with Superpoint Transformer (2023)
GitHub:github.com/drprojects/superpoint_transformer

Superpoint Transformer提出一种高效的点云分块方法,最终模型参数只有212K,在S3DIS达到76% mIoU。

Superpoint Transformer

2.2.3 Stratified Transformer

论文:Stratified Transformer for 3D Point Cloud Segmentation (2022)
GitHub:github.com/dvlab-research/Stratified-Transformer

Stratified Transformer是首个用Point-based Method超越了Voxel-based Method的方法,提出了用于关键词采样的分层(Stratified)策略,如下图所示:

关键词采样分层策略

网络架构图如下所示,其中在分层Transformer块之前先进行Position Embeding,有助于聚合点的局部信息:

Stratified Transformer

2.2.4 RepSurf

论文:Surface Representation for Point Clouds (2022)
GitHub:github.com/hancyran/RepSurf

RepSurf(Representative Surfaces)将点集构成三角形,将三角形的特征传入网络。

RepSurf

2.2.5 Point Transformer V3

PTv2论文:Point Transformer V2: Grouped Vector Attention and Partition-based Pooling (2022)
PTv3论文:Point Transformer V3: Simpler, Faster, Stronger (2024)
GitHub:github.com/Pointcept/Pointcept

PTv2在PTv1的基础上提出了Group Vector Attention(GVA),改进Pooling策略,架构对比图如下:

PTv1 v PTv2

详解见[https://zhuanlan.zhihu.com/p/645379444](【点云深度学习】ptv2:point transformer v2 "https://zhuanlan.zhihu.com/p/645379444")。

PTv3通过序列化邻域映射替代KNN搜索并简化注意力机制,在保持20多个室内外任务SOTA性能的同时,将处理速度提升3倍、内存效率提高10倍,并将感受野从16点扩展至1024点,实现了效率与准确性的突破。

2.2.6 PointNeXt

论文:PointNeXt: Revisiting PointNet++ with Improved Training and Scaling Strategies (2022)
GitHub:github.com/guochengqian/pointnext

PointNeXtPointNet++的基础上进行了多方面改进。

虽然PointNet++的性能被许多模型超过,但发现大部分的性能提升主要是因为训练策略的改进。仅改变训练策略,就可获得明显提升:

训练策略

由于PointNet++网络结构较小,发现增加SA模块和提高channel size都不会明显提高准确性,主要是梯度消失和过拟合所造成。因此提出了InvResMLP(Inverted Residual MLP)对模型进行缩放:

  • 输入输出之间添加残差连接,缓解梯度消失
  • 可分离的MLP,在Grouping和Reduction之间,其中一个MLP进行邻域特征计算,另外两个提取点特征
  • 增大第2层MLP的channel从256到1024,增加了4倍,丰富提取的特征

PointNeXt

最终在S3DIS数据集上实验,分割效果比PointNet++有了接近20个点的提升。

2.2.7 Contrast Boundary

论文:Contrastive Boundary Learning for Point Cloud Segmentation (2022)

点云分割的最难点一般都是边界。本文提出了点云的对比边界学习(Contrastive Boundary Learning),主要研究提升边界分割的效果,颇具借鉴价值。

Contrastive Boundary

详解见【点云深度学习】cbl:点云分割边界的对比学习 yeyan

2.3 目标检测(Object Detection)

目标检测一般用于无人驾驶。

常用数据集:

3D目标检测模型:

2.3.1 CAGroup3D

论文:CAGroup3D: Class-Aware Grouping for 3D Object Detection on Point Clouds (2022)
GitHub:github.com/haiyang-w/cagroup3d

论文提出了基于类感知的(Class-Aware Grouping)3D目标检测算法CAGroup3D,架构图如下所示:

CAGroup3D

2.3.2 3D Dual-Fusion

论文:3D Dual-Fusion: Dual-Domain Dual-Query Camera-LiDAR Fusion for 3D Object Detection (2022)
GitHub:github.com/rasd3/3D-Dual-Fusion

论文提出了双重融合算法3D Dual-Fusion,融合通过激光雷达(Light Detection And Ranging,LiDAR)获取的点云与多视图相机图像(Multi-view Camera Images)。基础模型基于Voxel R-CNN与CenterPoint,如下图所示:

3D Dual-Fusion

2.3.3 CenterPoint

论文:Center-based 3D Object Detection and Tracking (2021)
GitHub:github.com/tianweiy/CenterPoint

CenterPoint先通过标准的3D骨干网络从点云提取鸟瞰图特征图,然后用检测头找到目标中心并基于中心点特征回归出目标的3D尺寸、朝向和速度等属性,再用目标额外的点特征对这些属性进行优化,目标跟踪则通过将当前帧中心点映射回前一帧并进行最近点匹配来实现。

CenterPoint

2.3.4 BEVFusion

论文:BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework (2022)
GitHub:github.com/ADLab-AutoDrive/BEVFusion

论文提出了一种高效通用的多任务多传感器融合框架BEVFusion,将来自摄像头、激光雷达等不同传感器的多模态特征(点云、影像)统一到共享的鸟瞰图(Bird’s Eye View,BEV)表示空间,通过优化BEV池化解决视图转换中的效率瓶颈,再利用全卷积BEV编码器融合统一后的BEV特征,并添加特定任务头以支持各类3D感知任务。

BEVFusion

详解见【bev感知算法】-bevfusion

2.4 实例分割(Instance Segmentation)

2.4.1 ISBNet

论文:ISBNet: a 3D Point Cloud Instance Segmentation Network with Instance-aware Sampling and Box-aware Dynamic Convolution (2023)
GitHub:github.com/VinAIResearch/ISBNet

在3D实例分割(3D Instance Segmentation,3DIS)领域,ISBNet是一种具有实例感知采样(Instance-aware Sampling)和盒感知动态卷积(Box-aware Dynamic Convolution)的3D点云实例分割网络。

下图为DyCo3D(基于动态卷积,无提案、数据驱动;利用轻量级Transformer捕捉长程依赖)与ISBNet对比图:

ISBNet

2.4.2 P3Former

论文:Position-Guided Point Cloud Panoptic Segmentation Transformer (2023)
GitHub:github.com/OpenRobotLab/P3Former

P3Former是一种基于位置引导(Position-Guided)的点云全景分割(Panoptic Segmentation)Transformer。

P3Former

2.5 配准(Registration)

数据集:

  • 3DMatch:包含关键点、点云配准、RGB-D重建数据。

2.5.1 GeDi

论文:Learning general and distinctive 3D local deep descriptors for point cloud registration (2022)
GitHub:github.com/fabiopoiesi/gedi

论文提出了一种新型点云配准方法GeDi,它学习对尺度、旋转不变的特征,通过按patch提取点云特征,并相对于局部参考系进行规范化,再利用对输入点排列不变的深度神经网络,将其编码为尺度和旋转不变的紧凑描述算子,经siamese方法训练优化,在多个数据集评估中表现出色,泛化能力远超同类方法,在基准测试中达到先进水平。

训练流程如下所示:

GeDi

2.5.2 REGTR

论文:REGTR: End-to-end Point Cloud Correspondences with Transformers (2022)
GitHub:github.com/yewzijian/RegTR

REGTR(Registration Transformer)借助多个Transformer注意力层,直接预测每个下采样点在另一点云中的对应位置。

区别于典型的基于对一致性的匹配算法,RegTR的预测无需额外的RANSAC(随机抽样一致算法,通过随机抽样和验证从含异常数据集中估计模型参数)过程,这种特性使其在点云配准任务中兼具快速与准确的优势,有效提升了点云处理的效率与精度。

REGTR

2.6 重构(Reconstruction)

现有的3D传感器因物体自遮挡等问题,采集的点云数据存在缺失且稀疏的现象。因此,探索如何对这类残缺稀疏的点云进行有效补全,以获取高质量的点云数据,具有重要的研究意义与应用价值。

相关研究常采用ShapeNetCore等数据集,其中ShapeNet-55与ShapeNet-34包含各类不完整的点云样本,为点云补全研究提供了丰富的数据资源。

2.6.1 AdaPoinTr

PoinTr论文:PoinTr: Diverse Point Cloud Completion with Geometry-Aware Transformers (2021)
AdaPoinTr论文:AdaPoinTr: Diverse Point Cloud Completion with Adaptive Geometry-Aware Transformers (2023)
GitHub:github.com/yuxumin/PoinTr

PoinTr是一种基于Transformer的点云补全模型,将点云补全问题转化为集合到集合的翻译任务,通过已知点云信息生成缺失部分的点云。其核心在于模型采用Transformer-Encoder对已知点云的结构信息和点间关系进行深度建模,再通过Transformer-Decoder学习缺失部分与存在部分的交互关系,最终实现缺失点云的重建。

AdaPoinTr在PoinTr的基础上通过引入自适应查询生成机制和去噪任务,显著提升了点云补全的效率与性能,训练时间减少15倍以上且补全精度提升超20%,同时在ShapeNet-55等数据集上达到SOTA效果。

PoinTr点云补全流程如下所示:

PoinTr

PoinTr网络结构图如下所示:

AdaPoinTr

PoinTr提出了几何感知(Geometry-aware)Transformer块,与常规Transformer块的结构对比如下所示:

Geometry-aware Transformer Block

2.6.2 PCN

论文:PCN: Point Completion Network (2019)
GitHub:github.com/wentaoyuan/pcn

PCN(Point Completion Network)以点云X作为输入,致力于预测出完整的点云Y。其工作过程分为两个阶段,第一阶段先预测出一个稀疏的Y_{coarse},第二阶段在此基础上生成具备细节的Y_{detail}

PCN采用自监督方法进行训练,这种训练方式无需大量标注数据,能够高效地学习点云补全的内在规律,为点云数据的完整性修复提供了创新且有效的解决方案。

PCN

2.7 变化检测

对于多期点云数据进行变化检测。

2.7.1 传统方法

传统方法主要有基于DSM的方法和基于点云距离的方法。

  • 基于DSM(数字表面模型)的方法:通过计算高差或距离差来识别多期点云数据的变化区域。该方法先将不同时期点云数据构建为DSM,再对相邻时期DSM对应位置的高程或距离值求差,通过阈值筛选出显著变化区域,统计地表覆盖或地形变化。其优势是流程简单,对数据预处理要求低,能快速获取宏观变化信息。但DSM由点云插值生成,会损失高程细节,在地形复杂或点云密度不均区域,易因插值误差误检,难以准确捕捉局部细微变化。
  • 基于点云距离的检测方法:直接计算多期点云数据对应点或表面的空间距离差异,主要包括点云到点云(C2C)、点云到三角网(C2M)和多尺度三角网到点云(M3C2)等技术。
    • C2C通过匹配同名点,计算逐点欧氏距离判断变形,适用于高密度点云的精细变化分析。
    • C2M将目标点云构建为三角网,计算源点云到三角网表面(或边缘)的最近距离,但三角网质量会影响结果,网格化时易产生孔洞、伪影,导致位移检测偏差。
    • M3C2较稳健,通过选取核心点云、计算三维曲面法线、构建多尺度局部表面等步骤,无需预先网格化即可检测复杂地形变化,降低了点密度、表面粗糙度和采样位置差异的影响。不过,该方法对不同方向(尤其是非垂直方向)的地表变化检测灵敏度较低,实际应用中需依场景选择合适的距离计算模型。

2.7.2 Siamese KPConv

论文:Siamese KPConv: 3D multiple change detection from raw point clouds using deep learning (2020)
GitHub:github.com/IdeGelis/torch-points3d-SiameseKPConv

Siamese KPConv类似于图像神经网络,同样采用经典的Encoder-Decoder结构。在处理不同时间戳的点云数据时(例如T0T1时刻的点云序列,如图所示),该网络利用KPConv算法分别对两组点云数据执行精细化的特征提取操作,有效捕捉点云数据的局部几何结构特征;随后,针对不同时刻的点云特征,通过计算其最邻近特征差异,采用多尺度特征进行融合,最终输出精准的变化检测结果。

Siamese KPConv

2.8 SLAM

即时定位与地图构建(Simultaneous Localization and Mapping,SLAM)是一种让机器人或其他移动设备在未知环境中实现自主定位并构建地图的技术。

2.8.1 NeRF-LOAM

论文:NeRF-LOAM: Neural Implicit Representation for Large-Scale Incremental LiDAR Odometry and Mapping (2023)
GitHub:github.com/JunyuanDeng/NeRF-LOAM

NeRF-LOAM神经辐射场(Neural Radiance Fields,NeRF)的精细渲染能力与LOAM(LiDAR Odometry And Mapping,激光里程计和映射)的高效追踪相结合,进行LiDAR的SLAM,主要基于体素化与SDF(Signed Distance Function,符号距离函数)回归,训练过程中不断进行tracking和map操作。

NeRF-LOAM

2.8.2 PIN-SLAM

论文:PIN-SLAM: LiDAR SLAM Using a Point-Based Implicit Neural Representation for Achieving Global Map Consistency (2024)
GitHub:github.com/PRBonn/PIN_SLAM

PIN-SLAM的核心是采用了点隐式神经表示Point-Based Implicit Neural Representation),使用基于稀疏可优化神经点的隐式地图,这些神经点在全局位姿调整时具有内在的弹性和可变形性,能够实现全局地图的一致性。整体上比NeRF-LOAM工作更为细致,还包含了回环检测,实测效果比NeRF-LOAM稍好。

PIN-SLAM

2.8.3 LIV-GaussMap

论文:LIV-GaussMap: LiDAR-Inertial-Visual Fusion for Real-time 3D Radiance Field Map Rendering (2024)
GitHub:github.com/sheng00125/LIV-GaussMap

LIV-GaussMap是一种集成精确的激光雷达、惯性测量单元和摄像头信息(LiDAR-Inertial-Visual)的多模态传感器融合映射系统(Multimodal Sensor Fused Mapping System)基于3D Gaussian Splatting(3DGS),将点云融合到GS重建中。

该系统采用可微分的椭球形高斯分布模型,首先利用激光雷达-惯性系统(LiDAR-inertial System)生成场景的初始高斯(Gaussian)结构,通过大小自适应(Size-adaptive)体素分割点云并提取表面法向量,随后引入视觉数据的光度梯度优化高斯参数和球谐系数(SH Coefficient),以提升地图的几何精度和视觉真实感。

LIV-GaussMap


3 开源项目

  • MMDetection3D:一个基于PyTorch的开源工具箱,用于三维目标检测。支持多模态/单模态检测器,支持室内/室外数据集。目前已在SemanticKITTI上构建了一个全面的点云语义分割基准,包括Cylinder3D、MinkUNet和SPVCNN方法。其中,改进后的MinkUNetv2在验证集上可达到70.3 mIoU。亦支持BEVFusion的训练和全新的3D占有网格预测网络TPVFormer。
  • Paddle3D:基于基于飞桨框架开发的开源三维深度学习工具包,聚合主流3D感知算法及精度调优策略,覆盖单目、点云等多种模态及检测、分割等多种任务类型。支持KITTI、nuScenes、Waymo等主流3D数据集,提供从数据处理、模型搭建、训练调优到部署落地的全流程能力,极致优化模型性能,适配多种自动驾驶主流芯片,支持计算图优化/TensorRT/OpenVINO等加速库,并提供了开箱即用的部署教程。
  • OpenPCDet:一个基于PyTorch的开源点云目标检测库,它提供了多种先进的点云检测模型和高效的训练流程,支持从单阶段到两阶段的多种检测算法,具有良好的可扩展性和灵活性,方便研究人员和开发者进行点云目标检测相关的研究和开发工作。
  • Pointcept:用于点云感知算法研究的深度学习框架,实现了Point Transformer等算法。
  • Learning3D:实现PointConv、PCN等点云SOTA算法。
  • torch-points3d:实现了常见的点云算法,包含分类、分割、配准、目标检测等。
  • MinkowskiEngine:用于稀疏张量的深度学习库,在点云3D稀疏卷积中运用甚多。能够实现高效的稀疏张量运算,支持多种深度学习架构,并与PyTorch集成。
  • Open3D:支持若干点云处理算法以及点云可视化,其中open3d-ml支持randla、kpconv、Point Transformer、SparseConvUnet模型。还支持远程调试(open3d.visualization --external-vis),由于一般训练都在服务器上进行,无法直接看点云,可通过Open3d的Remote模式显示。
  • CloudCompare:点云预处理软件,支持点云查看编辑等功能。最新版已支持分类交互插件,可用于点云标注。
  • Xtreme1:开源Web端点云标注工具,支持3D box和图像标注,支持数据、任务管理等。

发表评论