作者丨三川小哥@知乎

来源丨https://zhuanlan.zhihu.com/p/53972892

编辑丨3D视觉工坊

兄弟们,我正在崩溃的边缘,不过我还在撑着。因为我想在因子图优化方向发一篇文章(泪目)。

先絮叨两句我的情况吧~

我在因子图优化这个坑里蹲了半年多了吧!目前仍然没有找到适合我的论文点。因为走过很多弯路,把很多时间浪费在无关紧要的地方。我写这篇文章的目的就是,想让兄弟们踩着我的肩膀继续网上冲,我可能扛不住了(再次泪目),但是我希望能看到这篇文章的你(☞)能坚持下去。

我后面分三个部分说:

1. 怎么快速入门。
2. 有哪些研究点可以挖掘。
3. 有哪些坑需要避过。

1、我的苦大仇深

我刚开始时因为看cartographer的那篇论文,根据里面的介绍找到了平方根sam和isam2.

然后顺藤摸瓜找到了gtsam,还发现了一本书<factor graphs for robot perception>

factor graphs for robot perception

心里一合计,有论文有教材还有开源的框架,岂不美哉。就它了

然后我给导师汇报说:“SLAM经历了三个阶段

1)滤波阶段:局部信息融合

2) 图优化阶段:全局一致性优化

3) 增量平滑阶段:用贝叶斯树维护一个动态更新的数,兼具滤波的速度和图优化的精度

而我的研究方向正处于第三个阶段,代表先进生产力的发展方向”

老师拍拍我的肩膀说:“有想法,万元红包等着你”。

然后就开始了漫长的蹲坑。

我的错误路线:

我首先把bayes tree那几篇论文打印了出来,然后看看看,看不懂。

估计作者没有把细节说出来,细节在哪呢,对了,开源的框架GTsam,下载编译配置,学习库文件。哇哦,优美的C++,不错,写的很好。就是不太能看懂。

怎么办?看官方文档,有一本书啊,啊呼呼,打印出来好好看,暑假带回家,全部推到一遍<什么因子图,平方根矩阵,稀疏性,边缘化,增量优化,贝叶斯书,小弦,小团>一个概念一个概念过。额~~~ ,还是看不懂,一点都没懂。

怎么办呢,对了,他不是支持matlab吗,我就先看matlab的程序。matlab用着兼职爽啊,可视化的demo,真优美,嘻嘻,各个都能跑通,呼呼哈。不过源文件还是看不懂。

有点着急了,

怎么办,上网搜搜,一搜还真有个视频教程,泡泡机器人-董卿。这个好啊。先看三遍再说,看完没多大作用,就是简单的介绍了下。

再搜搜,哇,我找到了什么,我找到了作者本人的YouTube讲座视频呦。帅,看五遍。还是MKD~~~。

这时候有点丧。

要发论文啊,我的天哪,时间都过去这么久了。

是不是方法不对啊,我上一篇时怎么发表出来的呢,总结一下看看呗。

三川:论文怎么找点子(https://www.zhihu.com/question/34903516/answer/497757056)

按照我总结的方法还是找不到点子,都是骗人的,哼,我还骗了别人,呜呜呜~~~

过了一段时间,看到刘富强把那本书翻译出来了,买了看看,没懂...

又过了一段时间,找到了少磷兄专门修改gtsam库的,他人员光广,一起建了微信群,他把这个圈子里的人竟然都拉进去了,讨论了几次,未果...

然后我就陷入了“论文-程序-教材书-论文-程序-教材书.......” 之间的切换循环中,(6个月后)直到现在....

好了,说了我的错误路线,就是想让大家吸取下教训“没有咬住一点使劲钻研, 一直在犹豫”

2、怎么快速入门。

下面说下,我建议的正确学习路线:

首先,可以试着用一下gtsam这个库,有个直观的感受。

然后,切记,不要上去就打开库看源文件,这样一来限制你的思维,二来,浪费时间。应该看下那本书,中文翻译的最好,我推荐先看懂isam1中的 因子图构建,然后最好能把因子图的构建方法用matlab实现一下。

能够实现到,Ax=b这个方程。其实因子图的基本思想到这里已经完成了。

后面的那一堆更多的呢,只是对这个方程,以及增量优化这个方程的加速。【所以不要舍本逐末】

然后学习书中的QR分解实现稀疏优化。因为QR分解是能够实现增量平滑优化的最简单方法。如下:

然后再辅助上givens旋转。

这一步也学明白了,再开始看看因子图转成贝叶斯网的过程,即 消元顺序。

最后的最后,如果你能看到这一步,那就再看看 Bayes tree 的构建和更新吧。这块论文写的叫一个糊涂啊,我是没看懂。如果前几步都没学就直接看这里,我估计和我一样,浪费年华啊。

3、有哪些研究点可以挖掘

根据我的浅薄了解,因子图增量平滑,由两个方面可以出文章,算法改进和新的应用。

算法改进方面的研究点

1)首先是isam1,isam1中采用整体优化和增量优化切换的方法优化,那么怎么切换呢,作者采用的是 固定N步,就整体优化一次。哈哈,看到了吧,你可以搞一个更加智能的方法(随机森林判定树啊)来判断什么时候增量平滑,什么时候全局处理。这块还真有兄弟跟进了,我查到了一片AprilSAM,就是在这块做的文章。创新点在下图中小字:

