零基础,非计算机专业,深度学习入门指南

深度学习入门指南

0. 前言

  各位同学大家好!大家本科可能来自于机械类、自动化类等专业,具备一定的数学理论基础(如概率与统计,线性代数等)和C语言的编程基础,现在希望向深度学习领域发展,可又感觉无从下手,不知道应该怎样开始。因为本文的作者也是在硕士阶段完成了这一痛苦的转型,因此对于大家的困惑,我是感同身受的。在回顾了过去两年多以来的学习经历之后,我们整理了这份深度学习的入门指南,希望能够为大家梳理出一个深度学习入门的学习路线,并提供一些资料给大家学习。作者才疏学浅,在撰写和整理过程中难免存在纰漏,请大家多多海涵,多多批评。
  PS:本文介绍的深度学习知识主要是面向计算机视觉(CV)领域,而深度学习的另一大方向自然语言处理(NLP)并非作者熟悉的领域,因此就不过多赘言了。本文中所有提及的教材我们都提供了相应的电子版图书(请扫描文末的二维码,关注公众号“深视”,回复“图书”即可获得所有教材的下载链接)。

1. 基础知识

  深度学习是机器学习领域的一个分支,因此大家应该首先对机器学习的基础知识有一定了的了解。作者在学习时就缺少这部分知识,以至于对很多概念都是一知半解,后来还是花了大量时间把这部分知识补上了。这里推荐大家学习两本书,一本是周志华教授的《机器学习》(因为文中常用西瓜举例,也被称为“西瓜书”),另一本是李航老师的《统计学习方法》。这两本书语言通俗易懂,知识点讲解的完整详细,是入门学习者的必读书目。两本书内容上存在重叠的部分,大家如果时间有限,希望能够快速入门,我建议可以先阅读《机器学习》的第一章,绪论;第二章,模型评估与选择;第三章,线性模型;第五章,神经网络;第十三章,半监督学习和第十四章,概率图模型。(学习时间约为两周,如果完整学习,时间约为一个月)
  在学习完上述内容后的,大家已经对机器学习有了一定的了解,现在就可以向深度学习进发了,在这一阶段最重要的资料无疑是吴恩达老师和李飞飞老师的课程视频,这里提供了吴恩达教学视频连接:深度学习(如果时间有限可以先学习p1-p43和p101-p122的内容)。至此大家已经对卷积层,池化层,激活函数,损失函数等重要概念有了一定的认识了。但是深度学习中还包含大量的概念和方法,这就需要大家完整的学习上述的书籍和视频了。并且除了卷积神经网络(CNN)之外,深度学习领域中还包括循环神经网络(RNN),长短期记忆网络(LSTM)和图神经网络(GNN)等多种模型,这部分知识可以留到以后,作为进阶部分进行学习。(学习时间约为1-2周)
  最后如果大家希望进一步加深对于深度学习的认识,我建议可以阅读《深度学习》(花书),这本书被称作深度学习领域的圣经,内容相对而言更加专业也更加深入,但学习起来可能有一定的难度。如果大家希望对深度学习的新的发展方向进行更加深入的学习,我推荐台湾大学李宏毅教授的深度学习课程,里面介绍了有关缺陷检测,元学习,终生学习,自动学习等最新领域的知识,而且李教授的语言幽默生动,学习起来完全不会感觉枯燥。(这部分知识作为拓展性内容,大家可自行安排时间学习)

2. 编程语言与开发框架

  在完成基础知识的学习之后,大家已经充分认识了深度学习这头“怪兽”,现在我们要拿起武器向他进攻了,而我们的武器就是代码。相信大家在本科阶段已经学习过C语言的相关知识,如果是计算机专业应该还学习过Java和Python等编程语言。在深度学习领域目前最重要的编程语言就是Python,因此大家需要掌握这门编程语言,这里推荐《Python编程:从入门到实践》这本书作为学习资料(时间有限可以只学习第一部分内容,也就是前11章)。提醒两个注意事项:第一,编程语言的学习最重要的在于动手实践,必须亲自动手去编写和调试,不断出错,不断修改,才能不断提高,如果只用眼睛去学习是永远也学不会的;第二,Python是一个开放性很强的编程语言,拥有众多的工具包(后面介绍的Pytorch和Tensorflow就是有关深度学习开发的工具包),帮助你完成许多复杂的任务,因此在面临一个任务困难时,先去找一下是不是已经有相关的工具包已经集成了相关的功能,而不要纠结于一个具体的问题。(学习时间约为两周)
  在掌握了Python语言这个有力的武器后,下一步就是要学习开发框架。目前深度学习领域中应用最为广泛的开发框架有两个:Pytorch和Tensorflow,他们分别是Facebook公司和Google公司主导开发的,二者各有优势,也各有不同,大家可以任选其一深入学习,而对于另一个框架先做初步了解,因为本质上他们都是为了方便大家进行深度学习项目开发的工具。网络上相关的视频和书籍纷繁众多,但作者认为最重要的资料还是两者的开发文档,这里提供官方文档的链接:PytorchTensorflow
  如果一开始阅读文档感觉太困难,这里推荐莫烦Python的教学视频:PytorchTensorflow ,当然这两部分内容由于录制时间较早,可能已经与最新版的Pytorch和Tensorflow存在一定的差别了,因此只能作为初级入门视频使用,用于学习两个框架是如何实现一个最简单的深度学习任务的。(学习时间约为三周)
  在学习上述内容的过程中,你还要学会如何安装python语言,如何使用集成开发环境(IDE),如何安装各种工具包等。而且许多深度学习项目都是基于Linux系统开发的,而不是大家熟悉的Windows系统,因此大家还要学习如何使用Linux系统。关于Linux系统的学习,业内最受欢迎的教材应该是《鸟哥的Linux私房菜》,但这本书内容太多了,所以大家开始只需要学习最简单的Linux操作指令就可以了,无需深入的研究,等以后有开发需求了再有针对性地进行学习。目前最常用的Linux系统版本就是Ubuntu了,这里提供一个Windows+Ubuntu双系统的安装教程,和一个Ubuntu系统上Pytorch开发环境搭建的流程(Tensorflow搭建过程大同小异,大家可以自行寻找相关教程)。至于集成开发环境(IDE),这里推荐Pycharm,可以支持Windows和Ubuntu两个系统平台。(学习时间约为两周)

