当前位置:网站首页>没文章,没背景,想做CV?那就按这个干!

没文章,没背景,想做CV?那就按这个干!

2021-05-28 13:32:20 灿视学长


所有粉丝都说:“为什么没有早点关注我!”


0. 前言

Hello,大家好,我是灿视。

在我开始做号的这半个多月的时间里,有一些同学也添加了我为好友,跟我分享了一些ta们现在的困惑,其中有个问题比较普遍,概括来说就是“我要怎么学CV,以后才能找到工作”。我觉得这个问题也很有代表意义,现在拿出来,提供一点意见供大家参考哈~

1. 转专业,没项目

学弟学妹们,现在都遇到一个问题,就是不知道怎么学习CV,也不知道如果后面找工作的话,该如何针对性的学习。

老实讲,这些问题,我之前都遇到过。我是跨专业的,我当时跨专业考研,心里比你们更虚,我读研的时候都已经结婚了,压力肯定比你们还要大,但是我也过来了,你们也不要怕,最多吃点苦就行了,后面都会慢慢变好!近两年确实我也听到很多关于算法内卷的事情,现在大环境下,没有哪行竞争不激烈,我更多希望的是各位发现自己不喜欢做这一行选择换条赛道,而非一开始就害怕竞争!

现在我希望从在校学生以及企业所需要的求职者两个维度来跟大家分享下我的心得!

这篇文章,差不多前前后后写了也有3,4天的时间,占用了一些本该陪伴女儿的时间。但是,毕竟做为我们最早关注的一波人,是我们的大大大大大股东呀!股东们有问题,那我就当然需要用上我的全部能力,掏空自己,帮助各位啦!

其中,还有一件非常有缘的事情,有一位粉丝,居然还是我们《百面计算机视觉》第一版的粉丝。

这些同学我能感觉到是想未来从事CV这个行业,我目前也在负责一些CV算法的落地,可能我的理解也不是特别深入,但是我觉得我的意见,可能还是会对你们有参考价值。

2. 结论

我首先说结论:如果你真的喜欢做算法,想做算法,虽然现在确实很卷,但是你依旧可以吃到算法这碗饭。

我这里不是无脑建议你莽算法,我建议你评估下你是否真的热爱,是否想要从事这个行业。你可以热爱它的薪资,热爱它的未来发展,就像你找对象,你总得图点啥。

未来的AI会转型到各行各业中作为一个基础方案,会成为一种基础手段,如JAVA中的三大框架。CV赋能传统制造业,会是未来一大趋势,(而且这种公司个人觉得未来会是资本比较看好的一个方向,出现一些上市公司问题不大)但是这种场景,需要我们有很强的落地工程能力,所以我接下来会以如何做一个CV算法工程师来给大家展开下。

3. 企业所需要的人才

对于一个企业,招聘人才来公司并不是做完全做所谓的科研,最终科研的成果需要转化落地。不排除一个企业是可以专门招聘人员做科研,首先第一点那种企业很少,比如FLAG或者华为诺亚这种,但是也包括很多企业的AI LAB也并不是完全做科研,需要有产出的,比如达摩院就是自负赢亏。其次就是要求极高,博士或者很优秀的硕士起步,并且存在有影响力的工作,而不是那种灌水的Paper

我从实习到现在,待的部门都是业务驱动。其中部分部门也有一些科研性质的工作,但是最后均是希望可以用在自己的工作中,也就是为了落地而科研

而更多的是算法基础能力编程能力业务理解能力解决问题的能力等方面的要求。

  • 算法基础功:机器学习基础知识、深度学习基础知识、数学知识等。
  • 编程能力:就是算法需要用代码来进行落地,包括如PythonC++等。最后真要落地的时候,需要的是C++等优化算法的能力了。
  • 业务理解能力:一个项目,需要拆开多个模块。比如我们要做一个小区入口车牌识别的项目,那么就需要我们先数据预处理,再目标检测, 最后就是车牌识别等步骤。一个项目都是由一些基础任务来搭积木似的完成的。
  • 解决问题能力:这里概括来说就是分析Badcase,如分类中,有一些类总是分错,或者检测中一些物体就是漏检,那么你需要改模型,改loss,或者自己造点数据进去来缓解这个问题。

我们只有了解到公司需要什么的人,我们才能投其所好,把时间花在这上面呀。

4. 在校生该怎么做

4.1 把握重点

首先,如果各位出身不好,没有ACM竞赛好名次,没有好的论文,没有好的比赛,那么想直接做算法,以校招生的身份进入大厂,甚至说大厂实习的机会,都比较难。那如果你还想吃算法这碗饭的工作,怎么办?