这个文章提出的这几点都可以继续深挖,像批处理和增量模式的切换条件 动态变量冲排序,减少回带次数。

2)isam2,即贝叶斯树,这块呢,我个人觉的(意思就是我没看懂),作者不知道是在造概念还是怎么的,里面用了好几种树的转换。流程多效率肯定就低,能否看懂这几种转换之间的关系 然后将其简化,所谓 end-to-end,哈哈哈

3) 关于贝叶斯树的深度调整,如果你仔细看的话就会发现,根据论文中的推导,树的深度会一直增加,那么,能不能吧树的深度调整一下呢。实不相瞒,我开始选定的方向就是贝叶斯树的平衡构建方法。不过 未遂。

新的应用

基于增量平滑的新的应用方向。这里举个例子把,LOAM大家听过吧,我看了下最近的IROS会议中有个兄弟发了一篇文章叫 lego_loam,就是在LOAM的基础上加入了回环检测,后端采用了Gtsam优化。

有哪些坑需要避过去

首先,不要陷入到程序中,gtsam为了面向工程而开发的,不是教程,里面很多内容其实没必要学习,也看不懂,先看论文和书本。

正如导师今早给我说的,"找论文点的时候不要有太多的羁绊,要保持赤纯,代码只是思想的表达,算法思想永远是第一位,爱因斯坦的相对论....."。我的理解是,有一定理论基础后,在理论上推导,我就是深陷入代码之坑了。(为啥呢?因为矫枉过正,我上一篇就是最后编不出代码)。

还由一个大坑,不要直接上去就整贝叶斯树,他只是对增量平滑的一个改进,真正的算法核心就是 因子图的构建和 信息矩阵的增量优化(增量QR求解)划重点

我的困惑

最后呢,说一个我的困惑,我目前还没找到哪里需要这么实时准确的地图,就是说在跑的局部就需要全局的优化,我自己觉得这样的应用场景肯定是机器人的速度非常之快。

有时候一想其实隔一段时间优化一次也挺好呀。G2o,ceres。【黑人脸】

如果大家选定了这个方向,就抓住一个小点,咬住不放。能不能出文章,我就不敢保证了,因为我还没写出来,但是祝大家都能写出SCI。


毕业两年了,补充一下 2021年8月31日

我工作方向是软件优化加速,如果再给我一次读研机会,我觉得对现有开源库做优化加速是个好方向,比如:

+ 把orb slam v2的运行速度提升十倍;

+把ceres或g2o速度提升十倍(这个有点难)

+把isam loam elasticfusion速度提升十倍;

怎么样,思路简单吧,一招吃遍天。

工作简单,价值无限,实实在在的,我现在就想找个开源库一通优化,给社会做贡献,可步入社会后,铜臭熏心啊,有点技术了,却没了土壤。……

我等凡人读研,就是要做做这种笨功夫,看起来呆呆的活。

我就是因为太浮躁,浪费三年好时光,朝三暮四,没做出来成绩。

“悲夫,后之视今,亦如今之视昔”

本文仅做学术分享,如有侵权,请联系删文。

干货下载与学习

后台回复:巴塞罗自治大学课件,即可下载国外大学沉淀数年3D Vison精品课件

后台回复:计算机视觉书籍,即可下载3D视觉领域经典书籍pdf

后台回复:3D视觉课程,即可学习3D视觉领域精品课程

3D视觉工坊精品课程官网:3dcver.com

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

13.重磅!四旋翼飞行器:算法与实战

14.ROS2从入门到精通:理论与实战

15.国内首个3D缺陷检测教程:理论、源码与实战

16.基于Open3D的点云处理入门与实战教程

17.透彻理解视觉ORB-SLAM3:理论基础+代码解析+算法改进

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿,加微信:dddvision

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近6000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

