作者:转载紫川科技(已授权),大江东去浪淘尽千古风流人物整理
一、前言
不知不觉已经拖更了这么久了,近期忙于写提升VIO精度的新算法(将嵌入在viobot的下一个大版本更新中),而提到精度,也跟精度这一话题密切相关,请各位看官耐心阅读。
二、论坛内容的简述
会上的每篇工作都是非常优秀的,但受限于篇幅,我就只挑我个人最感兴趣的工作做下简单的记录(涉猎少的也不讲,讲错了老脸挂不住),也即更多的是传统几何方法VSLAM相关。
1、周晓巍----LoFTR及其延续工作
LoTTR是周老师组的经典工作了。VSLAM前端,说白了就是追踪不同图像帧之间的同一个点,传统算法像经典的ORB,会先提角点后计算描述子,然后通过最近邻方法匹配描述子[1]来匹配角点。
但多多少少都会存在误匹配,所以通常会用RANSAC、鲁棒核函数之类的手段滤去错误的匹配。
进一步,学习(Learning-Base)方法像基于端到端图卷积神经网络魔法的SuperGlue[2],则使用来自同一团队的工作SuperPoint[3]提取的特征点与描述子,把匹配与过滤误匹配打包一块做了,匹配准确性与鲁棒性更上一台阶。
近几年一些针对不同天气不同季节的同一场景下的回环检测工作就很爱用SuperPoint配合SuperGlue,效果拔群。但事情总不是完美的,比如当两帧之间缺乏共同视野的时候SuperGlue仍会强行匹配,这对后端来说自然是毁灭性的打击
接着LoFTR[4]横空出世,其基于 带自注意层和交叉注意层的另一种魔法,创新之处在于其匹配并不针对单一特征点,而是一群点。
尽管如此,其匹配精度却仍能达到亚像素级真是见了鬼了。但也得益于批量点匹配的策略,面对缺乏纹理的区域,LoFTR仍然能做到高质量的匹配。
但成也萧何败也萧何。LoFTR的匹配不针对单一特征点,这也导致其匹配难以在多帧图像间持续,而传统的SfM方法三维重建恰恰非常依赖于对空间中同一点尽可能多帧的连续追踪。
周老师团队对此的思路是:解决不了问题就解决问题的来源(请不要将这一思路应用到人际交往中),从SfM本身下手,提出了基于LoFTR的SfM[5]。
具体的操作是先舍弃LoFTR高精的优点,将降低精度后数值接近的匹配都归为同一匹配,以此解决跟踪不连续的问题,做一次比较粗糙的SfM,见下图左。
紧接着再使用Feature Track Refinement与Geometry Refinement两种Transformer模型,前者优化跟踪精度,后者优化位姿精度,最后就能得到上图右的精美建模了。
最能表现其性能优越的就是该方法取得了Image Matching Challenge 2023第一名的优秀成绩。
这种方法完美继承了LoFTR高鲁棒的优点,对弱纹理对象诸如下图的眼镜盒、纯白色水杯、纯黑色盒子的重建效果令人称奇,具体表现可观看这条视频,看完对周老师团队的工作无比佩服。
值得一提的是,周老师在SLAM论坛现场的讲解,思路清晰,语言流畅,PPT做得尤为精美,丝毫没有因为这是一场严肃的学术会议而让人昏昏欲睡,着实是一场令人非常享受的报告。
2、SLAM竞赛引出的思考
SLAM竞赛环节上,一个来自中科院自动化研究所的方案中,一个叫“中值绝对偏差MAD”的方法让我非常惊喜,因为他们关注到了SLAM中的系统误差的来源。
这个团队注意到了信息矩阵----也即视觉在VIO系统中的权重----并不精准,于是使用如下策略对其做了一个精修,使其更逼近真实值,后续的实验也表明精度得到了显著的提高。
很多工作,包括会上被提到的LoFTR,还是IMU的预积分,都是为了降低SLAM系统的偶然误差----前端误匹配导致的数据源污染。
前端跟后端的许多工作包括鲁棒核函数、滑窗滤波都是为了尽可能大地降低数据源污染所带来的影响。
但大家却很少关注到SLAM系统的系统误差----对噪声的高斯假设。
我们知道,传统几何方法中的SLAM最常用的非线性优化手段,本质上就是假设系统的噪声满足零均值的高斯分布,通过贝叶斯法则,让原本是非线性的系统可以使用正规方程进行近似求解。
也就是说,如果这一假设不满足或满足得不充分,那么最大似然估计、Bundle Adjustment将统统不成立。
说白了,SLAM(Simultaneous Localization and Mapping)实际上并不是真的在“计算”,而是在“猜测”,猜测什么样的位姿变化可能性最大(Localization),当前观测最有可能来自怎样的环境(Mapping)。
正如下图所示,非线性优化得到的的位姿是存在零空间的,零空间所代表的范围,就是留给我们“猜测”的范围,SLAM要猜测,真实的位姿究竟在这个范围内的哪。
而如果没有额外的约束的话,位姿的范围,也即系统的不确定度会越来越大,所谓“一步错步步错”就是在形容这种现象。
既然是基于高斯假设的猜测,那么自然提供给SLAM系统的“线索”,也就是用于统计的样本越多,系统猜得越准。
所以我们会看到(一定范围内)所有帧打包算的SfM它就是算的比只打包其中几帧的滑窗滤波SLAM准,滑窗大的的就是比滑窗少的准,前端提取到的点多的就是比点少的准。
目前压缩零空间大小的思路比较主流的是引入更多的约束,包括更多的传感器(GNSS、IMU、ToF)以及对画面更多的特征的利用(线、面、体、灭点),但同时也引入了更多的不确定因素,而且本质上,零空间依旧存在。
所以请以后如果,看到各路SLAM算法演示视频中,轨迹精准地回到原点的时候,请一定不要当真,因为绝大多数情况下那都是回环检测的功劳,不然就是调了一套数据集专用参,将其归结为“巧合”也不冤枉,误差永远是客观存在的。
在我看来,评判一份算法好坏的指标从来都不是其演示里面的准头,而应该是其被同类论文里面精度被“吊打”的次数。就比如,看下ORB、VINS、DSO这些经典算法,哪个不是三天两头被哪个自称SOTA的论文吊打,这影响它们在行内的地位了吗?
回到正题,近几年深度学习方法在SLAM行业的蓬勃发展倒是充分证明了其在SLAM上的巨大潜力,虽然其泛化能力的不足与对算力贪得无厌的索取表明这类方法离广泛落地还为时尚早,但其确实为“天下苦高斯假设久矣”的现状提供了一个全新的思路。
一些深度学习方法也确实突破了一直压在几何方法头顶上的那个精度上限,例如其中比较经典的DROID-SLAM[6]。(两块RTX3090的实时运行需求也令人叹为观止)
目前我还没有看到能比非线性优化更好更优雅的数理几何方法被用于解决系统误差。希望本文能起到一个抛砖引玉的作用。
3、高翔----激光融合SLAM在码头的落地案例
正如高博本人在报告的一开始所说:”没有非常酷炫的技术“,他的报告非常朴实地了展示了一个SLAM在码头场景的落地方案。
但在我看来这种内容非常宝贵,尤其是对于参会者的主体----学生,因为他们大多数身处学术界,而对工业界相对陌生,这样做出来的研究搞不好就容易与实际应用场景严重脱节,报告里的内容反而是他们最为需要的。
回到报告本身。码头是个很特别的场景,有着大量的集装箱、龙门吊等,体积巨大,且位置经常出现变化。
我们知道动态环境对SLAM系统的重定位影响是巨大的,更不用说这些能动的庞然大物。对此高博团队的思路是将点云地图分为动态与静态两种,前者由车端实时建图并往后台更新,后者则固定在后台。非常朴素却行之有效的方法。
而对于多传感器的融合方案,高博团队做了非常详尽的思考,传感器间的延迟滞后、传感器的容错机制、对工控机有限性能的充分压榨等等,都让工程佬一本满足,光是这一场报告的这些工程技巧我都认为值回票价了。
激光里程计的选择是Lego-LOAM,之所以不是去年高博那惊艳四座的Faster-LIO,我想大概是出于对工程现场稳定性方面的考虑,毕竟IMU漂移引入的不确定因素还是太多了。
一套开源算法从实验室进入商用场景,是需要做出大量工程改动的,从PPT的内容可以看出还是下了不少心血的。
同时,由于现场对稳定性的要求极高,高博团队对系统的稳定性测试考虑得非常周全,包括使用大量离线数据对系统进行测试、对各类系统异常的容错机制等,种种细节无不体现高博对于算法落地丰富的经验。这份方案能在公开渠道放出来多少让人为甲方感到不甘。
提问环节上,这位观众掀起了激光与视觉之争----为何就连身为视觉SLAM界圣经作者的高博最后也选择了激光SLAM,视觉SLAM的前途究竟如何?
高博的回答大意为,面对自动驾驶这一严肃落地场景,稳定性的优先级高于一切,而在稳定性这一方面视觉----至少目前----跟激光方案比还是有一定差距的。
不过有很多场景下,视觉仍然是唯一的选择,譬如高速场景(高速行驶的车辆)、开阔场景(操场)、高反射率场景等。况且,视觉不作为主里程计,作为辅助里程计而言依然是堪当大任的。另外对于激光与视觉之争我在文末还会有一段我的论述,请读者耐心观看。
4、Daniel Cremers----TUM工作总览
我说Daniel教授是全场最大的腕儿应该没人反驳吧。TUM的CV组背后的巨佬,旗下大佬无数,其中就包括如今Meta首席科学家Jakob Engel(也是DSO的作者),可以说引领了整个SLAM行业起飞。SLAM不能没有Daniel,正如西方不能没有耶路撒冷。
Daniel教授的报告视频
Daniel教授的报告主体内容与他之前做过的一场直播内容重合挺高,今年错过SLAM论坛或者对英文不够熟练听不明白的的可以移步链接观看熟肉的搬运。我的建议是,所有做SLAM的人都应该观看这段视频。
而另外新增的内容则是对今年的新工作[Behind the Scenes: Density Fields for Single View Reconstruction[1]]的讲述。
其实对于提出大名鼎鼎的直接法SLAM的TUM我是有我的疑问的。Daniel教授推崇直接法的原因是直接法能生成非常直观的”半稠密“点云,虽然不如稠密重建来得直接,但环境的基本轮廓建下来就已经比特征点法那基本不可用的点云强太多了。
但半稠密点云仍然有它的局限性,处于一个比上不足比下有余的尴尬处境。比上,无法与RGBD或Lidar类算法生成的稠密点云比密度,更不用说后者的点云还能用于避障;比下,比稀疏点云比更直观,但脱离避障的感知终归是只能拿来看的花架子----半稠密点云面对白墙这类场景心有余而力不足。
紫川在这方面的工作是推出基于半稠密点云生成的RDF点云,实现无ToF相机下的避障与规划,这方面的工作我的同事们正在加紧推进当中,尽请期待。
即便如此,我依然很疑惑,Daniel教授肯定是知道半稠密点云的种种不足的,关于如何描绘我们的世界他们是否会有更好的思路呢?这不答案就来了。
23年的这篇新工作就展示了通过NeRF,就能仅用一个摄像头就能建出类似octomap效果的占据地图,虽然这下不如半稠密点直观了,但它能避障啊!这无疑为脱离高成本的深度传感器的感知方案提出了一种重要的解决思路。(我知道我知道,传感器成本下来了,但算力成本上来了,所以多关注一下紫川的RDF工作)
传统的NeRF(我自己都绷不住笑了,Nerf问世第三年就已经可以用传统来形容了)如果想仅从单幅图像生成带有颜色的三维模型是比较复杂的,而TUM创新地提出预测隐式密度场。
密度场通过直接从可用视图中采样颜色而不是将颜色存储在密度场中大大降低了原NeRF的复杂度,并且神经网络可以在单个前向传递中预测它。而且该工作还能顺便生成接近其他自监督SOTA方法的深度图,谁能拒绝这种挣一份钱打两份工的牛马算法呢。
问答环节,曾总(本账号本专栏以外的内容都是曾总写的)还上前提问了关于光度不变假设的维护问题(直接法强依赖于光度不变假设的,但是实际上是很难满足或者说很容易被破坏的)。一旦画面曝光不良好,算法即使没丢,前端也会引入严重的误差。我司是通过一些对曝光的严格限制及精细调整来弥补这种误差的引入的。
Daniel教授的思路与我们基本吻合,对此我们深感荣幸,因为技术细节的一致也表明我们对直接法的理解是在正确的思路上的。
5、圆桌主题:《SLAM技术发展趋势与行业应用》。
在讨论到端到端SLAM时,有位老师(忘了是殷鹏老师还是徐威老师)坏笑地说:”多亏了端到端技术的出现,以后不用再花费那么多(工资)去招聘SLAM工程师了,招些工程师调调参也能有不错的效果。“
现场蹦出了几声零星笑声,但笑声很快被一股严肃的气氛盖过。传统几何SLAM由于其对数理知识的要求过高,入门门槛高这一不争的事实,导致SLAM工程师确实是比较难招的。
不过如果,我是说如果,顶着压力坚持下来的SLAMer们,毕业后发现自己竟然在人才市场上还不如调参侠受欢迎,又有多少能绷住不破防呢?
而大咖面对面是主办方安排让老师们与观众围坐沙龙的环节,其中场面最为水泄不通的自然是高博的那场。除此之外,其他老师的摊位基本也是门庭若市,老师们对同学们的疑问知无不答,现场氛围非常的棒。
而在关于SLAM 2.0的提问环节,我提出了我一直以来心中都存在的的疑问:SLAM的精度真的那么重要吗?在大家都在卷精度的会场提出这种发问无疑是大逆不道的,不过我也很感谢主办方没有把我轰出去,反而台上的老师们也都对此发表了许多真知灼见。
对于自动驾驶来说,毫无疑问,答案为是。
自动驾驶的性质就决定了其是一个严肃的领域,不论是精度还是鲁棒性,都代表了行内的最高要求。毕竟这是要上机动车道的算法,出了错没准就得搭几条人命进去。从这些方面考虑,自动驾驶并不像传统的SLAM场景,而更贴近测绘行业,因为测绘的第一要义就是高精度。
在Lidar以及其他传感器的加持下,想要获得相当精准的点云与位姿变得并不是那么遥不可及了。比如,这两年数字孪生的发展很大程度上也加速了三维重建算法的落地,各位可以看看现在商用的三维重建已经发展到什么地步了:
看完这条视频的你们需要明白,这是一套真正的商用三维重建,是可以稳定工作的,而不是那些跑一百次能建出一次好的就录下来发论文的工作。(并没有在内涵谁)
我想表达的是,如果不是要细究那毫米级的精度,那所谓的高精度,Lidar已经能完成得很好了。再接着朝着精度这个方向卷下去,边际效应就开始出现了,这是我所不想看到的,这个行业需要新的突破口。
而且我很悲观地发现,在精度这一块,视觉完全不是Lidar的对手。不仅是我这么觉得,当我在各个机器人展、物流展上与厂商交流的时候,大家已经默认将视觉踢出了感知这一赛道,摆摆手跟我说”我们不考虑视觉“。
所以在我看来,这些集中于精度的研究,停留在SLAM 1.0时期足矣,尤其是视觉,不应该老想着拿自己的短板去踢Lidar这块硬骨头,而应该换个思路弯道超车。关于这点,我的思路是什么呢?
请给我些许时间,让我解释一下我所说的传统的SLAM场景是什么。让我们先思考一下,SLAM最初想要解决的问题是什么:人在哪,哪能走,往哪走。
设想这么一个场景,人走出房间
这一任务可以分解为如下三步:
1、四周转转,找着门;2、走向门,把门开开;3、走出去
为了完成这一任务,现有的解决方式是,先找到门(语义),计算门与自身距离(建图),规划走向门的路径(路径规划与避障),走向门并打开门(运动控制),在此过程中需要精确地计算自身的运动(定位)。
在此过程中,语义需要给出门准确的轮廓,建图会计算门的具体距离,路径规划会计算哪条路径最短且能容下自身体积以通过,定位则需要精准地测量自身往哪个方向旋转了几度,向某个方向位移了几厘米。精度要求在这个过程中无处不在。
但实际上,我们人在执行这件事情的时候,却从来都不需要知道这些精确的数据,我们的心理活动会是“门在左手边”、“朝门走两步到门跟前”、“开门后得往后稍稍让着点门“ 。
而在更大的场景呢?我们问路的时候,大概不会得到”向着北偏东37°走5036cm,再朝北偏西23°走7324cm“这种回答,更多的是”直走两个红绿灯,左拐走到头再右拐,拐角处的牛杂特地道“这样看似充满歧义却行之有效的回答。
…我们似乎从未关注过自已迈的一步到底是50厘米还是51厘米,精准的数字从来只是我们实现任务要求的中间变量。一定有着某种手段,能让我们抛开这些恼人的数字与刻板的度量,却同样能完成复杂的指令。只不过这种手段目前尚未出现,但其作为SLAM 2.0的主题来我看来是非常合适的。
所以,我们都应该思考的一个问题是,如果可以抛开精度的顾虑,SLAM这一技术能否在其他更大更广的领域发光发热,甚至走进消费者市场,走进千家万户呢?而且,SLAM行业需要找到一个更大的落地领域,而不只是停留在如今这些高高在上的宏大应用。
原文链接:https://zhuanlan.zhihu.com/p/645564160