[ICCV 2019] Fully Convolutional Geometric Features

零、概要

从点云中提取几何特征是配准、重建、跟踪等应用的第一步。SOTA的方法往往需要计算底层特征作为输入或者提取基于patch的有限感受野的特征。在本论文中,作者提出了FCGF(Fully-Convolutional Geometric Features),它通过全卷积网络一次计算得到点云特征;作者还提出了新的度量学习损失,可以显著提升性能。FCGF是紧凑的,同时捕获了广泛的空间上下文,并可扩展到大型场景。论文中在室内数据集和室外数据集均进行了验证,FCGF在不需要预处理时达到了SOTA精度,同时比其它精确的办法快600倍,而且结构是紧凑的(32维)。

一、论文的出发点和贡献

在许多点云配准、跟踪和场景流估计(scene flow estimation)任务中,寻找几何点对应(geometric correspondences)关系是一个关键的步骤。因此,大量的工作集中在设计具有区分性的3D特征,进而建立对应关系。

早期的3D特征描述主要依赖于人工设计的特征描述子,如SHOT、FPH和FPFH等,这些局部描述子可以区分局部几何特征。最近,注意力逐渐转向了基于深度学习的三维特征,比如PPF-FoldNet(ECCV 2018),PPFNet(CVPR 2018)和3DFeat-Net(ECCV 2018)等。之前的这些工作中存在一些问题:

  • 提取小的3D patch,将其映射到低维空间。这不仅限制了感受野,而且计算效率也很低,因为即使对于重叠的三维区域,网络的中间表示也都是单独计算的。
  • 使用昂贵的底层几何特征作为输入降低了特征计算的速度。
  • 只对一些interest points提取特征,导致分辨率(点的数量)下降,因此降低了后续的配准精度。

全卷积网络是高效的,因为它们在具有重叠感受野的神经元之间共享中间激活(intermediate activations)。此外,全卷积网络中不是直接操作小的patch,因此神经元具有更大的感受野。而且,全卷积网络产生密集的输出,这非常适用于详细描述场景的任务。

尽管全卷积网络具有这些优点,但由于三维数据的特点,全卷积网络并没有广泛应用到三维几何特征的提取。卷积网络用于3D数据时,标准输入是一个四维的数据(x, y, z, f): 三个空间维度(x, y, z)和一个特征维度f。但大多数三维体素都是空的,导致这种表示占用内存较大。

在论文中,作者采用一种稀疏tensor来表示3D数据,采用Minkowski卷积代替传统卷积,提出了ResUNet用于提取输入点云中每个点的特征,另外提出了新的loss用于全卷积度量学习。该网络不需要数据预处理(提取简单特征),也不需要patch的输入,而且能够产生具有SOTA区分性的高分辨率特征。作者在3DMatch数据集和KITTI数据集中验证了FCGF(Fully Convolutional Geometric Features)的表示能力和提取特征的速度,实验结果如Figure 1。

在这里插入图片描述

二、论文的方法

论文中的数据表示和卷积操作主要基于MinkowskiEngine,这里不详细介绍,更多信息请查看MinkowskiEngine主页

2.1 点云数据的稀疏表示

MinkowskiEngine把点云表示成两部分: 坐标矩阵 C C C和特征矩阵 F F F

C = [ x 1 y 1 z 1 b 1 : : x N y N z N b N ] C = \left[ \begin{matrix} x_1 & y_1 & z_1 & b_1\\ & : & : & \\ x_N & y_N & z_N & b_N \end{matrix} \right] C=x1xNy1:yNz1:zNb1bN F = [ f 1 T : f N T ] F = \left[ \begin{matrix} f_1^T \\ : \\ f_N^T \end{matrix} \right] F=f1T:fNT

其中 ( x i , y i , z i ) (x_i, y_i, z_i) (xi,yi,zi)表示点云的坐标, b i b_i bi表示 ( x i , y i , z i ) (x_i, y_i, z_i) (xi,yi,zi)属于batch中的哪个点云(MinkowskiEngine也是把点云组织成batch进行训练), N N N表示1个batch中所有点的数量, f i T f_i^T fiT表示第 i i i个点的特征,可以是1维或者3维或者其它维度的。

