目录
- 基本数据结构
- 任务
- 粒度的区分:(2D为例)
- 挑战
- 常用方法和思路
- 基于体素的点云深度学习:
- 基于多视
- 点云深度学习基础网络: point net
- 网络亮点: max pooling & transform
- 网络结构
- 共享权重mlp的一种常用实现:1*1卷积
- 其他细节
- 点云深度学习基础网络:pointnet++
- 用Set Abstraction分层提取特征
- 用Set Abstraction提到的特征进行分类
- 用Set Abstraction提到的特征进行分割
- 公开数据集
- 机载大规模场景
- ASL Datasets Repository
- DALES: A Large-scale Aerial LiDAR Data Set for Semantic Segmentation
- Unesp Photogrammetric Data Set
- 非机载大规模场景
- Semantic 3D : 4billion (地面)大型室外场景 classification benchmark
- IQmulus & TerraMobilita Contest (看着像地面的)
- Oakland 3-D Point Cloud Dataset(奥克兰 )(地面)
- 斯坦福计算机视觉和几何实验室数据集
- SUN3D
- 推荐阅读的论文或基础网络
- 参考文献
基本数据结构

abcd分别是:
- 点云(point cloud):(x,y,z) , (x,y,z,d), (x,y,z,r,g,b) 图a.
- 体素(Voxel): 体素是3D空间的像素(pixel)。量化的,大小固定的点云。每个单元都是固定大小和离散坐标。 图b
- 多边形网格(Polygon meshes):面。 图c
- 二维投影/多视(2D projection/multi-view)图d
- 深度图: 可带颜色,如RGBD scan
- occupancy network: 用decision boundary来表达物体表面。类似2D的矢量图。体素相当于3D像素,occupancy network类似3D的矢量图。
下面是一张体素的图。
下面这张图d描述了occupancy network:
任务
upsampling,
reconstruction,
segmentation
object detection ,
Shape Completion: 单个物体,缺损部分的补全。
Scene Completion:场景中的物体之间有遮挡,缺失部分补全。
Instance Reconstruction:实例构面。

粒度的区分:(2D为例)
这里以2D图像为例,3D的和它类似。(因为本人没有2D基础,所以这里也列举一下)
abcd分别是:
- classification:整个数据给出个分类。
- object localization (detection) : 给出特定目标的bounding box (和分类标签)
- semantic segmentation: 语义级分割。label each pixel in the image with a category.(把每一个像素点都分为一个类别)
- instance segmentation:语义级分割的基础上,区分每个instance。(连在一起的东西给出清晰的边界。比如两只羊连在一起,语义分割给不出边界,只知道这些像素都是羊,无法区分不同的羊)
挑战
不规则性:分布不均
非结构化:点与点之间的关系,没有确定的四邻域,八邻域
无序性:点的顺序不同完全不影响。因此不同的三维矩阵表达可以是相同的点云。
旋转性:如果点云整体旋转,每个点坐标都会变,但点云是不变的。


常用方法和思路
基于体素的点云深度学习:
常用CNN方法。

基于多视
直接用2D的CNN方法。
性能很好(高于体素)

点云深度学习基础网络: point net
发布于2017年的PointNet是大多数技术的基础。
简单的说,用mlp逐点提取特征,每点1024个。用maxpool处理每个点的特征,得到1024个总体特征。
同时用空间变换解决旋转性问题。
网络亮点: max pooling & transform
无序性问题:用一个对称方法g来解决

h: 特征提取层
g:简单的对称方法。如max pooling.
γ:高层特征提取
最后加一个softmax之类用于分类。
旋转性问题:通过STN(spacial transform netw)来解决。
网络结构
符号解释:
- input transform 和 feature transform: 上文提到的STN空间转换
- mlp: 多层感知机,通常指几个全连接层。括号里是输出的维度。(这里的mlp实际使用2d卷积实现的。括号里似乎是每个卷积层的channel深度).
过程概述:
- 第一行蓝色:空间转换 -> 每个点用mlp提64个特征 -> 空间转换 -> 每个点用mlp提1024个特征 -> maxpool得到1024个总特征(只取该特征最大的点)-> mlp将1024个特征浓缩为k个。(mlp的权重对每个点都一样,称为共享权重的mlp)
- 右下角语义分割:把1024个总特征拼接到之前得到的每点64个特征后面,得到每点1088个特征->用mlp处理得到每点m个分割标签。
亮点:
通过对称性函数(如max pool) 解决无序性问题,和通过空间转换解决旋转性问题。其中首次input transform是直接对3D的点进行旋转,比较好理解;后面的feature transform是在特征层面旋转了。

共享权重mlp的一种常用实现:1*1卷积
在poingnet以及很多代码中,共享权重mlp通常用核为11的卷积实现。
输出特征是多少维,就用多少个filter。
比如,最初的n3用mlp转化为n*64。
原作者用的是2维卷积,参考此文。其实也可以用一维。
net = tf_util.conv2d(input_image, 64, [1,3], ...) # 64是out channels, 1,3是卷积核尺寸
net = tf_util.conv2d(input_image, 64, [1,1], ...)过程如下:

其他细节
- 理论证明:原文中证明了任意一个在Hausdorff空间上连续的函数,都可以被这样的PointNet(vanilla)无限的逼近。
- 效果好:超过了当时的体素方法
- 轻量:参数少,训练快
- 缺失鲁棒性:即使点云大量缺失,也可以获得很好的结果。同时,最有效的点是骨干点。
点云深度学习基础网络:pointnet++
可以看到pointnet只是把所有点放在一起,因此只能提取全局特征。
而局部特征在语义分割等各方面都很重要。
包括pointnet团队本队和其他团队后面都进行了局部区域特征提取方面的研究。
参考这篇知乎文章。
可以看到
- 用Set Abstraction分层提取特征。
- 用上述特征进行分类
- 用上述特征进行分割
用Set Abstraction分层提取特征
setAbstraction结构可以叠多层,如上图所示。
基本思路是把所有点云分簇,每一簇用poingnet提特征,如下图所示(图片来自这篇博客)。
点的个数N越来越少,而每个点特征包含的信息越来越多,特征维度C也发生变化。
主要分为三步: fps 最远距离采样, ball query分簇, pointnet对每一簇提取特征。

fps:Farthest Point Sampling
是一种常见的采样方法,从n个点中采k个(k<n),该方法采样全面而均匀。
方法:
- 选第一个点,比如随机选。假设为a。
- 选第二个点:从其他点中,选离a最远的点。假设为b。
- 选第三个点:从其他点中,选 min( dis(a), dis(b) ) 最大的点。
- 继续,直至选了k个点。
详见此文。Ball query
聚合以每个中心点为球心,a为半径的球体内的所有点,k为上限(即半径内找到k个点就不再找了,每个组最多k个点)PointNet
- 接受N’×K×(d+C)的输入。
- 输出是N’×(d+C)。
- 其中N是输入点的数量,d是坐标维度,C是特征维度。
- 坐标输入时,使用每个点相对于其group中心点的相对坐标。
用Set Abstraction提到的特征进行分类
直接把得到的每个点的特征拼起来,再用全连接层输出最后结果。
用Set Abstraction提到的特征进行分割
对Set Abstraction 得到的点进行插值,然后每点用pointnet提特征,继续插值,最后得到完整的结果。
公开数据集
有很多物体数据集,这里略过,主要总结一些室外场景数据集,尤其是机载LiDAR点云的数据集:
关键词:Aerial , airborne, UAV,
机载大规模场景
ASL Datasets Repository
链接:https://projects.asl.ethz.ch/datasets/doku.php?id=home
这是一个大集合,里面有很多小数据集,比如ISER2016 (机载的)
https://projects.asl.ethz.ch/datasets/doku.php?id=iser2016 点云配准源码链接:https:///ethz-asl/robust_point_cloud_registration
还有这个
https://projects.asl.ethz.ch/datasets/doku.php?id=koptinspection:koptinspection
DALES: A Large-scale Aerial LiDAR Data Set for Semantic Segmentation
Unesp Photogrammetric Data Set
https://www.fct.unesp.br/#!/unespdataset https://ieee-dataport.org/documents/dataset-containing-frame-images-and-dense-airborne-laser-scanning-point-clouds
非机载大规模场景
Semantic 3D : 4billion (地面)大型室外场景 classification benchmark
链接:http://www.semantic3d.net/ 但是502 bad gateway 了
好像是地面LiDAR扫描的
IQmulus & TerraMobilita Contest (看着像地面的)
链接:http://data.ign.fr/benchmarks/UrbanAnalysis/#
该数据库包含来自巴黎(法国)密集城市环境的3DMLS数据,
(分类的)
Oakland 3-D Point Cloud Dataset(奥克兰 )(地面)
链接:http://www.cs.cmu.edu/~vmr/datasets/oakland_3d/cvpr09/doc/
这个数据库的采集地点是在美国卡耐基梅隆大学周围,数据采集使用Navlab11,配备侧视SICK LMS激光扫描仪,用于推扫。 其中包含了完整数据集、测试集、训练集和验证集。
也是分类的
.

斯坦福计算机视觉和几何实验室数据集
这一实验室提供了多个三维数据集,包括:
ObjectNet3D:100类, 90127张图像, 其中有201888个物体和44147 个3D 形状;
城市街景三维数据库
Stanford 2D-3D-Semantics Dataset (2D-3D-S):大型建筑物内部平面语义图–3D图数据集,包含了RGB图,二维语义、深度和三维网格语义以及表面法向量。
此外还包含了无人机监控、多视角tracking、街景等数据库。
SUN3D
普林斯顿的数据集,大场景重建。主要用于SFM方法。
————————————————
















