社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

自动化专业如何转SLAM或机器学习岗?

计算机视觉life • 7 年前 • 1029 次点击  

点击上方“计算机视觉life”,选择“星标”

快速获得最新干货

本文来自知乎上的同名问题,原文链接:
https://www.zhihu.com/question/266685012/answer/336327001
题主是北京某985理工类高校自动化专业本硕(硕士专业是控制工程),刚刚毕业半年左右,第一份工作是在一家创业型机器人小公司做控制工程师。工作内容很杂,主要是一些stm32开发和信号处理之类的工作,这家公司管理混乱,而且公司缺乏技术上经验丰富的老员工,作为一个刚刚毕业的新人,感觉完全学不到什么东西,成长性不足,而且分配的工作也不是自己兴趣所在,于是我工作了半年不到就辞职了,打算趁着过年准备一下换一个靠谱点的工作。主要想转到slam方向和机器学习方向。
我自己本身的情况是这样的:

项目经历:
没有实习经历,自己在实验室的项目基本上和slam和机器学习没关系,主要是调PID什么的,纯工程任务。本科毕设是用支持向量机做信号识别,但是本科毕设非常简单。

个人知识储备:
1、机器学习这块我是一直从本科就在学,吴恩达的课看过前面一半,《统计学习方法》全部看过一遍,里面的算法也大都推过一遍。周志华的西瓜书也看过。但是没有实际的项目经历(不知道泰坦尼克幸存者预测和TensorFlow手写数字识别算不算)。
2、slam这一块我是自学的《视觉slam十四讲》一书,原理都看懂了,书上的代码的大约70%都自己亲手敲过一遍,orb-slam2论文看过,代码细细读过。

请slam和机器学习行业的职场老司机解答一下我的问题:
我这样没有实习经历和项目支撑的情况下,转去slam或机器学习岗位,是否能够被公司接受呢?或者说我要达到什么样的程度,才能被相关公司接受?会有公司愿意接受从0培养新人吗?(我算从0.5吧)
职场老司机可否给一些转行的可操作的建议呢?
本文对几个优秀的回答进行了整理,解释权归答主所有。如有侵权,请联系删除
以下观点并不代表计算机视觉life观点,仅作为参考。

半闲居士:

在下也是自动化系毕业,好像并不存在转行一说,自动化搞控制、搞机器学习或者slam都很正常。
机器学习应用范围宽,门槛低,目前学习资料很丰富,学起来并不费劲。相比来说slam资料少很多,书籍还都是大部头的书,学起来还是挺花时间的。slam背后牵扯到的数学知识比较广,能吃透并不容易(deep learning除了梯度下降之外还有别的数学吗)。
slam岗位目前看来还是不太招的到人的阶段。虽然有人觉得Slam在理论上已经解决了,然而现实是:
  • 大部分人从零开始写一个slam程序,多半写不到现在开源方案的水平;
  • 开源方案不满足需求的情况下,大部分也不会改(对方案的了解并不深入);
slam应用主要在自动驾驶、机器人、AR/VR上。国内自动驾驶近年很活跃,BAT和各车厂都有布局,创业公司有名一点的都可以数出30多家。机器人的话,园区物流需求也比较明显,京东、菜鸟以及许多创业公司都在做,ARVR不太好说,内容和生态能不能起来还是个问题。在你有硕士学位情况下,应该不难找到对应岗位。如果你自己能够写出完整一套slam,或者对某个开源方案有很深入的理解(看的懂,改的动),多数公司都应该会要你(据我了解许多公司里的人员对slam了解也是这个深度)。如果你的理论基础再扎实一些就更好。
作为建议,你可以尝试自己写个简单的slam project,在kitti,euroc等数据集上与开源方案对比测试后,把结果放到简历里,会让你找到合适岗位的几率增加不少。

Pickles Husky:

