Fast Global Registration (ECCV 2016) 论文解析

目录

0.友情链接

  1. FGR基本介绍 CSDN博客:Fast Global Registration
  2. FGR的github链接:
  3. FGR的论文下载地址
  4. FGR复现代码(open3d)
  5. FPFH论文原文

1. 论文核心思想

1.1. 点云特征匹配

\qquadFast Global Registration(FGR)是ECCV 2016的一篇关于点云全局配准的论文。所谓点云配准就是将点云A通过六自由度刚性变换矩阵T,将其变换到点云B,达到场景合并的目的,常常用于点云场景重建、SLAM、多传感器融合领域。
\qquadFGR的基本理论建立在特征匹配的基础上的,FGR使用的特征是比较快速的Hand-crafted的FPFH(Fast Point Feature Histogram,快速点云特征直方图,论文见友情链接)。FPFH相比其他learning-based的特征Recall比较低,但是优点是不需要GPU,运算速度快。
\qquad对于源点云PPP和模板点云QQQ,首先使用FPFH提取每个点的特征组成F(P)F(P)F(P)F(Q)F(Q)F(Q),然而通过特征距离的最近邻对二者进行匹配(这点和ICP是类似的),FPFH原文的特征距离法则略为复杂,而FGR实现代码中则是采用是更简单的向量二范数计算特征距离,感兴趣的可以看下FPFH的原文。
\qquad对于F(Q)F(Q)F(Q)中的每个特征f(qi),(qi∈Q)f(q_i),(q_i\in Q)f(qi),(qiQ),找出F(P)F(P)F(P)中最接近f(qi)f(q_i)f(qi)f(pj)f(p_j)f(pj),即
arg⁡min⁡pj∈P∥f(pj)−f(qi)∥22\arg\min_{p_j\in P}{\Vert f(p_j)-f(q_i)\Vert_2^2} argpjPminf(pj)f(qi)22
\qquad以上即是FGR特征匹配的基本思想了。需要知悉的是,整个点云配准过程,FPFH的匹配只会操作一次,这便是FGR相比其他Robust Point Cloud Registration快的原因,然而这个操作其实也占用了FGR大部分的运行时间。

1.2. 两个校验

\qquad接下来进入FGR的核心部分——outlier rejection。由于特征匹配存在较多的outlier (如下图红色连线所示)。对于correspondence-based 方法而言,这些outlier会对最后的SVD过程造成干扰,因而FGR的目的就是滤除这些红色的错误匹配。
outlier
本图摘自论文(Graduated Non-Convexity for Robust Spatial Perception: From Non-Minimal Solvers to Global Outlier Rejection)
\qquadFGR的第一校验是双向校验(dual validation),在大多数特征匹配方法里还是比较常见的。记1.1节得到的匹配好的特征为K1={(pt1,q1),(pt2,q2),...,(ptn,qn)}K_1=\lbrace(p_{t_1},q_1),(p_{t_2},q_2),...,(p_{t_n},q_n)\rbraceK1={(pt1,q1),(pt2,q2),...,(ptn,qn)},(n应该等于点云QQQ的点数),对于K1K_1K1中的每个特征对(pti,qi)(p_{t_i},q_i)(pti,qi),寻找
qi∗=arg⁡min⁡qk∈Q∥pti−qk∥22q_i^*=\arg\min_{q_k\in Q}{\Vert p_{t_i}-q_k \Vert_2^2} qi=argqkQminptiqk22
qi∗≠qiq_i^*\neq q_iqi=qi,则排除这个点云对。
\qquad第一校验筛选完之后的点云对记为K2K_2K2
\qquad第二校验是距离差校验,选取K2K_2K2中任意三个点云对(p1,p2,p3)(p_1,p_2,p_3)(p1,p2,p3)(q1,q2,q3)(q_1,q_2,q_3)(q1,q2,q3),它们需要满足如下的不等式:
∀i≠j,0.9<∥pi−pj∥∥qi−qj∥<10.9\forall i\neq j,\quad 0.9<\frac{\Vert p_i-p_j \Vert}{\Vert q_i-q_j \Vert}<\frac{1}{0.9}i=j,0.9<qiqjpipj<0.91
若不满足,则排除(p1,q1),(p2,q2),(p3,q3)(p_1,q_1),(p_2,q_2),(p_3,q_3)(p1,q1),(p2,q2),(p3,q3)三对点。以此得到K3K_3K3
\qquad如果是理想情况,应该满足∥pi−pj∥∥qi−qj∥=1\frac{\Vert p_i-p_j \Vert}{\Vert q_i-q_j \Vert}=1qiqjpipj=1,FGR通过一个距离范围排除那些明显不符合距离检验的点,但需要注意的是,这个检验并不是始终有效的。TEASER那篇论文就证明,当outlier ratio特别大时,距离检验也失效了,原因可能是K2K_2K2中每三组对应点中都包含outlier,导致选不出几组正确的点。

