计算机视觉学习路线

深度学习算法工程师的基本要求

  1. 熟练掌握python和c++编程,至少熟悉 Caffe 和 Tensorflow/Pytorch 两种框架。
  2. 熟练玩转深度学习各类模型架构使用和设计。
  3. 熟练玩转数据的整理和使用,必须深刻理解数据在深度学习任务中的地位。

计算机视觉学习路线资料推送

01 机器学习及OpenCV学习路线

想快速入门的话,从自己的经验看,可以先不看高等数学和线性代数,因为机器学习和深度学习中涉及的相关知识并不多。

视觉的知识部分建议分成两部分学习,第一部分传统图像处理,第二部分基于深度学习的图像处理。

计算机视觉的提升不在于搭建模型,而在于不断调优、改进过程中积累的经验。
我们该怎么针对不同领域的图像设置不同的参数?其中包括卷积核大小、网络架构、初始权重等等,不可能拿到一个模型,既适合医学图像,又适合人脸识别,这其中就需要n次从70%的精度调到95%以上中积累出经验。

对于深度学习的学习我并不建议,直接就学习深度学习的相关知识,毕竟深度学习是基于机器学习而来的。

所以在入门CV之前,同学们最好对基础的学术课程都有对应的了解,比如数学方面的微积分,概率学,统计学,线性代数这几门基础课程。

在编程语言方面,Matlab,Python,C++,最好熟悉其中2种,因为计算机视觉离开计算机编程是完全行不通的。(python和C++书籍推荐)

  • 机器学习是从数据中学习的核心算法。
  • 对于计算机视觉而言,特别是初学者,最开始的时候你不需要学习太多机器学习。你可以像黑箱一样使用他们就够了
  • 顺便说一下,这是一个艰难的领域。要成为专家,你需要付出大量时间。你想要在这个领域成长够多,你就要关注更多的细节。最开始,您只需要学习一些基础知识+最近使用的算法。每4-5年,都有一些算法在文献中流行

02 系统的学习以下计算机视觉课程

在这里班主任推荐3本经典教材:

《Computer Vision: A Modern Approach》

《Computer Vision: Algorithms and Applications》

《Computer Vision: Models, Learning, and Inference》

这三本教材班主任认为是计算机视觉最好的入门教材了,内容丰富,难度适中,其中第二本书涉及大量的文献,很适合对计算机视觉没什么概念的同学。这三本教材都不建议读中文版,有些地方的翻译不是很合适。

03 绕不开的数字图像处理

数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。

入门的同学推荐冈萨雷斯的《数字图像处理》《数字图像处理(第3版)(英文版)》和对应的Matlab版本。一本讲基础的理论,一本讲怎么用Matlab实现。

《OpenCV3编程入门》书本配套源代码

04 贯穿始终的模式识别

模式识别(Pattern Recognition),就是通过计算机用数学技术方法来研究模式的自动处理和判读。我们把环境与客体统称为“模式”。

计算机视觉很多东西都是基于图像识别的,图像识别就是模式识别的一种。

模式识别通常是训练一个模型来拟合当前的数据,当我们拿到一堆数据或图片,需要从当中找到它们的关系,最便捷的便是用模式识别算法来训练一个模型。

班主任推荐一本模式识别入门级的教材《模式分类》,相对于《模式识别》这本书来说可能比较难,但书中介绍了很多模式识别经典的分类器,还是很值得一读。

什么是卷积?卷积就是两个函数之间的相互关系,然后得出一个新的值,他是在连续空间做积分计算,然后在离散空间内求和的过程。

同学们可以试着学习下CNN在计算机视觉当中的应用,推荐大家荐斯坦福的CS231n课程:深度学习与计算机视觉。