3. 深度学习的热门研究方向

  当大家了解了深度学习,又掌握了相关工具后,就可以开始具体的研究工作了。而所有研究工作的开始就是先学习别人是如何做的,了解目前该领域发展到怎样的程度了,因此就需要阅读大量的论文,尤其是综述类论文,可以帮助大家快速地建立起对一个领域发展情况的认知。我们总结了目前深度学习与计算机视觉领域的几个重要研究方向(包括:目标检测,语义分割,小样本学习,缺陷检测等),并且对于每个方向都选择了3-5篇经典的论文供大家学习,大家可以根据实验室的研究方向以及项目需求,结合个人的特点与条件,在与导师进行充分的沟通后,选择一个方向进行深入的研究和学习。值得注意的是,在学习过程中,如果该篇文章有对应的开源代码,一定要对代码也进行深入的研究,最好能够自己复现代码,这样才能真正学会一种算法。
  关于深度学习的入门知识就介绍到这了,剩下的就需要大家不断阅读论文,不断调试代码,不断改进算法,不断实验调参了。希望大家充分发挥自己的创造力,为深度学习这座大厦添砖加瓦,谢谢大家的阅读!

目标检测荐读论文:

  1. YOLO系列
    a) Redmon J, Divvala S, Girshick R, et al. You only look once: Unified, real-time object detection[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 779-788.
    b) Redmon J, Farhadi A. YOLO9000: better, faster, stronger[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 7263-7271.
    c) Redmon J, Farhadi A. Yolov3: An incremental improvement[J]. arXiv preprint arXiv:1804.02767, 2018.
  2. R-CNN系列
    a) Girshick R, Donahue J, Darrell T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2014: 580-587.
    b) Girshick R. Fast r-cnn[C]//Proceedings of the IEEE international conference on computer vision. 2015: 1440-1448.
    c) Ren S, He K, Girshick R, et al. Faster r-cnn: Towards real-time object detection with region proposal networks[C]//Advances in neural information processing systems. 2015: 91-99.
    d) Cai Z, Vasconcelos N. Cascade r-cnn: Delving into high quality object detection[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 6154-6162.
  3. Liu W, Anguelov D, Erhan D, et al. Ssd: Single shot multibox detector[C]//European conference on computer vision. Springer, Cham, 2016: 21-37.

缺陷检测荐读论文:

  1. Zhao Z, Li B, Dong R, et al. A surface defect detection method based on positive samples[C]//Pacific Rim International Conference on Artificial Intelligence. Springer, Cham, 2018: 473-481.
  2. Wang T, Chen Y, Qiao M, et al. A fast and robust convolutional neural network-based defect detection model in product quality control[J]. The International Journal of Advanced Manufacturing Technology, 2018, 94(9-12): 3465-3471.
  3. Mei S, Wang Y, Wen G. Automatic fabric defect detection with a multi-scale convolutional denoising autoencoder network model[J]. Sensors, 2018, 18(4): 1064.
  4. Mei S, Yang H, Yin Z. An unsupervised-learning-based approach for automated defect inspection on textured surfaces[J]. IEEE Transactions on Instrumentation and Measurement, 2018, 67(6): 1266-1277.
  5. Zhao Z, Li B, Dong R, et al. A surface defect detection method based on positive samples[C]//Pacific Rim International Conference on Artificial Intelligence. Springer, Cham, 2018: 473-481.
  6. Tabernik D, Šela S, Skvarč J, et al. Segmentation-based deep-learning approach for surface-defect detection[J]. Journal of Intelligent Manufacturing, 2020, 31(3): 759-776.

语义分割推荐阅读论文:

  1. Ren S, He K, Girshick R, et al. Faster r-cnn: Towards real-time object detection with region proposal networks[C]//Advances in neural information processing systems. 2015: 91-99.
  2. Zhao H, Shi J, Qi X, et al. Pyramid scene parsing network[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 2881-2890.
  3. Chen L C, Papandreou G, Kokkinos I, et al. Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected crfs[J]. IEEE transactions on pattern analysis and machine intelligence, 2017, 40(4): 834-848.

小样本学习推荐阅读论文:

  1. Snell J, Swersky K, Zemel R. Prototypical networks for few-shot learning[C]//Advances in neural information processing systems. 2017: 4077-4087.
  2. Vinyals O, Blundell C, Lillicrap T, et al. Matching networks for one shot learning[C]//Advances in neural information processing systems. 2016: 3630-3638.
  3. Finn C, Abbeel P, Levine S. Model-agnostic meta-learning for fast adaptation of deep networks[J]. arXiv preprint arXiv:1703.03400, 2017.
  4. Ravi S, Larochelle H. Optimization as a model for few-shot learning[J]. 2016.

如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深视

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值