PointConv论文

半世苍凉 提交于 2020-01-13 22:14:33

转载请注明作者和出处: http://blog.csdn.net/john_bh/

论文链接:PointConv: Deep Convolutional Networks on 3D Point Clouds
作者及团队:Zhengxia Zou & Zhenwei Shi & Yuhong Guo & Jieping Ye
会议及时间: CVPR 2019
code:github:https://github.com/DylanWusee/pointconv

Abstract

与以规则的密集网格表示的图像不同,3D点云是不规则且无序的,因此对它们进行卷积可能会很困难。在本文中,我们将动态滤波器扩展到一个名为PointConv的新卷积运算中。 PointConv可以应用于点云以构建深度卷积网络。我们将卷积核视为由权重和密度函数组成的3D点局部坐标的非线性函数。对于给定的点,权重函数是通过多层感知器网络学习的,而密度函数是通过核密度估计来学习的。这项工作最重要的贡献是提出了一种新颖的公式化方法,可以有效地计算权重函数,从而使我们能够大幅扩展网络并显着改善其性能。学习的卷积核可用于计算3D空间中任意点集上的平移不变和置换不变卷积。此外,PointConv还可以用作反卷积运算符,以将特征从子采样点云传播回原始分辨率。在ModelNet40,ShapeNet和ScanNet上进行的实验表明,基于PointConv构建的深度卷积神经网络能够在3D点云上具有挑战性的语义分割基准上实现最新技术。此外,我们将CIFAR-10转换为点云的实验表明,基于PointConv构建的网络可以在结构相似的2D图像中匹配卷积网络的性能。

1.Introduction

1.1. 作者为什么研究这个课题?

野外的眼中心定位对于很多应用都很重要,比如eye tracking, iris recognition,以及增强现实应用。虽然有些技术需要使用专门的头戴装置或主动照明,但这种设备价格昂贵,在许多情况下不适用。所以作者提出使用标准相机进行eye center localization.

1.2. 目前这个课题的研究进行到了哪一阶段?

eye center localization的方法可以分为两类。
第一类手动拟合方法(hand-crafted model fitting) 。这些技术使用的外观,如瞳孔的黑暗,和瞳孔和虹膜的圆形形状来检测。这些方法通常是准确的,但往往缺乏鲁棒性,在更有挑战性的环境,如低分辨率或噪声图像和低照明。

第二类是基于机器学习的方法。其中有基于训练滑动窗口眼睛中心探测器的方法和基于面部特征对齐的级联回归方法进行眼睛中心定位。虽然这类方法已经被证明是更健壮的,但是它们缺乏模型拟合方法的准确性,并且需要注释的训练数据

3. PointConv

3.1. Convolution on 3D Point Clouds

在这里插入图片描述

3.2. Feature Propagation Using Deconvolution

对于分割任务,我们需要逐点预测。为了获得所有输入点的特征,需要一种将特征从子采样点云传播到更密集的点云的方法。 PointNet ++ [28]提议使用基于距离的插值来传播特征,由于局部区域内的局部相关性,这是合理的。但是,这并没有充分利用反卷积操作的优势,该反卷积操作从粗糙级别捕获传播信息的局部相关性。我们建议添加一个基于PointConv的PointDeconv层,作为反卷积操作来解决此问题。

如图4所示,PointDeconv由两部分组成:插值和PointConv。首先,我们采用插值法传播来自上一层的粗略特征。继[28]之后,通过线性插值来自3个最近点的要素进行插值。然后,使用跳过链接将内插特征与来自具有相同分辨率的卷积层中的特征连接起来。连接后,我们对连接的特征应用Point-Conv以获得最终的去卷积输出,类似于图像去卷积层[24]。我们应用此过程,直到所有输入点的特征都传播回原始分辨率为止。
在这里插入图片描述

4. Efficient PointConv

