马克吐温说过:“进步的秘诀是开始”。
开始学习这本书,就意味着我们有一颗进取之心,就已经有了一种区别于他人的特质。恭喜你我,我们会变得越来越喜欢自己。
这本书的目的就是带领我们掌握Deep Learning 并运用python这门编程语言以及Keras和mxnet等library去解决实际的、现实中的计算机视觉问题。像图像分类、目标检测以及在大规模数据集上训练网络等工程项目,在这里我们都能找到解决方法。
作者写这本书的目的也在于教会我们理论的同时注重实践,在这两者之间搭建一座完美的桥梁。为了达到这个目标。我们要做的就是把这些方法应用到我们自己的数据集上,或者应用到实际的图片分类挑战赛上。In a word,把Deep Learning 成功地应用到我们自己的项目上就成功了。抓住 highlighter ,我们的车马上就要开了!
1.作者在Deep Learning学习道路上的经验之谈(失败经历):什么才是正确的方法。
作者Dr Rosebrock是一个Machine Learning 背景的博士。在博士生涯的最后一学期比较空闲,所以在学习热情的驱使下开启了自己的Deep Learning之旅。
Dr Rosebrock像大多数学者一样,一开始就一头扎进Deep Learning论文堆里面了,所幸的是由于他的Machine Learning背景,轻松就搞定了Deep Learning的理论基础。但是Dr Rosebrock本人是一个重视理论而又注重实践的人,所以他认为在没有把理论和实践很好地结合起来时候就不能算是真正学到了东西。(可敬可敬。。。)
但是,在理论通往实践的道路上并不是那么一帆风顺。理论学习和理论转化为实践是两种完全不同的学习过程。要深刻理解这一点!接下来,就让我们看看Dr Rosebrock在遇到的问题是什么~
Dr Rosebrock读完了这些论文以后,大脑一片混乱。他无法准确说清自己从中学到了什么,也无法在实际中应用这些算法。。。除了去重复论文中的实验结果。所以说,这是一次失败的学习方面的尝试。。。他像正常人一样,打开了浏览器,输入了google,但是基本没搜索到什么有用的东西,因为当时网上关于Deep Learning的教程还很少。然后他去跟风玩了玩诸如 Caffe 、 Theano 以及Torch等工具和Library,也看了不少写的很垃圾的博客。
他当时的感觉就像拳头打在棉花上。。。找不到重点(一个失败的学习尝试)。那个过程很痛苦,他能看到Deep Learning 很厉害,但是无法应用它展示自己的收获(除了下载阅读的那一堆论文)。
直到最后他才找到了正确的学习方法(这篇博客,就是想说明这个事情,到底正确的学习方法是什么?) 他的失败经验是:
- 不需要花很长时间学完理论再来开始Deep Learning的学习之旅。
- 不需要一页一页的公式堆砌。
- 你当然也不需要一个计算机学科的学位(当然,有了会更好)。
说白了,他的失误就在于一开始就一头扎进论文堆里而没有结合实践。但是也不要会错意:理论不重要。。。要是这么认为那就走歪了,你可能走上和Dr Rosebrock截然相反的一条歪路。扎根理论和“show me in code”分别在桥的两头。code的注释我们都能看懂,但是背后深藏的理论,我们却挖掘的不多。
Dr Rosebrock 写这本书的目的就是帮我们这些后生把扎根理论和“show me in code”之间的这座桥建起来。
那么,Dr Rosebrock开的这位配方适合什么人呢?
- 开发者(横向应用)
- 研究者(纵向研究)
- 学生(纵向研究)
以上这些想在计算机视觉方面有所发展的人。
这本书里,Dr Rosebrock会带着我们从简单的Machine Learning 和 neural network基础知识开始。所以不要怕遇到成吨的理论知识和复杂公式的降维打击。学习将会变得很有趣,理论学习和撸代码很好地结合起来.同时,Dr Rosebrock也会给我们推荐一些Machine Learning方面的学术论文给我们,方便我们学习。
现在最关键的步骤就是:Starting!相信你会成为一名ninja!
这套书总共有三册,目前这本是第一册。慢慢来~
- Starter Bundle 。Basics of :Machine Learning;Neural Networks;CNN;训练自己的数据集。
- Practitioner Bundle。
- ImageNet Bundle。
这本书需要的工具:Python、Keras 、Mxnet、Opencv、scikit-image、scikit-leran,etc。
框架:Tensorflow。(教程可以去慕课上找被打的课程)
至于OPencv可以搜一搜贾志刚的课程,个人感觉不错。
接下来的旅程,我们将会做什么?
从硬盘上加载数据集,存储到内存上,然后把它们写成一个优化好的数据集格式,
预处理图片,以便于它们适合CNN训练。
创造一个蓝本,以便于能训练我们自己的图片数据集。
实现目前比较流行的CNN框架(Alexnet,VGGNet,GoogLeNet,ResNet等)
。。。