3D CV 论文调研

3D论文调研

Introduction

本文对3D的分类,分割,检测任务进行了调研。在调研的论文中,主要使用的是3D点云数据,因为其包含的信息更多,使得检测,分类,分割等任务的结果更好。也因此大多数方法围绕如何更好的提取点云数据特征而展开。这些方法可以大致分为两类,一类是将点云数据通过投影或者体素化等变换,然后利用卷积神经网络进行特征提取,另一类是直接提取点云数据的特征,这里提取的特征包括每个点云数据自身的数据特征,以及点云与点云之间相对位置等信息特征,然后通过下采样等方式提取出全局特征。第一类方法由于点云数据本身的稀疏性,通过投影或体素化转换之后获得的结构也具有稀疏性,使用稀疏卷积等方式可以快速高效的提取特征,因此,此类方法的速度一般较快,但是由于转换过程会导致一部分信息的丢失,精度不是很好。第二类方法恰恰相反,由于其对每个点云数据以及点云数据之间的关系进行特征提取,其速度较慢但精度高。此外,为了兼顾速度和精度,有的论文将这两类方法相结合,获得了不错的效果。通过这些方法提取到的特征,可以通过一些操作进一步表征,或者直接用于各类任务。下面将具体介绍各类任务中各种不同的方法。

1、classification & segmentation

1.1 Point-based Methods

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

机构:Stanford University
仓库:https://github.com/charlesq34/pointnet
本文提出了一个可以直接提取点云数据特征的网络(PointNet)。由于点云数据的无规则性,目前较多的处理方式是将其体素化,但是这会破坏一些点与点之间的联系。PointNet可以很好的解决这个问题,并且对输入点云数据中的一些干扰也具有很好的鲁棒性。整个网络结构如图1.1所示,其可以用于做分类和分割。这里主要介绍分类网络。网络主要包括3个关键部分:the max pooling layer、a local and global information combination structure、two joint alignment networks。首先第一个部分主要是为了应对点云的无序性。用数个MLP提取各个点云的特征,然后通过max pooling层进行初步特征的降维和融合(这里MLP + Max pooling的组合可以近似成一个对称函数,应对点云的无序性)。第二部分主要是为了分割部分,通过MLP + max pooling我们提取到了输入点云的全局特征(global feature),但是分割还需要一些局部特征,并且将其与全局特征相融合,因此第二部分主要完成这一步。第三部分是为了使得网络提取的特征或者网络的分类结果不受点云数据的几何变化(rigid transformation)而改变。论文的思想很简单,在提取特征之前让输入与一个标准的空间对其,为了达到这一目的,论文使用了T-net对输入先做一个变换。同时也对提取的特征做了同样的变换。上面浅蓝色的部分为整个分类的网络框架。
在这里插入图片描述

图1.1 PointNet

1.1.2 PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space