这样的表示,相比于3D卷积(X, Y, Z, D)的表示,可以节省空间。[N << XYZ -> N * 4 + N*D << XYZD, << 表示远小于]

2.2 稀疏点云数据的卷积
  • 常规3D卷积:

    x u out = Σ i ∈ V ( K ) W i x u + i in , for u ∈ Z 3 \text{x}_u^{\text{out}} = \Sigma_{\text{i} \in V(K)}W_i\text{x}_{u + \text{i}}^{\text{in}}, \quad \text{for} \quad u \in \mathbb Z^3 xuout=ΣiV(K)Wixu+iin,foruZ3

    u ∈ Z 3 u \in \mathbb Z^3 uZ3表示3D坐标, K K K表示卷积中的kernel_size,V(K)是3维空间中的offsets集合, W i ∈ N out × N in W_i \in \mathbb N^{\text {out}} \times \mathbb N^ \text{in} WiNout×Nin

  • Minkowski 卷积

    x u out = Σ i ∈ N ( u , C in ) W i x u + i in , for u ∈ C out \text{x}_u^{\text{out}} = \Sigma_{\text{i} \in N(u, \mathbb C^{\text{in}})}W_i\text{x}_{u + \text{i}}^{\text{in}}, \quad \text{for} \quad u \in \mathbb C^{\text{out}} xuout=ΣiN(u,Cin)Wixu+iin,foruCout

    对于常规3D卷积,可以看到变化的是 u ∈ C out u \in \mathbb C^{\text{out}} uCout i ∈ N ( u , C in ) \text{i} \in N(u, \mathbb C^{\text{in}}) iN(u,Cin) C in \mathbb C^{\text{in}} Cin C out \mathbb C^{\text{out}} Cout是预定义的稀疏张量的输入坐标和输出坐标, N ( u , C in ) = { i ∣ u + i ∈ C in , i ∈ V ( K ) } N(u, \mathbb C^{\text{in}}) = \lbrace \text{i} | u + \text{i} \in \mathbb C^{\text{in}}, i \in V(K) \rbrace N(u,Cin)={iu+iCin,iV(K)}。因此,相比于常规卷积,不是每一个(x, y, z)位置都会有一个卷积的输出,同时并不是每一个offset位置都会参与计算卷积。

2.3 网络模型的架构

论文中的模型架构ResUNet是一种U-Net类的网络架构,在编码和解码部分均包括残差结构,在解码和编码之间通过skip连接来增强特征的表达能力,如Figure 2所示。

在这里插入图片描述

  • 残差结构: Res = [(Conv + Bn + ReLU) + (Conv + Bn)], Output = ReLU(input + Res(input)),其中的Conv, Bn, ReLU操作均为稀疏数据的卷积,即Minkowski下的卷积操作。
  • 编码: 包括N(Figure2中N=3)个(Conv + Bn + Res)结构,kernel size一般设置为3,第一个Conv中的stride=1,其他Conv的stride一般设置为2。
  • 解码: 包括N(数量同编码部分)个(transposed Conv + Bn + Res)结构,除了第一个transposed Conv结构外,其他transposed Conv结构的输入均是encoder和decoder进行concat后的tensor。同时,最后一个transposed Conv中的kernel size为1,stride为1,其它的transposed Conv中的kernel size均为3,stride均为2。
  • 特征提取层: Conv(kernel size=1, stride=1),其后无Bn和ReLU结构。
  • 官方代码: https://github.com/chrischoy/FCGF/blob/master/model/resunet.py

ResUNet架构中的MinkowskiEngine下的Conv, Bn, ReLU, transposed Conv换成常规的2D图像下面的对应操作,就是一个很普通的网络架构,关于MinkowskiEngine的一些基础知识和代码实践欢迎参考https://zhuanlan.zhihu.com/p/304117161

2.4 损失函数

