描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 是国际标准书号ISBN: 28515503
《Python人脸识别:从入门到工程实践》
人脸识别的学习门槛相对较高,同时与具体业务的关联程度很大,在实践中需要考虑的问题也比较多。本书从工程实践的角度出发,采用Python这样主流的编程语言来实现一款属于自己的人脸识别引擎。通过动手实现书中代码,使初学者能够快速掌握人脸识别的原理,同时对深度学习、计算机视觉等知识具有比较直观的感受。本书在注重工程实践的同时不乏对理论知识的兼顾,为读者更加深入地学习与钻研人脸识别做好铺垫。
通过阅读本书,你将:
了解机器学习及深度学习算法
了解人脸识别技术的应用领域与设计思想
理解人脸识别技术的原理
能够动手实现基于自己业务场景的人脸识别引擎
能够基于人脸识别知识设计出其他类似的图像识别系统
能够更深入地了解OpenCV库的使用方法
了解深度学习框架Keras的使用方法
对图像检索、数据存储等技术有更进一步的了解
《MXNet深度学习实战》
通过阅读本书,你将学到:
·MXNet、TensorFlow、Pytorch、Caffe等深度学习框架的差异
·MXNet框架各主要模块的技术原理和应用实践
·MXNet在图像分类、目标检测、图像分割中的应用,以及相关算法的训练、模型测试和实现细节
·基于动态图构建网络结构的Gluon接口
·MXNet专门为计算机视觉任务推出的深度学习库GluonCV
·从零开始实现深度学习和计算机视觉算法的方法
《Python人脸识别:从入门到工程实践》
这是一本面向初学者的人脸识别工具书,不仅适合零基础的读者快速入门,还适合有一定基础的读者使其迅速达到可以进行工程实践的水平。
作者就职于某世界100强企业,在人脸识别方面积累了丰富的工程实践经验。本书不仅详细介绍了机器学习、深度学习、计算机视觉、人脸识别等方面的原理、技术和算法,而且还通过相关的实战案例讲解了如何进行人脸识别方面的实践,以及如何将做好的模型应用于工程实践中。同时,本书还提供了大量简洁、精炼的代码,能帮助读者从零开始实现一个工程级别的人脸识别引擎。
全书一共8章:
第1章介绍了人脸识别的基础知识和必备常识;
第2~4章详细讲解了与人脸识别相关的数学、机器学习、计算机视觉、OpenCV相关的基础和算法;
第5章讲解了深度学习的原理以及使用Keras实现深度学习模型的方法;
第6章介绍了常用的人脸识别算法;
第7~8章详细讲解了人脸识别引擎的实现方法以及如何将做好的模型进行工程化。
《MXNet深度学习实战》
这是一本详细讲解计算机视觉算法实现以及MXNet框架的原理和使用的工具书。
作者是网易的资深计算机视觉算法工程师,本书融合了他丰富的工程实践经验,一方面详细讲解了深度学习框架MXNet的技术原理和应用方法,一方面以MXNet为工具讲解了算法实现的具体细节。辅以大量简洁的代码,助你从零基础开始实现深度学习算法。
全书共12章,分为4个部分:
*部分 准备篇(第1~2章)
介绍了MXNet的发展、优势、预备知识、各种深度学习框架的对比,以及开发环境的搭建,包括Docker的使用。
第二部分 基础篇(第3~7章)
纤细讲解了MXNet主要模块使用和原理,如MXNet的数据读取、数据增强操作、常用网络层的含义及使用、常见网络结构的设计思想、模型训练相关的参数配置等。
第三部分 实战篇(第8~10章)
以图像分类、目标检测、图像分割这三个常用领域为例演示了如何通过MXNet实现算法训练和模型测试,同时还结合MXNet的接口详细讲解了算法实现的细节。
第四部分 扩展篇(第11~12章)
主要介绍了基于动态图构建网络结构的Gluon接口,以及MXNet专门为计算机视觉任务推出的深度学习库GluonCV。
《Python人脸识别:从入门到工程实践》
前言
第1章 人脸识别入门1
1.1 人脸识别概况1
1.1.1 何为人脸识别1
1.1.2 人脸识别的应用2
1.1.3 人脸识别的目标4
1.1.4 人脸识别的一般方法5
1.2 人脸识别发展状况8
1.2.1 人脸识别历史沿革8
1.2.2 DT时代的呼唤10
1.2.3 计算机视觉的新起点10
1.3 本章小结12
第2章 数学与机器学习基础13
2.1 矩阵13
2.1.1 矩阵的形式13
2.1.2 行列式14
2.1.3 转置15
2.1.4 矩阵的一般运算15
2.2 向量17
2.2.1 向量的形式18
2.2.2 向量的点乘18
2.2.3 向量的范数19
2.3 距离度量19
2.3.1 欧式距离19
2.3.2 曼哈顿距离20
2.3.3 余弦距离20
2.3.4 汉明距离21
2.4 卷积22
2.4.1 一维卷积22
2.4.2 二维卷积23
2.5 机器学习基础25
2.5.1 机器学习类别25
2.5.2 分类算法26
2.6 本章小结38
第3章 计算机视觉原理与应用39
3.1 计算机视觉介绍39
3.2 颜色模型40
3.2.1 彩色图像40
3.2.2 灰度图像与二值图像42
3.3 信号与噪声44
3.3.1 信号44
3.3.2 噪声45
3.4 图像滤波45
3.4.1 均值滤波45
3.4.2 中值滤波47
3.5 图像的几何变换47
3.5.1 平移48
3.5.2 旋转49
3.5.3 缩放50
3.6 图像特征50
3.6.1 灰度直方图50
3.6.2 LBP特征51
3.6.3 Haar特征52
3.6.4 HOG特征54
3.7 本章小结56
第4章 OpenCV基础与应用58
4.1 OpenCV介绍58
4.2 科学计算库Numpy59
4.2.1 array类型60
4.2.2 线性代数相关62
4.2.3 矩阵的高级函数64
4.3 OpenCV基本操作70
4.4 图像的基本变换72
4.4.1 颜色变换72
4.4.2 几何变换80
4.4.3 图像噪声处理83
4.5 本章小结86
第5章 深度学习与Keras工程实践87
5.1 深度学习介绍87
5.2 Keras框架简介89
5.3 Keras的使用方法91
5.3.1 深度学习的原理91
5.3.2 Keras神经网络堆叠的两种方法92
5.4 常用的神经网络层96
5.4.1 全连接层96
5.4.2 二维卷积层98
5.4.3 池化层100
5.4.4 BN层103
5.4.5 dropout层105
5.4.6 flatten层106
5.5 激活函数108
5.5.1 Sigmoid激活函数108
5.5.2 Softmax激活函数109
5.5.3 ReLU激活函数110
5.5.4 Keras中激活函数的使用111
5.6 优化器112
5.6.1 SGD优化器113
5.6.2 Adadelta优化器116
5.7 损失函数117
5.7.1 均方误差117
5.7.2 交叉熵损失函数118
5.7.3 Keras提供的损失函数120
5.8 模型评估方法122
5.8.1 交叉验证122
5.8.2 分类器性能评估124
5.9 数据增强127
5.9.1 数据增强概述128
5.9.2 Keras实现数据增强129
5.9.3 自己实现数据增强133
5.10 Keras的工程实践134
5.10.1 训练时的回调函数135
5.10.2 打印网络信息137
5.10.3 输出网络结构图139
5.10.4 获取某层的输出140
5.11 本章小结142
第6章 常用人脸识别算法143
6.1 特征脸法143
6.2 OpenCV的方法146
6.2.1 人脸检测方法147
6.2.2 人脸识别方法149
6.3 Dlib的人脸检测方法151
6.4 基于深度学习的图片特征提取152
6.4.1 AlexNet152
6.4.2 VGGNet155
6.4.3 GoogLeNet157
6.4.4 ResNet160
6.5 基于深度学习的人脸检测161
6.5.1 基于深度学习的目标检测162
6.5.2 MTCNN164
6.6 基于深度学习的人脸识别167
6.6.1 基于度量学习的方法168
6.6.2 基于边界分类的方法171
6.7 本章小结177
第7章 人脸识别项目实战178
7.1 人脸图片数据集178
7.1.1 Olivetti Faces人脸数据集178
7.1.2 LFW人脸数据集180
7.1.3 YouTube Faces人脸数据集181
7.1.4 IMDB WIKI人脸数据集181
7.1.5 FDDB人脸数据集182
7.2 使用OpenCV的人脸检测182
7.2.1 Haar级联分类器182
7.2.2 OpenCV的SSD人脸检测器184
7.3 使用Dlib的人脸检测186
7.3.1 基于Hog-SVM的人脸检测186
7.3.2 基于最大边界的对象检测器187
7.4 深度学习实践188
7.4.1 卷积神经网络实现189
7.4.2 数据增强207
7.4.3 自定义损失函数211
7.4.4 数据预处理213
7.4.5 模型训练214
7.4.6 实现Web接口216
7.4.7 模型调优与总结218
7.5 人脸识别的拓展应用219
7.6 本章小结220
第8章 人脸识别工程化221
8.1 云平台实践221
8.1.1 云计算介绍221
8.1.2 云服务的形式223
8.1.3 云平台架构设计224
8.2 服务API设计229
8.2.1 人脸检测229
8.2.2 人脸对比239
8.3 人脸图片存储241
8.4 人脸图片检索243
8.5 本章小结244
附录 参考文献245
《MXNet深度学习实战》
前言
第1章 全面认识MXNet1
1.1 人工智能、机器学习与深度学习2
1.1.1 人工智能2
1.1.2 机器学习2
1.1.3 深度学习4
1.2 深度学习框架4
1.2.1 MXNet6
1.2.2 PyTorch6
1.2.3 Caffe/Caffe27
1.2.4 TensorFlow7
1.2.5 其他7
1.3 关于MXNet8
1.3.1 MXNet的发展历程8
1.3.2 MXNet的优势9
1.4 MXNet开发需要具备的知识10
1.4.1 接口语言11
1.4.2 NumPy11
1.4.3 神经网络11
1.5 本章小结12
第2章 搭建开发环境13
2.1 环境配置14
2.2 使用Docker安装MXNet19
2.2.1 准备部分19
2.2.2 使用仓库安装Docker20
2.2.3 基于安装包安装Docker23
2.2.4 安装nvidia-docker23
2.2.5 通过Docker使用MXNet25
2.3 本地pip安装MXNet27
2.4 本章小结29
第3章 MXNet基础31
3.1 NDArray31
3.2 Symbol37
3.3 Module43
3.4 本章小结48
第4章 MNIST手写数字体分类50
4.1 训练代码初探52
4.2 训练代码详细解读55
4.2.1 训练参数配置56
4.2.2 数据读取59
4.2.3 网络结构搭建59
4.2.4 模型训练61
4.3 测试代码初探62
4.4 测试代码详细解读64
4.4.1 模型导入64
4.4.2 数据读取66
4.4.3 预测输出67
4.5 本章小结68
第5章 数据读取及增强69
5.1 直接读取原图像数据70
5.1.1 优点及缺点70
5.1.2 使用方法71
5.2 基于RecordIO文件读取数据75
5.2.1 什么是RecordIO文件75
5.2.2 优点及缺点76
5.2.3 使用方法76
5.3 数据增强78
5.3.1 resize79
5.3.2 crop83
5.3.3 镜像89
5.3.4 亮度90
5.3.5 对比度92
5.3.6 饱和度 94
5.4 本章小结95
第6章 网络结构搭建97
6.1 网络层98
6.1.1 卷积层98
6.1.2 BN层106
6.1.3 激活层108
6.1.4 池化层111
6.1.5 全连接层114
6.1.6 损失函数层116
6.1.7 通道合并层119
6.1.8 逐点相加层121
6.2 图像分类网络结构122
6.2.1 AlexNet123
6.2.2 VGG124
6.2.3 GoogleNet125
6.2.4 ResNet128
6.2.5 ResNeXt130
6.2.6 DenseNet131
6.2.7 SENet132
6.2.8 MobileNet134
6.2.9 ShuffleNet136
6.3 本章小结138
第7章 模型训练配置140
7.1 问题定义141
7.2 参数及训练配置142
7.2.1 参数初始化142
7.2.2 优化函数设置144
7.2.3 保存模型145
7.2.4 训练日志的保存146
7.2.5 选择或定义评价指标147
7.2.6 多GPU训练150
7.3 迁移学习151
7.4 断点训练153
7.5 本章小结154
第8章 图像分类156
8.1 图像分类基础知识157
8.1.1 评价指标158
8.1.2 损失函数160
8.2 猫狗分类实战160
8.2.1 数据准备161
8.2.2 训练参数及配置165
8.2.3 数据读取168
8.2.4 网络结构搭建170
8.2.5 训练模型171
8.2.6 测试模型176
8.3 本章小结179
第9章 目标检测180
9.1 目标检测基础知识182
9.1.1 数据集184
9.1.2 SSD算法简介188
9.1.3 anchor189
9.1.4 IoU194
9.1.5 模型训练目标195
9.1.6 NMS199
9.1.7 评价指标mAP201
9.2 通用目标检测202
9.2.1 数据准备203
9.2.2 训练参数及配置205
9.2.3 网络结构搭建208
9.2.4 数据读取215
9.2.5 定义训练评价指标218
9.2.6 训练模型220
9.2.7 测试模型221
9.4 本章小结224
第10章 图像分割225
10.1 图像分割226
10.1.1 数据集227
10.1.2 评价指标229
10.1.3 语义分割算法230
10.2 语义分割实战231
10.2.1 数据准备232
10.2.2 训练参数及配置233
10.2.3 数据读取237
10.2.4 网络结构搭建240
10.2.5 定义评价指标245
10.2.6 训练模型249
10.2.7 测试模型效果251
10.3 本章小结253
第11章 Gluon255
11.1 Gluon基础256
11.1.1 data模块256
11.1.2 nn模块260
11.1.3 model zoo模块265
11.2 CIFAR10数据集分类267
11.2.1 基于CPU的训练代码267
11.2.2 基于GPU的训练代码272
11.2.3 测试代码275
11.3 本章小结276
第12章 GluonCV278
12.1 GluonCV基础279
12.1.1 data模块280
12.1.2 model zoo模块285
12.1.3 utils模块292
12.2 解读ResNet复现代码293
12.2.1 导入模块296
12.2.2 命令行参数设置296
12.2.3 日志信息设置297
12.2.4 训练参数配置298
12.2.5 模型导入300
12.2.6 数据读取301
12.2.7 定义评价指标303
12.2.8 模型训练303
12.3 本章小结308
《Python人脸识别:从入门到工程实践》
为什么要写这本书
人类在浩瀚无垠的宇宙中只是一种渺小的存在,“科技之树”中触手可及的果实已经采摘殆尽,而在树顶的果实又是何其难以获得。在很多领域,人类当前已经难以取得像以往一样巨大的进步。在此情形下,信息科学、数学等基础科学便是驱动其他领域发展的主要动力,而人工智能则是这个领域的新星!
人工智能在近些年的发展可以说是有目共睹。伴随着学术发展的突飞猛进,工业界基于人工智能的应用呈现“井喷”之势,一些公司甚至提出了“All in AI”的口号,这其中比较典型的一种应用便是人脸识别。
从历史的角度来看,人们对人脸识别的探索也是比较早的,但是,人脸识别从实验室走出来,来到人们的生活中,却只是近些年才发生的事情。深度学习在计算机视觉领域应用后,使得人脸识别的精度逼近乃至超越人工水平。如果将人脸识别发展的进程用函数曲线来拟合的话,我觉得Sigmoid函数或许是一个不错的选择(我们会在本书的正文中介绍该函数)。
笔者在做人脸识别相关应用时,曾经面临业务压力大、无从下手、做成的模型预测质量差等一系列问题,同时有感于市面上难以找到从工程角度介绍人脸识别实现原理和方法的资料。随着自己不断地学习和尝试,模型的性能也一点点得到了改善。但是,生产环境与手写的Demo级代码还不一样,需要考虑的业务细节有很多。在反复的试错中,我设计的生产系统也从0到1实现了上线,并且在保证业务高可用的前提下实现了生产成本的最小化,并逐步替换掉了原有云服务,为企业节约了大笔资金。
后来,为了帮助更多与我有类似经历的人,我将人脸识别应用开发中的琐碎细节整理出来,希望本书能够帮助到更多从事此行业的人。
读者对象
对机器学习、人工智能感兴趣的读者
对计算机视觉、深度学习感兴趣的读者
对人脸识别感兴趣的读者
希望用人脸识别技术完成课程设计的高校学生
人工智能或人脸识别相关产品经理
从事软件研发的技术工作者
开设相关课程的大专院校教师
本书特色
原理讲解通俗易懂。
本书在成文时,参考了许多专业资料,并从初学者的角度出发尽可能清楚地表达原理的含义,尝试用通俗直白的语言描述复杂深奥的数学概念,尽量少使用公式或数学语言来描述问题。
注重原理更注重实践。
本书虽然强调了人脸识别在工程上的重要性,但是也没有忽视对原理的讲解,对于重点内容给出了详细的文献出处,便于读者进一步加强对该内容的理解。
注重对实践的讲解。
本书讲解了人脸识别模型的实现原理和特点,更重要的是强调了工程上的实践能力,对工程场景中常见的问题进行了分析与探讨。
如何阅读本书
本书分为3部分:
第1部分为基础篇,包括第1~4章。介绍了基本知识与概念,包括与人脸识别紧密相关的机器学习与数学知识、计算机视觉以及OpenCV库等。
第2部分为应用篇,包括5~6章。具体讲解了深度学习的框架Keras,以及如何通过该框架设计和实现一个人脸识别引擎。
第3部分为拓展篇,包括7~8章。人脸识别引擎做好后,无论在本地验证多么优秀,能否将其用起来才是最关键的。在这一部分中,讲解了人脸识别系统的部署与图像检索知识。
参考文献部分包含了人脸识别领域经典的研究成果和知名著作,感兴趣的读者可以根据情况有选择地阅读。
本书的第1部分相对比较基础,有经验的读者可以直接从第2部分开始阅读。在阅读的过程中,更重要的是培养一种工程实践能力。因此,希望读者一定不要只看理论(这样其实不如去看论文更加直接),而是要亲自动手实践一下。
勘误和支持
由于作者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。书中的全部源文件可以从GitHub网站上下载,网址如下:
https://github.com/wotchin/SmooFaceEngine
关于本书中的错误,请读者在GitHub中提交issue,笔者会将从读者处汇集到的错误及时整理和修改,同样更新在该页面中。
如果读者有更多的宝贵意见,也欢迎发送邮件至邮箱[email protected],或是在Github上留言。期待能够得到你的真挚反馈。
致谢
本书在成文过程中,有幸得到唐文根、田瑞川、郭丹等同仁的宝贵建议,特别是唐文根博士在百忙之中完成了本书第2章中的部分内容,同时在本书初稿完成之际又校验了全书的学术性问题。没有几位同仁的支持,本书难以与读者见面。
感谢Github社区中开源人脸识别项目的作者们,没有你们对开源事业的支持、对技术的热爱,我也很难坚持完成此书。这些作者包括但不限于:oarriaga、wilderrodrigues、krunal704、alexisfcote、Hrehory、xiangrufan、Joker316701882、wy1iu、happynear、bojone、hao-qiang。
感谢机械工业出版社华章公司的编辑杨福川和张锡鹏,在这段时间中他们始终支持我的写作,正是他们的鼓励和帮助使得我顺利地完成书稿。
感谢我的家人,感谢众多热爱人脸识别技术的朋友们!
《MXNet深度学习实战》
为什么要写这本书
深度学习领域开始受到越来越多的关注,各大深度学习框架也孕育而生,在这个阶段,我被深度学习深深吸引并逐渐开始学习相关知识。研究生毕业后,我继续从事算法相关的工作,具体而言是深度学习算法在图像领域的应用,也就是常说的计算机视觉算法。
MXNet和PyTorch这两个框架我都非常喜欢,不过目前市面上关于MXNet框架的书籍较少,而且MXNet发展至今各种接口比较稳定,用户体验挺不错的,所以最终决定以MXNet框架来写这本深度学习实战教程。MXNet是亚马逊官方维护的深度学习框架,在灵活性和高效性方面都做得很棒,非常推荐读者学习。
本书的写作难度比想象中要大许多,在写作过程中许多零散的知识点需要想办法串联起来,让不同知识储备的人都能看懂,许多环境依赖需要从头到尾跑一遍来确认清楚。写书和写博客(AI之路)最大的区别在于书籍在出版后修正比较麻烦,不像博客,随时发现错误都可以修改,因此在写作过程中对许多细节和措辞都推敲了很久,自己也从中学到了许多。
读者对象
随着深度学习的快速发展和相关学习资料的出版,深度学习入门门槛越来越低,竞争也越来越激烈,相关从业者不仅要有坚实的算法基础,更要具备一定的实战经验,相信本书能够帮助你更好地入门深度学习。
本书面向的读者为:
计算机视觉算法从业者或爱好者
准备入门深度学习的读者
使用MXNet框架进行算法实现的读者
本书特色
假如一本书只是单纯介绍算法内容,那其实和直接看论文没有太大区别;假如一本书只是单纯介绍框架接口,那其实和直接看接口文档没有太大区别。在笔者看来,算法是思想,框架是工具,用框架实现算法才能体现算法的价值,因此这本书将算法和框架结合起来,通过讲解算法和个人项目经验介绍如何使用MXNet框架实现算法,希望能够帮助读者领略算法之美。
本书是从一名算法工程师的角度出发介绍算法实现,整体上偏基础和细节,能够帮助入门者少走弯路。随着这几年深度学习的快速发展,众多深度学习框架对各类接口的封装都很完善,使用起来非常方便,但是部分深度学习入门者仅仅停留在跑通demo却不理解细节内容的层面,这也常常被人调侃有些浮躁,通过本书,笔者希望读者不仅能够灵活调用这些接口实现算法,而且能够理解这些接口的内在含义,不断夯实自己的算法基础。
如何阅读本书
本书分为四大部分:
第一部分为准备篇(第1~2章),简单介绍深度学习相关的基础背景知识、深度学习框架MXNet的发展过程和优缺点,同时介绍基础开发环境的构建和docker的使用,帮助读者构建必要的基础知识背景。
第二部分为基础篇(第3~7章),介绍MXNet的几个主要模块,介绍MXNet的数据读取、数据增强操作,同时介绍了常用网络层的含义及使用方法、常见网络结构的设计思想,以及介绍模型训练相关的参数配置。
第三部分为实战篇(第8~10章),以图像分类、目标检测和图像分割这三个常用领域为例介绍如何通过MXNet实现算法训练和模型测试,同时还将结合MXNet的接口详细介绍算法细节内容。
第四部分为扩展篇(第11~12章),主要介绍Gluon和GluonCV。Gluon接口是MXNet推出的用于动态构建网络结构的重要接口,GluonCV则是一个专门为计算机视觉任务服务的深度学习库。
本书按照由浅至深的顺序进行编写,如果你是一名初学者,那么建议从第1章的基础理论知识开始学习,如果你是一名经验丰富的资深用户,能够理解MXNet的相关基础知识和使用技巧,那么你可以直接阅读实战部分的内容。
勘误和支持
由于作者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。本书所有代码都可以从https://github.com/miraclewkf/MXNet-Deep-Learning-in-Action下载,同时如果你遇到任何问题,都可以在Issues界面提出,我将尽量在线上为读者提供最满意的解答,后期发现的错误也将在该项目中注明,欢迎读者关注。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱[email protected],期待能够得到你们的真挚反馈。
致谢
首先要感谢MXNet的开发者们,是你们创造并一直维护这个高效便捷的深度学习框架,让众多深度学习爱好者能够通过MXNet享受算法带来的乐趣。
感谢MXNet社区中每一位为MXNet的发展和推广做出贡献的朋友,是你们带领我走进MXNet并逐渐喜欢上它,你们的活力与坚持将使得MXNet的明天更加美好。
感谢机械工业出版社华章公司的杨福川老师、李良老师和张锡鹏老师,在这一年多的时间中始终支持我的写作,你们的鼓励和帮助引导我顺利完成全部书稿。
感谢那些通过华章鲜读购买和阅读早期电子版书籍的读者们,你们的支持让我更加有动力不断完善这本书的内容,也让我更加确信自己在做一件非常有意义的事情。
最后感谢我的家人将我培养成人,你们永远是我最坚实的后盾!
谨以此书献给众多热爱深度学习算法及MXNet的朋友们!
魏凯峰
评论
还没有评论。