倘若能有一场时空对话,我将告诉曾经的我如何做vslam

文摘   2024-11-09 07:01   上海  

作者 | forward  编辑 | 3D视觉之心

原文链接:https://www.zhihu.com/question/392988118/answer/22816791544

作者主页:https://www.zhihu.com/people/51-46-64-19-92

已获得作者授权,禁止二次转载,请联系作者

点击下方卡片,关注“3D视觉之心”公众号

第一时间获取3D视觉干货

>>点击进入→3D视觉之心技术交流群

短短4年的时间,vslam就犹如过气网红般声量渐失。曾经这个话题,还能引来各路大佬欢聚一堂好不热闹,如今曲终人散,门前冷落鞍马稀。今日赶个晚集,借这个话题做个我这几年开发的几个vslam项目总结,倘若能有一场时空对话,我将告诉曾经的我如何做这个事情。

衣带渐宽终不悔,为伊消得人憔悴。

SLAM 技术会是一场泡沫吗?

1.知彼

当被安排某个陌生的工作的时候,想必大家心情是这样的:

学习两年多,感觉SLAM太难了,大家对此有什么想法?

自己,队友,老大都是小白也没关系,都没思路也没关系,可以去搜搜别人工作先。每一个好厨子都肯定先是一个好吃货。当我从别处知道一个新概念的时候,那至少说明第一个螃蟹已经有人吃了,我可以去搜搜他的“小x书”看看那些“网红博主”的心得。

算法领域的“小x书”大家都懂:github,在里面搜搜高流量(star)帖子就好了。在这个“知播间”里我已经替家人们汇总好了:

请问是否有开源的实时视觉里程计?

通过上述总结,以特征点为例,可以发现框架性工作为vins,msckf,orbslam,kimera,这几篇给我们提供了优秀的ceres,滤波,g2o,gtsam的pipeline和学习手册,堪称vslam领域的基础设施。大量后来者在白嫖..啊不,致敬这些作品后进行二创。

vslam要干哪些事情呢?有特征提取和匹配,状态优化,深度解算,回环检测/VPR,全局BA/PGO。

在扫过大量二创后,发现他们都比较关注特征提取和匹配这个环节,尤其超爱线面特征。配合深度学习食用后又交叉到感知去了。

坚守SLAM还是拥抱大模型?

我对3dgs/nerf和事件相机的slam方向一直不感冒,可能是在企业里呆惯了也没读过博的缘故吧,在我有限的认知里,我看不到这几个方向落地的可能性,更像是学术圈闭门造车的自嗨。算法工程师算是相对比较贵的岗位,若只顾着发论文玩demo讲故事而不靠产品持续造血,当资本的浪潮褪去时,还是会略显尴尬吧。

方向错误是最可怕的事情,你越努力,朝错误的方向走得越远,沉没成本越高,就越难回头,也越跟不上。

这样的例子有很多,苏联和美国在计算机领域本在同一起跑线,甚至他们的数学更强,但是他们发展晶体管而不是集成电路,他们玩三进制而不是二进制,走错了路就再也追不上了;还有日本新能源科技树点到了氢上,已经彻底跟不上中美对步伐了,甚至他们的铁杆盟友乌克兰把他们的氢能源车拿去做炸弹刷给榜一大哥俄罗斯,这谁敢开他们的车?

对错误路线的判断取决于认知,认知局限导致走错路很可怕,明知故走就更可怕了。

2.知己

知己知彼,百战不殆。知彼,是为了知道别人在想什么干什么,知己,是为了知道自己啥条件啥需求。

啥需求?

为什么目前落地的主流SLAM技术很少用神经网络进行特征提取?

室内还是室外,地上跑的天上飞的还是水里游的,静态还是动态环境,里程计还是建图,等等..

还有一个容易被忽略的点:初始化。初始化分为静态初始化和动态初始化,静态初始化只适用于带imu的。

vins的单目动态初始化让我格外印象深刻,得瞅着一个地方剧烈的动弹几下才行;而msckf,kimera就更显佛系,在那呆着不动把imu初始状态维护好就行了。至于哪种初始化更好就是仁者见仁智者见智,萝卜白菜各有所爱,一千个读者有一千个哈姆雷特的事情了。

啥条件?

数据频率,传感器数量质量类型(钞能力),标定,时间对齐等等。没条件也呆胶布,不是还有那么多数据集嘛。

3.没事走两步

