点云配准网络pointnetLK解读笔记(上)

在这里插入图片描述

该笔记源于B站视频 点云PCL公众号分享之Pointnetlk解读—前半部分

1.点云配准简介

  由于采集的点云的不完整、旋转错位、平移错位等,使得要得到完整的点云就需要对局部点云进行配准,为了得到被测物体的完整数据模型,需要确定一个合适的坐标系,将从各个视角得到的点集合并到统一的坐标系下形成一个完整的点云,然后就可以方便进行可视化操作,这就是点云数据的配准。
在这里插入图片描述
  点云配准一开始常用的方法是ICP(迭代最近点 Iterative Closest Point )。ICP算法本质上是基于最小二乘法的最优配准方法。该算法重复进行选择对应关系点对,计算最优刚体变换这一过程,直到满足正确配准的收敛精度要求。这是很经典的方法,但它的弊端在于时效很低,是针对每一个点操作的,点的数量极大时该方法耗时较久;其次它对初值很敏感,如果两组点云一开始相差很大的话ICP算法是不能够找到一个全局最优解的,即找到了一个局部最优的情况并陷入了局部最优解。针对这些弊端后面有很多研究人员提出了改进的ICP算法或者是很多它的一些变种。

2.PointnetLK论文解读

在这里插入图片描述
  对于前面提到的ICP算法的问题,这篇论文貌似并不是为了解决ICP算法的这些问题。它主要是使用深度学习去做点云配准或者说是直接用点而不是说把点云转化成体素等模型。
  这篇论文的主要思想:首先是前面的pointnet,把点映射到高维空间,即把pointnet看成一个成像函数,把得到的多维特征向量,或者说在映射了一个高维空间后在特征空间把它看成一个图像。然后再使用经典的图像配准的算法LK光流算法,进行点云配准。

   P T P_{T} PT是模板点云的数据,输入到pointnet后得到k维的向量,看成输入到了一个函数 ϕ ( P T ) \phi(P_{T}) ϕ(PT)里。点云配准即要找到一个变化矩阵 G G G P S P_{S} PS为原点云,可以理解为模板点云是不动的,原点云要不断地变化变化使之匹配到一起,怎么变化由变化矩阵 G G G决定。

该图截取于https://blog.csdn.net/luohuiwu/article/details/80719146

G∈ SE(3)是原始点云到模板点云的刚性变化,是属于一个特殊李群。
在这里插入图片描述

   ξ i \xi_{i} ξi是一个李代数,可以通过指数映射映射到李群上面,即所谓的变化矩阵 G G G上面。这样操作的原因是我们的这个变化矩阵 G G G是没有加法的,也就是说不能用传统的求导方法去求导 G G G,但是李代数 ξ i \xi_{i} ξi是可以求导的,通过求导李代数 ξ i \xi_{i} ξi便可得到 G G G的倒数(需要求导的原因是深度学习需要反向传播求导来计算梯度)。从而调整 ξ i \xi_{i} ξi便可间接来调整变化矩阵 G G G
在这里插入图片描述
  接下来对模板图像做一个逆变换得到原图像(这里的变换只考虑点云之间的刚性变化) ϕ ( P S ) = ϕ ( G − 1 ⋅ P T ) \phi(P_{S})=\phi(G^{-1}\cdot P_{T}) ϕ(PS)=ϕ(G1PT),对其进行一阶泰勒展开后得到 ϕ ( P S ) = ϕ ( P T ) + ∂ ∂ ξ [ ϕ ( G − 1 ⋅ P T ) ] ξ \phi\left(P_{S}\right)=\phi\left(P_{T}\right)+\frac{\partial}{\partial \xi}\left[\phi\left(G^{-1} \cdot P_{T}\right)\right] \xi ϕ(PS)=ϕ(PT)+ξ[ϕ(G1PT)]ξ
  其中, ∂ ∂ ξ [ ϕ ( G − 1 ⋅ P T ) ] \frac{\partial}{\partial \xi}\left[\phi\left(G^{-1} \cdot P_{T}\right)\right] ξ[ϕ(G1PT)]为雅可比矩阵。相比于传统LK算法需针对所有原始图像计算雅各比矩阵,反向组合形式使得整个配准过程只需对模板图像计算一次雅各比矩阵(Jacobian), 大大地减小了计算量。
通过对变化矩阵的修改,每一次可对原点云进行一个修改。
P S ⟵ Δ G P S P_{S}\longleftarrow \Delta GP_{S} PSΔGPS
  每次迭代的刚性变换的变化量ξ是一个极小的固定量,通过不断变换 P S P_{S} PS使之与 P T P_{T} PT配准.每一次的 Δ G \Delta G ΔG乘起来就得到最终的变化矩阵 G e s t G_{est} Gest
  网络训练时的目标函数定义为如下Frobenius范数:
∥ ( G est  ) − 1 ⋅ G gt  − I 4 ∥ F  \left\|\left(G_{\text {est }}\right)^{-1} \cdot G_{\text {gt }}-I_{4}\right\|_{\text {F }} (Gest )1Ggt I4,其中, G g t G_{gt} Ggt为groudtruth的真实的刚性变化, I 4 I_{4} I4为四阶单位矩阵
  该范数可以用来作为loss函数的原因是 G e s t G_{est} Gest作为预测的变化矩阵它是一个特殊李群,它的逆乘以本身的话会得到单位矩阵。当它无限接近 G g t G_{gt} Ggt时它的逆乘上 G g t G_{gt} Ggt会无限接近单位矩阵,减去单位阵便可无限接近于0

在这里插入图片描述
  网络结构如下。模板点云先通过pointnet,注意此处的pointnet与传统的pointnet有所不同,少了T-net的过程,原因是论文原作者发现少了T-net的效果会更好。得到向量K也即 ϕ ( P T ) \phi(P_{T}) ϕ(PT)后,通过 J i = ϕ ( exp ⁡ ( − t i T i ) ⋅ P T ) − ϕ ( P T ) t i \mathrm{J}_{i}=\frac{\phi\left(\exp \left(-t_{i} \mathbf{T}_{i}\right) \cdot \mathbf{P}_{T}\right)-\phi\left(\mathbf{P}_{T}\right)}{t_{i}} Ji=tiϕ(exp(tiTi)PT)ϕ(PT)来计算雅可比矩阵,这里是差分的形式, t i t_{i} ti是一个无穷小的扰动值。然后通过 ξ = J + ⋅ [ ϕ ( P S ) − ϕ ( P T ) ] \xi=\mathbf{J}^{+} \cdot\left[\phi\left(\mathbf{P}_{\mathcal{S}}\right)-\phi\left(\mathbf{P}_{\mathcal{T}}\right)\right] ξ=J+[ϕ(PS)ϕ(PT)]来得到一个李代数, J + \mathbf{J}^{+} J+是雅可比矩阵的一个广义的逆。接着便可计算 Δ G = exp ⁡ ( Σ i ξ i T i ) \Delta G=\exp \left(\Sigma_{i} \xi_{i} T_{i}\right) ΔG=exp(ΣiξiTi),设定了一个阈值thresh,大于它则继续循环。雅可比矩阵的计算只是一次,而 P S P_{S} PS的更新则是循环计算。下方的循环实际上构成了一个RNN的形式。使用循环是因为一次配准不一定配到位,需要不断的迭代来减少两组点云之间的误差。

在这里插入图片描述

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值