PointConv的简单实现很消耗内存并且效率低下。与[33]不同,我们提出了一种新颖的重新定义形式,通过将PointConv简化为两个标准运算来实现:矩阵乘法和2d卷积。这个新颖的技巧不仅可以利用GPU的并行计算优势,而且可以使用主流深度学习框架轻松实现。由于逆密度尺度不存在此类内存问题,因此以下讨论主要针对权重函数。

具体而言,令BB为训练阶段的小批量大小,NN为点云中的点数,KK为每个局部区域中的点数,CinC_{in}为输入通道数,CoutC_{out}为数输出通道数。对于点云,每个局部区域共享相同的权重函数,可以使用MLP进行学习,但是从不同点的权重函数计算得出的权重不同。 MLP生成的权重过滤器的大小为B×N×K×Cin×CoutB×N×K×(C_{in}×C_{out})。假设B=32N=512K=32Cin=64Cout=64B = 32,N = 512,K = 32,C_{in} = 64,C_{out} = 64,并且滤波器以单点精度存储。然后,过滤器的内存大小仅为一层,为8GB,因此如此高的内存消耗将很难训练网络。 [33]使用非常小的网络,几乎没有过滤器,这会严重降低其性能。若要解决此问题,我们建议基于以下引理的PointConv的内存有效版本:
引理1 PointConv等效于以下公式:Fout=Conv1×1(HSFin)TMF_{out} = Conv_{1×1}(H,(S·F_{in})^{T}\otimes M)其中MRK×CmidM\in R^{K×C_{mid}}是MLP中用于计算权重函数的最后一层的输入,而HRCmid×Cin×CoutH \in R^{C_{mid}×(C_{in}×C_{out}})是同一MLP中最后一层的权重,Conv1×1Conv_{1×1}是1×1卷积。

证明:通常,MLP的最后一层是线性层。在一个局部区域中,令Fin~=SFinRK×Cin\tilde {F_{in}} = S·F_{in} \in R^{K×C_{in}}并将MLP重写为1×1卷积,从而权重函数的输出为W=Conv1×1HMRK×Cin×CoutW = Conv_{1×1}(H,M)\in R^{K×(C_{in}×C_{out}})。令kk为局部区域中的点的索引,并且cincmidcoutc_{in},c_{mid},c_{out}分别为输入,中间层和过滤器输出的索引。那么WkcinRCoutW(k,c_{in})\in R^{C_{out}}是来自W的向量,而HcmidcinRCoutH(c_{mid},c_{in})\in R^{C_{out}}是来自HH的向量。根据等式(4),PointConv可以用等式(5)表示。
在这里插入图片描述
让我们更详细地探讨方程式(5)。权重函数的输出可以表示为:
在这里插入图片描述
因此,原始PointConv可以等效地简化为矩阵乘法和1×1卷积。图5显示了PointConv的高效版本。
在这里插入图片描述
在这种方法中,我们将权重过滤器分为两部分:中间结果M和卷积内核H.而不是将生成的过滤器存储在内存中,如我们所见,内存消耗减少到原始版本的CmidK×Cout\frac{C_{mid}}{K×C_{out}}。使用与图3相同的输入设置,并让Cmid=32C_{mid} = 32,则内存消耗为0.1255GB,约为原始PointConv的1/64。

5. Experiments

为了评估我们新的PointConv网络,我们对几个广泛使用的数据集进行了实验,这些数据集是ModelNet40 [43],ShapeNet [2]和ScanNet [5]。 为了证明我们的PointConv能够完全近似常规卷积,我们还报告了CIFAR-10数据集的结果[19]。 在所有实验中,我们使用Adam优化器在Tensorflow上的GTX 1080Ti GPU上实现模型。 除了最后一个完全连接的层之外,在每个层之后都应用ReLU和批量归一化。

5.1. Classification on ModelNet40

ModelNet40包含来自40个人造对象类别的12,311个CAD模型。我们使用官方划分的9,843个形状进行训练,并使用2,468个形状进行测试。按照[26]中的配置,我们使用PointNet [26]的源代码对1,024个点进行均匀采样,并根据网格模型计算法线向量。为了公平比较,我们采用与[26]相同的数据增强策略,即沿z轴随机旋转点云,并通过均值为零且标准偏差为0.02的高斯噪声使每个点抖动。在表1中,PointConv在基于3D输入的方法中获得了最先进的性能。类似于我们的方法,ECC [33]无法扩展到大型网络,这限制了它们的性能。
在这里插入图片描述

