【论文笔记】3D点云分割-PointNet

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

与普通的2D图片不同,点云数据是空间中离散的点(和3D图像不同的是,点云是稀疏的),见下图:

【论文笔记】3D点云分割-PointNet_第1张图片

上图左为2D图像,右图为点云,点云数据包含点的颜色位置等信息。

点云由3D扫描技术得到,点云具有以下特点:

  1. 稀疏性:点云数据仅存在于物体表面。
  2. 数据缺失:由于遮挡导致部分表面未被扫描到。
  3. 数据噪声:仪器本身的精度或者环境因素导致。
  4. 非均匀性:由仪器的采样策略、相对位置、扫描范围等因素引起。

一、引言

在语义分割任务中,通常 使用卷积神经网络完成分割任务(2D图片使用2D卷积,3D医疗图像使用3D卷积),但是由于点云数据的稀疏性,卷积神经网络不能直接应用到点云分割任务中。

PointNet提出使用神经网络实现点云分类和点云分割,并且获得了极好的效果,主要贡献如下:

1、针对3D无序的数据点集,设计了一个新的神经网络模型;

2、使用神经网络完成了3D数据形状分类、分割任务;

二、PointNet

1、数据特点

点云数据有以下几个特点:

无序性(Unordered):点云是空间中离散的点,没有顺序,对于3D空间中的N个点,共有N!种排序;

关联性( Interaction among points):对于某个点,该点和其相邻的点具有相关性;

不变性(Invariance):整体的旋转和平移不改变点云的种类和语义分割的结果。

2、PointNet

PointNet网络结构如下图所示,需要注意的是分类网络和语义分割网络的区别,语义分割网络需要对每个像素点分类,故将全局特征和局部特征结合后再进行像素分类。

【论文笔记】3D点云分割-PointNet_第2张图片

a、Symmetry Function for Unordered Input

对于无序的点云输入,它的排列有很多种,然而多种排列对于点云的分类和分割结果应该无影响,故需要设计一个函数,它能对不同顺序的输入点集输出相同的结果。这里简单说一下论文实现的流程。

假设有N个点,每个点数据维度为6(x,y,z,r,g,b),那么输入的维度为[N, 6],将输入放入多层mlp网络,得到输出维度为[N,C](这个时候N个无序的点有N!种排序),在维度N取最大值得到输出[C],即可实现对任意排序得到相同的特征。

b、Local and Global Information Aggregation

对于语义分割任务,使用max pool提取全局特征后,将全局特征和像素级特征concat,增加特征图的上下文语义信息。

c、Joint Alignment Network

点云数据经过旋转平移等变换后,它的像素标签并不会变化,故网络需要学习到一种表征能力,使得点云数据经过变换后的特征表示不会发生改变。

PointNet引入了TNet来预测变换矩阵,再高维空间中变换矩阵难以优化(网络结构中当特征维度为64时),故限制特征变换矩阵接近于正交矩阵。

三、PointNet体验

这里使用torch实现的PointNet进行快速,链接:https://github.com/yanx27/Pointnet_Pointnet2_pytorch

Readme中使用方法作者介绍的非常详细,这里不再进行赘述,直接上作者给出的预训练模型在S3DIS上的预测结果,使用MeshLab可视化。(Area5_WC_1)

【论文笔记】3D点云分割-PointNet_第3张图片

area_5_hallway_11:

【论文笔记】3D点云分割-PointNet_第4张图片

参考:

PointNet 家族简介(一)

你可能感兴趣的:(深度学习,语义分割,3D点云,人工智能,计算机视觉,深度学习)