把心仪的方案下载下来,编译配置,跑个demo。实践是检验吹牛的唯一标准。

那些经过普遍检验过的方法如果没跑出来,要么数据有问题,要么标定有问题,要么镜子里的吴彦祖有问题。

经过这一步之后,想必各位彦祖心里已经有信心了,就可以确定原型代码是哪篇了。

4.读论文和代码

先看代码后看论文。论文有时候像渣男口里的情话,让人脸上不禁激荡起一抹少女般的红晕;有时候像孔乙己讨论“茴”有多少种写法,高深莫测,回味无穷。代码里10行搞定的事情,他再配上高端晦涩的公式若干和滔滔不绝的长篇大论,令无数信徒迫不及待地一键三连,献上虔诚的膝盖,竞相折腰。原本木讷呆板的理工生,此时竟也学会了花言巧语,一口一个大佬大佬的叫嚷着,让人心里暖暖的。而冷酷无情的代码却化身最后的轻语,让人沉默又破防。

好在,代码是论文的照妖镜。就算看不懂代码里的公式,但是他干什么用的一定能测出来,而论文则可能会因为先验知识的缺乏而令人摸不着头脑。正如阅人无数的海王,情场得意的高手,早已品尝过人生百态,世态炎凉,在轻易看透了对方那点小心思后,一切便尽在把握。毕竟比起他说的什么,我更相信他做的什么。

为什么自学编程那么难?

看完代码后再看论文,此时论文里的内容,像久别重逢的挚友,失而复得的旧爱,回头是岸的浪子,沸羊羊的美羊羊,柳暗花明,豁然开朗。

原作的心思就像少年的女神一样深不可测,捉摸不透,令人浮想联翩。不说原作,很多人可能甚至连上个星期自己写的代码都看不懂,蓦然回首,chatgpt竟比我更懂我。因此先不要死磕,能run就行,慢慢理解。如果前方有一堵墙,老实人会拿头撞得头破血流,皮开肉绽,而小机灵鬼,会避其锋芒,另辟蹊径。小心思我读不懂,但身体是诚实的。

先模块化调试,理解数据流在不同函数之间流转过程的产出,假以时日,黑箱变白箱。

5.开始二创

想必到这一步时,脑子里肯定已经有很多idea了。如果还没有,可以继续看别人的二创,现在2024年出来的vio还是有点线特征这个思路的。因此,可以走别人的路,让别人无路可走。说不定你会化身芳心狙击手,你写的论文如蜜罐里的甜言蜜语,让审稿人小鹿乱撞,心神不宁,坐立不安,如痴如醉,辗转反侧,坠入爱河,仿佛回到那年夏天,看着十指相扣的TA。不知是一不小心还是欲拒还迎,被轻而易举的击中软肋,highlight和best paper就半推半就的献给了你。而你,我素未谋面的老熟人,翻身做了大佬,春风得意,容光焕发,便可在朋友圈里昭告天下,衣锦还乡。而企业里牛马们的二创基本是数据适配,框架重构,性能优化,基于自有场景corner case堆if,年会上鲜艳的大红花,说不定就能别在你笔挺的胸前,一想到刚满18岁的hr小姐姐的回眸一笑,是不是还有点小激动。

6.知识迁移

slam领域就像家一样,里面个个都是人才,说话又好听,想必各位和我一样,超喜欢呆在里面的。

曾经的slam犹如正襟危坐的高冷女神,但在知识的传播中不断去魅,现在逐渐成为了平易近人的邻家小妹。这一篇换一下语言风格,转载搬运请私信,近期周更,家人们点点关注不迷路。


【3D视觉之心】技术交流群
3D视觉之心是面向3D视觉感知方向相关的交流社区,由业内顶尖的3D视觉团队创办!聚焦维重建、Nerf、点云处理、视觉SLAM、激光SLAM、多传感器标定、多传感器融合、深度估计、摄影几何、求职交流等方向。扫码添加小助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)


扫码添加小助理进群

【3D视觉之心】知识星球

3D视觉之心知识星球主打3D感知全技术栈学习,星球内部形成了视觉/激光/多传感器融合SLAM、传感器标定、点云处理与重建、视觉三维重建、NeRF与Gaussian Splatting、结构光、工业视觉、高精地图等近15个全栈学习路线,每天分享干货、代码与论文,星球内嘉宾日常答疑解惑,交流工作与职场问题。



3D视觉之心
3D视觉与SLAM、点云相关内容分享
 最新文章