Advertisement

深度特征提取方法_三维深度学习之pointnet系列详解(一)

阅读量:

目前二维深度学习取得了显著进展,并且其应用领域不断扩大;伴随三维设备技术的进步及普及,在这一领域中三维深度学习也受到了广泛的关注。

近期开始深入研究三维深度学习相关内容,以pointnet为起点进行探索,对这一领域有初步认识。打算将这些发现进行整理,并与同行交流。如有不当之处恳请大家批评指正。(如需进一步了解可随时查看)

以下所有的解读基于点云分类。

一、三维深度学习简介

二、点云存在的问题

三、pointnet网络结构详解

四、pointnet代码详解

一、三维深度学习简介

多视角(multi-view):通过将多个二维视角的图像组合构建三维物体,在该方法中传统卷积神经网络(CNN)被应用于每张二维视图中的图像,并利用view pooling procedure整合其特征以生成完整的三维物体结构;

  1. 体素(volumetric)即为立体单元:其方法是将物体表示为空间中的立体单元并采用类似于二维情况下的三维卷积(如采用大小为5×5×5的卷积核)。这种模式具有规律性且便于类比二维情况。然而由于引入了第三个维度带来了显著的时间与空间复杂度问题目前这种方法已不被广泛采用。

点云(point clouds):将三维点云输入网络进行训练(或馈入网络),其数据量较小(或规模较小)。其主要任务包括分类、分割以及大规模场景下的语义分割(或大场景下的语义分割)。

非欧式的(manifolds and graphs):在manifold和graph结构上执行卷积操作,在3D点云中通常表现为mesh形式,并可通过point对之间的邻接关系构建graph结构。manifold的表现具有抽象性,在此过程中会涉及Laplacian特征及相关概念;对此我还不是很清楚……

03144f2548f4fcd3e2bd8b29db5654d7.png

二、点云存在的问题

  1. unordered nature: a point cloud is fundamentally a sequence of points (represented as an n×3 matrix, where n denotes the number of points). In geometry, the order of these points does not influence their spatial representation of the overall shape. For example, identical point clouds can be represented by two entirely distinct matrices. As shown in Figure 1 (left):

预期的结果如下图右边所示:N表示点云数量,D表示每个点的特征维度。无论点云的顺序如何变化,应确保相同的特征提取效果。

6cec59c7c6afad65634a3e1ae39bfa36.png
07058bc81fc4f706e1f5ca6061cad0b9.png

我们知道,网络的一般结构是:提特征-特征映射-特征图压缩(降维)-全连接。

在下图中x表示为点云中的某个采样点,h被定义为一个特征提取模块,g则采用对称机制,g的具体实现方式包括最大池化(Max-Pooling)和加和池化(Sum-Pooling)两种选择,其中,D维特征向量中的每个维度将从N个采样点中选择对应的最大特征值或所有特征值的总和.即,通过这种对称操作,能够有效解决原始数据中存在的无序性问题.值得注意的是,PointNet模型正是基于最大池化(Max-Pooling)策略来完成降维任务的.

39607b6143196f0952da9a9373425a73.png

旋转性:同一组点云在空间中遵循固定的刚体变换(包括旋转和平移),其坐标发生相应改变,如图所示。

我们期望无论点云处于何种坐标系中的呈现方式, 网络都能够准确地完成识别任务.该问题可通过Spatial Transformer Network (STN)来解决.三维与二维不同之处在于其结构为不规则 (非有序且非网状) 的空间分布, 并无需进行重采样处理.pointnet通过学习一个矩阵来实现最优的空间变换效果.

74b3e67ab7d2f4b126f7f7464a620f30.png

三、pointnet网络结构详解

先来看网络的两个亮点:

空间变换网络应对旋转问题:三维STN能够通过学习点云自身的位姿信息来适应并获取最适合用于分类或分割的最大效果的一个DxD旋转矩阵(此处D代表特征维度,在PointNet中采用的是3和64)。对于其中机制的理解而言,在我的认识中是通过调节最终损失函数来优化旋转变换矩阵的形式与参数设置;PointNet并不关注具体是如何实现这种旋转变换的操作细节而是只要求其能够带来更好的后续处理效果即可;该模型采用了两次空间变换操作第一次输入层的空间转换用于对原始点云数据集进行位置上的预处理使其更容易满足后续特征提取的需求;这相当于将物体按照最优的方向(例如正面对接)投影到模型内部以便于后续分析;随后在第二层特征转换过程中通过对提取出高维(如64维)特征向量的空间关系建模实现了不同局部区域之间的几何一致性约束从而进一步提升模型的整体表现能力

max pooling被用于应对点云中的无序特性:
该网络系统通过每个采样点执行特定级别的特征识别,并将这些信息整合处理。
通过最大池化操作(max pooling),该系统能够有效聚合各采样点处的局部特征信息并生成全局描述符。

再来看网络结构:

bace1c7342bede618193053636350275.png

其实在经过两组空间变换网络和两组mlp处理后,在经过两组空间变换网络和两组mlp处理后,
其中mlp采用共享权重机制通过卷积操作实现,
其中特征提取层的作用仅限于将相邻点进行关联处理,
使每个采样点由x,y,z三个坐标分量构成,
其中第一层卷积核尺寸为1×3,
随后通过最大池化操作得到一个统一维度为1×1024的整体特征向量,
随后再经过一个全连接型mlp模块(如代码所示)输出k个得分。
最后将该整体特征输入分类网络,并采用交叉熵损失函数进行优化以获得最终分类结果。

四、pointnet代码详解

好像也没有特别需要讲的……重点我都框出来了

网络模型部分

f7186610b2f82e9a360fc292163a100a.png
ceb1c5fbf1e2aa9aa73541afc4bd531c.png
300d8fb2a20b5f2a70fcfe407e303c13.png

变换矩阵部分,以第一个STN为例

641d481dcb6fd0cb60da53f8ac4d4994.png
ea980d457e8760268a05e99a8ea7003b.png

来源:


35bea5f9f190ed360b0d1359d29f8591.gif

************************End

35bea5f9f190ed360b0d1359d29f8591.gif

声明

全部评论 (0)

还没有任何评论哟~