点云- Pointnet 学习笔记。

Tutorial on 3D Deep Learning

Broad Applications of 3D data

Robotics, Augmented Reality, Autonomous driving, Medical Image Processing

Traditional 3D Vision: Multi-view Geometry: Physics based

3D Learning: Knowledge Based: Acquire Knowledge of 3D World by Learning

The Representation Challenge of 3D Deep Learning

image-20210809170851701

Datasets for Outdoor 3D Scenes

KITTI: LiDAR data, labeled by 3D b.boxes

Semantic KITTI: LiDAR data, labeled per point

Waymo Open Dataset: LiDAR data, labeled by 3D b.boxes

3D model 进行分类常用的方法

常用的方法

The Rendered Images are passed through CNN for Image Features

All Image Features are combined by View Pooling

and then passed through CNN2 and to generate final predictions

image-20210809171206995

Multi-view Convoluional Neural Networks for 3D Shape Recognition

一些模型效果的对比

image-20210809171643844

结论

indeed gives good performance

can leverage (杠杆)vast literature of image classification

can use pretrained features

need projection

what if the input is noisy and/or incomplete? e.g., point cloud

Voxelizaiton

represent the occupancy of regular 3D grids

下图很直观的表示了什么是 voxelization

image-20210809172140570

Directly Process Point Cloud Data

End-to-end learning for unstructured, unordered point data

Permutation invariance

Point cloud: N orderless points, each represented by a D dim coordinate

image-20210809172631509

这里想说的点: PointNet 网络就是一个 symmetric function, 可以保证 permutation invariance

image-20210809172848033

通过 visualize 可以发现, salient points 是可以被找到的

limitations of PointNet

image-20210809173054187

BEV (bird-eye view)

If one image is more than a thousand words, then one shape is more than one thousand pictures

说明这个 shape 是非常具有信息量的. 下图表明的是 shape

image-20210809173931606

PointCNN

点云中有六维信息

(1)中心点,长宽高,运动方向

(2)高精地图

3%,稀疏性;无序性

related work

(1)multiview cnns

  • render to 2D images

image-20210826163101511

缺点:

  • 丢失了3D 的一些结构信息
  • 室内或者室外大场景的分割,这类方法不是很work(因为有对齐的操作)

(2)voxelization 体素化

先弄个包围核,设置一个分辨率(0.2m),如果这个小的网格中有点云,那么就是1 否则就是0. 最后使用 3维的卷积操作进行分类等任务。主要缺点如下:浪费空间(1的比例很小),计算量大,只能在 low resolution 上进行。

image-20210826163722309

当体素到极致时候,有效的数据只有 2.41%

image-20210826163956256

(3)设置新的数据结构

比如当前点和其他的关系,那么就是一个八叉树。

节省大量的空间和计算量

点云中的一个点就是 (x, y,z) 坐标

image-20210826165501217

对称函数的概念

使用 t-net 来处理旋转不变性(里面主要有一个 transform matrix)

mlp 主要是用来升维,造成冗余,这样在后续的 max pooling 中才可能保留更多的信息

image-20210809141046380

缺点

  • no local information
  • limited translation invariance (每个点都进行平移,那么变化比较大,这个时候比较难处理)

pointnet++

改进点

  • 最近邻查找

  • 查找到最近邻之后,每个点减去中心点,得到的是相对的信息(减去了平移的影响)

img

是基于 pointnet 进行改进,每一层都是在上一层找到最近邻的几个点,然后执行pointnet,这个结果作为改层的结果。分类就是这样,分割需要得到upsampling 和之前对应的层的一个融合,然后再进行处理。

想要达到的目的

具有相同结构但不同顺序的电云,conv 之后是相同的;相同顺序但是不同结构 conv 之后是不同的。

x-conv: 学出一个网络(对应关系矩阵),来处理点云中的无序性。

大场景的 point 进行切割,比如说 5*5, 加上 overlap

pointcnn 的缺点:pointcnn 学习能力强,过拟合比较严重。

