点击上方“计算机视觉life”,选择“星标”
快速获得最新干货
本文由 深话AI 公众号 整理,如有侵权可联系删除。原文链接:
https://www.zhihu.com/question/392255715/answer/1196900617
原提问:
本科数学基础差的感觉 SLAM 很难,如何去提高?
在日本读的本科,到大四进入研究室才开始接触slam。但本科期间数学基础有点差。日本不像国内作为基础的数学课。老师会讲的特别细,知识点会帮你串起来。而且语言上的关系学得不好。当然了,也有自己没有太努力的缘故。
目前只会看懂orbslam2的代码和做一些功能追加,比如pcl点云相关的。懂一些专业名词和算法功能。但是自己对于算法的理解和推倒能力太差了。特别看论文时时常会对公式之类的不能有很好的理解。
请问下大佬们有啥国内的书比较推荐的?在slam领域能用到的一些高等数学基础之类的。大概打算花半年的,研究室固定时间之外的时间,恶补一下数学。对于数学基础不好,很难从头写一个有所优化创新的代码框架。所以感觉很难交出paper,最近很是苦恼,研究方向目标是实时三维重建,麻烦大家帮助
工程slam对数学要求不算特别高。大部分都是应用数学范畴,但是本科只学过四门数学课的确不够用。比如我本科的四门数学课高数线代复变概率统计。
正如你所说,你研究生阶段开始学习数值分析,最优化,凸优化,slam要用一点李代数李群表示位姿做优化,矩阵论这些东西。
其实所有这些,都不是空中楼阁,往往都有明确的现实物理意义。所以我建议你在补数学基础的时候,要时刻记得仅仅看公式推导是不够的,要去找相应部分的开源代码看,甚至自己写。
书籍有人已经说了slam14讲作为入门书,非常推荐。可以当做入门vslam的第一本书来看。
因为这本书相对基础,你看的过程中也可以针对性地去补缺失的数学和编程。高翔博士学识丰富,而且用自己的经验化繁为简。
在此基础上,你可以对比如如何实现自动微分,如何算法层优化速度,如何在指定的计算机平台上,从c++一直优化到指令集(ps这本书不教你这种计算机层面的优化,得看别的书),这样的扩展(这本书里没讲这些,但是看完之后你就会有一定能力去探索了)这样整体的框架就有了。
数值分析这两本不错,可以当做入门上面的第一本数值分析,是业内大牛写的,水平很高,非常全面,有很多你在slam上不会碰到的数值问题,对数值各种问题有全面讲解。如果你只打算做slam,可以选择看一部分章节。第二本,相当简单粗暴,而且c实现的,纯粹入门找感觉用的,如果你编程和数学都比较差,先把第二本看了,再去看第一本。数值分析的课程,得多编程。虽然slam里面一般用eigen,不用你自己写底层数值算法,既然你想深干,了解一下还是有好处的。因为slam涉及大量矩阵优化计算,如果你想深入,可以看一下下面这本斯坦福大佬的著作,怎么说呢,作者是现代很多数值算法祖师爷。eigen下面调用的blas,lapack很多算法都在这本书里,或者引用里面呢。如果你想在优化方面做的深一点,自己独创算法,啃啃硬骨头,也许会用的上。作为数学渣的工科狗,日常计算矩阵公式,各种矩阵微积分,行列式计算公式,即用即查,实乃居家旅行,看paper写paper必备良品,就是这本只有英文,几十页,信息量巨大 凸优化很经典的反正我在cv里面遇到很多问题,都可以转成凸优化来解决,不过呢,非凸的就很难搞了三维重建,计算机视觉中的多视图几何怎么可以少呢新的中文版整得这么鲜艳 ,反正我也不好说啥,你不是做三维重建,虽然现在很多论文都用深度学习,经典算法还是有很多值得借鉴的啦。3d方向,这本一定要刷透。这本书本身没有编程代码,相应的算法opencv,pcl里面有实现,也可以自己写写,练练手。
还有一本跟上一本有点内容重合,计算机视觉中的数学方法。自动化所老cver写的,好想都退休了,这位大爷数学出身,需要补一点解析几何和射影几何的内容了。数学系的射影几何放在高等几何下面,国内数学系开的不多,满眼的数学符号公式,一般的工科生乍一看估计头皮发麻。状态估计,机器人学中的状态估计,这本不错。我正在看,也在专栏发布了我做的课后题答案,不见得对哈哈哈,有错误欢迎过来指正哈这本书整体来讲我觉得不错,不过也有坑,中英文版我都看了,我觉得作者有的书中概念指代不是特别清晰,小小吐槽一下。
还有一本经典概率机器人,现代的slam框架奠定者,新的slam一般都是改内部的方法,整体架构方式改动不大,有冲劲有想法也可以改一改。slam里面喜欢用李群李代数做优化slam现在也在吸取深度学习的经验,很多新的slam框架,包括3d场景识别分割都在尝试各种深度学习网络,所以,现在搞slam不了解深度学习是不行的,开本花书镇镇场子 深度学习的各种网络结构发展很快,现在还有gnn,未来也许会跟图论有交集呢。图论来个入门 机器人这块,随机过程是很有必要的,虽然最后在控制上都是离散算法,可是离散的基础是连续性的。还有,机器人这块,也用机器学习的,所以入门的prml 了解一下其实我们说的算法都是计算机算法,基本的数据结构和常规算法我觉得你应该是了解的,你应该已经迈过算法导论的阶段了,我怕你真没整过
暂且列出来吧,你要是本科或者高中就刷完了,可以忽略这本其实不论是slam还是机器学习,都有泛函分析和变分法的影子,我推荐这么深,肯定有人要骂我误人子弟,但是理论严谨一点这么需要的啊啊啊啊prml上来就是变分法的,推荐个入门的吧,难度不高,我初恋女友在国内211读数学,他们用的这个变分法我是在朗道里面看的,但是我不能给你推荐朗道势垒坑你,欢喜就好
有人推荐了因子图那本书,我觉得可以去看更经典的一本,概率图数值这块还有一本,我觉得挺入门的,号称圣经,几个奥斯汀的教授写的。稍微有点老,在里面用c++各种实现算法
数值最优化还有一本很经典的--------------------
半年时间稍微短了点,所以有的大而全的书要选择性看,比如说最后一本的数值优化,有的书,要仔仔细细的刷,有时候还得看更细致得论文。还有一点,一定要切记,补数学的过程中,一点要编程,碰到一个新的算法,即使不自己实现,也要看一看别人的实现,最次也要在脑袋里模拟一下算法运行过程。
除了书籍,期刊会议可以自己搜索一下机器人视觉方面的有很多人推荐的,我这里额外推荐一下siam的,属于工业数学或者应用数学。其实很多在数学系下面做ai这块的,也有论文往这上面投。
-------萌萌的分割线-------
推荐了这么多,半年估计你看不完的,我自己试过,半年时间没搞完,不过我的资质略低,属于学渣 。还是有选择的多看一些吧。我记得我研究生开学典礼的时候,白春礼院士说,抓住自己一生中不多的时间多读书,立大志。与君共勉。
其实很多更深数学的我没推荐,北美像ucb,cmu的ai这方向博士要求应该比我的推荐要稍微深一点,不过量应该没我推荐的这么大。我水平实在有限,3d 还有微分几何信息几何,流形什么的我都没推荐,好多都是纯数学出身的在做,而且大部分是理论性的。另外3d跟图形学结合也是一个趋势,有兴趣可以看一下这方面
---------再来一个萌萌的分割线--
在补数学基础的过程中,其实你已经具备了进入一些方向的能力,可以每天起床前刷一刷arxiv自己感兴趣的方向,看着看着随着自己的积累,好多东西自然就懂了。不过机器人光有理论还不够,有了想法立马去实操写代码,去真机上跑。
我这里是假定你已经有了很好的计算机基础的。你要是计算机和编程也不好,抓紧补,slam有很强的应用背景,有的paper写的好看但不顶用啊,所以理论和实践结合有可能会搞出更鲁棒,更优的算法或者框架。实时性这块,放弃一些cver只用python的幻想,c++撸起来。很多slam用的库用到了模板元编程,如果只调用别人的库,写一些基本的c++代码也还好,但是要是想自己弄点建设性的东西,要自己写库的。所以我的一个建议,在补数学的同时,工程技能点抓紧往上垒,尤其数学搞了很多发现自己可能不是那块料,一定要把工程抓牢。ps机器人视觉slam包括3d,是有不少数学博士也在做的方向的 我就见过某某师范大学数学系,拿激光扫描器,做3d重建算法的,张正友就是应用数学博士
-----最后萌萌的分割线-------
如果能做到把很多方向融汇贯通,很有可能创造出绝学(可能我金庸看多了 )
其实国内本科数学教育,普通工科也挺差的,强如 @酱油兵小C 这样能帮老师写高数书的大佬都是自己学出来的。
slam搞搞玩是用不到多少数学的,就几个公式翻过去倒过来,难一点就是理解理解图,其实基本够用。其实如果想快点入门,最靠谱的方法是熟练工教下你,本来就几个公式,背一下,然后做点练习,就差不多了。
如果想深入学slam后端,难度是很大的。举个最简单的例子,正常来说,globalBA是最精确的,如果它都不行,整个优化肯定就不行。但是你受到资源限制没办法一直做全局优化,所以自然衍生的问题是,怎样近似全局优化,使得你的局部优化又快又准?如果局部优化不太行,是否是近似搞错了,还是本身全局优化就已经算不好了?
要搞定这个问题,你需要学习的知识就很多了,例如代数图理论,概率图等,还是那句话,如果没做好心理准备,就搞这个,想试试玩,我还是劝退
我是本科大二开始接触这个领域的。不过是从ROS入手,才慢慢接触SLAM的。
我也不跟你提学SLAM要看哪些大头书了,给你的建议,如果不想学ROS,那么就找个开源的SLAM系统去学习。先学会linux下编译这个源代码,然后跑起来。跑起来了才能继续后面的工作,其他的先放一放。一般来说,去搜个视觉里程计学习一下可以快速入门。激光雷达的我不熟悉,但是看其他学激光雷达的朋友,大多都是二维gmapping,cartographer,三维Loam这样。具体的可以另外发帖细致问。
强烈推荐的是高翔博士的博客,半闲居士的一起学SLAM系列,先学会一个RGBD里程计。配合视觉SLAM十四讲看,会理解得更深。当然这只是给你个insights,并不能帮助你把SLAM学好,后期的一些进阶还是离不开各种理论实践。
总体来说,本科学习SLAM是很吃力的,一来知识储备跟不上,二来确实精力也不够。我也是越到后面,才越来越理解之前看过的一些东西。反正吧,如果打算读硕士,又热爱这东西,那你就可以入坑。不然的话,还是劝退吧。本科确实挺难对这东西有比较好的认识。当然,这是对我而言。大佬除外!大佬除外!大佬除外!
从0到1学习SLAM,戳↓
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
投稿、合作也欢迎联系:simiter@126.com
长按关注计算机视觉life
PS:公众号最近更改了推送规则,不再按时间顺序推送,而是根据智能推荐算法有选择性向用户推送,有可能以后你无法看到计算机视觉life的文章推送了。
解决方法是看完文章后,顺手点下文末右下角的“在看” ,系统会认为我们的文章合你口味,以后发文章就会第一时间推送到你面前的,比心~