『解读』TEASER | 快速且可证明的点云配准算法和代码解读

2023-10-31 14:50

本文主要是介绍『解读』TEASER | 快速且可证明的点云配准算法和代码解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

来源深蓝学院:深蓝前沿教育

本文是对文章《TEASER:Fast and Certifiable Point Cloud Registration》的解读。

摘要

这篇文章提出了第一个快速且可证明的算法,用于存在大量外点对应的情况下两组3D点的配准。

可证明的算法尝试求解一个困难优化问题(比如带外点的鲁棒估计),提供相对容易的检测条件验证返回的解是否最优(比如,如果算法在外点存在情况下产生最精确的估计)或者界限解的次优性或精确性。

为了达到这个目的,我们首先使用截断最小二乘(TLS)代价函数将配准问题重新建模,使得估计对大量假对应点不敏感。

然后,我们提供一个通用的图理论框架将尺度、旋转和平移估计解耦,这样就可以级联地求解三个变换。

尽管每一个子问题仍然是非凸和组合的,但我们证明了:

(i) 通过一个adaptive voting机制可以在多项式时间内求解TLS尺度和分量形式平移估计。

(ii) TLS旋转估计可以被松弛为一个半定规划问题(SDP),同时这个松弛是紧的,甚至是在极端外点率的情况下都可以被松弛。

(iii) 图理论框架通过寻找最大派系允许外点的显著修剪。

我们称结果算法为TEASER(截断最小二乘估计和半定松弛)。虽然求解大规模的SDP松弛通常是比较慢的,但我们开发了第二个快速的且可证明的算法,叫做TEASR++

该算法使用渐进非凸性求解旋转子问题,同时利用Douglas-Rachford Splitting高效地证明全局最优性。

对于上述的两个算法,我们在估计误差上提供理论的界,这是第一个这样解决鲁棒配准问题的方法。

此外,我们在标准benchmarks,目标检测数据集和3DMatch扫描匹配数据集上测试性能,展示了:

(i) 两个算法统治了最先进的方法(如RANSAC,branch-&-bound,启发式),当尺度已知时它们对于超过99%外点率的情况都是鲁棒的。

(ii) TEASER++毫秒级运行,是目前最快的鲁棒配准算法。

(iii) TEASER++非常鲁棒使得它能够求解对应点未知的问题(如假设所有对所有的对应点情况),并且它显著地超越ICP,比Go-ICP更精确,同时要快几个数量级。

我们发布了一个快速开源C++的TEASER ++实现。

主要贡献

这篇文章提出了第一个可证明的算法,用于外点存在下的3D配准问题。我们使用截断最小二乘(TLS)代价函数将配准问题重新建模,使得问题对大量假对应点不敏感,但这导致了一个困难的,组合的和非凸的优化问题。

1.  一个通用的框架,用于解耦尺度,旋转和平移估计。我们方法的创新有四个部分:

(i) 我们开发了估计尺度的不变测量量。

(ii) 我们在噪声未知但有界的假设下,将解耦形式化。

(iii) 我们提供了一个通用的图理论框架,用于推导这些不变测量量。

(iv) 我们展示这个框架通过寻找不变测量量定义的图的最大派系,允许修剪大量的外点。

解耦允许级联地求解尺度、旋转和平移。然而每个子问题仍然是组合的。

2. 证明:

(i) 使用adaptive voting机制能够在多项式时间内精确地求解标量例子的TLS估计问题,这就能够高效地进行尺度和分量形式平移的估计。

(ii) 我们能够建立一个紧的半定规划(SDP)松弛去估计旋转,同时建立一个后验条件去检测松弛的质量。

我们注意到本文中求解的旋转子问题在视觉(所谓的旋转搜索)和航空航天(所谓的Wahba问题)。我们的SDP松弛是第一个用于鲁棒旋转搜索问题的可证明算法。

3. 验证我们称为截断最小二乘估计和半定松弛算法返回解的质量的一系列理论结果。在无噪声例子中,我们提供了易于检查的条件,其中TEASER在外点存在的情况下恢复出了点云之间的变换。

在有噪声例子中,我们在TEASER估计和真值变换之间的距离上提供了界。据我们所知,这些是有外点几何估计问题中第一个非渐进误差界,虽然统计学的鲁棒估计文献通常在欧氏空间中研究更简单的问题并且聚焦渐进界。

4. 实现TEASER的一个快速版本,称为TEASER++,使用渐进非凸(GNC)估计旋转而不需要求解大规模SDP。

我们展示了TEASER++是可证明的,特别地我们使用Douglas-Rachford Splitting设计一个可扩展的最优证实算子,该算子能够断言GNC返回的估计值的全局最优性。我们发布了一个快速开源C++的TEASER++的实现。

5. 在标准benchmarks和在目标检测、扫描匹配的真实数据集上进行了大量的验证。

特别地,我们展示了。

(i) TEASER和TEASER++统治了最先进的算法(如RANSAC,branch-&-bound,启发式)。

当尺度已知时它们对于超过99%外点率的情况都是鲁棒的。

(ii) TEASER++毫秒级运行,是目前最快的鲁棒配准算法。