有多少个点就有多少个卷积核,所以 pointcnn 不存在类似 图像中padding 的操作。

远处的点比较稀疏,如果只是使用点云,那么效果不太好

如果场景中的大物体比较多,那么 k 近邻中的k 适当大一些,dialation 中的 d 也可以适当调大一些。;反之也成立。

Deep learning for LiDAR Point Clouds in Autonomous Driving: A Review

这是一个不错的综述

3D CAD

3D LiDAR

3D 可以分为以下的任务

  • 3D point cloud semantic segmentation

  • 3D object detection /localization

  • 3D object classification/ recognition

LiDAR point clouds 的挑战

Challenges on LiDAR point clouds:

  • Diversified point density and reflective intensity

  • Noisy. All sensors are noisy. There are a few types of noise that include point perturbations and outliers

  • Incompleteness. This mainly results from the occlusion between objects, cluttered background in urban scenes.

  • Confusion categories. For example, some manmade objects such as commercial billboards have similar shapes adn reflectance with traffic signs.

同样数据可以根据任务划分成三类

  • Segmentation-based datasets

  • Detection-based datasets 比如 KITTI

  • classsification-based datasets

Evaluation Metrics

  • segmentation: IOU, overall accuracy (OA)

  • detection and classification: precision, recall F1, Mattthews correlation coefficient (MCC)

  • 3D object localization and detection, Average Precision (AP), AOS

3D Deep learning frameworks

(1) Voxel-based models

In order to apply CNNs to unordered 3D point cloud data, such as the 2D pixel array. Thus, in order to apply CNNs to unordered 3D point clould data, sucha data are divided into regular grids with a certain size to describe the distribution of data in 3D space.

In conclusion, there are some limitations of this general volumetric 3D data representation:

  • Firstly, not all voxel representations are useful because they contain occupied and non-occupied parts of the sccanning environment.
  • Secondly, the size of the grid is har to set, which affects the scale of the input data and my disrupt the spatial relationship of between points.
  • Thirdly, computationsla and memory requirements grow cubically with the resolution.

(2) Point clouds based models

Different from volumetric 3D data representation, point cloud data can preserve the 3D geospatial information and internal local structure.

  • pointNet: learn the spatial feature of each point independently via MLP layers and then accumulates their features by max-pooling. The point cloud data are input directly to the PointNet, which predicts per-point label or per-object label. (这个可以采纳具体论文)
  • pointNet ++, This network, which outperforms the PointNet network in classificatoin and segmentation tasks, extracts the local feature for points in an isolated fashion.

(3) Graph-based models

这个不常见, 忽略.

(4) View-based models

The last type of MLS data representation is 2D views obtained from 3D point clouds from different directions. Compared with the above three different 3D data representations, view-based models can achieve near-optimal results.

  • Efficiency
  • Exploiting established 2D deep architecuturs and datasets

常用的 model

  • Multi- View CNN
  • MVCNN- MultiRes
  • RotationNet

A Survey on 3D Object Detection Methods for Autonomous Driving Applications

image-20210809152313815

分别对应单目摄像头, 立体摄像机(双目摄像头), Lidar (机械激光雷达) 和 Solid-state lidar (固态激光雷达)

各种设备的优缺点

image-20210809152932629

对于 3D 模型常见的处理方法. 对于 point-cloud, 效果比较好的 projection 和 pointnet(或者说 我基本上能看懂的)

最后的 fusion 是工程角度常用的手段.

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

Our PointNet is a unified architecture that directly takes point clouds as input and outputs either class labels for the entire input or per point segment / part labels for each point of the input.

In the base setting each point is represented by just its three coordinates (x, y, z)

image-20210809141046380

PointNet 按照任务划分 classification 和segmentation两种,如上图所示,途中上半部分为classification network(下文以C网络代替),下半部分为 segmentation network(下文以S网络代替)。两个任务的网络输入都是 $n * 3$ ,代表 $n$ 个三维坐标点,C网络输出为经过 softmax 之后的 $k$ 个值,而S网络为 $n$ 个点的逐点的score。

