版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hongbin_xu/article/details/82973061
原论文: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、动机
- 假设有两个点集 和 ,其中 和 分别表示连个点集中对应的第 个点的坐标。
- 假设每个点 都有一个与之对应的 ,使用一个置换矩阵 来表示这个对应关系。
- 两个点集之间的变换关系矩阵可以定义为: 。
- 点集之间的L2距离如下:
- 其中, 与 之间的对应关系为 。
- 假设 和 的维度相同,即 。
- 式子1可以转为如下式:
- 理想情况下,如果两个点集相互匹配,那么 。
- 这也意味着,我们需要寻找一个也满足类似性质的非线性映射关系: 。
- 如果两个点集相互匹配,那么也会有: 。
- 此外,为了保证旋转和置换不变性,最好能保证 。
- 很自然地,就想到了PointNet架构,它可以处理无序点集,并提取成全局特征。
2.2.2、Point Pair Features(PPF)
- PPF是一个4维的描述子,表示的是一对点 和 的表面特征,计算公式如下:
- :两个点之间的差值,是一个向量。
- 、$ n_2 x_1 x_2$上的法向量。
- :欧氏距离。
- 表示向量之间的夹角:
2.2.3、PointNet
- 文中只是用了原始的PointNet(vanilla PointNet),不带STN单元。
- PointNet是通过一些独立的MLP来处理点云数据,最后通过一个全局的最大池化来提取全局特征,可以处理无序、长度可变化的点集。(具体内容不做赘述,可以参考PointNet的论文)
2.3、PPFNet
2.3.1、局部几何信息编码
- 为中心点, 表示一个以 为中心的patch内的点(即 为 领域的点)
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的变换矩阵 ,首先要计算点集对齐后的对应性矩阵: 。
- 是标志函数。
- 类似地,也可以计算特征空间距离矩阵 和 :
- N-tuple loss计算公式如下:
- 表示矩阵的哈达马乘积(hadamard product),即矩阵对应位置的数相乘。
- 为权衡同类和异类样本对间距的超参数, 为异类样本点之间距离的下边界(最小值)。