在作者的代码中,总共实现了4种不同的损失函数,分别是Contrastive Loss, Hardest-contrastive Loss, Triplet Loss和Hardest-triplet Loss。上述四种Loss主要基于一种思想: 如果 ( i , j ) (i, j) (i,j)是positive pairs,则它们特征 f i , f j f_i, f_j fi,fj间的距离应该满足 D ( f i , f j ) − > 0 D(f_i, f_j) -> 0 D(fi,fj)>0(为了防止过拟合,要求 D ( f i , f j ) < m p D(f_i, f_j) < m_p D(fi,fj)<mp即可);如果 ( i , j ) (i, j) (i,j)是negative pairs,它们的特征 f i , f j f_i, f_j fi,fj的距离 D ( f i , f j ) D(f_i, f_j) D(fi,fj)应该满足 D ( f i , f j ) > m n D(f_i, f_j) > m_n D(fi,fj)>mn m p m_p mp m n m_n mn是positive pairs和negative pairs的margin。

在这里插入图片描述

  • Contrastive Loss

    L ( f i , f j ) = I i j [ D ( f i , f j ) − m p ] + 2 + I ‾ i j [ m n − D ( f i , f j ) ] + 2 L(f_i, f_j) = I_{ij}[D(f_i, f_j) - m_p]_+^2 + \overline I_{ij}[m_n - D(f_i, f_j)]_+^2 L(fi,fj)=Iij[D(fi,fj)mp]+2+Iij[mnD(fi,fj)]+2

    ( i , j ) (i, j) (i,j)是positive pairs是 I i j = 1 I_{ij} = 1 Iij=1,否则 I i j = 0 I_{ij} = 0 Iij=0 I ‾ i j \overline I_{ij} Iij则相反。

    positive pairs由3DMatch数据的G.T. correspondences获得,negative pairs随机产生,但通过hash过滤掉属于positive pairs的点对。如Figure 3所示,蓝色箭头连接的点表示positive pairs,橘色箭头连接的点表示negative pairs。

  • Hardest-contrastive Loss

    L C = Σ ( i , j ) ∈ P { [ D ( f i , f j ) − m p ] + 2 / ∣ P ∣ + + λ n I i [ m n − min ⁡ k ∈ N 2 D ( f i , f k ) ] + 2 / ∣ P i ∣ + λ n I j [ m n − min ⁡ k ∈ N 1 D ( f j , f k ) ] + 2 / ∣ P j ∣ } \begin{aligned} L_C &= \Sigma_{(i, j) \in P}\lbrace [D(f_i, f_j) - m_p]_+^2 / |P| + \\ &+ \lambda_nI_i[m_n - \min_{k \in N_2}D(f_i, f_k)]_+^2/|P_i| \\ &+ \lambda_nI_j[m_n - \min_{k \in N_1}D(f_j, f_k)]_+^2/|P_j| \rbrace \end{aligned} LC=Σ(i,j)P{[D(fi,fj)mp]+2/P++λnIi[mnkN2minD(fi,fk)]+2/Pi+λnIj[mnkN1minD(fj,fk)]+2/Pj}

    P P P是positive pairs的集合,N1和N2分别表示从第一个点云和第二个点云随机选择的点的index。 I i I_i Ii是一个指示函数, k i = arg ⁡ min ⁡ k ∈ N 2 D ( f i , f k ) k_i = \arg \min_{k \in N2}D(f_i, f_k) ki=argminkN2D(fi,fk)如果 ( i , k i ) (i, k_i) (i,ki)是一个postive pairs,则 I i = 0 I_i = 0 Ii=0,否则 I i = 1 I_i = 1 Ii=1 ∣ P i ∣ |P_i| Pi表示有效negative pairs的数量。对于 I j I_j Ij ∣ P j ∣ |P_j| Pj含义类似。

    简单说,对于positive pairs,由数据集的G.T.获得;对于每一对positive pair ( i , j ) (i, j) (i,j),由 i i i根据特征距离产生一对hard negative pairs,由 j j j根据特征距离产生一对hard negative pairs,如Figure 3的第三个图所示,蓝色线连接的表示positive pairs,橘色线连接的是negative pairs。

  • Triplet Loss

    L ( f , f + , f − ) = [ D ( f , f + ) + m − D ( f , f − ) ] + 2 L(f, f_+, f_-) = [D(f, f_+) + m - D(f, f_-)]_+^2 L(f,f+,f)=[D(f,f+)+mD(f,f)]+2

    m m m是positive pairs和negative pairs之间的margin。

    对于三元组的随机采样是这样的: 对于positive pairs,由数据集的G.T.获得;对于每一对positive pair ( i , j ) (i, j) (i,j),随机产生一个 k k k,若 ( i , k ) (i, k) (i,k)是一个negative pair,则形成三元组 ( i , j , k ) (i, j, k) (i,j,k),如Figure 3的第二个图所示,否则在训练中放弃此三元组。

  • Hardest-triplet Loss

    L T ( ) = 1 Z Σ ( i , j ) ∈ P { I i [ m + D ( f i , f j ) − min ⁡ k ∈ N 2 D ( f i , f k ) ] + + I j [ m + D ( f i , f j ) − min ⁡ k ∈ N 1 D ( f j , f k ) ] + } \begin{aligned} L_T() &= \frac{1}{Z} \Sigma_{(i, j) \in P}\lbrace I_i[m + D(f_i, f_j) - \min_{k \in N_2}D(f_i, f_k)]_+ \\ &+ I_j[m + D(f_i, f_j) - \min_{k \in N_1}D(f_j, f_k)]_+ \rbrace \end{aligned} LT()=Z1Σ(i,j)P{Ii[m+D(fi,fj)kN2minD(fi,fk)]++Ij[m+D(fi,fj)kN1minD(fj,fk)]+}

    I i , I j , N 1 , N 2 I_i, I_j, N_1, N_2 Ii,Ij,N1,N2的含义同Hardest-contrastive Loss, Z Z Z表示所有有效Hardest三元组的数量。

    简单的说,positive pairs由G.T.获得,对于每一对positive pair ( i , j ) (i, j) (i,j),对点 i i i N 2 N_2 N2找到特征距离最小的点 k i k_i ki,若 ( i , k i ) (i, k_i) (i,ki)不属于positive pais,则构成三元组 ( i , j , k i ) (i, j, k_i) (i,j,ki),否则舍弃此无效三元组;对点 j j j进行同样的操作,得到三元组 ( i , j , k j ) (i, j, k_j) (i,j,kj)。如Figure 3的第四个图所示,由一对positive pair(蓝色的圆)产生了两个三元组。

  • Loss实现和采样策略的源码: https://github.com/chrischoy/FCGF/blob/master/lib/trainer.py

