论文笔记:PPFNet

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hongbin_xu/article/details/82973061

原论文:PPFNet: Global Context Aware Local Features for Robust 3D Point Matching

PPFNet

1、四个问题

  1. 要解决什么问题?
    • 在3D视觉中,3D几何信息的局部描述子在许多任务中扮演了很重要的角色,诸如:对应性估计、匹配、配准、物体检测以及形状恢复等。尽管近10年间,出现了一系列手工设计(hand-craft)的3D特征描述子,但是却很难为3D点云数据生成理想的可重复且具有区分性的局部描述子。因为很多时候,3D点云中含有较多噪声,或是不完整的。
    • 所以,这篇论文的目的是为3D点云生成理想且鲁棒的3D局部特征子。
  2. 用了什么方法解决?
    • 文中,提出了PPFNet网络。基于深度学习方法来生成易区分且抗旋转的3D局部特征子。
      1. 首先,将一些简单的几何特征属性如:点的坐标、法线以及点对特征(point pair features, PPF),组合起来成原始特征;
      2. 随后,又设计了一个新的损失函数:N-tuple Loss。其类似于contrastive loss,能同时将多个同类或者不同类样本嵌入到一个欧式空间中,样本之间的差异用其特征向量的欧式距离表示。
      3. 最后,PPFNet网络的结构继承自PointNet,因此它天生就可以处理点云以及应对点的无序性。
  3. 效果如何?
    • 文中对PPFNet进行了额外的验证实验,在准确率、速度、对点的稠密程度的鲁棒性以及抗3D平移旋转等方面都取得了最state-of-the-art的效果。
  4. 还存在什么问题?
    1. PPFNet的一个问题在于二次内存的占用,导致我们只能将硬件上的patch数限制为2000个。而另一个3D匹配方法——3D Match,则取到5000个,所以在某些特定任务上效果相比下略微差一些。
    2. 现在的3D匹配都是基于室内场景的3D特征点匹配,还没有针对更具一般性更难的场景下进行研究。

2、论文概述

2.1、相关工作

  1. hand-crafted的3D特征描述子:
    • 旋转不变特征,比如点对特征(point pair feature, PPF),例如:PPFHFPFH
  2. 训练得到的3D特征描述子:
    • 有一部分方法是直接处理点云,进行编码。比如,TDFTSDF等。最近有一项此类的研究工作——3DMatch,它先使用TSDF进行编码,随后使用一个contrastiev loss损失函数来衡量样本间的一致性并训练网络。
    • 另外一个分支,是基于3D信息获取投影的2D图片或者深度图,并使用已经广泛研究过的基于2D图片的分类网络。
    • 此外还有一个分支,图网络(graph networks)也可以用于表示点集。
    • 一个比较重要的突破源自于PointNet,可以直接输入原始的3D点云。之后还扩展为了PointNet++,以更好地提取局部信息。

2.2、背景

2.2.1、动机

  • 假设有两个点集 X R n × 3 X \in \mathbb{R}^{n \times 3} Y R n × 3 Y \in \mathbb{R}^{n \times 3} ,其中 x i x_i y i y_i 分别表示连个点集中对应的第 i i 个点的坐标。
  • 假设每个点 x i x_i 都有一个与之对应的 y i y_i ,使用一个置换矩阵 P P n P \in \mathbb{P}^n 来表示这个对应关系。
  • 两个点集之间的变换关系矩阵可以定义为: T = { R S O ( 3 ) , t R 3 } T=\{ R \in SO(3), t \in \mathbb{R}^3 \}
  • 点集之间的L2距离如下:

(1) d ( X , Y R , t , P ) = 1 n i = 1 n x i R y i ( P ) t d(X, Y | R, t, P) = \frac{1}{n} \sum_{i=1}^{n} \| x_i - Ry_{i(P)} - t \| \tag{1}

  • 其中, x i x_i y i ( P ) y_{i(P)} 之间的对应关系为 P P
  • 假设 X X Y Y 的维度相同,即 X = Y = n |X| = |Y| = n
  • 式子1可以转为如下式:

(2) d ( X , Y T , P ) = 1 n X P Y T T d(X, Y | T, P) = \frac{1}{n} \| X - P Y T^T \| \tag{2}

  • 理想情况下,如果两个点集相互匹配,那么 d ( X , Y T , P ) 0 d(X, Y | T, P) \approx 0
  • 这也意味着,我们需要寻找一个也满足类似性质的非线性映射关系: f ( x ) f(x)

