这是发表于CVPR2019的关于点云分类与分割的论文,论文地址:PointConv: Deep Convolutional Networks on 3D Point Clouds
1. Motivation
在2D图像任务中,拥有平移不变性、局部连接、参数共享等优点CNNs取得了良好的效果,CNNs逐层学习并整合局部特征的特点使得其学习到的特征鲁棒性很强,但是要把卷积操作应用到3D点云上却有很多问题待解决,点的邻近区域并不像像素的邻近区域一样具有固定的网格结构,并且点云往往不是均匀采样的,文章针对这些问题提出一种离散的点云卷积来逼近连续卷积操作,利用MLP来学习权重,并且利用逆密度系数来解决不均匀采样的问题。
2. Method
2.1 PointConv
如下图所示,2D图像可以用网格结构表示,在卷积核所确定的局部区域内,点与点之间的距离是固定的,卷积核可以很方便地为每一个位置赋予一个参数来完成离散卷积运算。但是对于点云数据,其结构非常灵活,没有固定的局部区域,不同点之间的相对距离是不一样的。
首先定义3D卷积,项指的以点
为中心的局部区域
中的点的特征,其中
指局部区域其余点与中心点的相对位移,在网络的输入层,点的特征就是点的坐标。
接下来定义PointConv,是点
处的逆密度系数,用来弥补点云的不均匀采样。
这是由于在密集的区域中,点与点非常接近,表征的信息会很相似,从而产生许多冗余信息,单个点贡献小权重就要低一些,而稀疏的区域中的点带来的信息相对来说会更重要更宝贵,权重相对来说就高一些,如下图中b和c中的点的密度对比。要计算,首先在网络训练前,先使用kernel density estimation离线计算点云中每个点的密度,再将点密度输入一个具有非线性变换的MLP计算得到
。
而各点对应的卷积权重通过输入为点的相对坐标
MLP来计算得到,且MLP的参数共享,为什么是输入相对坐标呢,应该是和EdgeConv一样利用两点的坐标差来表征两点之间的关系,使得网络提取局部特征更加全面,但是同样的,这种方法没有考虑点与点之间的方向信息,只考虑了位移信息。下图展示了一个具有K个点的局部区域进行的PointConv操作。
令和
为输入特征和输出特征的通道数,
分别为第k个邻域点、输入特征的第
个通道、输出特征的第
个通道的索引,输入数据为局部区域的点相对于中心点的相对坐标
还有点的特征
,计算得到的权重参数为
,密度参数为
,经过卷积后得到点的输出特征
。
而整个网络有着类似CNNs的结构,通过叠加多层结构,使得网络从学习局部特征到学习全局抽象特征,叠加的基本单元为feature encoding modules,其结构与PointNet++中sampling layer+grouping layer+PointNet layer类似,只不过用来提取局部特征的PointNet layer替换为了PointConv。下图是在点的K近邻局部区域进行的PointConv操作。
2.2 PointDeconv
对于分割网络,PointConv效仿图像转置卷积提出PointDeconv来对点云特征进行上采样以支持逐点分类。PointDeconv由插值+concat+PointConv组成,首先经过插值进行上采样恢复尺寸,采样方法为由最近邻的3个邻近点特征进行线性插值,插值之后的特征会与之前具有相同分辨率的PointConv层特征做串联,串联之后之后再经过一个PointConv来整合信息。整个过程如下图所示。