1.3. 鲁棒函数与BR对偶

\qquad这可能是FGR论文最难懂也是最核心的部分。在完成了一次匹配和两轮校验之后,FGR需要通过Gradually Non-Convexity(GNC,渐进非凸过程)的方式完成outlier rejection。经典ICP在已完成特征匹配后的目标函数是
arg⁡min⁡T∈SE(3)∑(p,q)∈K∥q−Tp∥\arg\min_{T\in SE(3)}{\sum_{(p,q)\in K}}{\Vert q-\textbf{T}p\Vert} argTSE(3)min(p,q)KqTp
其中KKK是matched feature的集合,在FGR中指的是K3K_3K3
\qquad然而最小二乘的函数对于outlier非常敏感,即使经过两轮校验,仍然会存在大量的outlier。
\qquadFGR的目标函数是鲁棒函数Geman-McClure,即ρ=μx2μ+x2\rho=\frac{\mu x^2}{\mu+x^2}ρ=μ+x2μx2,即
arg⁡min⁡T∈SE(3)∑(p,q)∈Kρ(∥q−Tp∥)\arg\min_{T\in SE(3)}{\sum_{(p,q)\in K}}{\rho(\Vert q-\textbf{T}p\Vert)} argTSE(3)min(p,q)Kρ(qTp)
对于鲁棒函数的使用,FGR原文是这样解释的:

使用适当的鲁棒惩罚函数是至关重要的,因为目标函数中很多匹配约束都是伪约束。为了实现高计算效率,我们不希望在优化过程中采样、验证、修剪或重新计算关联。一个精心选择的估计器ρ将自动执行验证和剪枝,而不施加额外的计算成本。

说的直白一些,鲁棒函数可以在不改变匹配对集合KKK的情况下,使得最优解T∗T^*T自然地满足内点优先匹配的原则。其中的原因其实是由鲁棒函数非凸性造成的。对于outlier具有较高的、较为统一的损失,对于inlier具有较低的损失。

\qquadFGR使用的Geman-McClure是一个经典的GNC函数,随着μ\muμ的减小,越来越接近于非凸函数,而当μ→∞\mu \rightarrow \inftyμ时,等价于x2x^2x2,即理想凸函数。为什么要使用GNC而不直接采用一个鲁棒函数(如Huber Loss)优化呢?因为一开始得到的T可能是个非常错误的值,就会造成∑(p,q)∈Kρ(∥q−Tp∥)\sum_{(p,q)\in K}{\rho(\Vert q-\textbf{T}p\Vert)}(p,q)Kρ(qTp)也是个错误的函数,因此需要逐步降低函数ρ\rhoρ的凸性逐步逼近正确的T
GNC-GM
\qquad承接上文,FGR为了不增加额外的计算量(其实主要是不重新计算correspondence),采用了BR对偶的方式完成鲁棒函数的优化求解。
\qquad其做法就是增加额外的线性过程L\mathcal{L}L,构造目标函数E(T,L)E(\textbf{T},\mathcal{L})E(T,L),并通过对L\mathcal{L}LT\textbf{T}T交替优化的方式完成的推导过程及优化求解。相关截图如下:
在这里插入图片描述
这一套操作对于非专业人士确实非常不友好,文中的解释也只是a prior(一个先验知识),实际上它牵涉到BR对偶性的知识,想完全看懂FGR的读者务必得往下看。