我建议各位可以从下面几个角度出发,丰富自己的技能栈:

  • 放弃难以落地的工作,把时间花在刀刃上 为了就业,建议各位可以选择那些基础任务。因为目前为止,我接触到的公司的实际业务,都是由像检测、分类、分割等基础任务搭建出来的。我们需要把这些工作要学好,而像GAN或者NAS这种工作,不是大厂,不是特定的任务,基本上没机会实际用起来。
  • 多参加比赛,多逛Github 我当时在找实习的时候,我其实是没有什么工程经历的,我是找了几个同学,从头到尾参加的天池比赛,名次都不能看,但是是从数据处理到最后的模型预测的整个流程。我把简历好好打磨了下,最后拿到了腾讯的实习Offer。而其实我的模型什么的,都是从Github上面直接拿过来修改的。
  • 有机会多多做做部署的工作 对于AI而言,最好的价值是需要落地的。落地需要咱们掌握一些基础知识,比如C++、Linux等基础,还有一些部署的tensorrtopenvino等推理加速框架工具的学习。 老板们最看重的是你能不能出活,把活给干完!当然说到落地部署这个事情,比较尴尬的一点就是很多家公司在做推理框架,目前无法统一。我们只能说打好基础,针对具体公司,再做具体的落地工作了。部署这个事儿,我也在不断学习,后面我也会更新一些我部署中踩到的坑!
  • 调整心态 如果我们无法快速找到一个自己很满意的大厂或者独角兽的算法Offer,我们也可以选择找一个有实际落地场景的算法公司,进行沉淀!但,切记被温水煮青蛙!当然,选择创业公司还是有技巧的,不能光图它的高薪资,比如我一个哥们,就是创业公司顶不住了,被裁员了。当然,他能力很强,最后去了京东!我这边也有一些他的分享,后面有机会我再来分享下。

4.2 推荐路线

以下的知识,我这边整理了一个思维导图,并且我也整理好了相关的资料,如果你感兴趣,可以加我文末好友,找我领取资料~

  • 打好基础
    • 我们公众号的AICAMP:详细提供了Python入门Linux入门以及Pytorch入门的详细资料,后面我们会给出一些入门的项目,让你感受下AI是个什么东西,可以做到什么样的效果。当然,这些东西是不够的,后面还是需要继续提高,提高自己的工作与学习的效率。 对于落地而言,像C++是肯定需要会的。其中C++的相关学习资料,我这边强烈推荐各位去B站看于仕琪老师的课程,不用恐慌说**C++**有多难,慢慢学,多交流,对于AI落地而言,是没有太多问题的。打基础的过程很痛苦,但是熬过来,你会收获很多!
    • 机器学习/深度学习基础:我这边建议黄海广老师的机器学习相关资料。黄海广老师最近也在为温州大学研究生录机器学习课程,都是非常优质的资源。或者去B站直接搜李宏毅老师的课程。我这边不建议研究生去看吴恩达老师课,吴恩达老师的课比较适合“科普入门”,不适合研究生们打好基础。李宏毅老师的课是直接在台大给学生们上的课,我个人觉得因为是中文的,其次讲的很通俗易懂,非常推荐!
  • 基础任务
    • openpose;openpose被优化了蛮多版本,caffe版本的openpose配合opencv,模型很小,可以很快落地,推出第一个版本。
    • hourglass;永远滴神!实际场景中,数据集不大的场景下,hourglass又好落地,精度又不错!
    • 其它很多的关键点检测模型野蛮不错的,像商汤也有一个mmaction,我们也可以好好看看这个代码库。
    • 目前而言,分割主要还是UNet与FCN的天下。没啥好说的,很多attention魔改unet,可以看看就行。
    • SSD,faster rcnn等经典的目标检测网络
    • yolov1~yolov5(目前很多公司都是直接无脑yolov5,需要我们深挖这一块的东西)
    • mmdetection这样的代码库,像是我们公司之前,就直接mmdetection落地就好
    • 通用识别;如resent等经典,通用的网络。
    • 模型小型化;mobilenet系列、shufflenet系列、squeezenet还包括像efficientnet这种网络,需要了解,后面再换backbone的时候,可以直接扒过来就好。
    • 细粒度分类;实际场景,很多场景都是很细粒度的,需要我们跟进细粒度相关的知识!比如车企的车辆识别,养猪场里的猪识别(没错,jd之前还有猪脸识别的比赛)!
    • 识别相关
    • 检测相关
    • 分割相关 上面这三类基础任务就是我们花时间去整理,学习。如果你以后要真的做算法业务,这三类知识点,需要我们掌握。基本上,很多的任务,可以直接用这三类基础任务,搭配着来就可以解决了。我这边也建议各位了解下关键点检测的任务。
    • 关键点检测(与人体、健身相关的任务)
  • 落地学习
    • 基础学习(剪枝、量化、蒸馏) 需要我们多看博客跟论文,了解它们背后具体原理。很多大佬们都会做出笔记总结,我们需要多看他们的踩坑笔记。
    • 工具的使用 目前比较多的像tfslim、paddleslim、微软的NNI等都支持剪枝与量化的操作。我们需要多看文档,以及一些实战、踩坑的博客,自己多尝试。
    • ncnn、openvino、tensorrt等前向预测框架的尝试,同样有机会我们可以做做demo,如将训练好的模型,放到手机中。做项目的同时,思考下,如何落地!
  • 数据结构等算法学习
    • 相比于大厂,小厂因为有一部分是大厂回来做leader的,不保证它们会不会问一些算法题。所以我们也需要将leetcode的前200题差不多刷完,而且得会自己写出来哈。这个没有严格意义上多少题的限制,总的来说就是多多益善。
  • 工作相关的工具 其实,真正难的是做研究,研究出来一个好用的算法,而对于我们想吃这碗饭的人,我们不需要那么纠结说自己无法研究出来很强的算法,我们需要做的是,落地!落地!落地! 人工智能目前与很多传统行业都有交叉,未来人工智能技术会成为一些基础技术替换原有的技术,使用深度学习就会成为每个传统制造业企业的标配,而不再是企业竞争力了。我们需要了解自己的目标,再规划下自己的时间,针对性地去学习,去做。
    • git 公司都会有自己的git代码库,我们需要学习git的相关用法。(这个很香,像是写文档,写论文,开个git环境,不用害怕丢失或者改乱了~)
    • markdown 这个不用说了,md方便好用。或者你可以继续写latex呗!
    • Linux Linux是IT必会之操作系统,也不需要会很多,学习我们的Linux笔记,就差不多够用了。但是要是想提高工作效率,那些东西还是不够的,如
    awk、sed

    等命令的使用。

    • docker 你还纠结各种库的版本问题吗?用起来docker就好了!