踩坑总结!因子图优化SLAM研究方向归纳相关推荐

  1. 因子图优化 SLAM 研究方向归纳

    转载自:https://zhuanlan.zhihu.com/p/53972892 因子图优化 SLAM 研究方向归纳 三川小哥 OmniVision 算法优化工程师 兄弟们,我正在崩溃的边缘,不过我 ...

  2. windows批处理:if else的踩坑点及排版优化

    参考: https://www.jianshu.com/p/f0bde7d355a4 总结: 见参考文章

  3. 【踩坑记录】实体机器人运行Cartographer 3D Slam(深度摄像头)--未解决

    [运行背景] ROS1.0  20.04 noetic 机器人:NXRobo SPARK-T 安装cartographer请看: [安装学习]安装Cartographer ROS(noetic)_Ho ...

  4. TVM: Deep Learning模型的优化编译器(强烈推荐, 附踩坑记录)

    本文作者是阿莱克西斯,原载于知乎,雷锋网(公众号:雷锋网)获得授权转载. (前排提醒,本文的人文内容部分稍稍带有艺术加工,请保持一定的幽默感进行阅读) 关注我最近想法的同学应该知道我最近都在把玩 TV ...

  5. [视觉Slam十四讲(2)踩坑记录]第3讲:Fatal error :Eigen/core没有那个文件或目录

    [视觉Slam十四讲(2)踩坑记录]第3讲:Fatal error :Eigen/core没有那个文件或目录 问题描述: 在学习SlamBook2-ch3中对Eigen矩阵运算包内容时,编写好相关代码 ...

  6. 一起做激光SLAM[六]isam于SLAM位姿因子图优化的使用

    本节目标:学习gtsam与isam在二位位姿pose2和三维位姿pose3上的使用,并将isam用于位姿的因子图优化. 预期效果:将ICP匹配带来的瞬间位移变成对之前累积误差的消除.蓝色ICP无图优化 ...

  7. 【踩坑记录】仿真环境使用小车进行Cartographer 3D Slam(深度摄像头)

    [运行背景] ROS1 20.04 noetic 安装cartographer请看: [安装学习]安装Cartographer ROS(noetic)_Howe_xixi的博客-CSDN博客网上使用n ...

  8. 使用RKNN部署CRNN模型踩坑优化历程

    序言 前段时间使用RKNN部署一个文字识别模型,因为文字识别模型用的是目前最普遍使用的CRNN模型,结构也相对简单:卷积+LSTM+全连接,都是比较元老级别的算子,本来已经部署的过程会很顺利,结果发现 ...

  9. unity webgl开发踩坑——从开发、发布到优化

    目录 前言 环境 unity webgl的一些注意点 videoplayer修改-->Video Player WebGL插件 text修改--解决不能显示汉字问题 制作.读取ab包 unity ...

最新文章

  1. 如何优雅地退出python程序
  2. Express踩坑系列之上传文件
  3. js node 打包mac应用_混搭 TypeScript + GraphQL + DI + Decorator 风格写 Node.js 应用
  4. 全球及中国无服务器应用程序行业应用调研与投资前景规划报告2022版
  5. GTK实现文本翻页(dailyNote.c)
  6. .net 编译、反编译、查壳、脱壳、反混淆工具
  7. win10系统远程ubuntu(linux)桌面
  8. 用SQL语言操作数据
  9. (转)币圈人物志 BM(EOS,BTS,Steem缔造者)
  10. html5 web报表工具,Web报表工具的填报功能
  11. Capture CIS 软件功能介绍
  12. 一文读懂沃尔玛、腾讯、京东、浙商银行在供应链领域的区块链应用实例
  13. Xshell的一个轻量且免费的替代品ConEmu
  14. 盒子竞争激烈 Apple TV在美仅排第三
  15. GUI界面的视频帧提取
  16. bugku-post
  17. 因为意外的遇到文件尾,PS无法打开怎么办?
  18. 找出阿里云服务器无法访问淘宝司拍页面原因
  19. no module named yum有效解决办法
  20. 方胜山《cisco网络故障处理手册》

热门文章

  1. 爬虫学习笔记1——Python基本语法
  2. Transfer Learning for NLP with TensorFlow Hub
  3. 【SVM分类】基于支持向量机实现数据分类附matlab代码
  4. 基于多平面先验的高效VIO工作开源
  5. vue下载表格到本地
  6. 城市地下综合管廊安全运营与智慧管控的分层架构研究
  7. 2009-2017年中国水资源数据可视化(python+pyecharts)
  8. 三菱FX3U 485BD与施耐德ATV71变频器通讯程序
  9. python点击屏幕坐标_Appium+python自动化(二十二)- 三个臭皮匠顶个诸葛亮-控件坐标获取(超详解)...
  10. 关于云服务器那些事:如何保障中小企业的安全,顺利上云