1.4.1. Black-Rangarjan Duality (BR对偶性)

原文【PDF】链接

\qquad这是构造鲁棒函数和线性过程关联性的非常有名的方法,用于解决early-vision(例如平面重建、三维重建、图像恢复)滤除outlier的问题。这篇20世纪论文的引用量高达900+,足以证明它完全没有过时。
\qquad原文的理论对于非数学专业的同学可能非常难懂,本文只讲解它当中最重要的部分——定理和鲁棒函数的构造方法。定理如下:
定理
图片源于:https://arxiv.org/pdf/1909.08605?ref=https://githubhelp.com
\qquad这条定理说的是给定一个鲁棒函数ρ\rhoρ,定义ϕ(z)=ρ(z)\phi(z)=\rho(\sqrt{z})ϕ(z)=ρ(z),若ϕ(z)\phi(z)ϕ(z)满足一定的条件,则可以将原鲁棒函数优化的问题转化为定理中的weighted process的等价形式。而这个新的二元函数的优化过程详见1.4.3节。

本文并不会证明这条定理,但需要读者知悉以下几点:

  1. ϕ(⋅)\phi(\cdot)ϕ()和鲁棒函数ρ(⋅)\rho(\cdot)ρ()的关系
  2. 等价命题的形式(ϕ(⋅)\phi(\cdot)ϕ()需满足的条件)
  3. 等价命题Φρ(⋅)\Phi_\rho(\cdot)Φρ()的含义(关于wiw_iwi的惩罚项)

最难理解的是Φρ\Phi_\rhoΦρ的构造过程,下面将会给出FGR中选取Φρ\Phi_\rhoΦρ(详见1.4节)的推导过程。

1.4.2.Derivation of Φρ\Phi_\rhoΦρ

Black-Rangarjan 对偶性原文给出寻找的close-form的Φρ\Phi_\rhoΦρ的算法步骤如下:
在这里插入图片描述
实际上,大部分论文都将τ\tauτ默认为1处理。FGR中给出的形式为
BR对偶性
FGR鲁棒函数

这里的lp,ql_{\text{p},\text{q}}lp,q对应原文中的zzzρ(x)=μx2μ+x2\rho(x)=\frac{\mu x^2}{\mu+x^2}ρ(x)=μ+x2μx2
根据ϕ(⋅)\phi(\cdot)ϕ()ρ(⋅)\rho(\cdot)ρ()的关系
ϕ(z)=ρ(x2)=μzμ+z(z≥0)\phi(z)=\rho(\sqrt{x^2})=\frac{\mu z}{\mu + z} \quad (z\geq 0)ϕ(z)=ρ(x2)=μ+zμz(z0)
ϕ(z)\phi(z)ϕ(z)需要满足Black-Rangarajan对偶性的三个条件,即
{lim⁡x←0ϕ′(x)=lim⁡x←0μ2(μ+x)2=1lim⁡x←∞ϕ′(x)=lim⁡x←∞μ2(μ+x)2=0ϕ′′(x)=−2μ2(μ+x)3<0\begin{cases} & \lim_{x \leftarrow 0}\phi'(x)=\lim_{x\leftarrow 0}\frac{\mu^2}{(\mu+x)^2}=1 \\[2ex] & \lim_{x \leftarrow \infin}\phi'(x)=\lim_{x \leftarrow \infin}\frac{\mu^2}{(\mu+x)^2}=0 \\[2ex] & \phi''(x)=-\frac{2\mu^2}{(\mu+x)^3}<0 \end{cases} limx0ϕ(x)=limx0(μ+x)2μ2=1limxϕ(x)=limx(μ+x)2μ2=0ϕ′′(x)=(μ+x)32μ2<0
根据上述推导,显然ϕ(⋅)\phi(\cdot)ϕ()都满足了,接下来需要根据Black-Rangarajan原文中提供的方法解出Φρ\Phi_\rhoΦρ
首先,ϕ(w)=μwμ+w\phi(w)=\frac{\mu w}{\mu + w}ϕ(w)=μ+wμw, 令z=ϕ′(w)=μ2(μ+w)2z=\phi'(w)=\frac{\mu^2}{(\mu+w)^2}z=ϕ(w)=(μ+w)2μ2,则w=(ϕ′)−1(z)=μ/z−μw=(\phi')^{-1}(z)=\mu/\sqrt{z}-\muw=(ϕ)1(z)=μ/zμ

