因为不方便放连接,更好的阅读体验请查看:自动化专业如何转SLAM或机器学习岗?
本文来自知乎上的同名问题,原文连接:
https://www.zhihu.com/question/266685012/answer/336327001
题主是北京某985理工类高校自动化专业本硕(硕士专业是控制工程),刚刚毕业半年左右,第一份工做是在一家创业型机器人小公司作控制工程师。工做内容很杂,主要是一些stm32开发和信号处理之类的工做,这家公司管理混乱,并且公司缺少技术上经验丰富的老员工,做为一个刚刚毕业的新人,感受彻底学不到什么东西,成长性不足,并且分配的工做也不是本身兴趣所在,因而我工做了半年不到就辞职了,打算趁着过年准备一下换一个靠谱点的工做。主要想转到slam方向和机器学习方向。
我本身自己的状况是这样的:前端
项目经历:
没有实习经历,本身在实验室的项目基本上和slam和机器学习不要紧,主要是调PID什么的,纯工程任务。本科毕设是用支持向量机作信号识别,可是本科毕设很是简单。c++
我的知识储备:
一、机器学习这块我是一直从本科就在学,吴恩达的课看过前面一半,《统计学习方法》所有看过一遍,里面的算法也大都推过一遍。周志华的西瓜书也看过。可是没有实际的项目经历(不知道泰坦尼克幸存者预测和TensorFlow手写数字识别算不算)。
二、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等数据集上与开源方案对比测试后,把结果放到简历里,会让你找到合适岗位的概率增长很多。编程
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的惟一渠道吧。。。app
我司正在找一名自动化背景, 愿意学习SLAM,编程能力强的工程师。坐标上海。因此看到这个问题, 忍不住来回答几句。
先介绍本人, 自动化专业本硕,学校都是985,在国企呆过三年, 外企12年,创业2年半。因此对于控制专业的学生的困惑应该是颇有切身的体会的。控制专业的学生学的东西不少,可是到了工做中总有一种有力使不出来的感受,关键是自动控制的应用是太普遍了, 运动控制, 拖动, 过程控制, 微机原理,DSP或者算是Soc(System on Chip), 电力电子, 各类编程语言,软件工程,到了研究生还要学数字信号处理, 各类优化控制算法, 甚至统筹学, 包括最近火起来的机器人, SLAM, 人工智能, 博弈论。你说一个在学校学校的学生,或者刚毕业三年的新人到哪里摸获得门,行业里的随便一个小障碍就能够阻挡住一个信心满满的年青人,更别说若是单拿出一项武器来, 咱们还干不过别的专业。好比电力电子功率电路, 确定干不过学电力系统的, 软件干不过计算机的,算法没应用数学的强, 搞通讯和通讯工程的也有差距。即便是电机控制, 要知道高校也有专门的电机系。控制专业的学生可能学了一年的电力拖动没见过真正的电机,更分不清直流,交流, 直流无刷, 交流永磁,交流同步。然我见过无数自动化的大牛,后来在选择的方向(非自动化)上都干成了最优秀,那是在开始的三年甚至整个职业生涯花了更多的时间, 精力,伤了无数的脑细胞才取得的成就。
回到正题, 我能给的建议是, 找到一个适合本身的方向和平台, 保持旺盛的学习欲望,扎下来干个三年,短时间的职业空窗期是能够接受的,但超过半年以上,基本上很可贵到面试机会,公司评估一个这样的候选人风险过高。而且你在家里学习和在工做中学习彻底是两回事, 读了多少书不表明你已经入了行。
不要给本身太窄的定位, 真正研究算法的人在一个公司里是少之又少的, 算法须要本身去用代码实现吧。要会测试吧,要能理解底层给你的接口吧。还要懂一些行业背景应用吧, 我只能说学习才刚刚开始。机器学习
知乎小透明首答,想借贵宝地写下给新进入SLAM 领域或者犹豫是否进入SLAM 领域的在读研究生(注意,是研究生,为何?由于其实研究生作SLAM 时间仍是挺紧的)一些忠告:
1.能不碰实体机器人就不碰实体机器人
2.找好部分开始作
由于SLAM 范围太广,涉及内容也很深,学校又是一个要求创新点的地方,因此在读完十四讲(已被圈内封为SLAM 圣经,感谢高灯塔)以后,跑彻底书的大部分代码的时候,不要说,啊~好兴奋~我已经所有掌握SLAM 啦~而是冷静下来,仔细想想,我想研究哪部分,是基于多视图几何的前端?仍是对优化问题比较感兴趣,想从几率机器人和凸优化两本书入手?又或者是我想用机器学习作作回环?仍是说我要摒弃现有的一套方案直接用深度学习来个端对端的VO(这个已经有了,一个比较出名的大学作的,可是想作深刻的研究应该也是能够的吧),带着问题作研究,把问题抽象。若是你只是要优化下定位精度,真的不用非要找个实体机器人,学好使用数据集测试本身的方案,将更多的精力放在C++上和优化的方法上(尤为是对于答主这种原本是机械的,编程也就是C++ primer 第一章的水平~).今天先答这些吧,太晚了,之后有时间接着答。编程语言
本人刚好也是自动化,刚毕业就进入一家机器人公司,作定位制图相关工做,机器学习稍微了解,主要说说slam。以上背景
slam方向是工程与科研相结合学科,在有很好的数学基础前提下也须要很强的工程(尤为是c++)能力。若是题主想从事slam方向,首先能够先了解目前比较流行的slam解决方案,阅读相关开源项目,好比激光slam中gmapping、cartographer,开源项目不只能让你对slam有一个宏观的了解,也可以学习好的代码风格和代码技巧。其次,学习相关理论知识,像非线性最小二乘法、卡尔曼滤波、粒子滤波、数值优化、自动求导等,有了这些基础,slam入门才刚刚开始。若是想要进阶,尝试结合本身学到的理论知识,写一个slam,这个时候对这些理论知识会有比较深入的认识,写工程的同时,你可能会发现有些书本中学不到的东西,好比调参,掌握调参技巧,好的参数就像整容手术,能让机器人很好的work,后面要跟紧时代步伐,多阅读slam相关paper。最后作slam不要急躁,在slam工程中会有不少小问题,保持好心态,祝你好运。工具
欢迎关注公众号:计算机视觉life,一块儿探索计算机视觉新世界~早就是优点,学习切忌单打独斗,这里有教程资料、练习做业、答疑解惑等,优质学习圈帮你少走弯路,快速入门!布局