论文阅读:PointSIFT: A SIFT-like Network Module for 3D Point Cloud Semantic Segmentation
内容概述:
一、Introduction
二、Related Work
三、PointSIFT-basedArchitecture
四、Experiments
五、Conclusion
一、Introduction
论文作者:上海交通大学卢策吾团队
时间:2018年
论文地址:https://arxiv.org/abs/1807.00652
GitHub地址:https://github.com/MVIG-SJTU/pointSIFT
1)PointSIFT缘由:
三维语义分割存在着很多的挑战:
(1)点云的稀疏性使得大部分训练算法效率低下
(2)点之间的关系不明显,难以表示
近期出现了point系列,它直接采用点云作为输入,这样加速了计算,同时也提高了分割性能,但是point系列存在一个问题:每个点操作过于独立,而无法高效刻画相关区域的语义结构,因此需要有一个结构可以捕获点云的形状特征。SIFT是最成功的二维形状描述符之一,它考虑了形状表示的两个基本特征,即方向编码和尺度感知,借鉴了SIFT的思路,同时为了解决捕获点云形状特征这一问题,作者设计出了pointsift这一架构。
3)PointSIFT实现功能
(1)捕获所有方向的信息
(2)具有尺度感知能力
(3)具有很强的可移植性
总结:PointSIFT直接以点云作为输入,是一个点云形状特征的提取模块,它是受SIFT启发而来。实验表明,基于PointSIFT的框架在测试数据集上的性能优于现有方法
二、Related Work
1)三维点云表示方法
(1)体素化:用一个三维包围盒对点云进行包围,将三维包围盒分割为固定分辨率,有点云为1,无点云为0
问题:存在空间稀疏性和计算复杂性,空间稀疏性通过八叉树可以在一定程度上解决,但是点云转化为
体素耗时很长
(2)多边形网格
问题:目前算法只可以解决流形网格(流形网格:一条网格边为一个或两个网格面共享,一个网格
顶点的领域三角片构成一个闭合或者开放的扇面)
(3)多视图:对点云进行多视角拍照,把三维点云转化为几个不同视角的二维图片
问题:忽略了大量的几何细节
2)点云分割算法
(1)PointNet:使用最大池化层来提取特征,解决点云的无序性,在提取特征前用一个名叫T-net的微型网
络对点云进行转化,解决点云的刚性变化问题。
(2)PointNet++:是pointnet的分层版本,pointnet++加入了捕获局部结构的功能。每个图层都有三个子阶
段:采样,分组和PointNeting,并过堆叠多个图层来适应不同尺度。
(3)超体素:将大型的点云进行分割,分成几个小的点云,每个小点云为一个超体,每个超体将被一个点网(pointnet等方法)嵌入。
三、PointSIFT-based Architecture
PointSIFT块:
pointsift块是嵌在网络中的一个模块,其输入是n个特征,每个特征d维,其输入与输出保持一致,因此非常容易嵌入任何网络。
方向编码卷积
方向编码卷积是pointsift块中的基本单元,它可以捕获周围的点,具体步骤如下:
步骤一:以特征点f为中心,将空间分割为八个方向,每个方向中离f最近的点代表该方向,若在半径r内未找到特征点,则用f表示。步骤一结束后,每个特征带有周围八个方向的信息,即从n×d变为n×8×d
步骤二:对每个特征点进行一次x轴的卷积,即每个点的八个特征进行两两结合,结束后每个特征点带有4个维度的特征,即从n×8×d变为n×4×d。公式如下:
M 1 = g [ C o n v x ( A x , M ) ] ∈ R 2 × 2 × d M_1 = g[Conv_x(A_x,M)] \in R^{2\times2\times d} M1=g[Convx(Ax,M)]∈R2×2×d