5.2. ShapeNet Part Segmentation

在这里插入图片描述
零件分割是一项具有挑战性的细粒度3D识别任务。 ShapeNet数据集包含来自16个类别的50个零件的16,881个形状。任务的输入是由点云表示的形状,目标是为点云中的每个点分配零件类别标签,并给出每种形状的类别标签。我们在大多数相关工作中遵循实验设置[28,35,44,18]。通常,通过使用已知的输入3D对象类别将可能的零件标签缩小到特定于给定对象类别的部分标签。并且我们还将每个点的法线方向计算为输入特征,以更好地描述基础形状。图6可视化了一些示例结果。
在这里插入图片描述
我们使用点交叉点联合(IoU)来评估我们的PointConv网络,与PointNet ++ [28],SPLATNet [35]和其他一些部分分割算法[45、18、44、7]相同。结果显示在表2中。Point-Conv获得的类平均mIoU为82.8%,实例平均mIoU为85.7%,与仅将点云作为输入的最新算法相提并论。根据[35],SPLATNet2D-3D还采用了渲染的2D视图作为输入。由于我们的PointConv只接受3D点云作为输入,为了公平比较,我们只将我们的结果与[35]中的SPLATNet3D进行比较。

5.3. Semantic Scene Labeling

诸如ModelNet40 [43]和ShapeNet [2]之类的数据集是人造的合成数据集。正如我们在上一节中看到的那样,大多数最新算法都能在此类数据集上获得相对较好的结果。为了评估我们的方法处理包含大量噪声数据的现实点云的能力,我们使用ScanNet数据集评估了基于语义场景分割的PointConv。任务是在给定由点云表示的室内场景的情况下,预测每个3D点上的语义对象标签。 ScanNet的最新版本[5]包含所有1513个ScanNet扫描和100个新测试扫描的更新注释,其中所有语义标签均不公开,我们将结果提交给官方评估服务器以与其他方法进行比较。
在这里插入图片描述
我们将算法与Tangent卷积[37],SPLAT Net [35],PointNet ++ [28]和ScanNet [5]进行了比较。所有提到的算法均在新的ScanNet数据集上将其结果报告给基准,并且仅输入算法使用3D坐标数据加上RGB。在我们的实验中,我们通过从室内房间随机采样3m×1.5m×1.5m立方体来生成训练样本,并在整个扫描过程中使用滑动窗口进行评估。我们将结合交会(IoU)报告为主要措施,这是与基准相同。我们在图7中可视化了一些示例性的语义分割结果。表3中列出了mIoU。mIoU是所有类别中IoU的平均值。我们的PointConv大大优于其他算法(表3)。 PointConv在一台GTX1080Ti上在Scan-Net上训练一个纪元的总运行时间约为170s,而8×8192点的评估时间约为0.5s。
在这里插入图片描述

5.4. Classification on CIFAR10

在第3.1节中,我们声称PointConv可以与2D CNN等效。 如果是这样,则基于PointConv的网络的性能应等同于光栅图像CNN的性能。 为了验证这一点,我们使用CIFAR-10数据集作为比较基准。 我们将CIFAR-10中的每个像素视为具有xyxy坐标和RGB特征的2D点。 在训练和测试之前,将点云缩放到单位球上。
在这里插入图片描述
实验表明,CIFAR-10上的PointConv实际上具有与2D CNN相同的学习能力。 表4显示了图像卷积和Point-Conv的结果。 从表中可以看出,在CIFAR-10上PointCNN [21]的准确度仅为80.22%,远低于图像CNN。 但是,对于5层网络,使用PointConv的网络可以达到89.13%,与使用图像卷积的网络相似。而且,具有VGG19 [34]结构的PointConv与VGG19相比也可以达到同等精度。