Φρ(z)=ϕ(w)−zw=μwμ+w−zw=μ(μz−μ)μ+μz−μ−z(μz−μ)=μ(1−z−z+z)=μ(z−1)2\begin{aligned} \Phi_\rho(z) =&\phi(w)-zw\\ =&\frac{\mu w}{\mu+w}-zw\\ =&\frac{\mu(\frac{\mu}{\sqrt{z}}-\mu)}{\mu+\frac{\mu}{\sqrt{z}}-\mu}-z(\frac{\mu}{\sqrt{z}}-\mu) \\ =&\mu (1-\sqrt{z}-\sqrt{z}+z)=\mu(\sqrt{z}-1)^2 \end{aligned}Φρ(z)====ϕ(w)zwμ+wμwzwμ+zμμμ(zμμ)z(zμμ)μ(1zz+z)=μ(z1)2
即FGR原文中的鲁棒函数公式。

1.4.3.E(T,L)E(\bm{T},L)E(T,L)的优化求解方法

利用BR对偶性求解离群值过程的方法是交替优化(Alternating optimization),即对x\bm{x}xwiw_iwi进行交替优化,具体方法截图如下。
在这里插入图片描述
需要说明的是,第二步wiw_iwi的优化一般是存在闭解的,针对FGR的目标函数求wiw_iwi的偏导可得:
∂E(T,L)∂wi=∥p−Tq∥2+μlp,q−1lp,q\frac{\partial{E(\bm{T},L)}}{\partial w_i}=\Vert\text{p}-\bm{T}\text{q}\Vert^2+\mu\frac{\sqrt{l_{p,q}}-1}{\sqrt{l_{p,q}}}wiE(T,L)=pTq2+μlp,qlp,q1
导函数在(0,+∞)(0,+\infin)(0,+)上单调且存在唯一的零点,即lp,ql_{p,q}lp,q的闭合形式最优解:
lp,q=(μμ+∥p−Tq∥2)2l_{p,q}=\left(\frac{\mu}{\mu+\Vert \text{p}-\bm{T}\text{q}\Vert^2 } \right) ^2lp,q=(μ+pTq2μ)2

第一步对于T\bm{T}T的优化,FGR采用的是一种线性近似的方式,具体方式如下:
在这里插入图片描述
这个为什么属于线性近似呢?可以将这个矩阵拆成两个部分看:
M=[RT01]M=\begin{bmatrix} R &T\\ 0 &1 \end{bmatrix} M=[R0T1]
平移部分就等于它本身,旋转部分根据李群的计算法则,设
Rx=[0−γβγ0−α−βα0]R_x=\begin{bmatrix} 0 &-\gamma &\beta \\ \gamma &0 &-\alpha \\ -\beta &\alpha & 0 \end{bmatrix} Rx=0γβγ0αβα0
R=exp(Rx)≈R0+R11!+...=[1−γβγ1−α−βα1]R=exp(R_x)\approx R^0+\frac{R^1}{1!}+...=\begin{bmatrix} 1 &-\gamma &\beta \\ \gamma &1 &-\alpha \\ -\beta &\alpha & 1 \end{bmatrix} R=exp(Rx)R0+1!R1+...=1γβγ1αβα1
因此这个近似在(α,β,γ)(\alpha,\beta,\gamma)(α,β,γ)较小的时候还是可以成立的。
在这里插入图片描述
其中TkT^kTk是最后一次迭代的TTT,而ξ=(α,β,γ,a,b,c)\xi=(\alpha,\beta,\gamma,a,b,c)ξ=(α,β,γ,a,b,c)实际上是通过高斯-牛顿法这种数值优化方法求解的,求解方法就是上图中的(8)。