机构:Stanford University
仓库:https://github.com/charlesq34/pointnet2
PointNet 的基本思想是学习每个点的空间编码,然后将所有单个点特征聚合到全局特征中。出于这一设计,PointNet 难以捕获由度量(metric)引起的点的局部结构,而局部结构对卷积架构的成功有重要意义。我们知道 CNN 使用规则的输入,在不同层应用不同的卷积核,逐层次地提取特征,更深的层拥有更大的感受野。通过层次结构抽象特征能够使网络在未知数据上具有更好的泛化能力。PointNet++ 对此做了改进。首先通过底层空间的距离度量将点集划分为若干个局部区域,使用 PointNet 在这些局部区域中进行特征提取。再以这些提取到的局部特征为单位,重复此过程,逐层抽象以产生更高级别的特征,直到获取整个点云集合的全局特征。PointNet++ 的设计需要解决两个问题:如何对点集进行局部划分(sampling & grouping),以及如何通过局部特征提取器(PointNet)来抽象点集或局部特征。
针对第一个问题,如何对点集进行局部划分。我们可以将每个局部区域视作一个球体,其包括质心和半径两个参数。为了使选取的局部区域均匀地覆盖整个集合,作者使用 Farthest Point Sampling(FPS,最远点采样)来选择质心。对于半径的选择,由于输入点集的不均匀性,作者假设输入点集在不同区域具有不同的密度。因此,PointNet++ 的输入与 CNN 的输入非常不同,CNN 的输入可以看作是在具有均匀密度的常规网格上定义的数据(image 作为输入其逐像素之间是均匀的)。在 CNN 中,局部区域的概念是通过 kernel 引入的,局部区域的大小就对应于 kernel 的大小。因此,半径就类似与 CNN 中使用的不同的步长(stride),而半径的选择需要依赖于(考虑)输入数据和具体的度量。由于是以每个局部区域为单位进行特征提取,所以半径的大小也决定了感受野的大小。作者仅以经验表明,虽然在 CNN 中较小的卷积核尺寸得到的效果越好,而在点云数据中该结论是相反的。由于采样不足,较小的领域可能包含太少的点,这可能不足以让 PointNet 鲁棒地提取信息(在 query ball 中,半径0.1,近邻点64个,knn中k也是64,使用的是同样的参数nsample)。针对第二个问题,我们已经知道 PointNet 能够高效地对无序的点云数据进行特征提取,而且对输入数据有很好的鲁棒性。PointNet++ 中以 PointNet 作为局部特征提取器,将 PointNet 作为一个基础的模块,将局部点(特征)抽象为更高层次的表示。可以理解为 PointNet++ 分层地对输入中的局部特征应用 PointNet 进行特征提取。网络的结构如下图所示,其中一个SA结构包括先sampling和grouping,然后通过pointnet对每个局部区域进行特征提取。通过多个SA结构逐渐获得高级特征(global feature),然后用于分类。分割任务因为还需要各个点局部的信息,因此结合使用了插值和skin link跟之前的低级特征相结合。
在这里插入图片描述

图1.2 PointNet++

1.1.3 Modeling Point Clouds with Self-Attention and Gumbel Subset Sampling

机构:上海交大MoE实验室和华为诺亚方舟实验室
仓库:
本文主要改进了PointNet++中的FPS的部分,使得选取的点更能处理外点,将down sampling的点选取在attention score大的点上。很形象的对比如图1.3:
在这里插入图片描述

图1.3 两种采样方式的对比

整个的网络结构如图1.4所示,该结构中主要有三个重要的模块,ARPE module,GSA和GSS。ARPE module(Absolute and Relative Position Embedding)对top K(Nearest-neighbor Graph)点云利用类似于PointNet的结构进行特征提取。GSA模块主要是引入了注意力机制,可以更好的捕获点与点之间的关系。GSS(一种下采样方法) 用在GSA之后,通过使用Gumbel Softmax进行计算每个点的重要程度,然后根据这个概率选取down sampling的点。分类任务中,不断地使用GSA和down sampling,最后对最终剩下的点使用MLP提取特征,并使用average pooling得到分类结果。对于分割任务则一直使用GSA,最后对每个点使用MLP得到其对应的score。
在这里插入图片描述

图1.4 PATs

1.1.4 Momen(e)t: Flavor the Moments in Learning to Classify Shapes

机构:Technion - Israel Institute Of Technology
仓库:
本文章提出的方法简单,基本上就是增加网络的输入,相比于pointnet++。其将网络的输入由点的坐标(x,y,z)增加到(x,y,z,x2,y2,z2,xy, xz, yz)。基本网络如图1.5所示。可以从2nd Order-Layer 详细网络中看到,其实与Pointnet++非常相似,无非就是还做了人工构造了2nd Order的特征。具体的Spatial-Trans中也加入了2nd Order-Layer。最后的效果证明,在ModelNet40的数据集上,效果很好。
在这里插入图片描述

图1.5 MomeNet

1.2 Convolution-based Networks

1.2.1 Pointwise Convolutional Neural Networks

机构:The University of Tokyo,Singapore University of Technology and Design
仓库:https://github.com/hkust-vgd/pointwise
本文是Discrete Convolution Networks其中一类的代表:对中心点附近的区域进行区域划分,每个区域内计算一个aggregated feature。区域固定,相当于得到了固定的grid,然后用固定的卷积核去卷积就可以了。这种权重域是离散的,就像普通的2D Convolution。离散卷积公式如下:
在这里插入图片描述

