分析一下2020年度中国计算机视觉人才调研报告

最近闲来无事,老潘以一名普通算法工程师的角度,结合自身以及周围人的情况,理性也感性地分析一下极市平台前些天发布的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源码感兴趣的可以看:

  • 一个Tensor的生命历程(Pytorch版)-上篇
  • 一个Tensor的生命历程(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的原因也很简单:

  • 多种模型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等),老潘研究过一段时间,苦于没有时间分享,感兴趣的可以交流一波~

什么?上述框架满足不了你?你要手撸一个框架自己搞(严重怀疑你是来炫技的)?在学生时代是可以花点时间,模仿其他大型框架写一个小的框架练练手,这里推荐几个项目来瞧一瞧学一学:

  • tinyflow
  • tinygrad
  • C++模板元编程实战-一个深度学习框架的初步实现

一般来说,框架同时具备训练和推理功能。但训练部分写起来挺难,如果是只写推理功能的话,又简单一些。很多框架只有推理功能,感兴趣的可以参考一哈,简单列了一些(并不全):

  • NCNN
  • MNN
  • TVM

如果是硬件公司(很多这样的硬件创业公司)使用自己的芯片,也会有相应的AI底层算法工程师去搭建类似于TensorRT这样的产品,写op,操控内存接口,最终产出类似于TensorRT这样的动态链接库,暴露出API供上层调用。

总之,框架这东西还是用的舒服比较好,我嘛,就喜欢用Pytorch

薪资情况

大部分互联网公司搞算法的薪资比搞开发的可能会高一些,但其实也相差不了多少(真的相差不了多少)。

大部分算法工程师也会干开发的活,只是附带算法这个属性罢了。只有真正的算法研究员才是真正研究算法理论退出新算法的。

薪资情况

对于硬件公司来说(vivo、oppo这类),算法工程师和开发工程师薪资并无区别(硕士校招)。都是有好几档,看各自水平定级。但是会有些研究性质的岗位只要求博士参与,这也就是博士与硕士的差距。

对于硕士研究生来说,算法和开发相差并没有想象中那么大,也不存在所谓的鄙视链。

行业分布

行业分布还是比较中肯的,人工智能领域与深度学习密切相关。大部分互联网公司也有很多深度学习的业务线存在,例如快手、抖音等各种AI玩法,都是与深度学习关系很深的项目。

还有电商的以图搜图、虚拟试妆;教育领域的视频教学中的课程互动、拍照搜题、智能阅卷等等。都是现在很平常融入生活中的AI场景,也可以说,AI无处不在了。

人工智能行业分布

借一下报告中的内容:

自2018年起,全球计算机视觉技术不断成熟,开源生态、技术社区、人工智能开放平台的建立也使得算法的开发与应用门槛显著下降。德勤在《全球人工智能发展白皮书》中指出,由深度学习驱动的计算机视觉在某些领域已经超越人类,特别是在人脸识别、图像分类等任务中。同时,在我国,计算机视觉技术的应用拥有庞大的市场空间与丰富的场景数据,因而当技术成熟度达到产业要求时,不少垂直行业,尤其是行业中的头部企业,选择了在组织内部搭建计算机视觉团队,打造行业专属的计算视视觉算法产品或相关功能。

第二节 人才的个人期望与规划

人才能有什么规划?无非就是想不断提升自己的技术水平薪资水平罢了。

理解一下

城市意愿

还是北上广深,老潘作为一名算法工程师,因为北京的互联网机会多,就毫不犹豫去了北京。其实对于任何打工者来说,哪的工作机会多当然就去哪儿了,在老家空有一身本领,但找不到合适的工作是最无奈的。

人才城市发展分布

当然也与城市发展以及公司薪资多少有关系,大城市发的钱比较多,但是房租贵,小城市发的钱比较少,但是房租便宜。究竟去哪儿好,还是看自己

提升自己

不得不说,程序员这个职业为何适合年轻人,有一点原因就是新技术来的很快,我们需要不停地根据业务需求学习新的知识,最好是能够快速上手。年轻人嘛,不会的东西学学就会了。

如何提升自己的水平

上图已经表达的很清楚了,大部分的程序员都是靠自学。自学是个主动的过程,自己寻找资料自己决定下一步该学什么。虽然有点累但是学习效率很惊人。

个人认为网上的付费视频可以看,但不是必要的,视频只是辅助作用。而且被动学习有时候会让自己产生感觉学习了不少的幻觉,老潘提醒一哈,如果只是光看视频不进行实战(完成一些课后作业啥的),学了不多久就会忘得。

遇到问题就百度或者google一下就好了,大部分的技术文章出自以下这些平台,这些平台是很好交流技术的地方:

  • 知乎
  • CSDN
  • 掘金
  • 博客园
  • 开源中国
  • 腾讯云社区
  • 等等

当然也有很多优秀的个人博客,这里就不一一列举了。不要脸地宣传一下自己的博客(逃):

  • oldpan博客

工作岗位选择?

算法工程师还是最香的,适合算法与工程兼备的童鞋。

高校老师和高效研究生适合喜欢搞研究、喜欢探索新方向的童鞋。

AI产品经理和AI项目经理据老潘所知门槛较高,大厂一般都会要求有实习经验的童鞋。

工作倾向选择

研究兴趣变化

报告指出:

在计算机视觉技术发展过程中,随着前沿理论的不断突破、产业应用的趋势变化,计算机视觉领域的人才 研究方向也在相应作出调整。本次报告对在职人员希望未来研究的领域进行了调研,结果发现:目标检测、图像分割、文本理解、目标跟踪仍为计算机视觉人才未来研究的重点方向,同时医学影像处理识别的研究兴趣排名由第 7 位上升到第 5 位,这可能与新冠疫情后医疗领域计算机视觉相关需求骤增有关。

