PointNet论文笔记

(一)摘要

  • 对于点云数据的处理:将点云数据转到3D voxel grids或者collections of data
  • 本文直接处理点云,充分考虑了输入点的置换不变性,即PointNet
  • 从经验上表现出与state of art 相当或者更好;从理论上讲,我们分析了网络已经学习了什么,以及为什么网络对于输入扰动和破坏具有鲁棒性。

(二)介绍

  • 在设计针对点云的新型网络架构时,需要考虑点云对其成员的排列不变性(invariant to permutations of its members),在网络计算中需要某些对称(certain symmetrizations)。进一步的刚性运动不变性(invariances to rigid motions)也需要考虑

  • PointNet输入输出

    输入:直接将点云作为输入

    输出:整个输入的类标签(分类任务),或者每个point所属的类(分割任务)

  • 本文对于神经网络无序集的处理,并且希望可以扩展到其他领域

(三)相关工作

3.1 点云特征Point Cloud Features

  • 什么是点云特征?
    1. 针对特定任务手动制作的(handcrafted)
    2. 编码点的统计特征,对于特定变换具有不变性
    3. 可以分为内在特征和外在特征,或者分为局部特征和全局特征
    4. 对于特定任务,找到最优的特征组合是很重要的

3.2 3D数据的深度学习方法

  • Volumetric CNNs,受限制于数据稀疏性以及3D卷积的计算消耗
  • FPNN和Vote 3D用于解决稀疏问题,但是无法处理大规模点云
  • Multiview CNNs:将3D转成2D图像序列,使用2D卷积网络分类,好处是可以使用工程化的CNN网络。但是这种方法无法扩展到场景理解,point classification 以及shape completion
  • Spectral CNNs:use spectral CNNs on meshes,但是受限于manifold meshes。并且无法扩展到non-isometric形状上
  • Feature-based DNNs:首先将三维数据转化为矢量,提取传统的形状特征,然后利用全连通网络进行形状分类。我们认为它们受到了提取特征的表示能力的限制。

3.3 Deep Learning on Unordered Sets

  • 集中在point sets上无序集的工作很少

    Oriol Vinyals et al [25]:They use a read-process-write network with attention mechanism to consume unordered input sets and show that their network has the ability to sort numbers.他们的工作集中在generic sets和NLP。数据集中缺乏几何结构

(四)问题描述

  • 点云的数学形式化表示

    { P i ∣ i = 1 , … , n } \left\{P_{i} \mid i=1, \ldots, n\right\} {Pii=1,,n},其中 P i P_{i} Pi是一个向量,包含 ( x , y , z ) (x,y,z) (x,y,z)坐标以及额外的特征通道:color和normal

  • 点云处理的任务

    目标分类(数据来源 directly sampled from a shape or pre-segmented from a scene point cloud),然后目标是输出 k k k个分数。

    分割任务,输出 n × m n \times m n×m个,其中 n n n为点的数量, m m m为分割子类(点分割任务需要combination of global and local knowledge)

(五)点集上的深度学习

5.1 在 R n \mathbb{R}^{n} Rn空间中Point Sets的特征

  • 无序性,对N个元素进行排序,有N!种方式,然而这些不同的排序对结果没有影响

  • 邻居点的相互作用,相邻的点形成一个有意义的子集。因此,该模型需要能够从附近的点获取局部结构

  • 在transformation下的不变性:一起旋转和平移的点不应该改变全局点云类别,也不应该改变点的分割。

    给我的感觉就是迫切需要针对这种结构的深度学习网络架构,比如说:图神经网络

5.2 PointNet Architecture

在这里插入图片描述

关于网络框架的几个问题:

  1. T-Net是什么?
  2. max-pooling是怎么生成用于分类的全局特征和分割的point features?这个问题应该会在接下来的描述中说明

  • 3个主要的modules:max pooling
    1. max pooling:as a symmetric function to aggregate information from all the points(能不能使用dilated k-NN呢+随机k)
    2. a local and global information combination structure(这是哪个?)
    3. two joint alignment networks that align both input points and point features(是不是哪两个T-Net?)

