零、概要
- 论文: USIP: Unsupervised Stable Interest Point Detection from 3D Point Clouds
- tag:
ICCV 2019
;Keypoints
,Registration
- 代码: https://github.com/lijx10/USIP
- 作者: Jiaxin Li, Gim Hee Lee
- 机构: National University of Singapore
- 笔者整理了一个最近几年150多篇点云的论文列表,欢迎大家一块学习交流。
0.0 摘要
论文中提出了USIP检测器:一种无监督的稳定的兴趣点检测器(Unsupervised Stable Interest Point detector),它可以在不需要任何Ground Truth训练集的情况下,在任何变换的3D点云中,检测出高度可重复的(highly repeatable)和精确定位的关键点。USIP由一个feature proposal 网络组成,该网络从输入的3D点云和对其进行变换后的3D点云中学习稳定的关键点。作者进行退化分析,并且提出解决方法。论文中提出了基于概率的chamfer loss,对输入点云对的关键点之间的距离进行优化。对来自激光雷达、RGB-D和CAD模型的几个模拟和真实三维点云数据集,进行大量可重复性的测试,实验结果表明USIP明显优于
现有的手工制作和基于深度学习的关键点检测器。
一、论文的出发点和贡献
三维兴趣点或关键点检测,是指在任意的SE(3)变换的情况下,在三维点云中寻找具有高度可重复性的稳定点的问题。这些检测到的关键点在很多计算机视觉和机器人任务中扮演着重要角色。
大多数现有的3D关键点检测器仍然是人工设计的,这些人工设计的检测器都有一个共同点,即依赖点的局部几何特征来选择关键点,因此这些检测器的性能在噪声、密度变化、和坐标变换的干扰下性能下降。由于缺少带有ground truth的训练集,非常少的基于深度学习的关键点检测器被提出,据作者所说,当时唯一存在的基于深度学习的检测器是3DFeatNet[ECCV 2018],但3DFeatNet主要集中在学习具有区分性的描述子,而预测的score map用来估计每个点显著性只是它的副产品,因此它不能保证关键点检测的良好性能。
因此,作者提出了USIP检测器: 一种基于深度学习的无监督的稳定的兴趣点检测器。作者的主要贡献在于:
- USIP是完全无监督的,因此避免了对有标签的点云数据的需要;
- 作者对USIP进行了退化了分析,并提出了接近方案;
- 作者提出了Feature Proposal Network(FPN),输入是原始点云和根据FPS选择的M个点,输出是M个关键点(不一定是输入点云中的点)的坐标和每个关键点的显著性不确定分数
- 作者引入了基于概率的chamfer loss和点-点损失,来提高关键点的可重复性和定位的精确性。
二、论文的方法
设训练集中的一个点云 X = [ X 1 , X 2 , . . . , X N ] ∈ R 3 × N X = [X_1, X_2, ..., X_N] \in \mathbb R^{3 \times N} X=[X1,X2,...,XN]∈R3×N和 L L L个随机生成的变换矩阵 { T 1 , . . . , T L } \lbrace T_1, ..., T_L\rbrace {T1,...,TL}, T l ∈ S E ( 3 ) T_l \in SE(3) Tl∈SE(3),将每个变换矩阵作用于点云 X X X,得到 L L L对数据 { { X , X 1 ~ } , . . . , { X , X L ~ } } \lbrace \lbrace X, \tilde{X_1} \rbrace, ..., \lbrace X, \tilde{X_L} \rbrace \rbrace {{X,X1~},...,{X,XL~}},作为训练时网络的输入。
2.1 Feature Proposal Network
作者提出的FPN(Feature Proposal Network)如Figure 2(b)所示。FPN首先从输入点云中 X ∈ R 3 × N X \in \mathbb R^{3 \times N} X∈R3×N,根据FPS(Farthest Point Sampling)选择M个Nodes,记为 S = [ S 1 , . . . , S M ] ∈ R 3 × M S = [S_1, ..., S_M] \in \mathbb R^{3 \times M} S=[S1,...,SM]∈R3×M。对于每一个node S m ∈ S S_m \in S Sm∈S,作者使用point-to-node采样方式[每个point选择距离最近的node]对其进行分组,得到 { X m 1 ∣ S m , . . . , X m K m ∣ S m } \lbrace X_m^1 | S_m, ..., X_m^{K_m} |S_m \rbrace {Xm1∣Sm,...,XmKm∣Sm}, K m K_m Km表示与node S m S_m Sm有关的点的个数。为了实现平移不变性,作者对其进行了去均值操作,得到 { X ^ m 1 ∣ S m , . . . , X ^ m K m ∣ S m } \lbrace \hat X_m^1 | S_m, ..., \hat X_m^{K_m} |S_m \rbrace {X^m1∣Sm,...,X^mKm∣Sm},其中 X ^ m K m = X m K m − S m \hat X_m^{K_m} = X_m^{K_m} - S_m X^mKm=XmKm−Sm。作者在代码实现的时候,并没有选择 S m S_m Sm,而是减去 X ^ m 1 , . . . , X ^ m K m \hat X_m^1, ..., \hat X_m^{K_m} X^m1,...,X^mKm的均值。这样就得到了去中心化的每个点的坐标。
这里就是Figure 2(b)第一个网络(浅红色背景,记为PointNet)之前的过程,但看了作者实现的代码之后,发现这里送入PointNet的并非M个nodes及其邻域的点作为一个group,其实是去均值后的输入点云 X decentered ∈ R 3 × N X_{\text{decentered}} \in \mathbb R^{3 \times N} Xdecentered∈R3×N,这里的去均值化就是通过前面第一段介绍的过程。通过PointNet网络(64, 64, 64)后,输出特征 F ∈ R C × N F \in \mathbb R^{C \times N} F∈RC×N。这样就获得了每个点的特征,通过gather操作得到M个node的特征。作者在代码实现的时候,连续经过了两个PointNet,而且有一些cuda的操作没有看明白(感觉上这两次PointNet都没有考虑邻域特征),但不管怎样,最后得到了每个node的特征 G ∈ R C 1 × M G \in \mathbb R ^{C1 \times M} G∈RC1×M。
对每一个node S m S_m Sm在nodes节点中进行KNN操作,得到 { { ( G m 1 , S m 1 ) ∣ S m } , . . . , { ( G m K , S m K ) ∣ S m } } \lbrace \lbrace (G_m^1, S_m^1) | S_m \rbrace, ..., \lbrace (G_m^K,S_m^K) | S_m \rbrace\rbrace {{(Gm1,Sm1)∣Sm},...,{(GmK,SmK)∣Sm}},对邻域的坐标信息进行归一化, S ^ m k = S m k − S m \hat S_m^k = S_m^k - S_m S^mk=Smk−Sm,得到 { { ( G m 1 , S ^ m 1 ) ∣ S m } , . . . , { ( G m K , S ^ m K ) ∣ S m } } \lbrace \lbrace (G_m^1, \hat S_m^1) | S_m \rbrace, ..., \lbrace (G_m^K, \hat S_m^K) | S_m \rbrace\rbrace {{(Gm1,S^m1)∣Sm},...,{(GmK,S^mK)∣Sm}},这样M个node对应一个维度为(C+3, M, K)的特征,进行MLP(128, 256, 256)和池化操作,得到(256, M)的特征,将其与(256, M, K)的特征在特征维度上进行caoncat,得到(512, M, K),再经过MLP(512, C2)和池化操作,得到(C2, M)的特征。
对上述(C2, M)的特征与KNN之前的特征(C1, M)在特征维度上进行Concat得到(C1 + C2, M)的特征,进行MLP(512, 256, 4),得到了(4, M)的输出,其中输出的前3个维度表示关键点的相对位置信息,加上node的位置表示关键点的绝对位置信息,第4维度经过softplus表示显著性的不确定性。不确定性越小越好。
在网络的预测阶段,输入是 X ∈ R 3 × N X \in \mathbb R^{3 \times N} X∈R3×N和Node S ∈ R 3 × M S \in \mathbb R^{3 \times M} S∈R3×M,经过FPN网络,输出 ( Q 1 , σ 1 ) , . . . , ( Q M , σ M ) (Q_1, \sigma_1), ..., (Q_M, \sigma_M) (Q1,σ1),...,(QM,σM),其中 Q m ∈ R 3 × M , σ ∈ R + Q_m \in \mathbb R^{3 \times M}, \sigma \in R^+ Qm∈R3×M,σ∈R+分别表示M个关键点的坐标和不确定性。对这M个关键点进行非极大值抑制,保证关键点的选择不会太密集。最后根据关键点的不确定性进行排序,选择不确定性最小的关键点作为最终的输出。
在网络的训练阶段,把输入的成对点云 X 1 X_1 X1和 X 2 X_2 X2及其Nodes点 S 1 S_1 S1和 S 2 S_2 S2进行Concat,得到 X X X和 S S S。送入网络FPN,输出 Q Q Q和 σ \sigma σ,再将它们根据分割成两部分 Q 1 Q_1 Q1和 σ 1 \sigma_1 σ1以及 Q 2 Q_2 Q2和 σ 2 \sigma_2 σ2。
2.2 损失函数
在无监督情况下,如何设计loss使FPN网络能够work呢 ? 论文中提出了两个损失函数: 基于概率的(Probabilistic) Chamfer Loss和点-点(point-to-point) Loss
-
Probabilistic Chamfer Loss
作者假设显著性的不确定性在变换后不受影响。设 Q Q Q和 Q ^ \hat Q Q^分别表示FPN网络的输出, Q ′ = T − 1 ( Q ^ ) Q' = T^{-1}(\hat Q) Q′=T−1(Q^)。在任何变换下,从三维点云中检测高精确点位和可重复性高的关键点的目标可以通过最小化Q和Q’的不同来实现,一种最简单的方式是Chamfer Loss:
L c = Σ i = 1 M min Q j ′ ∈ Q ′ ∣ ∣ Q i − Q j ′ ∣ ∣ 2 2 + Σ j = 1 M min Q i ∈ Q ∣ ∣ Q i − Q j ′ ∣ ∣ L_c = \Sigma_{i=1}^M \min_{Q_j' \in Q'}||Q_i - Q_j'||_2^2 + \Sigma_{j=1}^M \min_{Q_i \in Q} ||Q_i - Q_j'|| Lc=Σi=1MQj′∈Q′min∣∣Qi−Qj′∣∣22+Σj=1MQi∈Qmin∣∣Qi−Qj′∣∣
但是每一个proposal关键点的显著性的不确定并不是一致的,因此作者提出了基于概率的Chamfer Loss:
L c = Σ i = 1 M − ln p ( d i j ∣ σ i j ) + Σ j = 1 M − ln p ( d j i ∣ σ j i ) = Σ i = 1 M ( ln σ i j + d i j d i j ) + Σ j = 1 M ( ln σ j i + d j i d j i ) \begin{aligned}L_c &= \Sigma_{i=1}^M-\text{ln}p(d_{ij} | \sigma_{ij}) + \Sigma_{j=1}^M-\text{ln}p(d_{ji}|\sigma_{ji}) \\ &= \Sigma_{i=1}^M (\text{ln} \sigma_{ij} + \frac{d_{ij}}{d_{ij}}) + \Sigma_{j=1}^M (\text{ln} \sigma_{ji} + \frac{d_{ji}}{d_{ji}})\end{aligned} Lc=Σi=1M−lnp(dij∣σij)+Σj=1M−lnp(dji∣σji)=Σi=1M(lnσij+dijdij)+Σj=1M(lnσji+djidji)
其中, σ j i = σ j ′ + σ i 2 , d j i = min Q i ∈ Q ∣ ∣ Q i − Q j ′ ∣ ∣ 2 2 \sigma_{ji} = \frac{\sigma_j' + \sigma_i}{2}, d_{ji} = \min_{Q_i \in Q}||Q_i - Q_j'||_2^2 σji=2σj′+σi,dji=minQi∈Q∣∣Qi−Qj′∣∣22
-
Point-to-Point Loss
为了防止产生距离输入点云比较远的错误关键点的产生,作者提出了Point-to-Point Loss,
L point = Σ i = 1 M min X j ∈ X ∣ ∣ Q i − X j ∣ ∣ 2 2 + Σ i = 1 M min X ^ j ∈ X ^ ∣ ∣ Q ^ i − X ^ j ∣ ∣ 2 2 L_{\text{point}} = \Sigma_{i=1}^M\min_{X_j \in X}||Q_i - X_j||_2^2 + \Sigma_{i=1}^M\min_{\hat X_j \in \hat X}||\hat Q_i - \hat X_j||_2^2 Lpoint=Σi=1MXj∈Xmin∣∣Qi−Xj∣∣22+Σi=1MX^j∈X^min∣∣Q^i−X^j∣∣22
另外,作者还提出了Point-to-Plane Loss:
L plane = Σ i = 1 M N j T ( Q i − X j ) + Σ i = 1 M N ^ j ( Q ^ i − X ^ j ) L_{\text{plane}} = \Sigma_{i=1}^MN_j^T(Q_i - X_j) + \Sigma_{i=1}^M \hat N_j(\hat Q_i - \hat X_j) Lplane=Σi=1MNjT(Qi−Xj)+Σi=1MN^j(Q^i−X^j)
N j N_j Nj和 N ^ j \hat N_j N^j分别表示在 X X X和 X ^ \hat X X^中距离点 Q j Q_j Qj和 Q ^ j ′ \hat Q_j' Q^j′最近平面的法向量。
2.3 退化分析
FPN中的nodes的数量M和KNN的K值都和网络的感受野有很大关系,M值越小网络的感受野越大;K值越大,网络的感受野越大。这两个值都和网络的退化有关系,如Figure 3所示,在M值固定(M=64)时,FPN检测到的关键点随着K值变化的情况。
三、论文的实验
作者从repeatablitiy,distinctiveness和计算效率上评估USIP,检测器算法ISS,Harris-3D,SIFT3D和基于学习的3DFeat-Net进行比较。作者在Oxford数据集上训练户外雷达的模型,在3DMatch数据集上训练RGBD模型,在ModelNet40上训练object的模型。
3.1 Repeatablitiy
可重复性这次词前面经常提到,指的是检测器在不同干扰下,如视点变化、噪声、缺失部件等,在相同位置检测关键点的能力。具体地,给定一对点云 ( X , X ^ ) (X, \hat X) (X,X^),关键点检测器分别检测到关键点 Q = [ Q 1 , . . . , Q M ] Q = [Q_1, ..., Q_M] Q=[Q1,...,QM]和 Q ^ = [ Q ^ 1 , . . . , Q ^ M ] \hat Q = [\hat Q_1, ..., \hat Q_M] Q^=[Q^1,...,Q^M],对于关键点 Q i Q_i Qi,如果
∣ ∣ R Q i + t − Q ^ j ∣ ∣ 2 < ϵ ||RQ_i + t - \hat Q_j||_2 < \epsilon ∣∣RQi+t−Q^j∣∣2<ϵ
其中 Q ^ j \hat Q_j Q^j是距离 R Q i + t RQ_i + t RQi+t最近的点,那么称关键点 Q i Q_i Qi是可重复的(repeatable)。为了公平的对比,作者使用了相对Repeatablity = ∣ Q rep ∣ / ∣ Q ∣ |Q_{\text{rep}}| / |Q| ∣Qrep∣/∣Q∣, Q rep Q_{\text{rep}} Qrep表示通过了可重复性测试的关键点。
作者在KITTI, Oxford, RedWood和ModelNet40数据集上进行了评估可重复性(注意,作者的USIP并未在KITTI和RedWood数据集上进行训练),实验结果如Figure 4所示,USIP在四个不同数据集上和不同的关键点数量上,明显优于其他5个方法。
Figure 5是几种不同的模型在不同的数据集上,在有噪声的情况下的Repeatablity的对比,Figure 6是在不同下采样比例下的Repeatablity的对比,可以看到USIP的性能明显优于其他几种算法或者性能一致较差。
3.2 Distinctiveness
区别性(distinctiveness)是衡量点云配准中关键点检测器和描述子性能的一种度量。论文中基于几种不同的描述子(3DFeatNet, FPFH, SHOT和Our Desc(作者自己设计的),对USIP在点云配准任务中进行了评估。实验的数据集为KTIIT。一对点云成功的配准,就是指这一对点云的相对平移误差(Relative Translational Error, RTE)小于2m和相对旋转误差(Relative Rotational Error, RRE)小于5°。实验结果如Tab.2所示:
上述实验,特征点的数量均固定设置为256(对于USIP和3DFeatNet都不一定是最好的选择),评估指标是配准失误率(Registration Failure)和Inlier Ration(这个论文中没有详细介绍,感觉应该是和RANSAC算法有关)。从Table 2中可以看到,USIP和各种描述子都工作的特别好,而且相比其他的特征点检测器,在Registration Failure Rate和Inlier Ratio方面均明显好于其它算法。
3.3 计算效率
作者从两个方面评估了USIP的速度,一个是固定输入点云的数量,统计找到不同数量关键点的时间,实验结果如Table 5(输入点云的点的数量为16384)所示,可以看到计算关键点的时间随数量没有明显增多。
另一方面是,设置不同的输入点云数量,统计计算关键点的时间,实验结果如Table 6(不同的方案均设置找到256个关键点)所示,USIP明显优于其他算法,而且随着点的的数量的增多,计算关键点的时并没有明显增多。
3.4 Ablation Studies
-
point-to-node grouping vs knn vs ball grouping
实验结果如Table 4所示,knn和ball query group在Kitti数据集上,相比于point-to-node方法,具有明显性能的下降。
-
probabilistic chamfer loss vs normal chamfer loss
作者就probabilistic chamfer loss和normal chamfer loss在KTIIT和ModelNet40数据集上进行了实验,实验结果如Figure 9所示,probabilistic chamfer loss的结果明显优于normal chamfer loss。
-
effect of point-to-point loss
从Figure 10可以看到,point-to-point loss有效的限制了关键点距离输入点云不能太远。
四、对论文的看法
-
优点:
- 无监督的loss: 在无监督的情况下,可以有效的检测关键点,还是具有很大创新性的。
- 基于作者提供的权重,在ModelNet40数据集上进行了可视化实验,效果还不错,下面两个图为测试集中/rotated/800.npy的关键点检测结果(不同视角):
-
不足:
- Repeatablity指标较低,仍旧有较大提升空间。