点云卷积“PointConv: Deep Convolutional Networks on 3D Point Clouds”

PointConv: Deep Convolutional Networks on 3D Point Clouds

参考借鉴了https://baijiahao.baidu.com/s?id=1631407236773911746&wfr=spider&for=pc

与在致密网格中的图像不同,3D点云是不规则且无序的,论文提出了PointConv,将卷积核看作3D点局部坐标的非线性函数,该函数由权重和密度函数组成。权重函数由MLP网络学习,密度函数由核密度估计得到。提出了新型计算方法,用于高效的计算权重函数。学习到的卷积核可学习任意3D空间点集的平移及排列不变的卷积。PointConv还可以作为反卷积算子将下采样的点云特征传递回原始分辨率。在 ModelNet40、ShapeNet 和 ScanNet 上的实验表明,基于 PointConv 构建的深度卷积神经网络在 3D 点云上执行操作时能够在具有挑战性的语义分割基准上实现当前最优结果。此外,将 CIFAR-10 转换为点云的实验表明,基于 PointConv 构建的网络性能堪比在类似结构的 2D 图像中执行操作的卷积网络。

深度信息可以消除2D图像分割的不确定性,平面法向提供了场景几何的重要信息。由于点云的无序特性,并且其排列方式不同于 2D 图像中的常规网格状像素点,传统的 CNN 很难处理这种无序输入。传统2D点云可以认为是连续卷积算子的离散近似,在3D空间中,可以将卷积算子当做关于局部3D点云的Lipschitz连续函数。

该研究的主要贡献包括:

提出密度重加权卷积操作 PointConv,它能够完全近似任意一组 3D 点集上的 3D 连续卷积。通过改变求和顺序,提出了 PointConv 的高效实现。将 PointConv 扩展到反卷积(PointDeconv),以获得更好的分割结果。

PointConv

PointConv是3D连续卷积算子的Monte Carlo近似,对于每个卷积滤波器,使用MLP估计权重函数,然后使用逆密度对学习到的权重函数进行加权。两个连续函数 f(x) 和 g(x) 关于一个 d 维向量 x 的卷积操作可以用下式表示:

图像卷积在局部区域内进行,如3×3,5×5的区域,在局部区域内,像素间的相对位置是固定的,滤波器可以离散化为每个位置权重的求和操作。

点云可以表示为3D点的集合,每个点包含坐标向量x,y,z及其特征,如颜色、平面法向等。与图像不同,点云的形状多变,点云的坐标不在固定的网格中,局部区域内不同点的相对位置多变。传统的离散卷积不能直接应用于点云,下图显示了图像及点云局部区域的区别。因此论文提出了PointConv。

点云卷积“PointConv: Deep Convolutional Networks on 3D Point Clouds”_第1张图片

先看3D卷积的连续形式:

点云卷积“PointConv: Deep Convolutional Networks on 3D Point Clouds”_第2张图片

其中Fx+δx,y+δy,z+δz是以点p=x,y,z为中心的局部区域G的特征。点云可以认为是连续R3空间中的非均匀采样,在局部区域内,δx,δy,δz可以是任何可能的位置。将PointConv定义为连续3D卷积的带有重要性采样的Monte Carlo估计:

点云卷积“PointConv: Deep Convolutional Networks on 3D Point Clouds”_第3张图片

其中Sδx,δy,δz是点δx,δy,δz处的逆密度,增加Sδx,δy,δz的原因是点云是非均匀采样的,不同局部区域点云数量变化较大。图2(c)中右下角几个点离得很近,贡献应相对小。论文中使用核密度估计(KDE)方法计算每个点的密度。

 

点云卷积“PointConv: Deep Convolutional Networks on 3D Point Clouds”_第4张图片

图 3 展示了在一个由 K 个 3D 点组成的邻域上进行 PointConv 的流程。图中,C_in 和 C_out 表示输入和输出的特征的维度,k, c_in, c_out 表示索引。对于 PointConv 来说,输入由三部分组成:3D 点的相对坐标 P_local,密度 Density 和特征 F_in。3D 点的相对坐标 P_local 经过连续函数 MLP1 之后可以得到对应的每一个点的特征的权重 W;而密度 Density 经过 MLP2 之后得到逆密度系数 S;在得到权重 W, 逆密度系数 S 以及输入的特征 F 之后,可以利用下式进行卷积,以得到输出特征 F_out:

点云卷积“PointConv: Deep Convolutional Networks on 3D Point Clouds”_第5张图片

PointDeconv 由两部分组成:插值和 PointConv。首先,使用一个线性插值算法来得到精细层的特征的初始值,再在精细层上进行一个 PointConv 进行优化特征,从而获得较高精度的特征值。图 4 展示了反卷积操作的具体流程。

点云卷积“PointConv: Deep Convolutional Networks on 3D Point Clouds”_第6张图片

 

高效的PointConv

原始的PointConv显存消耗严重,使用矩阵相乘和2D卷积对其进行简化,主要对权重函数进行操作。训练中,B为batch size,N是点云中点的数目,K是局部区域内点的数目,Cin是输入通道数,Cout是输出通道数,局部区域共享权重函数,不同点的权重函数计算的权重不一样。MLP生成的权重滤波器的尺寸为B×N×K×Cin×Cout。如果B=32,N=512, K=32,Cin=64,Cout=64,则需要消耗8GB的显存。为了解决内存问题,提出了一个基于 Lemma 1 的内存高效版 PointConv,这也是本文最重要的贡献。

点云卷积“PointConv: Deep Convolutional Networks on 3D Point Clouds”_第7张图片

PointConv可以分解为矩阵相乘和1×1的卷积,下图为高效的PointConv。

点云卷积“PointConv: Deep Convolutional Networks on 3D Point Clouds”_第8张图片

 

实验结果

点云卷积“PointConv: Deep Convolutional Networks on 3D Point Clouds”_第9张图片

 

 

你可能感兴趣的:(3D-识别)