给刚刚进入实验室(或入门深度学习)的同学的一些建议

给刚刚进入实验室的同学的一些建议

  作为过来人,为了能让后来的师弟师妹更好更快的入门,少踩一些坑,我在这里分享自己这两三年来的一些经验和学习路径。主要包括以下三个方面:

一、 基本理论知识

  大家进入到实验室,相信大家本科应该是计算机类、电子信息类等相关的专业,那么大家是有一定的基础的。但是本科的一些知识基本上是为研究生阶段打基础的,计算机视觉领域涉及到的知识很多,听到这儿不要有太大的心理压力,因为即使需要学习很多,但是只要先掌握其中的几门知识,也可以入手相应的研究工作。

  毋庸置疑的是,我们这一行对数学功底要求比较高,例如概率论、线性代数、高数(这三门属于考研数学的范围),不管大家是考研上来的还是保研上来的,这方面的能力相信大家已经具备了。我们需要学习一些计算机体系结构、算法、数字图像处理、深度学习等方面的书,市面上这方面的书比较多,比如《XXX人工智能》《XXX模式识别》《XXX机器学习》《XXX深度学习》,当大家看到这儿的时候,肯定会觉得眼花缭乱,不知道如何下手,我这里只推荐大家学三门课:

  • 《统计学习方法》(李航)、
  • 《机器学习》西瓜书、
  • 《深度学习》(Yoshua Bengio & Ian GoodFellow)(也称为花书)

  这三本书的很多部分是重叠的。这些书里的一些知识可能晦涩难懂,比如《深度学习》里的聚类方法你没看懂,你可以参考一些其他的书讲解聚类方法的部分,或者可以参考别人已经整理的相关笔记。这些笔记可以从以下方面找到:

  • 知乎
  • CSDN
  • 博客园
  • 微信公众号

  这三本书学好了之后,基本上算是入门了,你再去学习其他的(杂)书,还有一点的是,看书可能会很枯燥,所以选择视频学习是一个不错的方法,比如:

二、 动手实践能力

  这部分主要讲的是编程部分。掌握了一定的理论知识后,动手能力是很重要的,上面的书都会伴随一些编程实现,学习的最好方法是边学理论知识边动手实现,但是这种方式比较慢,很好有人能够坚持,最好的是针对每一章,只实现一个小实验就行,慢慢的就会锻炼你的编程能力。刚开始时,这里推荐大家使用pycharm在本地运行程序,如果有服务器的话,最好能够掌握如何使用linu命令行写程序。

  我们用到的主要是python, C++也是需要掌握的,但是目前你先把python掌握,然后再了解目前的一些深度学习框架,比如pytorch、Tensorflow、MXNet、Caffer等框架,我们编写神经网络时,就会使用到这些框架,目前常用的是pytorch和Tensorflow,但是Tensorflow 1.X 版本函数混乱,遭到了很多人的嫌弃,但是目前出现了Tensorflow 2.0版本,和pytorch一样语法简洁,所以工业上用到Tensorflow的比较多,学术上用到的pytorch比较多,最好是这两种框架都能掌握。

Python学习资料推荐:

Pytorch学习资料推荐:

Tensorflow学习资料推荐:

  以上是关于编程和深度学习框架的学习,但是我们不能忽略GitHub这个“大型同性恋网站”,有很多文章的开源代码基本上都会在这上面找到,希望大家多多在github上扒拉扒拉别人的代码看看。

三、 明确研究方向

  以上两部分属于基本能力,最终还是要为自己的研究方向服务的。最好是早点确定研究方向,早点发论文,这样就不会临到毕业面临延毕的压力了,因为做出好的实验结果,发出论文,再投稿,最后中了,这段有很长的一段时间,所以给大家的建议是早点发论文早好。

  前提是要明确研究方向,可能有的导师让自己定研究方向,有的导师给你定研究方向,各有利弊,根据个人情况选择,但是这个过程要多跟自己的导师商量,因为你的方向要和实验室的发展方向是吻合的,只有导师同意了,你才能去做,也可以和师兄师姐讨论。

  当确定研究方向之后,就是做充分的调研,先去看该方向的综述文章,了解该方向的发展历程,然后精读具有里程碑式的文献,多关注一些CVPR、ICCV、ECCV、PAMI、IJCV等顶会顶刊文章,最好能做一些笔记或者写一些博客,以防自己看了就忘。然后根据目前存在的问题去想一些解决方法,确立你的idea,这个过程可以多和导师和师兄师姐交流。

写在最后

  好的开始是成功的一半!
  可能在科研的过程中会遇到低谷,这就需要大家有一个好的心态,还要有一个好的身体,长风破浪会有时,直挂云帆济沧海。学弟学妹们加油!

原文地址:https://www.cnblogs.com/wangchangshuo/p/14097799.html