SLAM方向的博士生,最近也在找工作,简单说两句。
首先澄清一点,SLAM和机器学习完全不是一个量级的领域。机器学习对于很多公司和业务都是非常基础的工具,而且这一趋势越来越明显,以后非常多的岗位都需要掌握机器学习的技术。机器学习跟很多领域都有交叉,比如现在在SLAM中应用机器学习的地方也越来越多。不客气的说,掌握机器学习和数据处理技能的重要性,等同于掌握领域内的重要编程语言,比如C++。
而SLAM的应用面窄的多。SLAM的主要需求现在在机器人、自动驾驶和ARVR领域,如果SLAM是你的focus的话,你的就业面仅限这些行业。
而且说的不客气一点,就算在以上这些领域,SLAM也不是驱动这些应用的最核心技术,SLAM仅仅作为一个提供定位与建图的子模块而已。当前很多应用中的SLAM问题尚未完全解决好,大家在SLAM上花很多精力解决问题;而一旦SLAM问题得到比较好的解决,SLAM将只是系统中提供定位以及建图的工具而已,大家的精力将更多的放在更重要的问题上,比如自动驾驶中的perception、semantic information以及behavior prediction问题、机器人领域中的manipulation问题,等等。虽然我自己是做SLAM的,但是不负责任预测SLAM领域的热度很难长时间持续下去,至少以十年量级来看以后衰落是必然的。而机器学习与数据科学现在的机会以及未来的潜力都是很难限量的。
讨论完SLAM这个行业,再来看一下题主的背景。SLAM技能掌握上的特点与机器学习有点像,就是这个领域显性门槛比较低,但是隐形门槛比较高。down一些opensource的code下来大家都可以跑比较好的demo,就像机器学习里面大家顺着tutorial去跑mnist的example非常简单一样。但是opensource的东西没有应用背景,在真实的应用场景下出现一定比例、甚至大面积不work是非常常见的。当你真正到了企业里面,企业需要你做能够在应用场景下稳定工作的SLAM模块,这时候无论是自己从零写,还是改opensource,你都需要有很好的对SLAM原理及系统的理解,来调整系统去处理一些fail的cases。能够为企业处理这样的问题,一两年的实际项目经验加上相当量的阅读(经典的大部头比如MVG和paper,至少是传统的paper)是必须的。
我非常不看好题主在家里自行修炼。家里能做的SLAM项目一般都没有业界背景(这一点比机器学习条件更恶劣,机器学习起码存在kaggle这样“接近于”业界的项目可以做,SLAM除了kitti外别的和业界完全不沾边),而业界非常看重实际相关的项目背景。而且企业从零培养新人的意愿非常低,首先公司招你就是希望你有实际产出,而不是花钱培养你;其次如之前所说SLAM方向培养时间还是偏长的。
如果题主执意要走以SLAM为核心的技能路线,有两条可能的路题主可以考虑:1. 读相关方向的硕士后者博士,毕竟研究生招零基础学生的概率远高于企业。2. 走开发线路,需要题主有很强的C++背景(SLAM开发中C++目前是绝对主流),然后以软件开发的身份进入相关公司SLAM的团队,在有经验的人指导下进行SLAM的软件开发,这是我能想到的能在企业里面学习SLAM的唯一渠道吧。。。

CLEMENT HUANG:

我司正在找一名自动化背景, 愿意学习SLAM,编程能力强的工程师。坐标上海。所以看到这个问题, 忍不住来回答几句。
先介绍本人, 自动化专业本硕,学校都是985,在国企呆过三年, 外企12年,创业2年半。所以对于控制专业的学生的困惑应该是很有切身的体会的。控制专业的学生学的东西很多,但是到了工作中总有一种有力使不出来的感觉,关键是自动控制的应用是太广泛了, 运动控制, 拖动, 过程控制, 微机原理,DSP或者算是Soc(System  on Chip), 电力电子, 各种编程语言,软件工程,到了研究生还要学数字信号处理, 各种优化控制算法, 甚至统筹学, 包括最近火起来的机器人, SLAM, 人工智能, 博弈论。你说一个在学校学校的学生,或者刚毕业三年的新人到哪里摸得到门,行业里的随便一个小障碍就可以阻挡住一个信心满满的年青人,更别说如果单拿出一项武器来, 我们还干不过别的专业。比如电力电子功率电路, 肯定干不过学电力系统的, 软件干不过计算机的,算法没应用数学的强, 搞通信和通信工程的也有差距。即使是电机控制, 要知道高校也有专门的电机系。控制专业的学生可能学了一年的电力拖动没见过真正的电机,更分不清直流,交流, 直流无刷, 交流永磁,交流同步。然我见过无数自动化的大牛,后来在选择的方向(非自动化)上都干成了最优秀,那是在开始的三年甚至整个职业生涯花了更多的时间, 精力,伤了无数的脑细胞才取得的成就。
回到正题, 我能给的建议是, 找到一个适合自己的方向和平台, 保持旺盛的学习欲望,扎下来干个三年,短期的职业空窗期是可以接受的,但超过半年以上,基本上很难得到面试机会,公司评估一个这样的候选人风险太高。并且你在家里学习和在工作中学习完全是两回事, 读了多少书不代表你已经入了行。
不要给自己太窄的定位, 真正研究算法的人在一个公司里是少之又少的, 算法需要自己去用代码实现吧。要会测试吧,要能理解底层给你的接口吧。还要懂一些行业背景应用吧, 我只能说学习才刚刚开始。