4.3 研究生在读期间时间规划

我假设现在你是在大陆这边读研,在研二的时候开始秋招找工作。那我给你做这两年的时间规划安排!前方高能预警!

你会很累!我不给你画饼,你想进步,想高薪,想蜕变,你就必须付出!

假设你基础一般,或者跟我一样,是转行的。为了找到算法相关的工作,那么你需要下面的几步:

  1. 研一上学期,刷完李宏毅老师的机器学习与深度学习课程,建议看透。基本上常用的分类,检测等任务就了解了。同时你需要入门Python,再刷完C++ Primer那本书。
  2. 研一下学期期间,配合github,把分类、检测、分割等任务的代码好好看,包括像Opencv等相关项目,并且需要跑通它们,了解下每一步怎么做的。
  3. 研二上学期,把之前做的分类,检测等任务,部署起来。在一些公开数据集上把模型训好,再把它们真正部署下去。
  4. 研二下学期,想办法,接触到实际业务。看看能不能争取得到实习的机会。我建议你可以想尽一切办法,出去实习,为你的秋招简历做准备!在学校做的东西,跟实际落地,还是有差距的,但是你要是基础不错,并且自己主动学过落地的相关工具、知识,那么你找个实习,问题不大。
  5. 刷题的话,可能需要你平时碎片化时间学习,一开始可以系统学习相关课程,把常用的算法知识的基础打下来,之后坚持每天做一题。

其中,你还会遇到导师的论文push,导师的横向课题的压力。所以我的这些规划,真的很累,保底需要你996去肝它们。人生在世,本就是一场苦行!但是你不孤单,我就是这么过来的,当然,我当时浪费了一些时间在做科研上面,最后科研成果几乎没有,花了一些时间证明了自己在算法科研上就是一个fw,现在就很后悔没有去部署几个东西。我在这里建议各位,先想办法满足毕业条件,好好修行落地的东西。

5. 免费资料领取

现在网上的资料比较多,我个人觉得还是挑重点的看就好。我这边给大家整理了我之前学习所用到的视频、电子书、代码库,均是我精选出来的。但是想吃透需要花时间,你可以直接按照这些资料来学习。如果你想要相关资料,可以添加我微信找我要即可~

- END -

往期文章

大家好,我是灿视。目前是位算法工程师 + 创业者 + 奶爸的时间管理者!

我曾在19,20年联合了各大厂面试官,连续推出两版《百面计算机视觉》,受到了广泛好评,帮助了数百位同学们斩获了BAT等大小厂算法Offer。现在,我们继续出发,持续更新最强算法面经。

我曾经花了4个月,跨专业从双非上岸华五软工硕士,也从不会编程到进入到百度与腾讯实习。加我私信,与我分享你的困惑。

本文分享自微信公众号 - 灿视学长(baimianAI) ,作者:灿视

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间: 2021-04-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

版权声明
本文为[灿视学长]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/1829496

随机推荐