结合图1.6可知,其将中心点附近的区域分成栅格,每个栅格内的特征先相加然后用密度归一化,最后再乘以栅格内的卷积权重得到,得到一个栅格的特征,多个栅格的特征相加得到新的特征。整个的网络结构如图1.7所示,其首先用离散卷积提取点云数据的特征,并最后将低级和高级的特征相融合用于最终的分割和分类。
在这里插入图片描述

图1.6 Pointwise convolution

在这里插入图片描述

图1.7 PCNN

1.2.2 PointCNN: Convoution On X-Transformed Points

机构:华为,山东大学,北京大学
仓库:https://github.com/yangyanli/PointCNN
本文主要介绍了一种 chi-transformation,该变换可以解决点云的无规则性问题。我们希望点云数据输入的顺序对最后的结果没有影响。该变换与PointNet中的T-Net类似,T-Net是为了消除几何变换对点云的影响,而chi变换是为了保证不受点云顺序的影响。其变换的实现方式,也与T-Net类似,使用MLP实现,也就是使用FC层。在完成了chi变换之后,就可以对feature做Convolution,。下表1.1为PointCNN的算法。

表1.1

在这里插入图片描述

PointCNN的分类网络如图1.8所示所示,比较简单,首先使用chi-conv提取特征,然后用全连接层进行分类。
在这里插入图片描述

图1.8 PointCNN

1.2.3 Relation-Shape Convolutional Neural Network for Point Cloud Analysis

机构:中科大
仓库:https://github.com/Yochengliu/Relation-Shape-CNN
本文主要提出一种新的RS-Conv(Relation-Shape Conv),可以直接提取点云数据中个点云之间的位置关系特征。同时该RS-Conv也满足处理点云数据需要的特性:即点云输入顺序的不变性,点云数据刚性变换的不变性等。RS-Conv的具体实现如图1.9所示所示,hij表示点云数据xi和xj之间的距离关系,通过共享权重的MLP将其转换为wij特征,并将特征融合,然后再利用共享的MLP向高维特征(chanel raising)转化。这便是一个RS-conv的实现。最终RS-CNN通过使用多个RS-Conv提取特征,然后用于分类和分割。如图1.10所示。
在这里插入图片描述

图1.9 RS-Conv

在这里插入图片描述

图1.10 RS-CNN

1.2.4 KPConv: Flexible and Deformable Convolution for Point Clouds

机构:Mines ParisTech,Facebook AI Research,Stanford University
仓库:https://github.com/HuguesTHOMAS/KPConv
本文提出了一种高效提取点云特征的KP-Conv,具体包括两种,rigid和deformable。并以KP-Conv为基础构建KP-CNN和KP-FCNN完成点云数据的分类和分割任务。Rigid KP-Conv如图1.11所示,kernel中的每一个点对应一个权重Wk,然后计算input中的每个点与kernel中的点的距离,通过距离的远近与kernel中的所有的Wk进行加权求和得到每个点最后的权重。Deformable KP-conv如图1.12所示,其filter中各点的权重不是固定的,各点每次会生成一个偏移量(offset),然后将这个偏移量加在各点的权重上再做卷积操作。这个偏移量是通过rigid KP-Conv获得,因为先用rigid KP-Conv可以获得filter中各点的权重,然后以此权重来作为deformable KP-Conv的偏移量。
在这里插入图片描述

图1.11 Rigid KP-Conv

在这里插入图片描述

图1.12 Deformable KP-conv

1.3 Projection based

1.3.1 Multi-view Convolutional Neural Networks for 3D Shape Recognition

机构:University of Massachusetts, Amherst
仓库地址:https://github.com/suhangpro/mvcnn
MVCNN将点云投影到不同的视角下,每个投影可以使用CNN进行特征的提取,然后将所有CNN提取的进行融合。论文阐述了该方法比直接使用3D的数据进行训练结果要好,并且精度随着投影的个数增加而提高。其网络框架如图1.13所示。
在这里插入图片描述

图1.13 MVCNN

1.3.2 RotationNet: Joint Object Categorization and Pose Estimation Using Multiviews from Unsupervised Viewpoints