接下来就是对3个主要modules的分析


5.2.1 Symmetry Function for Unordered Input
  • 对无序input的处理方式:

    1. 排序

      实现过程:需要将高维空间中点通过一个双射映射到 R R R上,等同于要求这个mapping在维数减少时保持空间接近性。这是一个在一般情况下无法实现的任务。

      并且从实验结果上来看,排序效果要远差于

    2. 将数据看成RNN的输入,将不同的排序方式看成不同的数据集

      实现过程:将point set看成序列信号,以一个随机排列的方式输入到RNN中,那么这里我的问题是输入序列的顺序比如(1,2,3),(2,3,4)…和(2,3,4),(1,2,3)…有区别吗?并且,RNN的方法难以伸缩到数千个输入元素,然而这是点集的正常大小,并且效果也没有作者他们提出来的好

    3. 使用一个简单的对称函数(symmetric function)来聚合每个点的信息

      a symmetric function takes n vectors as input and outputs a new vector that is invariant to the input order. For example, + and ∗ operators are symmetric binary functions.

      使用一个对元素(point)进行h变换后的对称函数g来近似定义在点集上的通用函数f(general function)
      f ( { x 1 , … , x n } ) ≈ g ( h ( x 1 ) , … , h ( x n ) )  where  f : 2 R 10 → R , h : R N → R K  and  g  :  R K × ⋯ × R K ⏟ n → R  is a symmetric function.  f\left(\left\{x_{1}, \ldots, x_{n}\right\}\right) \approx g\left(h\left(x_{1}\right), \ldots, h\left(x_{n}\right)\right) \begin{aligned} &\text { where } f: 2^{\mathbb{R}^{10}} \rightarrow \mathbb{R}, h: \mathbb{R}^{N} \rightarrow \mathbb{R}^{K} \text { and } g \text { : }\\ &\underbrace{\mathbb{R}^{K} \times \cdots \times \mathbb{R}^{K}}_{n} \rightarrow \mathbb{R} \text { is a symmetric function. } \end{aligned} f({x1,,xn})g(h(x1),,h(xn)) where f:2R10R,h:RNRK and g : n RK××RKR is a symmetric function. 
      没看懂f维度的变换方式

      这里实现上,h使用MLP,g使用a composition of a single variable function and a max pooling function.

    在这里插入图片描述

    我觉得这个实验结果为什么Max Pooling的效果是最好的,而且目前关于该实验的叙述还很少

  • 整合local 和 global knowledge

    应该是将提取出来的全局特征和n个节点的局部特征连接到一起。使得当前特征同时具有全局和局部信息

    这个的疑问是,连接的比例怎么控制,怎么实现更好的结果?

    在这里插入图片描述

  • Joint Alignment Network

    想法:如果点云经历了某些几何变换(比如刚体变换),能够使点云分割具有invariant不变性,具体方法为: align all input set to a canonical(标准/规范) space before feature extraction.

    本文中的做法是:

    We predict an affine transformation matrix by a mini-network (T-net in Fig 2) and directly apply this
    transformation to the coordinates of input points. TNet和大网络很相似,由点独立特征提取、最大池化和全连接层等基本模块组成。

    这种思想can be further extended to the alignment of feature space,这个网络预测的是a feature transformation 矩阵用于对齐不同输入点云的特征。但是特征空间中的transformation矩阵比空间变换矩阵具有更高的维度,增加了优化的难度。这里作者使用正则项对feature transformation matrix进行约束:
    L r e g = ∥ I − A A T ∥ F 2 L_{r e g}=\left\|I-A A^{T}\right\|_{F}^{2} Lreg=IAATF2
    这样加正则项的原因是正交变换will not lose information in the input,从实验结果上来看,增加正则项能够使优化更加平稳,并且模型能够取得更好的性能。