2.5 训练

优化器是SGD,初始学习率0.1,指数衰减学习率( γ = 0.99 \gamma = 0.99 γ=0.99)。Batch size设置为4,训练100个epoches。在训练时对数据采用随机scale(0.8 - 1.2)和随机旋转(0-360°)的增强。

三、论文的实验

3.1 数据集
3.2 评估指标
  • Feature-match Recall(FMR, for 3DMatch)

    R = 1 M Σ s = 1 M 1 ( [ 1 ∣ Ω s ∣ Σ ( i , j ) ∈ Ω s 1 ( ∣ ∣ T ∗ x i − y j ∣ ∣ < τ 1 ) ] > τ 2 ) R = \frac{1}{M} \Sigma_{s=1}^M 1([\frac{1}{|\Omega_s|}\Sigma_{(i, j) \in \Omega_s}1(||T^* \text{x}_i - \text{y}_j|| < \tau_1) ] > \tau_2) R=M1Σs=1M1([Ωs1Σ(i,j)Ωs1(Txiyj<τ1)]>τ2)

    M M M表示pairs点云对的数量, 1 1 1表示指示函数, Ω s \Omega_s Ωs是第 s s s个pair的correspondences, T ∗ T^* T表当前pair点云的G.T.的R,t变换。 y j \text{y}_j yj x i \text{x}_i xi Y Y Y中选择的Feature Distance最小的点,即 y j = arg ⁡ min ⁡ y j ∣ ∣ F x i − F y j ∣ ∣ , y j ∈ Y \text{y}_j = \arg \min_{\text{y}_j} ||F_{\text{x}_i} - F_{\text{y}_j}||, \text{y}_j \in Y yj=argminyjFxiFyj,yjY τ 1 \tau_1 τ1 τ 2 \tau_2 τ2是两个超参数,常取值 τ 1 = 0.1 \tau_1 = 0.1 τ1=0.1 τ 2 = 0.05 \tau_2 = 0.05 τ2=0.05

    简单的说,就是有M个点云对,对每一个点云对做一个是特征好/坏的判断: 在真实R,t的情况下,计算 ( x i , y j ) (\text{x}_i, \text{y}_j) (xi,yj)距离小于 τ 1 \tau_1 τ1的比例r,如果r大于 τ 2 \tau_2 τ2,则表示这个点云特征好,否则特征是坏的。

  • Registration Recall(for 3DMatch)

    E RMSE = 1 Ω ∗ Σ ( x ∗ , y ∗ ) ∈ Ω ∗ ∣ ∣ T ^ i , j x ∗ − y ∗ ∣ ∣ 2 E_{\text{RMSE}} = \sqrt {\frac{1}{\Omega_*}\Sigma_{(\text{x}^*, \text{y}^*) \in \Omega_*} ||\hat T_{i, j}\text{x}^* - \text{y}^*||^2} ERMSE=Ω1Σ(x,y)ΩT^i,jxy2

    Ω ∗ \Omega_* Ω表示 ( i , j ) (i, j) (i,j)点云对中correspondences的数量, ( x ∗ , y ∗ ) (\text{x}^*, \text{y}^*) (x,y)表示G.T.的pair, T ^ i , j \hat T_{i, j} T^i,j表示基于 ( i , j ) (i, j) (i,j)点云对预测的R,t变换。

    对于具有至少30% overlap的点云对,如果 E RMSE < 0.2 E_\text{RMSE} < 0.2 ERMSE<0.2,则表示这是一个正确的点云对。