其中一个值得注意的区别是,两个网络中对max pooling层出来之后global feature不同。我的理解为是:C网络由于是简单的输入点云的分类任务,所以只需要得到一个最明显的feature来代表这个点云就可胜任分类任务;而S网络由于是逐点的语义分割,所以将global feature concatenate到每一点后面,作用是使每一个点都同时具有自身点的feature和global feature,更有利于进行逐点的分类。

img

PointNet++按照任务也分为 classification (C网络)和 segmentation (S网络)两种,输入和输出分别与PointNet中的两个网络一致。首先,比较PointNet++两个任务网络的区别:在得到最高层的 feature 之后,C网络使用了一个小型的 PointNet + FCN 网络提取得到最后的分类 score;S网络通过 skip link connection 操作不断与底层 low-level 信息融合,最终得到逐点分分类语义分割结果。

PointNet++ 的思路与U-Net很相似:利用encoder-decoder结构,逐层提高feature level,在到达最高层之后通过 skip link connection 操作恢复局部信息,从而达到既能获取 high-level context feature 也能获取 low-level context feature。

应用场景

pointNet 从应用的角度主要有以下两种:

  • 放在网络前部, 作为局部点云特征提取器( feature extractor)
  • 放在网络后部, 作为具体任务的 refine 或者语意分割

总结一下PointNet 和 PointNet++ 的区别

  1. point-wise MLP, 仅仅是对每个点表征, 对局部结构信息整合能力太弱. pointNet++ 的改进: sampling 和 grouping 整合局部领域
  2. global feature直接由max pooling获得,无论是对分类还是对分割任务,都会造成巨大的信息损失 –> PointNet++的改进:hierarchical feature learning framework,通过多个set abstraction逐级降采样,获得不同规模不同层次的local-global feature
  3. 分割任务的全局特征global feature是直接复制与local feature拼接,生成discriminative feature能力有限 –> PointNet++的改进:分割任务设计了encoder-decoder结构,先降采样再上采样,使用skip connection将对应层的local-global feature拼接

参考资料

浅谈PointNet和PointNet++网络及其应用

SLAM (Simulataneous Location and Mapping) 是同时定位和地图构建。 它是指特定传感器的主体,在没有环境先验信息的情况下, 于运动过程中建立环境的模型,同时估计自己的运动。如果这里的传感器主要为相机,那么就称为”视觉 slam“。

高翔的视觉slam十四讲 就是针对视觉摄像头的。

按照工作方式的不同,相机可以分为单目(monocular)相机,双目(stereo)相机和深度(RGB-D)相机三大类。

在视觉slam中,前端和计算机视觉研究领域更为相关,比如图像特征的提取和匹配,后端主要和滤波和非线性优化算法。

任务分类

  1. 3D shape classification
  2. 3D object detection
  3. 3D point cloud semantic segmenation (语义分割)
  4. 3D point cloud instance segmentaion (实例分割)

方法思路分类:

(1)基于多视图的方法(multi-view projection methods): 讲3D 对象投影到多个视图中,如俯视图,正视图,从不同的方位的视图中提取相应的特征,然后特征融合这些特征进行目标识别。关键点在于如何融合多视图特征,聚合成一个可区分的全局表示。MVCNN 是这类方法的开创性工作,坐着将多个视图的特征最大池化作为一个全局描述符,用于分类。

特点:

  • 讲点云投影到不同的view,利用已有的网络结构(CNN)进行特征提取
  • 视角越多,处理速度越慢,越耗时

(2)基于体积占用的方法(Volumetric-based methods)

也是投影方法的一种,相当于把电投影到规则网格中,每个网格可能粗那组不止一个空间点。

img

代表:

VoxNet 网络:就是二维卷积在三维的扩展

3D shapenet: 用体素网格上二进制变量的概率分布表示3D形状。

(3)基于点的方法(point-based methods)

无需投影和体素化,直接对点操作。又可以分为:

  • 单点独立处理式
  • 考虑邻域空间关系的卷积式
  • 考虑邻域空间关系的图卷积式
  • 树结构式