(iii) TEASER++非常鲁棒使得它能够求解对应点未知的问题(如假设所有对所有的对应点情况),并且它显著地超越ICP,比Go-ICP更精确,同时要快几个数量级。

(iv) 当和基于深度学习的关键点检测和匹配相结合时,TEASER++能够提升配准性能。

6.在我们之前的工作中引入了TEASER和旋转子问题的基于四元数松弛

本文则将TEASER带向成熟。

(i)在TEASER性能上提供显著的理论结果。

(ii)提供一个快速的最优性证实方法。

(iii) 开发一个快速的算法,TEASER++,使用GNC估计旋转并且无需求解SDP,同时仍然是可证明的。

(iv) 发表了一个更全面的实验验证,包括在3DMatch数据集上的实际测试,以及没有匹配点的配准例子。这些是同时在理论和实际方面的主要提升。

算法流程

1.使用截断最小二乘代价函数的鲁棒配准

2.解耦尺度,旋转和平移估计

重新转换测量值以得到尺度、旋转和平移变换的不变量。

该不变量思想如图所示

3.截断最小二乘估计和半定松弛(TEASER)

4.鲁棒的尺度和平移估计:Adaptive voting

上述第4行见Fig. 3(a),第6、12行见Fig. 3(b)

第17行计算尺度估计值公式

5.鲁棒的旋转估计:半定松弛和快速证实

6.TEASER和TEASER++求解尺度、旋转和平移三个子问题的对比

6.1 TEASE

 采用半定规划(SDP)和凸松弛算法估计旋转部分

6.2 TEASER++

采用 Certifiable GNC 算法估计旋转部分,提升了算法效率和可证明能力

主要实验结果

1.标准benchmarks测试

与Fast Global Registration (FGR) 、 Guaranteed Outlier REmoval (GORE)和RANSAC两种变体进行精度和效率的比较

2.应用1:目标位姿估计和定位

给定来自FPFH特征描述子的对应点

3.应用2:扫描匹配

一个有趣的现象:TEASER++会证实一些不正确的解,这些解的旋转误差大多位于90°和180°附近(如右图中蓝色点),这些点对应于对称的场景,说明对称场景允许多个配准结果。

TEASER++代码解读与运行

1.代码地址

https://github.com/MIT-SPARK/TEASER-plusplus

提供了C++,Python和Matlab的程序。

2.代码整体框架

(1) 输入为两组点云的匹配对和噪声上界;

(2) 使用adaptive voting进行尺度估计,如果尺度已知,则进行已知尺度修剪外点操作;

(3) 产生内点图;

(4) 在内点图中寻找最大团从而选择最大内点集;

(5) 最大内点集传入GNC-TLS模块进行旋转估计;

(6) 使用adaptive voting进行平移估计;

(7) 输出为尺度,旋转和平移;

3.代码解读

(1) 首先是载入点云文件,读入第一组点云数据;

(2) 将读入的第一组点云数据转换为Eigen格式的数据;

(3) 将第一组点云数据变为齐次坐标形式;

(4) 对第一组点云应用一个任意SE(3)变换,产生一组无噪声outlier-free的点云;

(5) 对第二组点云数据添加噪声和外点;

(6) 配准算子参数设定,最大噪声界(noise_bound,欧氏距离的L2-norm )为0.05,TLS中

 为1,是否估计尺度参数(estimate_scaling)默认为不估计false(如需要估计则设为true);

GNC旋转估计最大迭代次数(rotation_max_iterations)为100,GNC控制参数更新比值为1.4。

(即控制参数

每次更新的调整程度,,相关内容可以参考作者RAL2020 “Graduated Non-Convexity for Robust Spatial Perception: From Non-Minimal Solvers to Global Outlier Rejection”的 Remark 5)

采用TLS框架的GNC算法估计旋转(rotation_estimation_algorithm),即使用GNC_TLS计算旋转部分的最优解,旋转估计部分的代价阈值(rotation_cost_threshold)为0.005。

(7) TEASER++求解,src和tgt为Eigen矩阵形式的匹配对;

(8) 运行结果,期望(Expected)旋转、平移和估计(Estimated)旋转、平移结果,匹配对(correspondences)数量,外点(outliers)数量,算法运行时间(Time);

总结

此工作提出了一个快速的可证明的算法,用于极端外点率情况的基于对应点的配准问题。

使用了估计理论中的未知但有界噪声,几何中的不变测量,图理论中的内点选择最大团和优化中的紧SDP松弛。

这篇TRO文章是由作者之前在RSS2019 “A Polynomial-time Solution for Robust Registration with Extreme Outlier Rates” 和 ICCV2019 “A Quaternion-based Certifiably Optimal Solution to the Wahba Problem with Outliers”两个工作撺掇起来的。

使用了前者RSS2019中的不变测量概念,后者ICCV2019中旋转参数化为四元数的想法,整体算法流程类似于前者的框架,总的来说是一个很出色的整体工作。

追溯着看,作者一系列的工作都很solid,有理论创新(数学证明),有实际实现(代码规范),非常值得学习。


论文链接:

https://arxiv.org/pdf/2001.07715.pdf

论文视频:

https://youtu.be/xib1RSUoeeQ

这篇关于『解读』TEASER | 快速且可证明的点云配准算法和代码解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/316109

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费