老潘以一名算法工程师的角度,结合自身以及周围人的情况,理性也感性地分析一下极市平台前些天发布的2020年度中国计算机视觉人才调研报告。
以下的“计算机视觉人才”简称“人才”,感觉说人才有点怪怪的感觉?自己也算人才么?老潘只不过是一个普普通通的算法工程师罢了(逃)。
这个报告一共分为几个方面,用大白话讲一下就是:
- 计算机人才哪个城市最多,哪个专业最多、都喜欢发些什么论文、喜欢什么编程语言、深度学习框架、工作地点等等
- 作为计算机人才,我们应该学习什么才能不被社会所淘汰,如何提升自己
- 计算机人才也会有烦恼,不论是在学校还是在公司…
再次声明,该报告是由极市平台、中国图像图形学学会以及Deloitte联合发布。以下图片内容来源于报告,未做任何修改。一共34页的报告PDF,感兴趣的,公众号回复“000”即可获取。
哎呀,废话不多说,开始分析(吐槽)吧。
第一节 人才现状?
先看下人才分布?
调研人才分布中硕士和本科占比80%
挺正常,硕士做算法工程的更多,博士做算法研究的更多。一般在互联网公司中,大部分都是硕士做算法工程师,来的实习生也都是硕士研究生,当然也有少许的本科生,特别优秀的本科生应该也是可以做算法工程师这个岗位的。
研究生相比本科生的优势可能是:
- 学位,以及多学了几年知识?
- 但最重要的是在研究生阶段你有实验室,实验室如果老师资源够好经费足够,是可以做一些其他人没有条件去做的事情。
回想起当年本科生的时候,大家都是凑钱参加比赛,所有设备都是队员们惨兮兮地从生活费中一点一点扣,买个主控板都要精打细算。拿不到好奖项(奖金)的时候也常常入不敷出。
不过那会大家都很开心,毕竟是真正的热爱,当年熬夜通宵的日子现在也一去不复返了。
本科生与研究生做项目的区别还有一个:本科生没有约束,作比赛更多的是凭着兴趣,是主动;研究生有导师管着,大部分学生做项目是导师要求,是被动。态度决定一切,兴趣才是不断学习的动力。
哦对了,报告中一句话值得推敲:”在具备相关经验的群体中,其算法经验略多于工程经验“。
好好打工程基础吧!
看一下地域分布
来自北京的人才无需质疑数量肯定是第一,原因很简单,北京相应的人工智能企业最多,互联网氛围最好,大家当然都来北京了。接下来是深圳,深圳是创业之都,机具创业热情,硬件公司也多一些,机器人和AI结合的企业一抓一大把。最出名的算是大疆了。
好的企业都被一线二线城市瓜分了,那其他地方呢..
老潘也面临着残酷的事实:我这个专业这个技术方向,回老家实在找不到工作啊。
专业分布
再看一下专业分布。
学计算机专业的就是好呀,计算机相关专业在找工作上是有一定的优势,毕竟人家底子好一些。但是大家不要灰心,现在是自学的时代,网上好资源一搜一大把,只要你肯下功夫学习,不一定比专业搞计算机的差。
专业(相差太大的专业,例如田园设计等,这个难度可能会大些)和你在上学阶段学什么关系并不是很大,关键还是看自己。
趁着在学校,多找些组织,找些资料,赶紧学习吧!
研究领域
果然目标检测的人最多。
目标检测最好入门,资料最多,变种最多,代码最多…特别适合充当毕业生的毕设项目选题。不过如果是找算法开发相关的工作,只会目标检测是远远不够的。
老潘在前年找工作的时候主打的也是目标检测,当时在实习时候已经聊好了一个公司leader,答应说秋招的时候会再面试一下(就过)。但是秋招的时候那位leader不好意思地跟我说,他们公司目标检测相关任务开发这一块的人已经比较多了,他们更想要招有3D生成或者GAN项目经验的求职者。总而言之就是一句话:
你很优秀,但是不适合我们。
不过不同公司的需求是不一样的,目标检测这个方向对于大部分公司来说,仍然是需求量比较大的。
时代在发展,AI也在不停进步,你要问我现在CV领域哪儿还不卷?
我也不知道啊~
发表论文分布
发论文最好发的是什么话题?当然也是目标检测了。
不得不吐槽一下,不管是anchor-base还是anchor-free的检测框架,改一下脑袋(head)改一下颈部(neck)改一下身体(backbone)就可以水一篇论文了。什么?不会改?那就改一下数据集吧~同样的框架,换个场景,又是一条好汉。
喜欢的编程语言
还是老潘之前说过的,AI行业最流行的语言就是Python和C++。
不论是最火的深度学习框架Pytorch和Tensorflow,还是比较流行的模型加速推理框架TensorRT和TVM。都会提供Python接口来实现与用户的交互,提供API供用户使用,但实际内核代码都是使用C++编写的。原因很简单,为了保证性能以及方便地使用各种加速库(MKL、cuDNN)。另外,C++中的各种特性也比较适合团队协作开发大型项目,感兴趣的可以阅读相关源码,亲自感受下其牛逼之处。
对Pytorch源码感兴趣的可以看:
还有很多这里暂时不介绍了,有兴趣可以关注老潘,时不时会分析一哈框架。
喜欢的深度学习框架
以下内容很真实..国产的深度学习框架使用率7%不到(今年应该超过7%了,paddlepaddle很好用),还是Pytorch和Tensorflow的天下。
PS:感觉Darknet应该是靠yolov3火起来的,而且后继有人不断更新…纯C语言开箱即用对工业界简直不要太好。Caffe2挺可惜。MXNet小而美。
老潘理性分析一哈。对于学生来说,框架的易用性和社区完善度很重要(说白了就是遇到不会的问题,百度的时候资料多不多)。还有刚开始入门的小白,会听别人说什么什么好什么好,跟风使用;但对于公司来说,基本就是根据实际需求选择使用框架,例如这个模型只有Tensorflow的开源版本,有咩有Pytorch的,灭有?复现太耗时间,直接上手Tensorflow吧~毕竟是以业务来驱动的,产出就是第一目标,反之亦然。
目前情况来看,Pytorch不论在学生还是公司占有率优势很大。老潘3年前开始使用Pytorch进行深度学习研究,那会还是0.2版本,对比当时的TensorFlow,简直就像蚂蚁和大象。但短短2、3年时间,蚂蚁已经长大了。
公司更倾向于Pytorch的原因也很简单:
- 多种模型Pytorch实现最多(例如CenterNet、FCOS)
- 多种整合好的训练框架基于Pytorch(mmdet、detectron2)
- Pytorch训练好的模型部署起来也比较方便(各类推理框架对于Pytorch的支持更多一些,例如TensorRT)
- 更多数不清的理由(例如debug方便、对新手友好等等)
当然TensorFlow也是有优点的,TensorFlow-server很多公司在使用,虽然也有一部分是历史原因,但是其稳定性和可靠性仍然比大部分的server要强。
PS:推荐一个可以媲美TensorFlow-Server的服务器推理框架——triton-inference-server,前身是TensorRT-server,现已开源,可以部署各种框架模型进去(TensorRT、Pytorch、TensorFlow、Onnxruntime等),老潘研究过一段时间,苦于没有时间分享,感兴趣的可以交流一波~
什么?上述框架满足不了你?你要手撸一个框架自己搞(严重怀疑你是来炫技的)?在学生时代是可以花点时间,模仿其他大型框架写一个小的框架练练手,这里推荐几个项目来瞧一瞧学一学:
一般来说,框架同时具备训练和推理功能。但训练部分写起来挺难,如果是只写推理功能的话,又简单一些。很多框架只有推理功能,感兴趣的可以参考一哈,简单列了一些(并不全):
- NCNN
- MNN
- TVM
如果是硬件公司(很多这样的硬件创业公司)使用自己的芯片,也会有相应的AI底层算法工程师去搭建类似于TensorRT这样的产品,写op,操控内存接口,最终产出类似于TensorRT这样的动态链接库,暴露出API供上层调用。
总之,框架这东西还是用的舒服比较好,我嘛,就喜欢用Pytorch!
薪资情况
大部分互联网公司搞算法的薪资比搞开发的可能会高一些,但其实也相差不了多少(真的相差不了多少)。
大部分算法工程师也会干开发的活,只是附带算法这个属性罢了。只有真正的算法研究员才是真正研究算法理论退出新算法的。
对于硬件公司来说(vivo、oppo这类),算法工程师和开发工程师薪资并无区别(硕士校招)。都是有好几档,看各自水平定级。但是会有些研究性质的岗位只要求博士参与,这也就是博士与硕士的差距。
对于硕士研究生来说,算法和开发相差并没有想象中那么大,也不存在所谓的鄙视链。
行业分布
行业分布还是比较中肯的,人工智能领域与深度学习密切相关。大部分互联网公司也有很多深度学习的业务线存在,例如快手、抖音等各种AI玩法,都是与深度学习关系很深的项目。
还有电商的以图搜图、虚拟试妆;教育领域的视频教学中的课程互动、拍照搜题、智能阅卷等等。都是现在很平常融入生活中的AI场景,也可以说,AI无处不在了。
借一下报告中的内容:
自2018年起,全球计算机视觉技术不断成熟,开源生态、技术社区、人工智能开放平台的建立也使得算法的开发与应用门槛显著下降。德勤在《全球人工智能发展白皮书》中指出,由深度学习驱动的计算机视觉在某些领域已经超越人类,特别是在人脸识别、图像分类等任务中。同时,在我国,计算机视觉技术的应用拥有庞大的市场空间与丰富的场景数据,因而当技术成熟度达到产业要求时,不少垂直行业,尤其是行业中的头部企业,选择了在组织内部搭建计算机视觉团队,打造行业专属的计算视视觉算法产品或相关功能。
第二节 人才的个人期望与规划
人才能有什么规划?无非就是想不断提升自己的技术水平和薪资水平罢了。
城市意愿
还是北上广深,老潘作为一名算法工程师,因为北京的互联网机会多,就毫不犹豫去了北京。其实对于任何打工者来说,哪的工作机会多当然就去哪儿了,在老家空有一身本领,但找不到合适的工作是最无奈的。
当然也与城市发展以及公司薪资多少有关系,大城市发的钱比较多,但是房租贵,小城市发的钱比较少,但是房租便宜。究竟去哪儿好,还是看自己。
提升自己
不得不说,程序员这个职业为何适合年轻人,有一点原因就是新技术来的很快,我们需要不停地根据业务需求学习新的知识,最好是能够快速上手。年轻人嘛,不会的东西学学就会了。
上图已经表达的很清楚了,大部分的程序员都是靠自学。自学是个主动的过程,自己寻找资料自己决定下一步该学什么。虽然有点累但是学习效率很惊人。
个人认为网上的付费视频可以看,但不是必要的,视频只是辅助作用。而且被动学习有时候会让自己产生感觉学习了不少的幻觉,老潘提醒一哈,如果只是光看视频不进行实战(完成一些课后作业啥的),学了不多久就会忘得。
遇到问题就百度或者google一下就好了,大部分的技术文章出自以下这些平台,这些平台是很好交流技术的地方:
- 知乎
- CSDN
- 掘金
- 博客园
- 开源中国
- 腾讯云社区
- 等等
当然也有很多优秀的个人博客,这里就不一一列举了。不要脸地宣传一下自己的博客(逃):
工作岗位选择?
算法工程师还是最香的,适合算法与工程兼备的童鞋。
高校老师和高效研究生适合喜欢搞研究、喜欢探索新方向的童鞋。
AI产品经理和AI项目经理据老潘所知门槛较高,大厂一般都会要求有实习经验的童鞋。
研究兴趣变化
报告指出:
在计算机视觉技术发展过程中,随着前沿理论的不断突破、产业应用的趋势变化,计算机视觉领域的人才 研究方向也在相应作出调整。本次报告对在职人员希望未来研究的领域进行了调研,结果发现:目标检测、图像分割、文本理解、目标跟踪仍为计算机视觉人才未来研究的重点方向,同时医学影像处理识别的研究兴趣排名由第 7 位上升到第 5 位,这可能与新冠疫情后医疗领域计算机视觉相关需求骤增有关。
目标检测目前还是很热门的研究方向,毕竟刚需在那里摆着。老潘建议,学生阶段,最好还是多方向、多尝试尝试不同方向的算法,不要把苹果放一个篮子里。
第三节 社会对人才的述求
硕士级别是算法工程师的敲门砖,那是因为之前本科的时候很少有深度学习的项目,大部分只是ACM或者大学生电子设计大赛这样子的。和人工智能关系不是很大。
现在条件好了,深度学习也普及了,大部分高校也开设了相关的课程。我的表弟他们在本科阶段已经参与一些老师的项目,开始训练yolov3模型部署在TX2上去参加一些比赛,和研究生做的并没有本质上区别,这都是5年前想都不敢想的。
现在是全民普及AI的时代,AI已经无处不在了。
技术要求
很真实,企业对人才的要求实际只有一个:
- 能帮我解决问题!
但是解决问题也没有实际那么简单,需要很扎实的基础和较强的学习能力才行。
在企业不同于在学校,企业要求的不可能是demo级别的玩具,更多的是稳定可靠、精度达到要求且可以上线,缺一不可,看似简单,但实际困难重重。与高校场景完全不同,所以建议大家在高校中尽量多参加一些实际的项目,要有反馈,千万不要自嗨。
PS:作为算法工程师,往往都是有压力的!拖大家的福,老潘的头发还是很浓密…
其他需求岗位
只有一点要提醒的,不是只有岗位名称包含CV、图像、AI等的才与深度学习有关系。随着深度学习的不断普及,上到算法层,中到软件层,下到硬件层,每个层都有与AI、与计算机视觉相关的岗位。
岗位名称五花八门,这里只说一句,名称是一方面,点进去看岗位介绍最靠谱!
关于算法岗位分布与特点老潘之后抽空会汇总一波。
第四节 人才的培养与发展
虽然说我们大部分人是靠自学,感觉有台电脑就可以。但是对于深度学习这个烧钱的方向来说,有设备有机器是最好的,这里列一下我们学习可能需要的设备:
- 显卡(深度学习训练必备),关于显卡的选择,可以看下我之前的一篇文章给你一份配置清单:机器学习、深度学习电脑显卡配置指南,虽然是之前的,但是仍有参考意义。
- 推理卡(如果你不搞训练只搞部署),类似于英伟达的TX2、Xavier系列、jetson nano系列,或者树莓派系列。这类板卡适合搞一些工程项目,类似于部署落地
关于部署落地,老潘有话想说:
实验室没有资源的但是又想参与的,可以自己掏钱买显卡(这里简单提一下,可以买2月26日发布的3060-12G显卡,官方建议价2499,性能和之前的1080ti差不多,如果有条件可以抢到,这款卡很适合做深度学习),也可以白嫖一些GPU资源(例如kaggle):
- 随身GPU服务器:Kaggle中kernels的快速入门指南
- 还有一些白嫖的GPU资源老潘还没有整理,之后会发布相关文章(关注老潘不错过)。
放心吧,只要你真心想入坑深度学习,GPU资源什么的不是大问题,可以通过各种方式解决,关键还是要有热情和兴趣。毕竟深度学习这条路,注定不会一帆风顺。
在学校与在公司的烦恼
在学校的烦恼能有啥哦?老潘认为在学校还是很舒服的…想学什么学什么,想做什么做什么。
不过肯定会有一些不满足于现状的学弟学妹们,想要突破一下自己,找点事情做。这个时候如果导师不给力,还是要靠自己的,主动找点事情做吧~
有疑问也可以与我交流。
关于研究生导师和人工智能公司的发展瓶颈(烦恼),就不是我们所考虑的了,看看就行啦!
关于课程
基本高校的课程如下,课程基本是起到引导入门的作用。渴望学习的我们,更多的是希望自己找自己感兴趣喜欢的课程去学习。
课程资源限于篇幅,可以看看这篇:
正如报告中所说:
短期内在高校开设细分领域的课程仍有不小的挑战:
- 一方面,计算机视觉细分领域广泛,学生兴趣较为分散,细分领域课程可能无法满足全部学生需要;
- 另一方面,由于本领域技术迭代速度极快,且部分领域的学习需要多样化产业实际案例的支持,课程开设难度较大。
所以大部分的高校课程都是以打基础为主,非常适合刚入门的童鞋,老潘只想说一句:好好珍惜在学校的美好时光,认真学习吧,不要浪费时间~
最后
时间总是过的很快,还记得那会刚入门深度学习的时候,看吴恩达和李宏毅的课看的津津有味,虽然啥也不懂。转眼间3年过去,现在已经全民AI了,虽然偶尔会迷茫,但已经踏入深度学习的老潘依然会坚持走下去,不论是以何种形式。
文中提到的一些资源仍然在这里。
交流
如果你与我志同道合于此,老潘很愿意与你交流;如果你喜欢老潘的内容,欢迎关注和支持。
博客每周更新一篇深度原创文,想与老潘一起学习踩坑的,关注公众号「oldpan博客」不错过最新文章。老潘也会整理一些自己的私藏,希望能帮助到大家,公众号回复”888″获取老潘学习路线资料与文章汇总,还有更多等你挖掘。如果不想错过老潘的最新推文,请点击神秘链接。