关于前端:DeepRoute-Lab-点云分割

36次阅读

共计 2583 个字符,预计需要花费 7 分钟才能阅读完成。

本次将会给大家带来一个简略的对于点云宰割的 survey 分享。首先什么是点云,点云是激光雷达产生的离散数据,具备稠密性、无序性、尺度不变性等个性。
什么是点云宰割,点云宰割其实是为了给每个点打上语义标签,整个工作对于主动驾驶、机器人、AR\VR 都特地重要,能够用来去噪、高空检测等等。

点云宰割的挑战性

1. 点数过多,尤其是对于主动驾驶的场景,整体的点数可能超过 10W;
2. 稠密性,须要设计一系列的算法去应答点云的稠密性,相比于图像数据,须要设计高效的算法去解决稠密的点云数据;
3. 无序性。

一个好的点云网络应该可能思考到这几个个性。

接下来,我会依据点云的表征形式给大家介绍一些经典的点云宰割的 paper。

首先依据点云的表征形式能够分为 point-based,voxel-based,range-view-based,multi-representation based methods。以后基于 transformer 的形式咱们临时不介绍。

point-based 的办法

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

Pointnet 是 point-based 计划外面开阔性的计划。整个 PointNet 的构造非常简单、简洁。通过一直重叠 conv1d、bn1d 提取每个点的特色,接着通过 global-max-pooling 层进行 global information aggregation。

PointNet 的特点就是简略,办法也是具备 intuitive。在 pointnet 提出的 global-max-pooling 其实是 symmetric 的,具备 permutation-invariant 的个性,对于不同的输出的点序可能产生雷同的输入后果。

然而 PointNet 最大的毛病是短少了部分特色,整个信息的聚合是通过 global-max-pooling 失去,这里会有信息损失。

2.PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space

基于下面的察看跟剖析,PointNet 的作者提出了 PointNet++,相比于 pointnet,Pointnet++ 引入了 locality 的概念。首先 PointNet++ 应用 furthest sampling 的策略失去一些列的 keypoint,接着对于每个 keypoint,通过 KNN 建设了不同的邻域信息。在不同邻域内利用了 PointNet,这个过程叫做 set abstraction。通过不同的 radius,或者不同邻域数量达到相似于卷积中扩充感触野的过程。如果是做点云宰割的工作的话,那么还会有上采样的过程,整个架构就比拟相似 UNet。

整体来说,PointNet++ 外围是部分信息跟全局信息的提取的交融。那么基于 PointNet++ 的架构,接下来就是百花齐放的状态了。

3.PointSIFT: A SIFT-like Network Module for 3D Point Cloud Semantic Segmentation

PointSIFT 基于 Pointnet++ 的架构,引入了传统视觉特征提取算子 SIFT。简略来说,PointSIFT 提出了 orientation encoding unit. 对于每一个点,首先沿着 x,y,z 三个轴的方向搜寻邻近的 8 个点。接着 OE unit 会应用 CONV1D 沿着 x,y,z 三个方向提取特色,这样就能失去最终的 feature embedding。

先做一个简略的总结,这些算法其实更多对于室内的场景,大家能够设想一下这些办法利用在主动驾驶场景还有一些效率性的问题。同样的办法还有 PointConv: Deep Convolutional Networks on 3D Point Clouds。

大家感兴趣的话能够本人去翻阅。

接下来给大家介绍一下利用在室外点云的办法。

4.KPConv: Flexible and Deformable Convolution for Point Clouds

KPConv 有一些不同,首先对于 kernel point 的产生,它不是应用 FPS(furthest sampling)的办法。KPConv 采纳的是一种迭代式优化的形式,在给定的区域内,一个 kernel point 的优化指标是,尽量远离其余的点。

同时 kpconv 提出了 kernel point convolution,KPC 其实是在模仿一个卷积的过程。对于每一个输出的点,他会去查找 K 个最邻近的 kernel point,接着会计算相关性。卷积的 weight 其实是这些相关性的加权求和。最终的 output feature 会是输出特色跟这些权重的加权求和。

整体的 kpconv 的架构,实际上也是建设在 PointNet++ 的架构上。

5.RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds

上述的文章其实都隐含了一个痛点:Sampling。首先 FPS 或者 KPConv 外面 kernel point 的产生其实会破费肯定的预处理的工夫,其次,sampling 其实会带来性能下面的降落。过多的 sampling 尽管会让网络的性能晋升,然而会让整体的体现降落。RandLA 十分暴力,间接采纳了随机采样的形式。

基于点云的几何个性,提出了 Local spatial encoding。首先在给定的部分的邻域中,LocSE 计算一下几何信息,比方所有点的均值、方差等。接着,利用 pointwise 的特征提取器 (fc/conv1d) 的 layer 进行特色的提取,通过 local-neighborhood attentive-pooling 达到 set-abstraction。在过后 RANDLA 获得了 sota,特地是在 semantic kitti 这样的室外大规模数据集。​

Summary

对于 point-based 的办法进行一个简略总结。
长处 
1. 有丰盛的几何信息;
2. 十分间接的表征形式;
3. 很少的后处理。

毛病
1.KDTree 或者其余间隔索引须要破费额定的工夫;
2.Sampling,正如下面说的 sampling 会减速网络的解决,然而同时也会升高 performance。

对于之后的内容,咱们放在下一次….

正文完
 0