OpenCV+TensorFlow深度学习与计算机视觉实战
定 价:69 元
- 作者:王晓华
- 出版时间:2019/1/1
- ISBN:9787302518426
- 出 版 社:清华大学出版社
- 中图法分类:TP391.413
- 页码:
- 纸张:胶版纸
- 版次:
- 开本:16开
本书旨在掌握深度学习基本知识和特性的基础上,培养使用TensorFlow OpenCV进行实际编程以解决图像处理相关问题的能力。全书力求通过通俗易懂的语言和详细的程序分析,介绍TensorFlow的基本用法、高级模型设计和对应的程序编写。
本书共13章,内容包括计算机视觉与深度学习的关系、Python的安装和使用、Python数据处理及可视化、机器学习的理论和算法、计算机视觉处理库OpenCV 、OpenCV图像处理实战、TensorFlow基本数据结构和使用、TensorFlow数据集的创建与读取、BP神经网络、反馈神经网络、卷积神经网络等。本书强调理论联系实际,着重介绍TensorFlow OpenCV解决图像识别的应用,提供大量数据集供读者使用,并以代码的形式实现深度学习模型实例供读者参考。
本书既可作为学习人工神经网络、深度学习、TensorFlow程序设计以及图像处理等相关内容的程序设计人员的自学用书,也可作为高等院校和培训学校相关专业的教材使用。
(1)本书偏重于介绍使用卷积神经网络及其相关变化的模型,在TensorFlow框架上进行图像特征提取、图像识别以及具体应用,这是目前已出版图书中鲜有涉及的。
(2)本书并非枯燥的理论讲解,而是作者阅读和参考了大量*文献做出的归纳总结,在这点上也与其他编程书籍有本质区别。书中的例子都是来自于现实世界中对图像分辨和特征的竞赛优胜模型,通过介绍这些例子可以使读者更深一步地了解和掌握其内在的算法和本质。
(3)本书作者有长期研究生和本科教学经验,通过通俗易懂的语言对全部内容进行讲解,深入浅出地介绍反馈神经网络和卷积神经网络理论体系的全部知识点,并在程序编写时使用官方推荐的TensorFlow*框架进行程序设计,帮助读者更好地使用*的模型框架、理解和掌握TensorFlow程序设计的精妙之处。
(4)掌握和使用深度学习的人才应该在掌握基本知识和理论的基础上,重视实际应用程序开发能力和解决问题能力的培养。因此,本书结合作者在实际工作中遇到的实际案例进行分析,抽象化核心模型并给出具体解决方案,并提供了全部程序例题的相应代码以供读者学习。
前 言
我们处于一个变革的时代!
给定一个物体,让一个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月
王晓华,高校资深计算机专业讲师,给研究生和本科生讲授面向对象程序设计、数据结构、Hadoop程序设计等相关课程。主要研究方向为云计算、数据挖掘。曾主持和参与多项国家和省级科研课题,独立完成一项科研成果并获省级成果认定,发表过多篇论文,申请有一项专利。著有《Spark MLlib机器学习实践》《TensorFlow深度学习应用实践》等图书。
目 录
第1章 计算机视觉与深度学习 1
1.1 计算机视觉与深度学习的关系 1
1.1.1 人类视觉神经的启迪 2
1.1.2 计算机视觉的难点与人工神经网络 3
1.1.3 应用深度学习解决计算机视觉问题 4
1.2 计算机视觉学习的基础与研究方向 5
1.2.1 学习计算机视觉结构图 5
1.2.2 计算机视觉的学习方式和未来趋势 6
1.3 本章小结 7
第2章 Python的安装与使用 8
2.1 Python基本安装和用法 8
2.1.1 Anaconda的下载与安装 9
2.1.2 Python编译器PyCharm的安装 12
2.1.3 使用Python计算softmax函数 15
2.2 TensorFlow类库的下载与安装(基于CPU模式) 16
2.3 TensorFlow类库的下载与安装(基于GPU模式) 18
2.3.1 CUDA配置 18
2.3.2 cuDNN配置 21
2.4 OpenCV类库的下载与安装 22
2.5 Python常用类库中的threading 24
2.5.1 threading库的使用 25
2.5.2 threading模块中最重要的Thread类 25
2.5.3 threading中的Lock类 26
2.5.4 threading中的join类 27
2.6 本章小结 28
第3章 Python数据处理及可视化 29
3.1 从小例子起步NumPy的初步使用 29
3.1.1 数据的矩阵化 29
3.1.2 数据分析 31
3.1.3 基于统计分析的数据处理 32
3.2 图形化数据处理Matplotlib包的使用 33
3.2.1 差异的可视化 33
3.2.2 坐标图的展示 34
3.2.3 玩个大的数据集 36
3.3 深度学习理论方法相似度计算 38
3.3.1 基于欧几里得距离的相似度计算 38
3.3.2 基于余弦角度的相似度计算 39
3.3.3 欧几里得相似度与余弦相似度的比较 40
3.4 数据的统计学可视化展示 41
3.4.1 数据的四分位 41
3.4.2 数据的四分位示例 42
3.4.3 数据的标准化 46
3.4.4 数据的平行化处理 47
3.4.5 热点图-属性相关性检测 49
3.5 Python数据分析与可视化实战某地降水的关系处理 50
3.5.1 不同年份的相同月份统计 50
3.5.2 不同月份之间的增减程度比较 52
3.5.3 每月降水是否相关 53
3.6 本章小结 54
第4章 深度学习的理论基础机器学习 55
4.1 机器学习基本分类 55
4.1.1 基于学科的分类 55
4.1.2 基于学习模式的分类 56
4.1.3 基于应用领域的分类 56
4.2 机器学习基本算法 57
4.2.1 机器学习的算法流程 57
4.2.2 基本算法的分类 58
4.3 算法的理论基础 60
4.3.1 小学生的故事求圆的面积 60
4.3.2 机器学习基础理论函数逼近 61
4.4 回归算法 62
4.4.1 函数逼近经典算法线性回归算法 62
4.4.2 线性回归的姐妹逻辑回归 64
4.5 机器学习的其他算法决策树 65
4.5.1 水晶球的秘密 65
4.5.2 决策树的算法基础信息熵 66
4.5.3 决策树的算法基础ID3算法 67
4.6 本章小结 68
第5章 计算机视觉处理库OpenCV 70
5.1 认识OpenCV 70
5.1.1 OpenCV的结构 70
5.1.2 从雪花电视谈起在Python中使用OpenCV 74
5.2 OpenCV基本的图片读取 75
5.2.1 基本的图片存储格式 76
5.2.2 图像的读取与存储 78
5.2.3 图像的转换 78
5.2.4 使用NumPy模块对图像进行编辑 80
5.3 OpenCV的卷积核处理 81
5.3.1 计算机视觉的三种不同色彩空间 81
5.3.2 卷积核与图像特征提取 82
5.3.3 卷积核进阶 84
5.4 本章小结 85
第6章 OpenCV图像处理实战 86
6.1 图片的自由缩放以及边缘裁剪 86
6.1.1 图像的扩缩裁挖 86
6.1.2 图像色调的调整 87
6.1.3 图像的旋转、平移和翻转 89
6.2 使用OpenCV扩大图像数据库 90
6.2.1 图像的随机裁剪 90
6.2.2 图像的随机旋转变换 91
6.2.3 图像色彩的随机变换 92
6.2.4 对鼠标的监控 93
6.3 本章小结 94
第7章 Lets play TensorFlow 95
7.1 TensorFlow游乐场 95
7.1.1 I want to play a game 95
7.1.2 TensorFlow游乐场背后的故事 99
7.1.3 如何训练神经网络 101
7.2 Hello TensorFlow 102
7.2.1 TensorFlow名称的解释 102
7.2.2 TensorFlow基本概念 103
7.2.3 TensorFlow基本架构 105
7.3 本章小结 106
第8章 Hello TensorFlow,从0到1 107
8.1 TensorFlow的安装 107
8.2 TensorFlow常量、变量和数据类型 109
8.3 TensorFlow矩阵计算 114
8.4 Hello TensorFlow 115
8.5 本章小结 120
第9章 TensorFlow重要算法基础 122
9.1 BP神经网络简介 122
9.2 BP神经网络两个基础算法详解 124
9.2.1 最小二乘法详解 125
9.2.2 道士下山的故事梯度下降算法 127
9.3 TensorFlow实战房屋价格的计算 130
9.3.1 数据收集 130
9.3.2 模型的建立与计算 131
9.3.3 TensorFlow程序设计 133
9.4 反馈神经网络反向传播算法介绍 135
9.4.1 深度学习基础 135
9.4.2 链式求导法则 136
9.4.3 反馈神经网络原理与公式推导 138
9.4.4 反馈神经网络原理的激活函数 143
9.4.5 反馈神经网络原理的Python实现 144
9.5 本章小结 150
第10章 TensorFlow数据的生成与读取 151
10.1 TensorFlow的队列 151
10.1.1 队列的创建 151
10.1.2 线程同步与停止 155
10.1.3 队列中数据的读取 156
10.2 CSV文件的创建与读取 157
10.2.1 CSV文件的创建 157
10.2.2 CSV文件的读取 158
10.3 TensorFlow文件的创建与读取 160
10.3.1 TFRecords文件的创建 160
10.3.2 TFRecords文件的读取 163
10.3.3 图片文件的创建与读取 164
10.4 本章小结 169
第11章 卷积神经网络的原理 170
11.1 卷积运算基本概念 170
11.1.1 卷积运算 171
11.1.2 TensorFlow中卷积函数实现详解 172
11.1.3 使用卷积函数对图像感兴趣区域进行标注 176
11.1.4 池化运算 178
11.1.5 使用池化运算加强卷积特征提取 180
11.2 卷积神经网络的结构详解 181
11.2.1 卷积神经网络原理 181
11.2.2 卷积神经网络的应用实例LeNet5网络结构 184
11.2.3 卷积神经网络的训练 186
11.3 TensorFlow实现LeNet实例 186
11.3.1 LeNet模型分解 187
11.3.2 使用ReLU激活函数替代Sigmoid 191
11.3.3 程序的重构模块化设计 195
11.3.4 卷积核和隐藏层参数的修改 199
11.4 本章小结 205
第12章 卷积神经网络公式的推导与应用 206
12.1 反馈神经网络算法 206
12.1.1 经典反馈神经网络正向与反向传播公式推导 206
12.1.2 卷积神经网络正向与反向传播公式推导 209
12.2 使用卷积神经网络分辨CIFAR-10数据集 217
12.2.1 CIFAR-10数据集下载与介绍 217
12.2.2 CIFAR-10模型的构建与数据处理 219
12.2.3 CIFAR-10模型的细节描述与参数重构 228
12.3 本章小结 229
第13章 猫狗大战实战AlexNet图像识别 230
13.1 AlexNet简介 231
13.1.1 AlexNet模型解读 231
13.1.2 AlexNet程序的实现 234
13.2 实战猫狗大战AlexNet模型 239
13.2.1 数据的收集与处理 240
13.2.2 模型的训练与存储 244
13.2.3 使用训练过的模型预测图片 250
13.2.4 使用Batch_Normalization正则化处理数据集 257
13.3 本章小结 266