3d Pointnet
文章目录
点云- Pointnet 学习笔记。
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
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
Multi-view Convoluional Neural Networks for 3D Shape Recognition
一些模型效果的对比
结论
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
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
这里想说的点: PointNet 网络就是一个 symmetric function, 可以保证 permutation invariance
通过 visualize 可以发现, salient points 是可以被找到的
limitations of PointNet
BEV (bird-eye view)
If one image is more than a thousand words, then one shape is more than one thousand pictures
说明这个 shape 是非常具有信息量的. 下图表明的是 shape
PointCNN
点云中有六维信息
(1)中心点,长宽高,运动方向
(2)高精地图
3%,稀疏性;无序性
related work
(1)multiview cnns
- render to 2D images
缺点:
- 丢失了3D 的一些结构信息
- 室内或者室外大场景的分割,这类方法不是很work(因为有对齐的操作)
(2)voxelization 体素化
先弄个包围核,设置一个分辨率(0.2m),如果这个小的网格中有点云,那么就是1 否则就是0. 最后使用 3维的卷积操作进行分类等任务。主要缺点如下:浪费空间(1的比例很小),计算量大,只能在 low resolution 上进行。
当体素到极致时候,有效的数据只有 2.41%
(3)设置新的数据结构
比如当前点和其他的关系,那么就是一个八叉树。
节省大量的空间和计算量
点云中的一个点就是 (x, y,z) 坐标
对称函数的概念
使用 t-net 来处理旋转不变性(里面主要有一个 transform matrix)
mlp 主要是用来升维,造成冗余,这样在后续的 max pooling 中才可能保留更多的信息
缺点
- no local information
- limited translation invariance (每个点都进行平移,那么变化比较大,这个时候比较难处理)
pointnet++
改进点
-
最近邻查找
-
查找到最近邻之后,每个点减去中心点,得到的是相对的信息(减去了平移的影响)
是基于 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
分别对应单目摄像头, 立体摄像机(双目摄像头), Lidar (机械激光雷达) 和 Solid-state lidar (固态激光雷达)
各种设备的优缺点
对于 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)
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,更有利于进行逐点的分类。
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++ 的区别
- point-wise MLP, 仅仅是对每个点表征, 对局部结构信息整合能力太弱. pointNet++ 的改进: sampling 和 grouping 整合局部领域
- global feature直接由max pooling获得,无论是对分类还是对分割任务,都会造成巨大的信息损失 –> PointNet++的改进:hierarchical feature learning framework,通过多个set abstraction逐级降采样,获得不同规模不同层次的local-global feature
- 分割任务的全局特征global feature是直接复制与local feature拼接,生成discriminative feature能力有限 –> PointNet++的改进:分割任务设计了encoder-decoder结构,先降采样再上采样,使用skip connection将对应层的local-global feature拼接
参考资料
SLAM (Simulataneous Location and Mapping) 是同时定位和地图构建。 它是指特定传感器的主体,在没有环境先验信息的情况下, 于运动过程中建立环境的模型,同时估计自己的运动。如果这里的传感器主要为相机,那么就称为”视觉 slam“。
高翔的视觉slam十四讲 就是针对视觉摄像头的。
按照工作方式的不同,相机可以分为单目(monocular)相机,双目(stereo)相机和深度(RGB-D)相机三大类。
在视觉slam中,前端和计算机视觉研究领域更为相关,比如图像特征的提取和匹配,后端主要和滤波和非线性优化算法。
任务分类
- 3D shape classification
- 3D object detection
- 3D point cloud semantic segmenation (语义分割)
- 3D point cloud instance segmentaion (实例分割)
方法思路分类:
(1)基于多视图的方法(multi-view projection methods): 讲3D 对象投影到多个视图中,如俯视图,正视图,从不同的方位的视图中提取相应的特征,然后特征融合这些特征进行目标识别。关键点在于如何融合多视图特征,聚合成一个可区分的全局表示。MVCNN 是这类方法的开创性工作,坐着将多个视图的特征最大池化作为一个全局描述符,用于分类。
特点:
- 讲点云投影到不同的view,利用已有的网络结构(CNN)进行特征提取
- 视角越多,处理速度越慢,越耗时
(2)基于体积占用的方法(Volumetric-based methods)
也是投影方法的一种,相当于把电投影到规则网格中,每个网格可能粗那组不止一个空间点。
代表:
VoxNet 网络:就是二维卷积在三维的扩展
3D shapenet: 用体素网格上二进制变量的概率分布表示3D形状。
(3)基于点的方法(point-based methods)
无需投影和体素化,直接对点操作。又可以分为:
- 单点独立处理式
- 考虑邻域空间关系的卷积式
- 考虑邻域空间关系的图卷积式
- 树结构式
文章作者 jijeng
上次更新 2021-10-03