论文学习笔记-PointConv

『写在前面』

提出一种应用在点云数据上的,高度近似传统2d-Conv操作的卷积运算符PointConv。并且同时给出了PointConv的反卷积版本,最终在点云分类、点云语义分割等任务上都达到了与SOTA相当的效果,ModelNet-40分类任务上同CVPR 2019的RSCNN精度更高93.6% vs 92.5%(PointConv)。

作者机构:Wenxuan Wu等,Oregon State University.

论文出处:CVPR 2019.

文章标题:《PointConv: Deep Convolutional Networks on 3D Point Clouds》

原文链接:https://arxiv.org/abs/1811.07246v2

相关repo:https://github.com/DylanWusee/pointconv


目录

摘要

1 介绍

2 相关工作

3 PointConv

3.1 3D点云中的卷积

3.2 Deconv中的特征传递

4 Efficient PointConv

5 实验

5.1 ModelNet40分类

5.2 ShapeNet部分分割

5.3 ScanNet场景语义分割

5.4 CIFAR-10分类

6 分解试验和可视化

6.1 MLP结构设计

6.2 反密度缩放


摘要

本文提出一种应用在点集上的卷积运算符,将传统卷积核视作一个由权重函数和密度函数复合而成的应用在3D空间局部点集上的非线性函数。

本文最重要的贡献是提出一种有效计算权重函数的改进方法,从而使得模型可以向2D-Conv那样堆叠扩展网络模型,并不断提高性能。

实验表明,通过训练学习到的PointConv卷积核具有对3D点集的平移不变性置换不变性

1 介绍

在3D空间中,我们可以将卷积运算符的权重视为相对于参考点及其局部区域的利普希茨连续函数。该连续函数可以通过一个MLP来估计,但是这样做并没有考虑点云分布不均匀带来的影响。

Lipschitz(利普希茨)连续

对于函数f(x),如果存在一个常数K,使得对于任意在f(x)定义域上的两点x_1x_2,满足:\left | f(x_1)-f(x_2) \right |\leqslant \left | x_1-x_2 \right |*K.那么成函数f(x)满足Lipschitz连续条件,并称Kf(x)的Lipschitz常数。

Lipschitz连续是比一致连续性更强的连续性,它限制了函数在某个局部区间内的变化幅度不能超过某常量

本文中,提出使用反转密度缩放来重新加权上述由MLP估计出的连续函数,称这一系列操作为PointConv,它使用点云作为输入,通过学习一个MLP来估计权重函数,然后通过在权重上应用反转密度缩放来补偿非均匀采样造成的影响。 

由于PointConv是卷积的完全近似,因此由PointConv可以很方便的得到PointDeconv,使用它可以提高点云分割任务的性能。

本文贡献如下:

  1. 提出PointConv,一种密度重加权卷积,可以完全模拟3D连续卷积;
  2. 通过优化求和顺序,设计出一种PointConv的高效内存实现;
  3. 扩展反卷积版本PointDeconv,实现了更好的分割性能。

2 相关工作

PointNet/PointNet++中最关键的结构是MaxPooling,然而max-pooling只能保留局部或者全局区域中最强的激活,从而丢失一些可能有用的细节信息。

PointCNN通过学习一个X-变换来对点的输入特征进行加权和置换,与PointConv相比,PointCNN无法实现点排列不变性。 

3 PointConv

3.1 3D点云中的卷积

对于一个d维向量x,广义卷积定义如下:

对于2D图像,其可以视作一个离散的二维函数,或者说是一个网格状的矩阵。在传统CNN中,我们一般会选择3*3、5*5等大小的卷积核,这样卷积核其实只在一个局部区域起作用,而且由于图像本身的网格状结构,给定局部区域中不同像素的相对位置关系是确定的。基于此,我们可以简单地将2D 滤波器离散成一组作用在局部区域上的权值,也就是卷积核。

对于3D点云,其是一个三维点的集合,其中每个点的信息中包含空间信息xyz,可能还含有RGB、法线等其他信息。一方面,点集中的各个点是无序的;另一方面,点的位置信息是连续的,不存在天然的网格结构。因此,传统的2D CNN无法直接应用在3D点云上。为了能够在3D点云上应用卷积,本文提出了PointConv:

从3D卷积的连续版本开始思考,点云可以视作是在连续R^3空间中的非均匀采样,(\delta_x, \delta_y, \delta_z)可以是一个局部区域内的任意位置。

定义PointConv如下,其中,S(\delta_x, \delta_y, \delta_z)是点(\delta_x, \delta_y, \delta_z)的反密度,这是必需的,因为点云采样可能会极度不均匀。直观来说,如果在某个局部区域内点很密集,那么相对来说互相之间提供的信息量就较少。

对比3D连续卷积和PointConv,可以看出是如何做离散化处理的:

作者的主要思想有两点:

一是使用MLP估计权重函数W;

二是使用核化密度估计+MLP估计反密度函数S.

