USIP: Unsupervised Stable Interest Point Detection from 3D Point Clouds 2019 论文笔记
新加坡国立大学
代码链接:https://github.com/lijx10/USIP
这是一篇通过无监督学习来进行点云关键点检测的文章.
整体的网络结构:
首先将输入的点云进行随机旋转平移变换,网络分别对两个点云进行关键点提取得到关键点 Q Q Q,并对每个关键点的不确定度进行预测得到 ∑ \sum ∑。
损失函数
-
Probabilistic Chamfer Loss
作者希望网络能够学习点云中的稳定的关键点(repeatability),也就是说两个场景信息大部分重合的点云,即网络的两个输入,应该能够提取出相同的关键点来。也就是说在根据输入点云之间的变换关系将两个预测的关键点变换到同一坐标系下之后,关键点对之间应该是非常靠近的,可以使用chamfer loss进行约束:
∑ i = 1 M min Q j ′ ∈ Q ′ ∥ Q i − Q j ′ ∥ 2 2 + ∑ j = 1 M min Q i ∈ Q ∥ Q i − Q j ′ ∥ 2 2 \sum_{i=1}^{M} \min _{Q_{j}^{\prime} \in \mathbf{Q}^{\prime}}\left\|Q_{i}-Q_{j}^{\prime}\right\|_{2}^{2}+\sum_{j=1}^{M} \min _{Q_{i} \in \mathbf{Q}}\left\|Q_{i}-Q_{j}^{\prime}\right\|_{2}^{2} i=1∑MQj′∈Q′min∥∥Qi−Qj′∥∥22+j=1∑MQi∈Qmin∥∥Qi−Qj′∥∥22
然而,不同关键点对之间的显著性(不确定度,权重,注意力)是不同的,因此论文提出了概率chamer loss 来实现这一约束:
L c = ∑ i = 1 M − ln p ( d i j ∣ σ i j ) + ∑ j = 1 M − ln p ( d j i ∣ σ j i ) \mathcal{L}_{c}=\sum_{i=1}^{M}-\ln p\left(d_{i j} \mid \sigma_{i j}\right)+\sum_{j=1}^{M}-\ln p\left(d_{j i} \mid \sigma_{j i}\right) Lc=i=1∑M−lnp(dij∣σij)+j=1∑M−lnp(dji∣σji)
其中 d i j d_{ij} dij是关键点对之间的实际距离, σ i j \sigma_{ij} σij则是关键点对ij之间的不确定度,p是根据关键点对的距离和不确定度计算出的概率分布:
σ j i = σ j ′ + σ i 2 > 0 , d j i = min Q i ∈ Q ∥ Q i − Q j ′ ∥ 2 ≥ 0 \sigma_{j i}=\frac{\sigma_{j}^{\prime}+\sigma_{i}}{2}>0, \quad d_{j i}=\min _{Q_{i} \in \mathbf{Q}}\left\|Q_{i}-Q_{j}^{\prime}\right\|_{2} \geq 0 σji=2σj′+σi>0,dji=Qi∈Qmin∥∥Qi−Qj′∥∥2≥0
p ( d i j ∣ σ i j ) = 1 σ i j exp ( − d i j σ i j ) p\left(d_{i j} \mid \sigma_{i j}\right)=\frac{1}{\sigma_{i j}} \exp \left(-\frac{d_{i j}}{\sigma_{i j}}\right) p(dij∣σij)=σij1exp(−σijdij) -
Point-to-Point Loss
在论文中为了提高关键点检测的定位精度,作者没有采用从原始点云中选择一些点作为关键点的方法,而是重新预测关键点的坐标,这样带来的问题是对于非凸的形状,如果其预测的关键点位于点云中心,那么该中心点就不会在点云上(如空心球)。作者使用点到点的Loss(图中L_P)来对预测的关键点进行约束防止其位置偏离点云:
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 Q 是 关 键 点 , X 是 点 云 \mathcal{L}_{\text {point }}=\sum_{i=1}^{M} \min _{X_{j} \in \mathbf{X}}\left\|Q_{i}-X_{j}\right\|_{2}^{2}+\sum_{i=1}^{M} \min _{\tilde{X}_{j} \in \tilde{\mathbf{X}}}\left\|\tilde{Q}_{i}-\tilde{X}_{j}\right\|_{2}^{2} \\ Q是关键点,X是点云 Lpoint =i=1∑MXj∈Xmin∥Qi−Xj∥22+i=1∑MX~j∈X~min∥∥∥Q~i−X~j∥∥∥22Q是关键点,X是点云
Feature Proposal Network
FPN用来生成关键点和对应的不确定度。
- 将点云进行最远点采样得到M个node集合S
- 使用SO-Net将点云X分配给每个node,“point-to-node grouping”,得到
{
{
X
1
1
∣
S
1
,
…
,
X
1
K
1
∣
S
1
}
,
⋯
,
{
X
M
1
∣
S
M
,
…
,
X
M
K
M
∣
S
M
}
}
\left\{\left\{X_{1}^{1}\left|S_{1}, \ldots, X_{1}^{K_{1}}\right| S_{1}\right\}, \cdots,\left\{X_{M}^{1}\left|S_{M}, \ldots, X_{M}^{K_{M}}\right| S_{M}\right\}\right\}
{{X11∣∣∣S1,…,X1K1∣∣∣S1},⋯,{XM1∣∣∣SM,…,XMKM∣∣∣SM}}
这种方法相对于KNN或者半径球搜索聚类的优势在于,Point-to-node grouping能够不重不漏的分配所有点云,以及automatically adapts to various scale and point density。 - 将每一个node代表的局部cluster进行坐标中心化,然后输入到一个PointNet-like network中得到局部特征向量G|s(共M个)
- 对G|S中的每个特征向量G_i|S_i进行KNN搜索,将最近邻的K个G进行坐标中心化然后通过一个网络得到特征向量H(共M个)
- 使用MLP对H进行预测得到M个关键点proposal,以及对应的不确定度 σ \sigma σ
这里M决定了关键点的密度,因此M越大关键点越多,每个关键点的感受野越小,同时KNN中的K近邻的K值越大,感受野就越大。
感受野太大的结果是每个cluter预测的关键点将越靠近中心,因而导致了网络的退化:极端情况是感受野包括了所有点云导致网络预测的关键点要么都在主方向上,要么都在中心点聚集:
作者指出可以使用M,k的值避免该情况。
实验结果
Relative repeatability 评估:(重复的关键点占总关键点的比例)
Robustness to Noise评估:
Robustness to Downsampling 评估:
关键点显著性评估(通过点云配准任务体现关键点的显著性):
配准任务同时考验了关键点和描述子的显著性性能,为了对关键点的显著性进行评估,作者使用了现有的3个描述子以及自己提出的一个(our own descriptor inspired by 3DFeat-Net with minor modifications, which is denoted as “Our Desc.”):