我建议开始看吴恩达老师的《机器学习》课程,这个课程相信许多人已经快推荐烂了,但是我依然觉得必须推荐,毕竟这是我的第一位入门导师(我是出身机械专业的,都没有编程基础的小辣鸡,狗头)。
B站链接:(https://www.bilibili.com/video/BV164411b7dx)
看《机器学习》课程的时候,我觉得有必要练习一下课后习题,利用Python进行编写。
对了,在看《机器学习》的时候,里面会有编程的内容建议略过,因为里面的编程语言不是Python更像是低配版的Matlab。
对于Python的学习我看了很多,让我推荐一个我还真不好推荐,那就建议看看廖雪峰老师的官网的Pyhon教学吧,建议看看前面的基础就行,不用深究,慢慢的就会了。这里想说一下,其实都是直接先动手过一遍,再慢慢去弄明白原理。有些东西上来没办法直接理解,只能慢慢熟悉了再去理解!
链接:(https://www.liaoxuefeng.com/wiki/1016959663602400/1018877595088352)
想看视频的话,我也不知道推荐看谁的好,自己在B站找个比较符合自己口味的就OK!

课后习题推荐看B站一位小姐姐的课程,基础太差感觉自己编写的话很费时间的。参考一下,把代码敲一遍也算是把Pyhton编程语言学了一遍。
B站链接:(https://www.bilibili.com/video/BV1Xt411s7KY?)

学习完之后我觉得可以看点OpenCV的基础知识

05 深度学习学习路线

深度学习的话,我还是建议先看吴恩达老师的《深度学习:DeepLearing》,比较适合零基础的同学。
B站链接:(https://www.bilibili.com/video/BV1FT4y1E74V)

学习完理论知识记得需要强化一下动手能力,推荐比较适合零基础的同学,看这个PyTorch教程,快速入门了解神经网络架构PyTorch,进行网络搭建。(B站up主:小土堆)讲的很不错很详细哦~!
B站链接:(https://www.bilibili.com/video/BV1hE411t7RN)

看完之后再看李宏毅老师的21版最新的《深度学习》,20版也不错哦~!这个视频里面也会讲到PyTorch的知识,相当于巩固了一下。
B站链接:(https://www.bilibili.com/video/BV1Wv411h7kN)

另外再学学李沫老师的《动手学习深度学习》
B站链接:(https://www.bilibili.com/video/BV1Fb4y1D7Jt)

学习pytorch和tensorflow了,莫烦的还有他们的官方文档都很详细,你可以选择去看。我当时是买的书,pytorch 的我买的博文的:深度学习入门之——pytorch,tensorflow的我买的机械工业出版社的深度学习之tensorflow入门,原理与进阶实战。这两本都很适合入门。

推荐资料:

莫凡教程系列之PyTorch :https://morvanzhou.github.io/tutorials/machine-learning/torch/

TensorFlow中文社区:

http://www.tensorfly.cn/

深度学习 21天实战Caffe

计算机视觉学习路线_第1张图片

总结
好啦,说了这么多,替大家总结了一份简洁的学习路线图。希望能够帮助大家,毕竟在这条道路上没人指导真的很难!当初自己就学的很累!

06 复现论文

尝试阅读和复现如下文章,你将受益匪浅。助前行,希望对大家有所帮助。

网络架构
AlexNet: https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks
ZFNet: https://arxiv.org/abs/1311.2901
VGG16: https://arxiv.org/abs/1505.06798
ResNet: https://arxiv.org/abs/1704.06904
GoogLeNet: https://arxiv.org/abs/1409.4842
Inception: https://arxiv.org/abs/1512.00567
Xception: https://arxiv.org/abs/1610.02357
MobileNet: https://arxiv.org/abs/1704.04861
语义分割
FCN: https://arxiv.org/abs/1411.4038
SegNet: https://arxiv.org/abs/1511.00561
UNet: https://arxiv.org/abs/1505.04597
PSPNet: https://arxiv.org/abs/1612.01105
DeepLab: https://arxiv.org/abs/1606.00915
ICNet: https://arxiv.org/abs/1704.08545
ENet: https://arxiv.org/abs/1606.02147
生成对抗网络
GAN: https://arxiv.org/abs/1406.2661
DCGAN: https://arxiv.org/abs/1511.06434
WGAN: https://arxiv.org/abs/1701.07875
Pix2Pix: https://arxiv.org/abs/1611.07004
CycleGAN: https://arxiv.org/abs/1703.10593
目标检测
RCNN: https://arxiv.org/abs/1311.2524
Fast-RCNN: https://arxiv.org/abs/1504.08083
Faster-RCNN: https://arxiv.org/abs/1506.01497
SSD: https://arxiv.org/abs/1512.02325
YOLO: https://arxiv.org/abs/1506.02640
YOLO9000: https://arxiv.org/abs/1612.08242
实例分割
Mask-RCNN: https://arxiv.org/abs/1703.06870
YOLACT: https://arxiv.org/abs/1904.02689
姿态估计
PoseNet: https://arxiv.org/abs/1505.07427
DensePose: https://arxiv.org/abs/1802.00434
原文链接:https://towardsdatascience.com/guide-to-learn-computer-vision-in-2020-36f19d92c934

欢迎关注磐创AI博客站: http://panchuang.net/

sklearn机器学习中文官方文档: http://sklearn123.com/

欢迎关注磐创博客资源汇总站: http://docs.panchuang.net/

07 研究生如何写计算机视觉的论文

如何开始研究

  • 我喜欢把计算机视觉问题分为两种类型

  • 一些研究方向设计到人工智能基于学习的方法。比如图像分类,OCR,视频跟踪等 大多数你所能看到的论文都是这种方向的.
    学习意味着我们有很多数据 (e.g. 比如ImageNet,100万图像和他们的标签),然后学习这种模式 (e.g. 比如分类图像中的字符)
    对这种类型的方向,你必须学习很多机器学习的知识

  • 其他研究方向涉及到不需要学习的算法,比如3D重建,光流计算,全景拼接(52CV君评论:其实现在3D重建和光流估计已经有很多基于学习的算法了,可在本站搜索关键字获取相关信息)

使用课本和课程

  • 一种直接的方法是从书本开始
    不要被困在书本里。请记住,你想开始研究。尝试了解基础知识并进行一些编码。保持你的眼睛定睛在对你来说最近有趣的工作上。
    尝试找出不同的研究视觉问题…看哪个更令你兴奋。
    然后你要进入下一个阶段: “从论文开始”

从论文开始

  • 顶级会议和期刊的论文开始。其他低级别的会议可能会有虚假结果并浪费您的时间。
    CVPR保留重要会议和许多论文的清单。
    使用文件知道什么是可用的轨道… Wiki也会有帮助
    使用Google Scholar查找特定问题的综述。综述可以节省大部分时间。
    考虑最近过去3年的论文。假设我们在2014年,考虑2011年,然后是2012年,然后是2013年。不要从2014年开始。
    收集文件,使标题看起来相关。搜索他们找到是否有源代码。尝试从源代码文件开始。
    开始将是艰难的,因为你遇到了许多你不知道的术语和工具。耐心一点。谷歌搜索他们,在论坛上提问,如Quora或Stackoverflow。
    尝试找到一个特定研究方向(例如3D重建,点云,场景理解,物体识别,大图像数据,多目标跟踪,图像描述符理论等)。查看wiki或会议论文目录以查找您感兴趣的内容。
    使用会议来了解某方向论文或使用Google学术搜索
    关注那些研究工作更权威的的研究人员。关注高引用次数文献
    首选从有运行软件的研究工作开始,节省你的时间。
    为了学习一些工程实现方向,请为您选择一个简单而漂亮的论文然后实现它。复现论文的结果。在这样做的时候,会有很多问题弹出,很多时候你将不得不做一些假设,因为你所看到的论文中通常并不是所有的都提到了。还有许多实现细节,比如如何有效地实现这一点不会被列出。您将了解诸如性能,实验等问题。可选择的论文比如:Viola Jones face detection, Christophe Lampert Efficient Subwindow Search, or Brian Fulkerson superpixel neighborhoods 等。实现具有完整代码的论文是一个非常好的主意,以便您可以检查自己的实现有什么问题。

  • 对于你自己的研究工作,要尝试使用现有开源代码,而不是一切都从头开始,不要重复造轮子!
    如果论文没有公开代码,你可以尝试联系作者是否可以得到代码。

  • 如果理解几次尝试理解一篇论文仍然很难,就转到另一片论文。或者换一个方向。(这是你在寻找研究方向的时候)

  • 这也许对你有用,最佳获奖论文集

  • 研究生研讨课程取决于论文。

从代码开始

  • 从代码到纸张,是从一些可用的代码开始理解你所研究的问题

  • 找一个开源库,然后尝试它,比如OpenCV
    有很多不错的书关于OpenCV

  • Youtube 上也有不少视频:

  • https://www.youtube.com/playlist?v=MfnEtFAWooQ&list=PLo1wvPF7fMxQ_SXibg1azwBfmTFn02B9O

  • https://www.youtube.com/playlist?v=xEnPZ78queI&list=PLDqunwM5dbtIbEuXv1rB7OFBoRzEF8GH6

  • https://www.youtube.com/playlist?v=IwsHuSITs3c&list=PLTgRMOcmRb3PvUZpNTRsdkzVuZ4z_s444

  • https://www.youtube.com/playlist?v=cgo0UitHfp8&list=PLvwB65U8V0HHCEyW2UTyOJym5FsdqfbHQ

  • 学习Matlab并使用它来编写初始解决方案原型(因为它往往比较快的能够开发出原型)

  • 选择一个有意思的toy项目并实现它

链接:https://pan.baidu.com/s/1fLBQhyMCCrUKjt_2U2XolQ 密码:ne94

你可能感兴趣的:(AI,python,人工智能)