编辑推荐
(1)《OpenCV+TensorFlow深度学习与计算机视觉实战》偏重于介绍使用卷积神经网络及其相关变化的模型,在TensorFlow框架上进行图像特征提取、图像识别以及具体应用,这是目前已出版图书中鲜有涉及的。
(2)《OpenCV+TensorFlow深度学习与计算机视觉实战》并非枯燥的理论讲解,而是作者阅读和参考了大量文献做出的归纳总结,在这点上也与其他编程书籍有本质区别。书中的例子都是来自于现实世界中对图像分辨和特征的竞赛优胜模型,通过介绍这些例子可以使读者更深一步地了解和掌握其内在的算法和本质。
(3)《OpenCV+TensorFlow深度学习与计算机视觉实战》作者有长期研究生和本科教学经验,通过通俗易懂的语言对全部内容进行讲解,深入浅出地介绍反馈神经网络和卷积神经网络理论体系的全部知识点,并在程序编写时使用官方推荐的TensorFl框架进行程序设计,帮助读者更好地使用模型框架、理解和掌握TensorFlow程序设计的精妙之处。
(4)掌握和使用深度学习的人才应该在掌握基本知识和理论的基础上,重视实际应用程序开发能力和解决问题能力的培养。因此,《OpenCV+TensorFlow深度学习与计算机视觉实战》结合作者在实际工作中遇到的实际案例进行分析,抽象化核心模型并给出具体解决方案,并提供了全部程序例题的相应代码以供读者学习。
内容简介
《OpenCV+TensorFlow深度学习与计算机视觉实战》旨在掌握深度学习基本知识和特性的基础上,培养使用TensorFlow+OpenCV进行实际编程以解决图像处理相关问题的能力。《OpenCV+TensorFlow深度学习与计算机视觉实战》力求通过通俗易懂的语言和详细的程序分析,介绍TensorFlow的基本用法、高级模型设计和对应的程序编写。
《OpenCV+TensorFlow深度学习与计算机视觉实战》共13章,内容包括计算机视觉与深度学习的关系、Python的安装和使用、Python数据处理及可视化、机器学习的理论和算法、计算机视觉处理库OpenCV、OpenCV图像处理实战、TensorFlow基本数据结构和使用、TensorFlow数据集的创建与读取、BP神经网络、反馈神经网络、卷积神经网络等。《OpenCV+TensorFlow深度学习与计算机视觉实战》强调理论联系实际,着重介绍TensorFlow+OpenCV解决图像识别的应用,提供大量数据集供读者使用,并以代码的形式实现深度学习模型实例供读者参考。
《OpenCV+TensorFlow深度学习与计算机视觉实战》既可作为学习人工神经网络、深度学习、TensorFlow程序设计以及图像处理等相关内容的程序设计人员的自学用书,也可作为高等院校和培训学校相关专业的教材使用。
作者简介
王晓华,高校资深计算机专业讲师,给研究生和本科生讲授面向对象程序设计、数据结构、Hadoop程序设计等相关课程。主要研究方向为云计算、数据挖掘。曾主持和参与多项国家和省级科研课题,独立完成一项科研成果并获省级成果认定,发表过多篇论文,申请有一项专利。著有《SparkMLlib机器学习实践》《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.1Python基本安装和用法8
2.1.1Anaconda的下载与安装9
2.1.2Python编译器PyCharm的安装12
2.1.3使用Python计算softmax函数15
2.2TensorFlow类库的下载与安装(基于CPU模式)16
2.3TensorFlow类库的下载与安装(基于GPU模式)18
2.3.1CUDA配置18
2.3.2cuDNN配置21
2.4OpenCV类库的下载与安装22
2.5Python常用类库中的threading24
2.5.1threading库的使用25
2.5.2threading模块中最重要的Thread类25
2.5.3threading中的Lock类26
2.5.4threading中的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.5Python数据分析与可视化实战—某地降水的关系处理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章计算机视觉处理库OpenCV70
5.1认识OpenCV70
5.1.1OpenCV的结构70
5.1.2从雪花电视谈起—在Python中使用OpenCV74
5.2OpenCV基本的图片读取75
5.2.1基本的图片存储格式76
5.2.2图像的读取与存储78
5.2.3图像的转换78
5.2.4使用NumPy模块对图像进行编辑80
5.3OpenCV的卷积核处理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章Let’splayTensorFlow95
7.1TensorFlow游乐场95
7.1.1Iwanttoplayagame95
7.1.2TensorFlow游乐场背后的故事99
7.1.3如何训练神经网络101
7.2HelloTensorFlow102
7.2.1TensorFlow名称的解释102
7.2.2TensorFlow基本概念103
7.2.3TensorFlow基本架构105
7.3本章小结106
第8章HelloTensorFlow,从0到1107
8.1TensorFlow的安装107
8.2TensorFlow常量、变量和数据类型109
8.3TensorFlow矩阵计算114
8.4HelloTensorFlow115
8.5本章小结120
第9章TensorFlow重要算法基础122
9.1BP神经网络简介122
9.2BP神经网络两个基础算法详解124
9.2.1最小二乘法详解125
9.2.2道士下山的故事—梯度下降算法127
9.3TensorFlow实战—房屋价格的计算130
9.3.1数据收集130
9.3.2模型的建立与计算131
9.3.3TensorFlow程序设计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.1TensorFlow的队列151
10.1.1队列的创建151
10.1.2线程同步与停止155
10.1.3队列中数据的读取156
10.2CSV文件的创建与读取157
10.2.1CSV文件的创建157
10.2.2CSV文件的读取158
10.3TensorFlow文件的创建与读取160
10.3.1TFRecords文件的创建160
10.3.2TFRecords文件的读取163
10.3.3图片文件的创建与读取164
10.4本章小结169
第11章卷积神经网络的原理170
11.1卷积运算基本概念170
11.1.1卷积运算171
11.1.2TensorFlow中卷积函数实现详解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.3TensorFlow实现LeNet实例186
11.3.1LeNet模型分解187
11.3.2使用ReLU激活函数替代Sigmoid191
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.1CIFAR-10数据集下载与介绍217
12.2.2CIFAR-10模型的构建与数据处理219
12.2.3CIFAR-10模型的细节描述与参数重构228
12.3本章小结229
第13章猫狗大战—实战AlexNet图像识别230
13.1AlexNet简介231
13.1.1AlexNet模型解读231
13.1.2AlexNet程序的实现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
前言/序言
前言
我们处于一个变革的时代!
给定一个物体,让一个3岁的小孩描述这个物体是什么似乎是一件非常简单的事情。然而将同样的东西放在计算机面前,让它描述自己看到了什么,这在不久以前还是一件不可能的事。
让计算机学会“看”东西是一个专门的学科—计算机视觉正在做的工作。借助于人工神经网络和深度学习的发展,近年来计算机视觉在研究上取得了重大的突破。通过模拟生物视觉所构建的卷积神经网络模型在图像识别和分类上取得了非常好的效果。
而今,借助于深度学习技术的发展,使用人工智能去处理常规劳动,理解语音语义,帮助医学诊断和支持基础科研工作,这些曾经是梦想的东西似乎都在眼前。
写作《OpenCV+TensorFlow深度学习与计算机视觉实战》的原因
TensorFlow作为最新的、应用范围最为广泛的深度学习开源框架引起了广泛的关注,吸引了大量程序设计和开发人员进行相关内容的学习与开发。掌握TensorFlow编程基本技能的程序设计人员成为当前各组织和单位热切追求的最热门人才之一。他们的主要工作就是利用获得的数据集设计不同的人工神经模型,利用人工神经网络强大的学习能力提取和挖掘数据集中包含的潜在信息,编写相应的TensorFlow程序对数据进行处理,对其价值进行进一步开发,为商业机会的获取、管理模式的创新、决策的制定提供相应的支持。随着越来越多的组织、单位对深度学习应用的重视,高层次的TensorFlow程序设计人员将会成为就业市场上抢手的人才。
与其他应用框架不同的是,TensorFlow并不是一个简单的编程框架,深度学习也不是一个简单的名词,需要相关研究人员对隐藏在其代码背后的理论进行系统学习、掌握一定的数学知识和理论基础。《OpenCV+TensorFlow深度学习与计算机视觉实战》的作者具有长期一线理科理论教学经验,可以将其中的理论知识以非常浅显易懂的语言描述出来。这一点是市面上相关书籍无法比拟的。
《OpenCV+TensorFlow深度学习与计算机视觉实战》是为了满足广大TensorFlow程序设计和开发人员学习最新TensorFlow程序代码的要求而出版的。书中对涉及深度学习的结构与编程代码做了循序渐进的介绍与说明,以解决实际图像处理为依托,从理论开始介绍TensorFlow+OpenCV程序设计模式,多角度、多方面地对其中的原理和实现提供翔实的分析,同时结合实际案例编写的应用程序设计可以使读者从开发者的层面掌握TensorFlow程序的设计方法和技巧、为开发出更强大的图像处理应用打下扎实的基础。
《OpenCV+TensorFlow深度学习与计算机视觉实战》的优势
(1)《OpenCV+TensorFlow深度学习与计算机视觉实战》偏重于介绍使用卷积神经网络及其相关变化的模型,在TensorFlow框架上进行图像特征提取、图像识别以及具体应用,这是目前已出版图书中鲜有涉及的。
(2)《OpenCV+TensorFlow深度学习与计算机视觉实战》并非枯燥的理论讲解,而是作者阅读和参考了大量最新文献做出的归纳总结,在这点上也与其他编程书籍有本质区别。书中的例子都是来自于现实世界中对图像分辨和特征的竞赛优胜模型,通过介绍这些例子可以使读者更深一步地了解和掌握其内在的算法和本质。
(3)《OpenCV+TensorFlow深度学习与计算机视觉实战》作者有长期研究生和本科教学经验,通过通俗易懂的语言对全部内容进行讲解,深入浅出地介绍反馈神经网络和卷积神经网络理论体系的全部知识点,并在程序编写时使用官方推荐的TensorFlow最新框架进行程序设计,帮助读者更好地使用最新的模型框架、理解和掌握TensorFlow程序设计的精妙之处。
(4)掌握和使用深度学习的人才应该在掌握基本知识和理论的基础上,重视实际应用程序开发能力和解决问题能力的培养。因此,《OpenCV+TensorFlow深度学习与计算机视觉实战》结合作者在实际工作中遇到的实际案例进行分析,抽象化核心模型并给出具体解决方案,并提供了全部程序例题的相应代码以供读者学习。
《OpenCV+TensorFlow深度学习与计算机视觉实战》的内容
《OpenCV+TensorFlow深度学习与计算机视觉实战》共分为13章,所有代码均采用Python语言(TensorFlow框架推荐使用的语言)编写。
第1章介绍计算机视觉与深度学习的关系,旨在说明使用深度学习和人工智能实现计算机视觉是未来的发展方向,也是必然趋势。
第2章介绍Python3.6+Tensorflow1.9+OpenCV3.4.2的环境搭建。Python语言是易用性非常强的语言,可以很方便地将公式和愿景以代码的形式表达出来,而无须学习过多的编程知识。本章还介绍Python专用类库threading的使用。这个类库虽不常见,但会为后文的数据读取和TensorFlow专用格式的生成打下基础。
第3章主要介绍Python语言的使用。通过介绍和实现不同的Python类库,帮助读者强化Python的编程能力、学习相应类库。这些都是在后文中反复使用的内容。同时借用掌握的知识学习数据的可视化展示能力(在数据分析中是一项基本技能,具有非常重要的作用)。
第4章全面介绍机器学习的基本分类、算法和理论基础,以及不同算法(例如回归算法和决策树算法)的具体实现和应用。这些是深度学习的基础理论部分,向读者透彻而准确地展示深度学习的结构与应用,为后文进一步掌握深度学习在计算机视觉中的应用打下扎实的基础。
第5~6章是对OpenCV类库(Python中专门用于图像处理的类库)使用方法的介绍。《OpenCV+TensorFlow深度学习与计算机视觉实战》以图像处理为重点,因此对图像数据的读取、编辑以及加工是重中之重。通过基础讲解和进阶介绍,读者可以掌握这个重要类库的使用,学会对图像的裁剪、变换和平移的代码编写。
第7~8章是TensorFlow的入门基础,通过一个娱乐性质的网站向读者介绍TensorFlow的基本应用,用图形图像的方式演示神经网络进行类别分类的拟合过程,在娱乐的同时了解其背后的技术。
第9章是《OpenCV+TensorFlow深度学习与计算机视觉实战》的一个重点,也是神经网络的基础内容。本章的反馈算法是解决神经网络计算量过大的里程碑算法。作者使用通俗易懂的语言,通过详细严谨的讲解,对这个算法进行了介绍,并且通过独立编写代码的形式,为读者实现神经网络中最重要的算法。本章的内容看起来不多,但是非常重要。
第10章对TensorFlow的数据输入输出做了详细的介绍。从读取CSV文件开始,到教会读者制作专用的TensorFlow数据格式TFRecord,这是目前市面上的书籍鲜有涉及的。对于使用TensorFlow框架进行程序编写,数据的准备和规范化是重中之重,因此本章也是较为重要的一个章节。
第11~12章是应用卷积神经网络在TensorFlow框架上进行学习的一个基础教程,经过前面章节的铺垫和介绍,采用基本理论—卷积神经网络进行手写体的辨识是深度学习最基本的技能,也是非常重要的一个学习基础。并且在程序编写的过程中,作者向读者展示了参数调整对模型测试结果的重要作用,这也是目前市面上相关书籍没有涉及的内容,非常重要。
第13章通过一个完整的例子演示使用卷积神经网络进行图像识别的流程。例子来自于ImageNet图像识别竞赛,所采用的模型也是比赛中获得准确率最高的模型。通过对项目每一步的详细分析,手把手地教会读者使用卷积神经网络进行图像识别。
除此之外,《OpenCV+TensorFlow深度学习与计算机视觉实战》对于目前图像识别最流行和取得最好成绩的深度学习模型做了介绍,这些都是目前深度学习的热点和研究重点。
《OpenCV+TensorFlow深度学习与计算机视觉实战》的特点
?《OpenCV+TensorFlow深度学习与计算机视觉实战》不是纯粹的理论知识介绍,也不是高深技术研讨,完全是从实践应用出发,用最简单的、典型的示例引申出核心知识,最后还指出了通往“高精尖”进一步深入学习的道路。
?《OpenCV+TensorFlow深度学习与计算机视觉实战》没有深入介绍某一个知识块,而是全面介绍TensorFlow+OpenCV涉及的图像处理的基本结构和上层程序设计方法,借此能够系统综合性地掌握深度学习的全貌,使读者在学习过程中不至于迷失方向。
?《OpenCV+TensorFlow深度学习与计算机视觉实战》在写作上浅显易懂,没有深奥的数学知识,采用较为形象的形式,用大量图像例子描述应用的理论知识,让读者在轻松愉悦的阅读下掌握相关内容。
?《OpenCV+TensorFlow深度学习与计算机视觉实战》旨在引导读者进行更多技术上的创新,每章都会用示例描述的形式帮助读者更好地理解本章的学习内容。
?《OpenCV+TensorFlow深度学习与计算机视觉实战》代码遵循重构原理,避免代码污染,真心希望读者能写出优秀、简洁、可维护的代码。
示例代码下载
《OpenCV+TensorFlow深度学习与计算机视觉实战》配套的示例代码下载地址可以通过扫描右边二维码获取。
如果下载有问题,或者对《OpenCV+TensorFlow深度学习与计算机视觉实战》有疑问和建议,请联系booksaga@163.com,邮件主题为“OpenCV+TensorFlow”。
《OpenCV+TensorFlow深度学习与计算机视觉实战》适合人群
《OpenCV+TensorFlow深度学习与计算机视觉实战》适合于学习人工神经网络、深度学习、计算机视觉以及TensorFlow程序设计等相关技术的程序设计人员阅读,也可以作为高等院校和培训学校相关专业的教材。建议在学习《OpenCV+TensorFlow深度学习与计算机视觉实战》的过程中,理论联系实际,独立进行一些代码编写,采取开放式的实验方法,即读者自行准备实验数据和实验环境,解决实际问题。
《OpenCV+TensorFlow深度学习与计算机视觉实战》作者
《OpenCV+TensorFlow深度学习与计算机视觉实战》作者现为高校计算机专业副教授,担负数据挖掘、Java程序设计、数据结构等多项本科及研究生课程,研究方向为数据仓库与数据挖掘、人工智能、机器学习,在研和参研多项科研项目。《OpenCV+TensorFlow深度学习与计算机视觉实战》在写作过程中得到了家人的大力支持,在此对他们表示感谢。
以尽致的文字、严密的逻辑、合时的题材、丰富的内涵服务社会,是作者编写《OpenCV+TensorFlow深度学习与计算机视觉实战》的宗旨。但因认识局限,不足之处还望大家多多指正。
王晓华
2018年10月