在PointConv中使用的所有MLP在所有点上共享权值(其实就是用了1x1卷积代替MLP),以便能满足排列不变性。

为了估计S,首先通过核化密度估计(KDE)离线计算点云中各点的密度,然后将密度输入到一维非线性变换MLP中。使用非线性变换的原因是使网络自适应地决定是否使用密度估计。

下图展示了PointConv如何在一个包含有K个点的局部区域上操作。

PointConv数学形式表示如下:

简要解释如下:

1)红色框部分,估计权重函数W, 首先按图(a)方法将邻域内K个点转化到局部坐标系,然后通过MLP1进行计算。输入大小为K*3,输出大小为K*(Cin*Cout);

2)蓝色框部分,估计反密度函数S,首先通过KDE估算密度(大小为K*1),然后通过MLP2进行非线性映射,输出大小同样为K*1,然后做复制平铺,最终输出一个大小为K*Cin的张量;

前向运算步骤简述如下:

  1. 给定输入点p(大小为1*Cin),通过K-近邻搜索等得到局部区域中的K个点(大小为K*Cin);
  2. 通过KDE计算反密度(大小为K*1),然后通过MLP2进行映射,再经过复制平铺,最后得到大小为K*Cin的反密度张量;
  3. 对1)和2)的输出进行点乘运算,输出大小为K*Cin,再经过复制平铺,最后得到大小为K*(Cin*Cout)的中间张量;
  4. 另一方面,对K个点的坐标进行中心平移(大小为K*3),而后输入MLP1,输出大小为K*(Cin*Cout)的权重张量;
  5. 对3)和4)的输出进行点乘运算,输出大小为K*Cin*Cout的张量,最后沿Cout方向求和,得到大小为1*Cout的张量。

综上所述,通过PointConv操作,可以实现对一个点的特征映射。类比传统2D卷积,PointConv真正近似了2D卷积的思想。

为了聚合点集特征,使用了类似PointNet++中的分层结构设计。层次结构由几个特征编码模块组成,每个模块大致相当于标准CNN中的一个层,每个特征编码模块主要由采样层、分组成和PointConv组成。

3.2 Deconv中的特征传递

在PointNet++中,提出通过基于距离的插值方法来传递特征,由于局部区域内的特征具有一定的局部相关性,所以这样是可行的。但是,它并不能真正发挥反卷积的真正优势。

基于PointConv,本文还提出了它的反卷积版本,称之为PointDeconv来模拟如2D反卷积一样的效果。

如上图所示,PointDeconv由插值和PointConv两部分构成。首先,采用插值传播先前层的粗糙特征,插值由3个最近点的线性插值得到;然后,插值后的特征与前面分辨率相同的特征进行拼接;最后,对拼接的特征进行PointConv。

4 Efficient PointConv

原始版本的PointConv会大量消耗内存,是低效的。

本文使用了一个trick,将PointConv简化成两个常规标准操作的组合:矩阵乘法和2D卷积。这样一来不但可以借助GPU高效运算,另外还能使用各大主流框架复现。由于反密度估计分支不存在内存问题,所以以下讨论都围绕权重函数估计分支进行。

先看原始版本,通过MLP生成的权重滤波器,大小为B*N*K*(C_{in}*C_{out})

高效版本Efficient PointConv如下图所示。

与原版中将权重滤波器存在内存中不同,高效版本中将权重滤波器分成了两部分:中间结果M(K*Cmid)和卷积核H(Cmid*Cin)。其内存大小变为:B*N*C_{mid}*C_{in}

与原版PointConv相比,高效版PointConv的内存开销仅为其\frac{C_{mid}}{K*C_{out}}倍。一般C_{mid}会比C_{out}小,所以比例大概在几十分之一甚至上百分之一,从而使得PointConv的物理实现成为可能。

5 实验

5.1 ModelNet40分类

5.2 ShapeNet部分分割

5.3 ScanNet场景语义分割

5.4 CIFAR-10分类

为了验证PointConv作为一种卷积运算符的近似的有效性,做了类似PointNet中的实验,即在2D图像分类数据集上进行了试验。

从上图可以看出,PointCNN得到的准确率明显距离传统2D CNN有较大差距,而PointConv取得了与2D CNN相当的效果,并且以PointConv构建的VGG19与基于传统2D-Conv构建的VGGNet精度相当。

6 分解试验和可视化

6.1 MLP结构设计

PointConv中最关键的部分即为MLP的结构设计,通过在ModelNet40数据集上进行实验,作者发现,MLP中C_{mid}参数并不是越大越好,而且C_{mid}越大会导致参数量线性增长。所以,实际中,作者建议挑选一个合适大小的C_{mid},以提高内存效率。

6.2 反密度缩放

上图的实验结果表明,添加反密度缩放的有效性,平均提高1个点。

另外,作者还发现,反密度估计在模型初期起作用较大,在模型深层MLP会倾向于弱化反密度估计的影响。这是因为使用最远点采样作为点云下采样方法,在模型深层点的分布会更趋于均匀,因而就不太需要反密度缩放。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值