首先简单自我介绍一下,本科渣211,目前某985研一在读,做的是计算机视觉(CV)方向,目前CV方向人数过于饱和,找工作已是神仙打架,如果学不精很容易成为半吊子,对于即将入坑的童鞋们,还是劝大家慎重哦,不过对于还是想学CV或者已经在坑中的大家,这里贴一份自己认为适合大多数人入门的一个路线~

目录:

1:什么是计算机视觉

2:计算机视觉和其他易混淆学科的联系与区别

3:计算机视觉的知识体系

4:推荐学习计划


1:什么是计算机视觉?

  计算机视觉(Computer Vision)又称为机器视觉(Machine Vision),顾名思义是一门“教”会计算机如何去“看”世界的学科。在机器学习大热的前景之下,计算机视觉与自然语言处理(Natural Language Process, NLP)及语音识别(Speech Recognition)并列为机器学习方向的三大热点方向。

  早期的计算机视觉大都由传统的算法提取图像特征(Feature ):如梯度方向直方图(Histogram of Gradient, HOG)以及尺度不变特征变换(Scale-Invariant Feature Transform,SIFT)

  随着近年来深度学习的快速发展,尤其是卷积神经网络(Convolutional Neural Network, CNN)的提出,并在多个视觉领域上大放异彩,CNN已成为当前CV领域的主流深度学习模型。

  应用领域:无人驾驶、人脸识别、智能识图、医学图像处理、工业检测、VR/AR… 计算机视觉还有很多热门应用,形势一片大好~


2:计算机视觉和其他易混淆学科的联系与区别

易混淆学科区别与联系


3:计算机视觉的知识体系:
CV的知识栈
  有木有很害怕哈哈哈,不要被这个知识树给吓到,不会让你全部学,也没有人能做到上面的技能都精通。

从上面这棵树可以看到,我们CV的底层其实是数学+图像处理,所以一定要打好数学基础和了解基本的图像处理的原理,学好数学和图像,走遍天下视觉都不怕~


4:推荐学习计划:

  由第三节可以看到,CV的学习顺序应该也是按着基础技能->中间层技能->应用层技能,但是这仅限于数学功底极强的那些带佬,不然像我这种数学渣渣在学习基础技能的时候肯定被劝退了ΠΠ,所以对于大多数入门者来说学习的顺序并不是这样。

下面是我个人整理的觉得比较适合大多数群体入门的顺序(默认你有C++、python基础):

①:数字图像处理入门(20-30天):
  推荐看VC++图像处理程序设计(杨淑莹),这本书讲的原理都很底层,涉及图像像素级的操作,相当于是openCV库的底层实现,如果觉得看书无法专注,B站上有原书作者的讲课视频:快戳我

②:openCV入门(15天):
  如果学完数字图像处理之后,再来学openCV简直就和切菜一般,因为你都了解了openCV的底层实现,只需要和这些常用的API混个脸熟即可,之后遇到具体问题会自行查找相关API能够调用和传参即可。openCV有C++和python的实现版本,如果时间充裕的话建议学C++的实现,因为真正做图像处理的工程时,大部分用的还是C++的工程,但现在随着深度学习越来越火爆,单纯图像处理的工程已经很少了,都是结合深度学习的框架来做项目,所以现在来看其实两者均可,并且差异不大。

③:机器学习基础入门(10天):
  十天学完机器学习?NO NO NO!之所以说是十天是因为笔者这里推荐先学习一些最基本最基本的机器学习算法:线性回归->逻辑回归->普通的人工神经网络。因为其实深度学习入门的话依赖的先验知识基本也就这些,机器学习中的其他算法都是比较传统比较统计学的,原理的推导都涉及大量的数学公式,如果上来直接啃那些算法很有可能浇灭你学习的热情并且怀疑自己是否真的学过数学,所以这些算法我们暂且先放一放,之后再来solo他们。学习方式看书看视频均可,因为这些基本算法很简单,大部分都可以看懂。推荐Ng的机器学习课程,只需看前几章即可:快戳我

④:深度学习入门(30天):
  入门我推荐先看视频网课,深度学习入门的课程现在网上很多,笔者推荐Ng的深学课程快戳我
