首先简单自我介绍一下本科渣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 TransformSIFT
随着近年来深度学习的快速发展尤其是卷积神经网络Convolutional Neural Network CNN的提出并在多个视觉领域上大放异彩CNN已成为当前CV领域的主流深度学习模型。
应用领域无人驾驶、人脸识别、智能识图、医学图像处理、工业检测、VR/AR… 计算机视觉还有很多热门应用形势一片大好~
2计算机视觉和其他易混淆学科的联系与区别
3计算机视觉的知识体系 有木有很害怕哈哈哈不要被这个知识树给吓到不会让你全部学也没有人能做到上面的技能都精通。
从上面这棵树可以看到我们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是训练过程的小trick04是CV领域用的最多的基础模型CNN重点看05是NLP领域用的最多的基础模型RNN。 ⑤继续入门30-60天 上述四步完成后你已经基本具备了CV领域的知识可以勉强说是入门了但距离真正的入门还很远呢接下来做的事情的顺序就因人而异了如果你觉得在学习上述课程时自己的数学功底还不够那么此时你需要加强一些数学的基础微积分、线性代数、概率论、统计学和凸优化等尤其是多元函数求偏导、矩阵求导、贝叶斯估计、极大似然估计、线性代数的几何认知等不仅要学会算更要学会真正去理解它不然就等于不会。可以边学边补不用一股脑去看效果不好 下面是推荐读物可以加强你对这些科目的认识和理解当然继续深入还需看数学课本。 再推荐一名B站up主主要讲解数学的直观理解线性代数讲的甚妙快戳我 此阶段还可以看深度学习的花书或其他讲的更深入的视频为什么现在才推荐我是认为有一点基础再来看这些经典书籍会轻松很多并且收获会更多期间多做一些实际的小项目比如Mnist手写数字体识别自己学着搭一搭网络调调参感受整个过程在这个过程中可以学着掌握深度学习的框架主流是tensorflow或pytorchpytorch对新手更友好同时也可以学到对数据集的读取和划分操作熟悉python第三方库的使用numpy、pandas等
有多的时间建议看一些经典的CNN论文
经典网络LeNet -> AlexNet -> GoogleNet -> VGG -> ResNet -> DenseNet -> MobileNet(轻量级)…目标检测R-CNN -> Fast-RCNN -> Faster-RCNN -> R-FCN -> YOLO(v1FCN-> SegNet -> U-Net -> Dilated Convolutions -> DeepLab (v1 SDS -> HyperColumns -> CFM -> Deep做好阅读笔记。
⑥进阶90~365天不等 到这一步时你已经超越了很多人了哦~ 现在我们回过头来再看那些机器学习的高阶算法如随机森林、EM算法、MCMC、条件随机场这些算法很mathematical能走到这一步的大家应该也没问题这些算法也是机器学习面试问的高频算法。 推荐书籍
PRML机器学习的圣经难度较大全书贯穿贝叶斯路线很概率论机器学习俗称西瓜书周志华统计学习李航
选择一个CV方向深入图像检索、行为检测等等等大量阅读该方向的论文。 看论文有点像递归的过程一开始看新的领域的文章时总是一头雾水不懂的地方找它参考的文章然后参考的文章还看不懂又去找参考文献的参考文献…….这个过程是极其煎熬和痛苦的递归的出口就是总有一篇文章是源头总有一篇文章你能够全篇看懂这时候再一层层回来你会觉得收获真的特别特别大深入研究了该方向一段时间后我想你肯定也会有一些属于自己的idea这时候需要你用实验去验证这个idea如果效果ok的话论文到手~
另外可以多参加一些比如kaggle等比赛学以致用增强实践能力~
附深度学习三座大山
结束语祝各位牛逼