3.3 实验结果

主要介绍3DMatch数据集上的实验结果。

  • 精度和速度

在这里插入图片描述

作者在3DMatch测试集中比较了FCGF与传统方法和深度学习方法的性能,如Table 1所示,第1列是方法名称,第2列是FMR值(及其标准差),第3列是在旋转的3DMatch数据集中的FMR值(及其标准差),第4列表示特征描述子的维度和提取特征的时间。从表中可以看到,FCGF提取特征的速度快,特征简洁(只有32维),在3DMatch数据集和旋转增强的3DMatch数据集均有最高的FMR。

在这里插入图片描述

在3DMatch测试集中Registration recall的比较如Table 5所示,FCGF在7个场景和平均情况下均达到了最高的Registration recall。

  • Ablation Study

在这里插入图片描述

作者测试了不同loss下的性能,实验结果如Table3所示。由表格可以看到,对于contrastive Loss,normalized feature比非normalized feature要好,hardest-contrastive loss比常规(随机的)contrastive loss结果要好,同时可以观察到hardest-contrastive loss是所有loss中结果是最好的。对于triplet loss,normalized feature比非normalized feature要差,这个结论和contrastive loss中是相反的;hardest-triplet loss要比常规(随机的)triplet-loss结果要好,但其容易导致collapse。综合对比,hardest-contrastive loss在3DMatch数据集中是最好的。

在这里插入图片描述

作者测试不同的 m p m_p mp m n m_n mn组合对于实验结果的影响,实验结果如Table 4所示, m n / m p m_n / m_p mn/mp对结果的影响较大,一般来说 m n / m p m_n / m_p mn/mp越大,结果越好;但如果其比值太大(如超过30),结果开始下降。

  • 可视化

FCGF特征的t-SNE显示如Figure 5所示。

在这里插入图片描述

四、总结

  1. 论文基于MinkowskiEngine实现了点云的全卷积网络,点云和卷积等采用稀疏表示,优化了显存。

  2. 作者提出了hardest-contrastive loss和hardest-triplet loss,利用点云数据中的correspondences实现了特征的有效学习,并通过哈希的方式加快了生成二元组和三元组的速度。

  3. 不足: 基于MinkowskiEngine的神经网络在量化点云时会丢掉部分点云信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值