4.写在后面

\qquadFGR的全部讲解到此就结束了,实际上,FGR在实现过程逐步地减小μ\muμ以实现Graduate Non-Convexity (GNC)。将BR对偶性与GNC相结合,可以解决非凸鲁棒函数的全局最优解的问题,同时还是最优性可证的。本文只是相关理论基础的一个补充,欢迎在阅读相关文献的基础上在本文评论区留言交流学习心得。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/544389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统盘压缩卷小于可用空间_操作系统中的可用空间管理

系统盘压缩卷小于可用空间可用空间管理 (Free space management) As we know that the memory space in the disk is limited. So we need to use the space of the deleted files for the allocation of the new file. one optical disk allows only one write at a time in t…

关于头文件是否参与编译的讨论

一、文章来由 写项目的时候发现了这个问题&#xff0c;又是一个比较底层的问题&#xff0c;首先说明&#xff0c;这篇文章只是我根据查阅的资料和做的实验提出的一个讨论&#xff0c;并不一定就是正确答案。因为这个问题网上众说纷纭&#xff0c;我很欢迎大家参与这个讨论&…

Log4j漏洞?一行代码都不改就能永久修复?

△Hollis, 一个对Coding有着独特追求的人△作者 l Hollis来源 l Hollis&#xff08;ID&#xff1a;hollischuang&#xff09;这篇文章我周一发过&#xff0c;但是因为一些"人在江湖、身不由己"的原因&#xff0c;原文删除了&#xff0c;但是很多人找我还是想看看内容…

ubuntu安装eclipse

2019独角兽企业重金招聘Python工程师标准>>> 在Ubuntu 13.04下的安装eclipse 一、eclipse安装过程 首先确保在安装eclipse之前已经安装好Java虚拟机 1. eclipse官网下载压缩包 下载地址&#xff1a;http://www.eclipse.org/downloads/download.php?file/technology…

github果然强大

github果然强大&#xff0c;在idea里写好&#xff0c;可以直接提交到github&#xff0c;在哪台电脑都可以看源码了&#xff0c;手机也可以看 https://github.com/gaojinhua 转载于:https://www.cnblogs.com/gaojinhua/p/4705992.html

保姆级教程,终于搞懂脏读、幻读和不可重复读了!

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;我的文章合集&#xff1a;https://gitee.com/mydb/interview在 MySQL 中事务的隔离级别有以下 4 种&#xff1a;读未提交&am…

保姆级教程,终于搞懂脏读、幻读和不可重复读了!(经典回顾)

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;我的文章合集&#xff1a;https://gitee.com/mydb/interview在 MySQL 中事务的隔离级别有以下 4 种&#xff1a;读未提交&am…

WPF入门教程系列十五——WPF中的数据绑定(一)

使用Windows Presentation Foundation (WPF) 可以很方便的设计出强大的用户界面&#xff0c;同时 WPF提供了数据绑定功能。WPF的数据绑定跟Winform与ASP.NET中的数据绑定功能类似&#xff0c;但也有所不同&#xff0c;在 WPF中以通过后台代码绑定、前台XAML中进行绑定&#xff…

实战,实现幂等的8种方案!

前言 大家好&#xff0c;我是程序员田螺。今天我们一起来聊聊幂等设计。什么是幂等为什么需要幂等接口超时&#xff0c;如何处理呢&#xff1f;如何设计幂等&#xff1f;实现幂等的8种方案HTTP的幂等1. 什么是幂等? 幂等是一个数学与计算机科学概念。在数学中&#xff0c;幂等…