机构:National Institute of Advanced Industrial Science and Technology (AIST)
仓库:https://github.com/kanezaki/rotationnet
相比于MVCNN,RotationNet使用了更多的视角,并在处理了每个视角的关系。其网络结构如图1.14所示。
在这里插入图片描述

图1.14 RotationNet

1.3.3 VoxNet: A 3D Convolutional Neural Network for Real-Time Object Recognition

机构:Robotics Institute, Carnegie Mellon University
仓库:https://github.com/skyhehe123/VoxelNet-pytorch
该论文把点云投影为占据栅格,然后使用3D CNN进行特征提取,并给出分类的结果,网络结构如图1.15所示。

在这里插入图片描述

图1.15 VoxNet

1.4 Graph-based

1.4.1 Dynamic Graph CNN for Learning on Point Clouds

机构:Massachusetts Institute of Technology
仓库:https://github.com/WangYueFt/dgcnn
本文在PointNet的基础上,提出了一种新的计算点云中点的feature的算法,提升了点云分类、分割等任务的性能。具体来说,论文提出了两个新的概念:EdgeConv和Dynamic Graph。用EdgeConv替代PointNet中的MLP便可以得到论文提出的DGCNN网络。而在每次计算EdgeConv时,都需要更新一下graph。下面分别介绍EdgeConv和Dynamic Graph。 EdgeConv主要实现对点云中节点的feature的更新操作,改进了PointNet中缺少局部信息的缺点。作者提出的edgeConv在计算(更新)每个点的特征时,不仅考虑这个点当前的特征,还考虑了在当前的特征空间内,与当前点距离最近的K个点的特征。在特征空间内与目标点临近的K个点,可以在小范围内构成一个小的局部图,从中计算出来的信息,可以认为是一种局部feature。让全局特征和局部特征共同来影响每个点特征的更新。而随着特征空间的变换,每个点相邻的K个点也在发生变化,因此需要对每个点相邻点进行更新,也就是所谓的dynamic graph。如果把KNN找到的点,看作是receptvie field,那么深层网络处,由于每层KNN的结构都不同,每个点的receptvie field会越来越大。直觉上,这种方式可能更有利于全局feature的学习。DGCNN的网络结构如图1.17所示。
在这里插入图片描述

图1.16 EdgeConv

在这里插入图片描述

图1.17 DGCNN

1.4.2 Grid-GCN for Fast and Scalable Point Cloud Learning

机构:University of Southern California ,图森未来
仓库:https://github.com/Xharlie/Grid-GCN
自PointNet++ 和DGCNN问世以后,基本所有的点云处理模型都要使用采样或近邻查询。但是,这两种操作的时间复杂度太高,本文主要解决了这个问题。主要的模块有两个:Coverage-aware Grid Query(CAGQ)和Grid Context Aggregation(GCA)。并由这两个组合成GridConv。给定一组点云数据,CAGQ 模块能够高效地构建出结构化的点云,并且加速采样和近邻查询的操作。该模块首先对点云进行体素化,将每个点映射到所属体素中,每个体素内存储的点的个数有上限。接着从所有非空体素中采样M个中心体素,并定义位于每个中心体素的相邻体素内的点为上下文点 (context points),从上下文点中采样K个结点(node points)。最后计算所有结点的质心,作为这一个分组的中心。其过程如图1.19所示所示。第二个模块GCA 将所有结点的特征聚合到分组中心上,聚合的过程中使用到了各种注意力机制,如图所解释的那样,如果某个点在前一层包含了更多的信息,那么在特征聚合的时候需要给予更多的权重,如图1.20所示。最后利用多个由这两个模块组成的GridConv提取到高级特征用于分类,用于分割任务时,还需要利用GridConv进行上采样,并与之前的低级特征相结合。
在这里插入图片描述

图1.19 CAGQ

在这里插入图片描述

图1.20

参考:

1、https://blog.csdn.net/wqwqqwqw1231/article/details/104206664
2、Guo Y , Wang H , Hu Q , et al. Deep Learning for 3D Point Clouds: A Survey[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2020, PP(99):1-1.
3、相关的论文

猜你喜欢

转载自blog.csdn.net/muzitianfu/article/details/108666183