研究兴趣变化

目标检测目前还是很热门的研究方向,毕竟刚需在那里摆着。老潘建议,学生阶段,最好还是多方向、多尝试尝试不同方向的算法,不要把苹果放一个篮子里。

第三节 社会对人才的述求

硕士级别是算法工程师的敲门砖,那是因为之前本科的时候很少有深度学习的项目,大部分只是ACM或者大学生电子设计大赛这样子的。和人工智能关系不是很大。

现在条件好了,深度学习也普及了,大部分高校也开设了相关的课程。我的表弟他们在本科阶段已经参与一些老师的项目,开始训练yolov3模型部署在TX2上去参加一些比赛,和研究生做的并没有本质上区别,这都是5年前想都不敢想的。

计算机人才要求硕士级别

现在是全民普及AI的时代,AI已经无处不在了。

人工智能教材出版!

技术要求

很真实,企业对人才的要求实际只有一个

  • 能帮我解决问题!
对于计算机人才的要求

但是解决问题也没有实际那么简单,需要很扎实的基础和较强的学习能力才行。

在企业不同于在学校,企业要求的不可能是demo级别的玩具,更多的是稳定可靠、精度达到要求且可以上线,缺一不可,看似简单,但实际困难重重。与高校场景完全不同,所以建议大家在高校中尽量多参加一些实际的项目,要有反馈,千万不要自嗨

PS:作为算法工程师,往往都是有压力的!拖大家的福,老潘的头发还是很浓密...

其他需求岗位

只有一点要提醒的,不是只有岗位名称包含CV、图像、AI等的才与深度学习有关系。随着深度学习的不断普及,上到算法层,中到软件层,下到硬件层,每个层都有与AI、与计算机视觉相关的岗位。

岗位名称五花八门,这里只说一句,名称是一方面,点进去看岗位介绍最靠谱!

其他需求岗位

关于算法岗位分布与特点老潘之后抽空会汇总一波。

第四节 人才的培养与发展

虽然说我们大部分人是靠自学,感觉有台电脑就可以。但是对于深度学习这个烧钱的方向来说,有设备有机器是最好的,这里列一下我们学习可能需要的设备:

  • 显卡(深度学习训练必备),关于显卡的选择,可以看下我之前的一篇文章给你一份配置清单:机器学习、深度学习电脑显卡配置指南,虽然是之前的,但是仍有参考意义。
  • 推理卡(如果你不搞训练只搞部署),类似于英伟达的TX2、Xavier系列、jetson nano系列,或者树莓派系列。这类板卡适合搞一些工程项目,类似于部署落地

关于部署落地,老潘有话想说:

  • CV算法内卷严重,但是我们可以看看视觉算法工业部署及落地方面的技术知识

实验室没有资源的但是又想参与的,可以自己掏钱买显卡(这里简单提一下,可以买2月26日发布的3060-12G显卡,官方建议价2499,性能和之前的1080ti差不多,如果有条件可以抢到,这款卡很适合做深度学习),也可以白嫖一些GPU资源(例如kaggle):

  • 随身GPU服务器:Kaggle中kernels的快速入门指南
  • 还有一些白嫖的GPU资源老潘还没有整理,之后会发布相关文章(关注老潘不错过)。

放心吧,只要你真心想入坑深度学习,GPU资源什么的不是大问题,可以通过各种方式解决,关键还是要有热情和兴趣。毕竟深度学习这条路,注定不会一帆风顺。

在学校与在公司的烦恼

在学校的烦恼能有啥哦?老潘认为在学校还是很舒服的...想学什么学什么,想做什么做什么。

不过肯定会有一些不满足于现状的学弟学妹们,想要突破一下自己,找点事情做。这个时候如果导师不给力,还是要靠自己的,主动找点事情做吧~

有疑问也可以与我交流。

计算机人才发展瓶颈

关于研究生导师和人工智能公司的发展瓶颈(烦恼),就不是我们所考虑的了,看看就行啦!

高校老师与企业的发展瓶颈

关于课程

基本高校的课程如下,课程基本是起到引导入门的作用。渴望学习的我们,更多的是希望自己找自己感兴趣喜欢的课程去学习。

课程资源限于篇幅,可以看看这篇:

  • 2021年了,我们还可以入门深度学习吗(含资源)
计算机视觉课程

正如报告中所说:

短期内在高校开设细分领域的课程仍有不小的挑战:

  • 一方面,计算机视觉细分领域广泛,学生兴趣较为分散,细分领域课程可能无法满足全部学生需要;
  • 另一方面,由于本领域技术迭代速度极快,且部分领域的学习需要多样化产业实际案例的支持,课程开设难度较大。

所以大部分的高校课程都是以打基础为主,非常适合刚入门的童鞋,老潘只想说一句:好好珍惜在学校的美好时光,认真学习吧,不要浪费时间~

最后

时间总是过的很快,还记得那会刚入门深度学习的时候,看吴恩达和李宏毅的课看的津津有味,虽然啥也不懂。转眼间3年过去,现在已经全民AI了,虽然偶尔会迷茫,但已经踏入深度学习的老潘依然会坚持走下去,不论是以何种形式。

希望大家能够和我一起坚持下去吧~

文中提到的一些分享资源在这里。

撩我

  • 如果你与我志同道合于此,老潘很愿意与你交流;
  • 如果你喜欢老潘的内容,欢迎关注和支持。

想知道老潘是如何学习踩坑的(PS:想与我交流问题)来公众号「oldpan博客」找我~

老潘也会整理一些自己的收藏,希望能帮助到大家,来神秘传送门看看吧~