6. Ablation Experiments and Visualizations

在本节中,我们将进行其他实验以评估PointConv各个方面的有效性。 除了对PointConv的结构进行消融研究以外,我们还对ScanNet数据集上PointConv的性能进行了深入分析。 最后,我们提供了一些学习的过滤器用于可视化。

6.1. The Structure of MLP

在本节中,我们设计实验以评估PointConv中MLP参数的选择。 为了快速评估,我们从ScanNet数据集中生成一个子集作为分类任务。 该子集中的每个示例均从原始场景扫描中随机抽取1,024个点进行采样.ScanNet数据集有20种不同的场景类型。根据经验,我们遍历了不同的CmidC_{mid}选择和PointConv中不同数量的MLP层。 每个实验进行了3次随机试验,结果可在补充中找到。 从结果可以看出,较大的CmidC_{mid}不一定提供更好的分类结果,而MLP中不同的层数在分类结果中并没有太大差异。 由于CmidC_{mid}与每个PointConv层的内存消耗呈线性关系,因此该结果表明,我们可以选择一个较小的CmidC_{mid}以提高内存效率。

6.2. Inverse Density Scale

在本节中,我们研究密度反比S的有效性。我们选择ScanNet作为评估任务,因为ScanNet中的点云是从真实的室内场景生成的。我们遵循作者提供的标准培训/验证拆分。我们分别在Sec3.1中描述了在有和没有逆密度标度的情况下训练网络。表5示出了结果。如我们所见,具有逆密度标度的PointConv的性能比不具有逆密度标度的PointConv的性能好大约1%,这证明了逆密度标度的有效性。在我们的实验中,我们观察到反密度标度在靠近输入的层中趋于更有效。在深层,MLP倾向于学会减少密度标度的影响。一个可能的原因是,使用最远的点采样算法作为我们的子采样算法,更深层的点云倾向于更均匀地分布。如表5所示,与ScanNet数据集上没有密度的方法相比,不使用非线性变换直接应用密度的结果较差,这表明非线性变换能够学习数据集中的逆密度标度。
在这里插入图片描述

6.3. Ablation Studies on ScanNet

可以看到,我们的PointConv大大优于其他方法。 由于我们只允许将算法的一个最终结果提交给ScanNet的基准服务器,因此我们使用[5]提供的公共验证集对PointConv进行了更多消融研究。 对于分割任务,我们用从3m×1.5m×1.5m中随机采样的8,192个点训练PointConv,并通过滑动窗口的方式详尽地选择3m×1.5m×1.5m立方体中的所有点来评估模型。 具有不同步幅大小的xy平面。 为了鲁棒性,我们在所有实验中均使用5个窗口的多数票。 从表5中,我们可以看到较小的步幅可以改善分割结果,而ScanNet上的RGB信息似乎并不能显着改善分割结果。 即使没有这些额外的改进,PointConv仍大大超过基准。

6.4. Visualization

图8展示了我们PointConv中从MLP中学到的过滤器。 为了更好地可视化过滤器,我们通过平面z = 0对学习的函数进行采样。从图8中,我们可以看到学习的连续过滤器中的一些模式。
在这里插入图片描述

7.Conclusion

在这项工作中,我们提出了一种在3D点云上执行卷积运算的新颖方法,称为PointConv。 PointConv在局部点坐标上训练多层感知器,以在卷积滤波器中近似连续的权重和密度函数,这使其自然地具有排列不变和平移不变的特性,这允许直接在3D点云上构建深度卷积网络。 我们提出了一种有效的实现方式,极大地提高了其可伸缩性。 我们在多个具有挑战性的基准上展示了其强大的性能,并具有与2D图像中基于网格的卷积网络的性能相匹配的功能。 在以后的工作中,我们希望使用PointConv(例如ResNet和DenseNet)将更多主流图像卷积网络体系结构引入点云数据中。 可以在这里找到代码:https://github.com/DylanWusee/pointconv

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!