不涉及过多的公式推导,很适合入门,并且有课后作业,记得一定要认真做,不会的可以先看网上其他人实现的代码,然后再自己敲一遍,千万不要眼高手低,只有真正动手实现的时候才能发现自己的问题。
  整个课堂包含五个部分,其中01讲解了一些深度学习的历史和发展,同时也讲解了一些基础算法,02和03是训练过程的小trick,04是CV领域用的最多的基础模型CNN(重点看),05是NLP领域用的最多的基础模型RNN。
深度学习课题目录
⑤:继续入门(30-60天)
  上述四步完成后,你已经基本具备了CV领域的知识,可以勉强说是入门了,但距离真正的入门还很远呢,接下来做的事情的顺序就因人而异了,如果你觉得在学习上述课程时自己的数学功底还不够,那么此时你需要加强一些数学的基础(微积分、线性代数、概率论、统计学和凸优化等)尤其是多元函数求偏导、矩阵求导、贝叶斯估计、极大似然估计、线性代数的几何认知等,不仅要学会算,更要学会真正去理解它,不然就等于不会。(可以边学边补,不用一股脑去看,效果不好)
  下面是推荐读物,可以加强你对这些科目的认识和理解,当然继续深入还需看数学课本。
推荐读物
  再推荐一名B站up主(主要讲解数学的直观理解,线性代数讲的甚妙),快戳我
  此阶段还可以看深度学习的花书或其他讲的更深入的视频(为什么现在才推荐我是认为有一点基础再来看这些经典书籍会轻松很多并且收获会更多),期间多做一些实际的小项目,比如Mnist手写数字体识别,自己学着搭一搭网络,调调参,感受整个过程,在这个过程中可以学着掌握深度学习的框架(主流是tensorflow或pytorch,pytorch对新手更友好),同时也可以学到对数据集的读取和划分操作(熟悉python第三方库的使用,numpy、pandas等)

有多的时间建议看一些经典的CNN论文

经典网络:LeNet -> AlexNet -> GoogleNet -> VGG -> ResNet -> DenseNet -> MobileNet(轻量级)…
目标检测:R-CNN -> Fast-RCNN -> Faster-RCNN -> R-FCN -> YOLO(v1&v2&v3 )-> SSD
语义分割:FCN-> SegNet -> U-Net -> Dilated Convolutions -> 
         DeepLab (v1 & v2) -> RefineNet -> PSPNet -> Large Kernel Matters -> DeepLab (v3)
实例分割:SDS -> HyperColumns -> CFM -> Deep&Sharp Mask -> MNC -> ISFCN -> FCIS -> SIS ->
         Mask RCNN -> PAN

仔细体味idea的创新点,做好阅读笔记。

⑥:进阶(90~365天不等)
  到这一步时,你已经超越了很多人了哦~
  现在我们回过头来再看那些机器学习的高阶算法,如(随机森林、EM算法、MCMC、条件随机场),这些算法很mathematical,能走到这一步的大家应该也没问题,这些算法也是机器学习面试问的高频算法。
推荐书籍:

PRML(机器学习的圣经,难度较大,全书贯穿贝叶斯路线,很概率论,)
机器学习(俗称西瓜书,周志华)
统计学习(李航)

  选择一个CV方向深入(图像检索、行为检测等等等),大量阅读该方向的论文。
看论文有点像递归的过程,一开始看新的领域的文章时,总是一头雾水,不懂的地方找它参考的文章,然后参考的文章还看不懂又去找参考文献的参考文献…….这个过程是极其煎熬和痛苦的,递归的出口就是总有一篇文章是源头,总有一篇文章你能够全篇看懂,这时候再一层层回来你会觉得收获真的特别特别大!深入研究了该方向一段时间后,我想你肯定也会有一些属于自己的idea,这时候需要你用实验去验证这个idea,如果效果ok的话论文到手~

  另外可以多参加一些比如kaggle等比赛,学以致用,增强实践能力~

附:深度学习三座大山

三座大山

结束语:祝各位牛逼

Logo

为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。

更多推荐