刘畅:

知乎小透明首答,想借贵宝地写下给新进入SLAM 领域或者犹豫是否进入SLAM 领域的在读研究生(注意,是研究生,为什么?因为其实研究生做SLAM 时间还是挺紧的)一些忠告:
1.能不碰实体机器人就不碰实体机器人
2.找好部分开始做
因为SLAM 范围太广,涉及内容也很深,学校又是一个要求创新点的地方,所以在读完十四讲(已被圈内封为SLAM 圣经,感谢高灯塔)之后,跑完全书的大部分代码的时候,不要说,啊~好兴奋~我已经全部掌握SLAM 啦~而是冷静下来,仔细想一想,我想研究哪部分,是基于多视图几何的前端?还是对优化问题比较感兴趣,想从概率机器人和凸优化两本书入手?又或者是我想用机器学习做做回环?还是说我要摒弃现有的一套方案直接用深度学习来个端对端的VO(这个已经有了,一个比较出名的大学做的,但是想做深入的研究应该也是可以的吧),带着问题做研究,把问题抽象。如果你只是要优化下定位精度,真的不用非要找个实体机器人,学好使用数据集测试自己的方案,将更多的精力放在C++上和优化的方法上(尤其是对于答主这种本来是机械的,编程也就是C++ primer 第一章的水平~).今天先答这些吧,太晚了,以后有时间接着答。

slamer:

本人恰好也是自动化,刚毕业就进入一家机器人公司,做定位制图相关工作,机器学习稍微了解,主要说说slam。以上背景
slam方向是工程与科研相结合学科,在有很好的数学基础前提下也需要很强的工程(尤其是c++)能力。如果题主想从事slam方向,首先可以先了解目前比较流行的slam解决方案,阅读相关开源项目,比如激光slam中gmapping、cartographer,开源项目不仅能让你对slam有一个宏观的了解,也能够学习好的代码风格和代码技巧。其次,学习相关理论知识,像非线性最小二乘法、卡尔曼滤波、粒子滤波、数值优化、自动求导等,有了这些基础,slam入门才刚刚开始。如果想要进阶,尝试结合自己学到的理论知识,写一个slam,这个时候对这些理论知识会有比较深刻的认识,写工程的同时,你可能会发现有些书本中学不到的东西,比如调参,掌握调参技巧,好的参数就像整容手术,能让机器人很好的work,后面要跟紧时代步伐,多阅读slam相关paper。最后做slam不要急躁,在slam工程中会有很多小问题,保持好心态,祝你好运。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、算法竞赛、图像检测分割、人脸人体、医学影像、自动驾驶、综合等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


从零开始学习三维视觉核心技术SLAM,扫描查看介绍,3天内无条件退款

早就是优势,学习切忌单打独斗,这里有教程资料、练习作业、答疑解惑等,优质学习圈帮你少走弯路,快速入门!


推荐阅读

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

从零开始一起学习SLAM | 为什么要学SLAM?

从零开始一起学习SLAM | 学习SLAM到底需要学什么?

从零开始一起学习SLAM | SLAM有什么用?

从零开始一起学习SLAM | C++新特性要不要学?

从零开始一起学习SLAM | 为什么要用齐次坐标?

从零开始一起学习SLAM | 三维空间刚体的旋转

从零开始一起学习SLAM | 为啥需要李群与李代数?

从零开始一起学习SLAM | 相机成像模型

从零开始一起学习SLAM | 不推公式,如何真正理解对极约束?

从零开始一起学习SLAM | 神奇的单应矩阵

从零开始一起学习SLAM | 你好,点云

从零开始一起学习SLAM | 给点云加个滤网

从零开始一起学习SLAM | 点云平滑法线估计

从零开始一起学习SLAM | 点云到网格的进化

从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码

从零开始一起学习SLAM | 掌握g2o顶点编程套路

从零开始一起学习SLAM | 掌握g2o边的代码套路

从零开始一起学习SLAM | ICP原理及应用

从零开始一起学习SLAM | 用四元数插值来对齐IMU和图像帧

汇总 | SLAM、重建、语义相关数据集大全

吐血整理 | SLAM方向国内有哪些优秀的公司?

最强战队 | 三维视觉、SLAM方向全球顶尖实验室汇总

计算机视觉方向简介 | 视觉惯性里程计(VIO)

解放双手|教你进行相机与IMU外参的在线标定

SLAM方向公众号、知乎、博客上有哪些大V可以关注?


最新AI干货,我在看  

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39637