代码改变世界

如何从零开始系统化学习视觉SLAM?

2019-04-13 22:32  计算机视觉life  阅读(2944)  评论(0编辑  收藏  举报

由于显示格式问题,建议阅读原文:如何从零开始系统化学习视觉SLAM?

什么是SLAM?

在这里插入图片描述
SLAM是 Simultaneous Localization And Mapping的 英文首字母组合,一般翻译为:同时定位与建图、同时定位与地图构建。虽然听起来比较拗口,但SLAM却是三维视觉的核心技术,广泛应用于AR、自动驾驶、智能机器人、无人机等前沿热门领域。可以说凡是具有一定行动能力的智能体都拥有某种形式的SLAM系统。关于SLAM的具体应用场景介绍可以看《SLAM有什么用?》

SLAM是计算机视觉技术的下一个风口

相比于计算机 视觉领域的另一个热门:深度学习,SLAM技术尚处于技术爆发前期。这是因为:

在学术研究 方面:从最近几年计算机视觉的三大顶级会议CVPR, ICCV, ECCV 录用论文来看,以SLAM技术为核心的三维视觉论文正在快速增长;

在硬件设备方面:以双目相机、深度相机为代表的消费级3D相机最近几年发展迅猛,国内外已经形成了成熟的产业链。3D相机在智能手机、智能眼镜等设备上应用越来越多,以手机为例,苹果、华为、小米、OPPO、VIVO等手机大厂都在积极推动深度相机在手机上的普及。

在应用场景方面:最近几年无人机,智能机器人,自动驾驶汽车,AR设备的快速发展也极大促进SLAM技术在现实场景中的应用。

在这里插入图片描述

雷军说,站在时代的风口,猪都能飞起来。可以预见,SLAM技术是计算机视觉技术继深度学习后的下一个爆发的风口,关于这方面详情见《为什么要学SLAM?》。

学习SLAM如何入门?

那么,想要学习SLAM如何入门呢?

我们还是先拿深度学习做个对比。从研究角度出发,深度学习相对容易入门,这是由于深度学习本身黑盒子的特点,很多从业者不需要了解图像处理、计算机视觉的基础知识便可以得到一个相对较好的结果,因此入门门槛并不是很高。但事情都具有两面性,门槛越低的行业,也容易被替代。

而学习SLAM则需要具备三维空间刚体变换、相机成像模型、特征点提取与匹配、多视角几何、非线性优化等内容。这对于非该领域的从业者来说算是较高的门槛,也需要花费不少的时间来打基础。这个过程可能比较痛苦,但是熬过了这个过程,你就拥有了自己独有的核心竞争力,不用担心轻易被取代,未来会有非常强的竞争力。

但是目前关于SLAM学习的资料不多,而且参差不齐,初学者推荐高翔的《视觉SLAM十四讲》,该书也是本教程的必备参考书籍,虽然本书写的已经比较基础,但很多小伙伴在学习期间仍然会遇到很多困难:公式看不懂,代码不会写,不知道怎么入手等,白白浪费了时间和精力,甚至因此放弃了该方向的研究,白白错过了时代的风口。

有没有好的入门方法?

首先,我们来看看入门都需要哪些知识。这篇文章告诉你《学习SLAM到底需要学什么?》,以下是笔者所总结的SLAM学习的知识树:

在这里插入图片描述

《从零开始学习SLAM》知识星球

扫码即可加入学习!

支持三天内无条件退款(退款2次无法再加入)
在这里插入图片描述

有效期一年,平均每天不到0.3元,就能够和一群优秀的SLAM从业者一起交流进步,甚至解决就业问题。AI时代,最好的投资就是投资自己的大脑。

《从零开始学习SLAM》知识星球

星主是中科院毕业博士,目前在某CV公司从事视觉SLAM相关研究工作。星球主要有以下几个亮点:

1、技术介绍全面,不枯燥。该系列从最基础的知识开始介绍,一次只介绍一个具体的知识点,以形象生动的公众号图文结合视频课程,一点点深挖SLAM的各个重要技术点。有效期一年(从加入时间开始往后一年有效,到期仍可查看之前所有内容,查看新内容需续费),平时忙也没关系,有空可以反复看。

2、有习题,重视实践。笔者会根据不同知识点设计一些实用性的练习题(推导、编程等),俗话说,光看不做假把式,适当的练习能够加深读者的理解,把知识消化吸收为自己所用。

3、高质量的交流学习社区。练习题参考答案都会放到知识星球「从零开始一起学习SLAM」里,并会根据作业情况进行不定期讲解。星球内所有成员都可以进行发布问题、分享知识、上传资源、点赞、留言、赞赏、收藏等操作。而所有的交流讨论、资源分享等都可以沉淀下来并方便日后查询。遇到问题可以在星球里免费提问,星主看到后会及时答疑解惑 。

4、精选SLAM常见面试题,定期发布在星球里,引导大家讨论,并提供参考答案,帮助找工作的同学从容面试。目前已经有几十条SLAM常见面试题目和详细解答。

SLAM学习大纲

工具类

1、 熟悉Linux指令及基本操作

2、 熟悉Cmake基本操作

3、 熟悉C++编程,能看懂会使用C++11新特性

4、 熟悉Clion集成开发环境

5、 熟练掌握计算机视觉库OpenCV

6、 熟练掌握几何库Eigen

7、 熟练掌握李代数库Sophus

8、 熟练掌握点云库PCL

9、熟练掌握图优化库G2o

10、 熟练掌握非线性优化库Ceres

。。。

基础知识

1、 SLAM发展概况,宏观了解SLAM应用场景

2、 使用齐次坐标的原因及应用

3、 三维空间刚体旋转的表示方法,重点是四元数、旋转矩阵

4、 李群李代数在SLAM中的应用背景、推导关键公式

6、 双目相机模型

7、 RGB-D相机成像原理

8、 点云处理

9、 相机畸变模型及去畸变方法

10、对极几何

11、单应矩阵

12、相机标定

13、特征点提取、匹配、筛选

14、视觉里程计

15、梯度下降、牛顿法、高斯牛顿、LM、图优化方法

16、PNP、ICP、Bundle Adjustment

17、回环检测

。。。

亮点

1、 优秀论文讲解

2、 RGB-D稠密重建

3、 点云网格化

4、 三维模型重建

5、 从零开始手写一个完整SLAM

。。。

注:

1、 新进星球的同学可以关注 置顶的“内容快速导航”,尽早跟上节奏。

2、 一般隔一段时间会集中视频讲解一下作业,梳理一下常见问题和注意事项,所以大家没提交作业的尽早提交哈。做的不好没关系,关键要真的去做作业。

3、 本课程优势:

会增加比较实用的知识(如点云处理、三维重建等)和编程经验(调试方法、容易出错点讲解)

练习题实用性强,所有提交的作业都会批改,及时指出错误,也可以从其他人的作业中发现不同的做法,快速提高

重点公式/代码细致讲解

循序渐进写出一个完整SLAM

研究方向选择、考研/考博、工作选择等问题都可以免费提问

知识星球需付费加入,随着人数增多,会适当调高价格,越早加入价格越优惠。此外,星球还会红包奖励积极分享、解答问题的成员,只要每天0.3元 ,就能够把握时代的风口,和一群优秀的SLAM从业者一起交流进步,甚至解决就业问题。快用微信扫下面二维码加入SLAM学习圈~

在这里插入图片描述

下面是星球里的部分讨论交流截图:

(由于显示格式问题,图片显示有问题,建议阅读原文:如何从零开始系统化学习视觉SLAM?

如果没有考虑好是否加入星球也没关系。可以关注笔者公众号:计算机视觉life

可以查看、学习以下笔者发布的SLAM学习系列文章,都是免费的哦~

把握时代风口,越早加入越有价值~

以下 是公众号部分文章:

由于格式问题,部分链接显示有问题,建议阅读原文:如何从零开始系统化学习视觉SLAM?

从零开始一起学习SLAM | 为什么要学SLAM?
从零开始一起学习SLAM | 学习SLAM到底需要学什么?
从零开始一起学习SLAM | SLAM有什么用?
从零开始一起学习SLAM | C++新特性要不要学?
从零开始一起学习SLAM | 为什么要用齐次坐标?
从零开始一起学习SLAM | 三维空间刚体的旋转
从零开始一起学习SLAM | 为啥需要李群与李代数?
从零开始一起学习SLAM | 相机成像模型
从零开始一起学习SLAM | 不推公式,如何真正理解对极约束?
从零开始一起学习SLAM | 神奇的单应矩阵
从零开始一起学习SLAM | 你好,点云
从零开始一起学习SLAM | 给点云加个滤网
从零开始一起学习SLAM | 点云平滑法线估计
从零开始一起学习SLAM | 点云到网格的进化
从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码
从零开始一起学习SLAM | 掌握g2o顶点编程套路
零基础小白,如何入门计算机视觉?
SLAM领域牛人、牛实验室、牛研究成果梳理
我用MATLAB撸了一个2D LiDAR SLAM
可视化理解四元数,愿你不再掉头发
最近一年语义SLAM有哪些代表性工作?
视觉SLAM技术综述
汇总 | VIO、激光SLAM相关论文分类集锦
研究SLAM,对编程的要求有多高?
2018年SLAM、三维视觉方向求职经验分享
深度学习遇到SLAM | 如何评价基于深度学习的DeepVO,VINet,VidLoc?
IMU标定 | 工业界和学术界有什么不同?

研究SLAM,对编程的要求有多高?

新型相机DVS/Event-based camera的发展及应用

最近三年开源「语义SLAM/分割/建模」方案介绍

超详细干货 | 三维语义分割概述及总结