5.3 Theoretical Analysis

  • 神经网络对于连续函数的通用逼近能力

  • Hausdorff distance豪斯多夫距离
    在这里插入图片描述

d H ( X , Y ) = max ⁡ { sup ⁡ x ∈ X inf ⁡ y ∈ Y d ( x , y ) , sup ⁡ y ∈ Y inf ⁡ x ∈ X d ( x , y ) } d_{\mathrm{H}}(X, Y)=\max \left\{\sup _{x \in X} \inf _{y \in Y} d(x, y), \sup _{y \in Y} \inf _{x \in X} d(x, y)\right\} dH(X,Y)=max{xXsupyYinfd(x,y),yYsupxXinfd(x,y)}

关于定理1的内容,我不清楚。

主要观点就是最差情况下,网络会将点云转换成volumetric representation。

  • Bottleneck dimension and stability

(六)实验部分

6.0 数据集介绍

3D点云数据集:https://blog.csdn.net/u014636245/article/details/83269939

6.0.1 ModelNet40(分类)

包括了12,311个CAD模型以及40个man-made 对象类别,分成了9843个训练集以及2468个测试集。

6.0.2 ShapeNet(Part 分割)

该数据集包含16个类别的16,881个形状,总共标注了50个零件。对每一个点进行了标注

6.0.3 ModelNet40

6.0.3 Stanford 3D semantic parsing data set

数据集包含Matterport scanners在6个地区(包括271个房间)的3D扫描。扫描中的每一个点都标注了13个类别(椅子、桌子、地板、墙壁等,还有杂物)中的一个语义标签。

6.1 PointNet用于multiple 3D recognition tasks

6.1.1 3D object classification
  • 借助之前提到的网络学习全局的点云特征

  • 对于点云的处理方式:

    按照面面积均匀采样1024个点,并将其归一化为一个单位球,在训练过程中通过沿up-axis随机旋转object来增加点云,同时通过一个均值为0,标准差为0.02的高斯噪声来抖动每一个点的位置

    在这里插入图片描述

    仅使用fully connected layers以及max pooling,同时具有较快的推理速度以及能够在CPU上实现并行化,不过和MVCNN相比,还有不小的差距,作者认为是由于失去了渲染图像(rendered images)捕获的精细几何细节(fine geometry details)。

6.1.2 3D object part segmentation
  • 需要对每一个(点/face)进行分类。

  • 在作者的实验中评价指标以点为单位,下图为ShapeNet数据集上的分割结果
    在这里插入图片描述

  • 使用Blensor Kinect Simulator从6个随机视角生成incomplete点云

6.1.3 semantic scene segmentation

为了准备训练数据,我们首先按房间分割点(points),然后将房间样本分成面积1m×1m的块。我们训练我们的分割版本的PointNet预测.

每一个点用9维向量表示(XYZ,RGB,以及normalized location as to the room (from 0 to 1))

在这里插入图片描述

6.2 validate我们的网络设计

6.2.1 Comparison with Alternative Order-invariant Methods

在这里插入图片描述

5个实验,比较下来,最好的是Max pooling方案

6.2.2 Effectiveness of Input and Feature Transformations
  • feature transformations (for alignment).以及regularization term对于结果的性能均有提升,当同时结合两项时,获得了最大的性能提升
    在这里插入图片描述
6.2.3 鲁棒测试
  • 对于各种输入破坏具有鲁棒性质

    在missing point方面,当missing point为50%时,误差最小值和随机输入抽样只降低了2.4%和3.8%的准确率。我们的网络对于outlier也是健壮的。

在这里插入图片描述

6.3 可视化我们学习到的网络

  • 在本文的实验中,对critical point sets 以及upper bound shapes进行可视化

在这里插入图片描述

6.4 分析时间和空间复杂度

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mTbH9Llf-1600001793217)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1599706870849.png)]
计算复杂度小,效果也好。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值