前 言
我们处于一个变革的时代!
给定一个物体,让一个3岁的小孩描述这个物体是什么似乎是一件非常简单的事情。然而将同样的东西放在计算机面前,让它描述自己看到了什么,这在不久以前还是一件不可能的事。
让计算机学会“看”东西是一个专门的学科—计算机视觉正在做的工作。借助于人工神经网络和深度学习的发展,近年来计算机视觉在研究上取得了重大的突破。通过模拟生物视觉所构建的卷积神经网络模型在图像识别和分类上取得了非常好的效果。
而今,借助于深度学习技术的发展,使用人工智能去处理常规劳动,理解语音语义,帮助医学诊断和支持基础科研工作,这些曾经是梦想的东西似乎都在眼前。
写作本书的原因
TensorFlow作为最新的、应用范围最为广泛的深度学习开源框架引起了广泛的关注,吸引了大量程序设计和开发人员进行相关内容的学习与开发。掌握TensorFlow编程基本技能的程序设计人员成为当前各组织和单位热切追求的最热门人才之一。他们的主要工作就是利用获得的数据集设计不同的人工神经模型,利用人工神经网络强大的学习能力提取和挖掘数据集中包含的潜在信息,编写相应的TensorFlow程序对数据进行处理,对其价值进行进一步开发,为商业机会的获取、管理模式的创新、决策的制定提供相应的支持。随着越来越多的组织、单位对深度学习应用的重视,高层次的TensorFlow程序设计人员将会成为就业市场上抢手的人才。
与其他应用框架不同的是,TensorFlow并不是一个简单的编程框架,深度学习也不是一个简单的名词,需要相关研究人员对隐藏在其代码背后的理论进行系统学习、掌握一定的数学知识和理论基础。本书的作者具有长期一线理科理论教学经验,可以将其中的理论知识以非常浅显易懂的语言描述出来。这一点是市面上相关书籍无法比拟的。
本书是为了满足广大TensorFlow程序设计和开发人员学习最新TensorFlow程序代码的要求而出版的。书中对涉及深度学习的结构与编程代码做了循序渐进的介绍与说明,以解决实际图像处理为依托,从理论开始介绍TensorFlow+OpenCV程序设计模式,多角度、多方面地对其中的原理和实现提供翔实的分析,同时结合实际案例编写的应用程序设计可以使读者从开发者的层面掌握TensorFlow程序的设计方法和技巧、为开发出更强大的图像处理应用打下扎实的基础。
本书的优势
(1)本书偏重于介绍使用卷积神经网络及其相关变化的模型,在TensorFlow框架上进行图像特征提取、图像识别以及具体应用,这是目前已出版图书中鲜有涉及的。
(2)本书并非枯燥的理论讲解,而是作者阅读和参考了大量最新文献做出的归纳总结,在这点上也与其他编程书籍有本质区别。书中的例子都是来自于现实世界中对图像分辨和特征的竞赛优胜模型,通过介绍这些例子可以使读者更深一步地了解和掌握其内在的算法和本质。
(3)本书作者有长期研究生和本科教学经验,通过通俗易懂的语言对全部内容进行讲解,深入浅出地介绍反馈神经网络和卷积神经网络理论体系的全部知识点,并在程序编写时使用官方推荐的TensorFlow最新框架进行程序设计,帮助读者更好地使用最新的模型框架、理解和掌握TensorFlow程序设计的精妙之处。
(4)掌握和使用深度学习的人才应该在掌握基本知识和理论的基础上,重视实际应用程序开发能力和解决问题能力的培养。因此,本书结合作者在实际工作中遇到的实际案例进行分析,抽象化核心模型并给出具体解决方案,并提供了全部程序例题的相应代码以供读者学习。
本书的内容
本书共分为13章,所有代码均采用Python语言(TensorFlow框架推荐使用的语言)编写。
第1章介绍计算机视觉与深度学习的关系,旨在说明使用深度学习和人工智能实现计算机视觉是未来的发展方向,也是必然趋势。
第2章介绍Python 3.6+Tensorflow 1.9+OpenCV 3.4.2的环境搭建。Python语言是易用性非常强的语言,可以很方便地将公式和愿景以代码的形式表达出来,而无须学习过多的编程知识。本章还介绍Python专用类库threading的使用。这个类库虽不常见,但会为后文的数据读取和TensorFlow专用格式的生成打下基础。
第3章主要介绍Python语言的使用。通过介绍和实现不同的Python类库,帮助读者强化Python的编程能力、学习相应类库。这些都是在后文中反复使用的内容。同时借用掌握的知识学习数据的可视化展示能力(在数据分析中是一项基本技能,具有非常重要的作用)。
第4章全面介绍机器学习的基本分类、算法和理论基础,以及不同算法(例如回归算法和决策树算法)的具体实现和应用。这些是深度学习的基础理论部分,向读者透彻而准确地展示深度学习的结构与应用,为后文进一步掌握深度学习在计算机视觉中的应用打下扎实的基础。
第5~6章是对OpenCV类库(Python中专门用于图像处理的类库)使用方法的介绍。本书以图像处理为重点,因此对图像数据的读取、编辑以及加工是重中之重。通过基础讲解和进阶介绍,读者可以掌握这个重要类库的使用,学会对图像的裁剪、变换和平移的代码编写。
第7~8章是TensorFlow的入门基础,通过一个娱乐性质的网站向读者介绍TensorFlow的基本应用,用图形图像的方式演示神经网络进行类别分类的拟合过程,在娱乐的同时了解其背后的技术。
第9章是本书的一个重点,也是神经网络的基础内容。本章的反馈算法是解决神经网络计算量过大的里程碑算法。作者使用通俗易懂的语言,通过详细严谨的讲解,对这个算法进行了介绍,并且通过独立编写代码的形式,为读者实现神经网络中最重要的算法。本章的内容看起来不多,但是非常重要。
第10章对TensorFlow的数据输入输出做了详细的介绍。从读取CSV文件开始,到教会读者制作专用的TensorFlow数据格式TFRecord,这是目前市面上的书籍鲜有涉及的。对于使用TensorFlow框架进行程序编写,数据的准备和规范化是重中之重,因此本章也是较为重要的一个章节。
第11~12章是应用卷积神经网络在TensorFlow框架上进行学习的一个基础教程,经过前面章节的铺垫和介绍,采用基本理论—卷积神经网络进行手写体的辨识是深度学习最基本的技能,也是非常重要的一个学习基础。并且在程序编写的过程中,作者向读者展示了参数调整对模型测试结果的重要作用,这也是目前市面上相关书籍没有涉及的内容,非常重要。
第13章通过一个完整的例子演示使用卷积神经网络进行图像识别的流程。例子来自于ImageNet图像识别竞赛,所采用的模型也是比赛中获得准确率最高的模型。通过对项目每一步的详细分析,手把手地教会读者使用卷积神经网络进行图像识别。
除此之外,全书对于目前图像识别最流行和取得最好成绩的深度学习模型做了介绍,这些都是目前深度学习的热点和研究重点。
本书的特点
? 本书不是纯粹的理论知识介绍,也不是高深技术研讨,完全是从实践应用出发,用最简单的、典型的示例引申出核心知识,最后还指出了通往“高精尖”进一步深入学习的道路。
? 本书没有深入介绍某一个知识块,而是全面介绍TensorFlow+OpenCV涉及的图像处理的基本结构和上层程序设计方法,借此能够系统综合性地掌握深度学习的全貌,使读者在学习过程中不至于迷失方向。
? 本书在写作上浅显易懂,没有深奥的数学知识,采用较为形象的形式,用大量图像例子描述应用的理论知识,让读者在轻松愉悦的阅读下掌握相关内容。
? 本书旨在引导读者进行更多技术上的创新,每章都会用示例描述的形式帮助读者更好地理解本章的学习内容。
? 本书代码遵循重构原理,避免代码污染,真心希望读者能写出优秀、简洁、可维护的代码。
示例代码下载
本书配套的示例代码下载地址可以通过扫描右边二维码获取。
如果下载有问题,或者对本书有疑问和建议,请联系booksaga@163.com,邮件主题为“OpenCV+TensorFlow”。
本书适合人群
本书适合于学习人工神经网络、深度学习、计算机视觉以及TensorFlow程序设计等相关技术的程序设计人员阅读,也可以作为高等院校和培训学校相关专业的教材。建议在学习本书的过程中,理论联系实际,独立进行一些代码编写,采取开放式的实验方法,即读者自行准备实验数据和实验环境,解决实际问题。
本书作者
本书作者现为高校计算机专业副教授,担负数据挖掘、Java程序设计、数据结构等多项本科及研究生课程,研究方向为数据仓库与数据挖掘、人工智能、机器学习,在研和参研多项科研项目。本书在写作过程中得到了家人的大力支持,在此对他们表示感谢。
以尽致的文字、严密的逻辑、合时的题材、丰富的内涵服务社会,是作者编写本书的宗旨。但因认识局限,不足之处还望大家多多指正。
王晓华
2018年10月