(3) d f ( X , Y T , P ) = 1 n f ( X ) f ( P Y T T ) d_f(X, Y | T, P) = \frac{1}{n} \| f(X) - f(PYT^T) \| \tag{3}

  • 如果两个点集相互匹配,那么也会有: d f ( X , Y T , P ) 0 d_f(X, Y | T, P) \approx 0
  • 此外,为了保证旋转和置换不变性,最好能保证 f ( Y ) f ( P Y T T ) f(Y) \approx f(PYT^T)
  • 很自然地,就想到了PointNet架构,它可以处理无序点集,并提取成全局特征。

2.2.2、Point Pair Features(PPF)

  • PPF是一个4维的描述子,表示的是一对点 x 1 x_1 x 2 x_2 的表面特征,计算公式如下:

(4) ψ 12 = ( d , ( n 1 , d ) , ( n 2 , d ) , ( n 1 , n 1 ) ) \psi_{12} = (\|d\|, \angle{(n1, d)}, \angle{(n2, d)}, \angle{(n1, n1)} ) \tag{4}

  • d d :两个点之间的差值,是一个向量。
  • n 1 n_1 、$ n_2 分别是 x_1 x_2$上的法向量。
  • ˙ \| \dot{} \| :欧氏距离。
  • \angle 表示向量之间的夹角:

(5) ( v 1 , v 2 ) = a t a n 2 ( v 1 × v 2 , v 1 v 2 ) \angle(v_1, v_2) = atan2(\| v_1 \times v_2 \|, v_1 \cdot v2) \tag{5}

2.2.3、PointNet

  • 文中只是用了原始的PointNet(vanilla PointNet),不带STN单元。
  • PointNet是通过一些独立的MLP来处理点云数据,最后通过一个全局的最大池化来提取全局特征,可以处理无序、长度可变化的点集。(具体内容不做赘述,可以参考PointNet的论文)

2.3、PPFNet

2.3.1、局部几何信息编码

在这里插入图片描述

  • x r x_r 为中心点, x i x_i 表示一个以 x r x_r 为中心的patch内的点(即 i i r r 领域的点)

(6) F r = { x r , n r , x i , . . . , n i , . . . , ψ r i , . . . } F_r = \{ x_r, n_r, x_i, ..., n_i, ..., \psi_{ri}, ... \} \tag{6}

2.3.2、网络结构

在这里插入图片描述

  1. 输入包含有N个均匀采样的局部区域(local patches)。
  2. 从这些区域中提取特征,随后送入mini-PointNet中,进一步提取特征。所有的PointNet的权值和偏置参数都共享。
  3. 接着使用一个最大池化层将各个patch的局部特征聚合为全局特征。
  4. 然后再把全局特征拼接到各个局部特征上。
  5. 最后使用一组MLP来融合局部和全局特征得到最终的3D特征描述子。

2.3.3、N-tuple Loss

在这里插入图片描述

  • 两种常用的loss函数:contrastive loss和triplet loss。尽管这两个loss会尽可能区分2/3个样本,但是也存在一些隐患,如图中所示,尽管都满足了减小类内间距增加类间间距的要求,但是并没有保证所有的样本都能满足这一性质。而样本对的选取是随机的,无法保证一定能包括所有可能情况。
  • 将这类loss推广到N个样本的情况,提出了N-tuple loss。
  • 给定ground truth的变换矩阵 T T ,首先要计算点集对齐后的对应性矩阵: M R N × N M \in \mathbb{R}^{N \times N} M = ( m i j ) M = (m_{ij})

(7) m i j = σ ( x i T y j 2 < τ ) m_{ij} = \sigma ( \| x_i - T y_j \|_2 < \tau) \tag{7}

  • σ \sigma 是标志函数。
  • 类似地,也可以计算特征空间距离矩阵 D R N × N D \in \mathbb{R}^{N \times N} D = d i j D = d_{ij}

(8) d i j = f ( x i ) f ( y i ) 2 d_{ij} = \| f(x_i) - f(y_i) \|_2 \tag{8}

  • N-tuple loss计算公式如下:

(9) L = ( M D M 2 2 + α m a x ( θ ( 1 M ) D , 0 ) N 2 M 2 2 ) L = \sum^* ( \frac{M \circ D}{\| M \|_2^2} + \alpha \frac{max(\theta - (1 - M) \circ D, 0)}{N^2 - \|M\|_2^2} ) \tag{9}

  • \circ 表示矩阵的哈达马乘积(hadamard product),即矩阵对应位置的数相乘。
  • α \alpha 为权衡同类和异类样本对间距的超参数, θ \theta 为异类样本点之间距离的下边界(最小值)。

2.4、训练网络

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/hongbin_xu/article/details/82973061
今日推荐