原论文:PPFNet: Global Context Aware Local Features for Robust 3D Point Matching
PPFNet
1、四个问题
- 要解决什么问题?
- 在3D视觉中,3D几何信息的局部描述子在许多任务中扮演了很重要的角色,诸如:对应性估计、匹配、配准、物体检测以及形状恢复等。尽管近10年间,出现了一系列手工设计(hand-craft)的3D特征描述子,但是却很难为3D点云数据生成理想的可重复且具有区分性的局部描述子。因为很多时候,3D点云中含有较多噪声,或是不完整的。
- 所以,这篇论文的目的是为3D点云生成理想且鲁棒的3D局部特征子。
- 用了什么方法解决?
- 文中,提出了PPFNet网络。基于深度学习方法来生成易区分且抗旋转的3D局部特征子。
- 首先,将一些简单的几何特征属性如:点的坐标、法线以及点对特征(point pair features, PPF),组合起来成原始特征;
- 随后,又设计了一个新的损失函数:N-tuple Loss。其类似于contrastive loss,能同时将多个同类或者不同类样本嵌入到一个欧式空间中,样本之间的差异用其特征向量的欧式距离表示。
- 最后,PPFNet网络的结构继承自PointNet,因此它天生就可以处理点云以及应对点的无序性。
- 文中,提出了PPFNet网络。基于深度学习方法来生成易区分且抗旋转的3D局部特征子。
- 效果如何?
- 文中对PPFNet进行了额外的验证实验,在准确率、速度、对点的稠密程度的鲁棒性以及抗3D平移旋转等方面都取得了最state-of-the-art的效果。
- 还存在什么问题?
- PPFNet的一个问题在于二次内存的占用,导致我们只能将硬件上的patch数限制为2000个。而另一个3D匹配方法——3D Match,则取到5000个,所以在某些特定任务上效果相比下略微差一些。
- 现在的3D匹配都是基于室内场景的3D特征点匹配,还没有针对更具一般性更难的场景下进行研究。
2、论文概述
2.1、相关工作
- hand-crafted的3D特征描述子:
- 旋转不变特征,比如点对特征(point pair feature, PPF),例如:PPFH、FPFH。
- 训练得到的3D特征描述子:
- 有一部分方法是直接处理点云,进行编码。比如,TDF、TSDF等。最近有一项此类的研究工作——3DMatch,它先使用TSDF进行编码,随后使用一个contrastiev loss损失函数来衡量样本间的一致性并训练网络。
- 另外一个分支,是基于3D信息获取投影的2D图片或者深度图,并使用已经广泛研究过的基于2D图片的分类网络。
- 此外还有一个分支,图网络(graph networks)也可以用于表示点集。
- 一个比较重要的突破源自于PointNet,可以直接输入原始的3D点云。之后还扩展为了PointNet++,以更好地提取局部信息。
2.2、背景
2.2.1、动机
- 假设有两个点集X∈Rn×3X \in \mathbb{R}^{n \times 3}X∈Rn×3和Y∈Rn×3Y \in \mathbb{R}^{n \times 3}Y∈Rn×3,其中xix_ixi和yiy_iyi分别表示连个点集中对应的第iii个点的坐标。
- 假设每个点xix_ixi都有一个与之对应的yiy_iyi,使用一个置换矩阵P∈PnP \in \mathbb{P}^nP∈Pn来表示这个对应关系。
- 两个点集之间的变换关系矩阵可以定义为:T={R∈SO(3),t∈R3}T=\{ R \in SO(3), t \in \mathbb{R}^3 \}T={R∈SO(3),t∈R3}。
- 点集之间的L2距离如下:
(1)d(X,Y∣R,t,P)=1n∑i=1n∥xi−Ryi(P)−t∥d(X, Y | R, t, P) = \frac{1}{n} \sum_{i=1}^{n} \| x_i - Ry_{i(P)} - t \| \tag{1}d(X,Y∣R,t,P)=n1i=1∑n∥xi−Ryi(P)−t∥(1)
- 其中,xix_ixi与yi(P)y_{i(P)}yi(P)之间的对应关系为PPP。
- 假设XXX和YYY的维度相同,即∣X∣=∣Y∣=n|X| = |Y| = n∣X∣=∣Y∣=n。
- 式子1可以转为如下式:
(2)d(X,Y∣T,P)=1n∥X−PYTT∥d(X, Y | T, P) = \frac{1}{n} \| X - P Y T^T \| \tag{2}d(X,Y∣T,P)=n1∥X−PYTT∥(2)
- 理想情况下,如果两个点集相互匹配,那么d(X,Y∣T,P)≈0d(X, Y | T, P) \approx 0d(X,Y∣T,P)≈0。
- 这也意味着,我们需要寻找一个也满足类似性质的非线性映射关系:f(x)f(x)f(x)。
(3)df(X,Y∣T,P)=1n∥f(X)−f(PYTT)∥ d_f(X, Y | T, P) = \frac{1}{n} \| f(X) - f(PYT^T) \| \tag{3}df(X,Y∣T,P)=n1∥f(X)−f(PYTT)∥(3)
- 如果两个点集相互匹配,那么也会有:df(X,Y∣T,P)≈0d_f(X, Y | T, P) \approx 0df(X,Y∣T,P)≈0。
- 此外,为了保证旋转和置换不变性,最好能保证f(Y)≈f(PYTT)f(Y) \approx f(PYT^T)f(Y)≈f(PYTT)。
- 很自然地,就想到了PointNet架构,它可以处理无序点集,并提取成全局特征。
2.2.2、Point Pair Features(PPF)
- PPF是一个4维的描述子,表示的是一对点x1x_1x1和x2x_2x2的表面特征,计算公式如下:
(4)ψ12=(∥d∥,∠(n1,d),∠(n2,d),∠(n1,n1))\psi_{12} = (\|d\|, \angle{(n1, d)}, \angle{(n2, d)}, \angle{(n1, n1)} ) \tag{4}ψ12=(∥d∥,∠(n1,d),∠(n2,d),∠(n1,n1))(4)
- ddd:两个点之间的差值,是一个向量。
- n1n_1n1、$ n_2分别是分别是分别是x_1 、、、 x_2$上的法向量。
- ∥˙∥\| \dot{} \|∥˙∥:欧氏距离。
- ∠\angle∠表示向量之间的夹角:
(5)∠(v1,v2)=atan2(∥v1×v2∥,v1⋅v2) \angle(v_1, v_2) = atan2(\| v_1 \times v_2 \|, v_1 \cdot v2) \tag{5}∠(v1,v2)=atan2(∥v1×v2∥,v1⋅v2)(5)
2.2.3、PointNet
- 文中只是用了原始的PointNet(vanilla PointNet),不带STN单元。
- PointNet是通过一些独立的MLP来处理点云数据,最后通过一个全局的最大池化来提取全局特征,可以处理无序、长度可变化的点集。(具体内容不做赘述,可以参考PointNet的论文)
2.3、PPFNet
2.3.1、局部几何信息编码
- xrx_rxr为中心点,xix_ixi表示一个以xrx_rxr为中心的patch内的点(即iii为rrr领域的点)
(6)Fr={xr,nr,xi,...,ni,...,ψri,...}F_r = \{ x_r, n_r, x_i, ..., n_i, ..., \psi_{ri}, ... \} \tag{6}Fr={xr,nr,xi,...,ni,...,ψri,...}(6)
2.3.2、网络结构
- 输入包含有N个均匀采样的局部区域(local patches)。
- 从这些区域中提取特征,随后送入mini-PointNet中,进一步提取特征。所有的PointNet的权值和偏置参数都共享。
- 接着使用一个最大池化层将各个patch的局部特征聚合为全局特征。
- 然后再把全局特征拼接到各个局部特征上。
- 最后使用一组MLP来融合局部和全局特征得到最终的3D特征描述子。
2.3.3、N-tuple Loss
- 两种常用的loss函数:contrastive loss和triplet loss。尽管这两个loss会尽可能区分2/3个样本,但是也存在一些隐患,如图中所示,尽管都满足了减小类内间距增加类间间距的要求,但是并没有保证所有的样本都能满足这一性质。而样本对的选取是随机的,无法保证一定能包括所有可能情况。
- 将这类loss推广到N个样本的情况,提出了N-tuple loss。
- 给定ground truth的变换矩阵TTT,首先要计算点集对齐后的对应性矩阵:M∈RN×NM \in \mathbb{R}^{N \times N}M∈RN×N。M=(mij)M = (m_{ij})M=(mij)
(7)mij=σ(∥xi−Tyj∥2<τ)m_{ij} = \sigma ( \| x_i - T y_j \|_2 < \tau) \tag{7} mij=σ(∥xi−Tyj∥2<τ)(7)
- σ\sigmaσ是标志函数。
- 类似地,也可以计算特征空间距离矩阵D∈RN×ND \in \mathbb{R}^{N \times N}D∈RN×N和D=dijD = d_{ij}D=dij:
(8)dij=∥f(xi)−f(yi)∥2d_{ij} = \| f(x_i) - f(y_i) \|_2 \tag{8}dij=∥f(xi)−f(yi)∥2(8)
- N-tuple loss计算公式如下:
(9)L=∑∗(M∘D∥M∥22+αmax(θ−(1−M)∘D,0)N2−∥M∥22) 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}L=∑∗(∥M∥22M∘D+αN2−∥M∥22max(θ−(1−M)∘D,0))(9)
- ∘\circ∘表示矩阵的哈达马乘积(hadamard product),即矩阵对应位置的数相乘。
- α\alphaα为权衡同类和异类样本对间距的超参数,θ\thetaθ为异类样本点之间距离的下边界(最小值)。