本次将会给大家带来一个简略的对于点云宰割的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。
对于之后的内容,咱们放在下一次….
发表回复