灰度共生矩阵及其数字特征_数字系统及其表示

灰度共生矩阵及其数字特征Any number system has a set of symbols known as Digits with some rules performing arithmetic operations. A collection of these makes a number has two parts. They are integer portion and fraction portion. These portions are separated…

绝绝子,画框架图就用这个工具

前言看过我以往文章的小伙伴可能会发现&#xff0c;我的大部分文章都有很多配图。我的文章风格是图文相结合&#xff0c;更便于大家理解。最近有很多小伙伴发私信问我&#xff1a;文章中的图是用什么工具画的。他们觉得我画的图风格挺小清新的&#xff0c;能够让人眼前一亮。先…

面试官:this和super有什么区别?this能调用到父类吗?

作者&#xff1a;磊哥来源 | Java面试真题解析&#xff08;ID&#xff1a;aimianshi666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;本文已收录《Java常见面试题》&#xff1a;https://gitee.com/mydb/interviewthis 和 super 都是 Java 中常…

SpringBoot 热部署神器快速重启的秘密!

今天咱们来聊聊这个热部署神器 spring-boot-devtools 的运行原理&#xff0c;看看它是怎么用这个 ClassLoader 来实现快速重启&#xff0c;帮我们节省时间的&#xff01;&#x1f61d;文章概要文章的主旋律如下&#x1f447;spring.factories我们直接打开 spring-boot-devtool…

计算机操作系统 内存_计算机内存的类型| 操作系统

计算机操作系统 内存什么是记忆&#xff1f; (What is Memory?) The essential component of the computer is its Memory. It is assembled on the motherboard as it is a storage device used for storing data and instructions for performing a task on the system. 计算…

关于 java 实现 语音朗读

最近有个java项目要实现 一个 java语音朗读的功能&#xff0c;百度了半天 没有现成的 。也是一头雾水。没具体思路。。。。。大体上总结了下网上的资料 1.java 实现起来 比c或者vb 能麻烦点&#xff0c;或者是这个功能用其他语言完成 然后整合到java 项目里面去&#xff01;2.…

查询MySQL字段注释的 5 种方法!

作者 | 磊哥来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;很多场景下&#xff0c;我们需要查看 MySQL 中表注释&#xff0c;或者是某张表下所有字段的注释&#xff0c;所以本文就来盘…

聊聊索引失效的10种场景,太坑了

前言今天我接着上一期数据库的话题&#xff0c;更进一步聊聊索引的相关问题&#xff0c;因为索引是大家都比较关心的公共话题&#xff0c;确实有很多坑。不知道你在实际工作中&#xff0c;有没有遇到过下面的这两种情况&#xff1a;明明在某个字段上加了索引&#xff0c;但实际…

Java中的main方法

2019独角兽企业重金招聘Python工程师标准>>> 在一个Java应用程序中&#xff0c;通常程序的入口是一个main方法&#xff0c;它被声明为公有静态方法&#xff0c;参数是一个字符串数组&#xff0c;返回值为Void类型。这个方法有许多值得研究的地方&#xff0c;今天就来…

约瑟夫环问题(C++)

问题描述 首先&#xff0c;说明一下这个问题是研究生期间c课的综合作业&#xff0c;本来有好多选择但最后还是选择了约瑟夫环问题。下面是约瑟夫环的问题描述以及设计要求&#xff1a; 约瑟夫环&#xff08;约瑟夫问题&#xff09;是一个数学的应用问题&#xff1a;已知n个人&…

实战!工作中常用到哪些设计模式

前言 大家好&#xff0c;我是捡田螺的小男孩。平时我们写代码呢&#xff0c;多数情况都是流水线式写代码&#xff0c;基本就可以实现业务逻辑了。如何在写代码中找到乐趣呢&#xff0c;我觉得&#xff0c;最好的方式就是&#xff1a;使用设计模式优化自己的业务代码。今天跟大家…