首页>参考读物>计算机科学与技术>人工智能

计算机视觉实战:基于TensorFlow 2
作者 : [法]本杰明·普朗什(Benjamin Planche),[法]艾略特·安德烈斯(Eliot Andres) 著
译者 : 闫龙川 李君婷 高德荃 译
出版日期 : 2021-08-12
ISBN : 978-7-111-68847-1
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 250
开本 : 16
原书名 : Hands-On Computer Vision with TensorFlow 2
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书探讨了谷歌机器学习开源框架的全新版本TensorFlow 2,从计算机视觉和深度学习基础知识开始,介绍了如何从头开始构建神经网络,并将其用于计算机视觉任务,如图像分类、目标分割、视频分析等。展示了如何使用如Inception和ResNet等现代神经网络分类图像,使用YOLO、Mask R-CNN和U-Net提取特定内容,并辅以具体的代码示例。还介绍了迁移学习、数据增强、域适应等技术,以及如何在移动设备和网络浏览器中进行部署。

图书特色

图书前言

由于利用了卷积神经网络(Convolutional Neural Network,CNN)等深度学习方法,计算机视觉技术在医疗、自动驾驶、社交媒体和机器人等领域的应用达到新的高度。无论是自动处理复杂的任务,指导专家的工作,还是帮助艺术家创作,越来越多的公司都在应用计算机视觉解决方案。
本书将探讨TensorFlow 2,这是谷歌机器学习开源框架的全新版本。书中介绍Tensor- Flow 2的关键特性和最先进的解决方案,并演示如何有效地构建、训练和部署CNN,以完成各种实际任务。
读者对象
本书适用于任何具备一定Python编程和图像处理基础(例如,知道如何读取和写入图像文件,如何编辑其像素值等)的从业人员。本书将循序渐进地介绍相关内容,不仅适用于深度学习初学者,也适用于对TensorFlow 2的新特性感兴趣的专家。
虽然一些理论解释需要代数和微积分知识,但是书中的具体例子更侧重于实际应用。按照所述步骤,你将能够处理现实生活中的任务,比如自动驾驶汽车的视觉识别和智能手机应用。
本书内容
第1章介绍计算机视觉和深度学习,提供一些理论背景,并教你如何从零开始实现和训练视觉识别神经网络。
第2章介绍与计算机视觉相关的TensorFlow 2概念,以及一些更高级的理念。此外,介绍TensorFlow的子模块Keras,并讲述基于该框架实现的简单识别方法的训练过程。
第3章介绍CNN,并解释它如何改变计算机视觉。本章还介绍正则化工具和现代优化算法,可用于训练更健壮的识别系统。
第4章提供理论细节和实践代码,以便将最先进的解决方案(如Inception和ResNet)应用于图像分类。本章还解释什么使得迁移学习成为机器学习中的一个关键概念,以及如何使用TensorFlow 2来实现它。
第5章讨论两种检测图像中特定对象的方法的架构,其中YOLO(You Only Look Once)模型以其速度闻名,而Faster R-CNN则以其准确性闻名。
第6章介绍自动编码器以及像U-Net和FCN这样的网络如何用于图像去噪、语义分割等。
第7章聚焦于为深度学习应用高效收集和预处理数据集的解决方案,介绍构建优化数据流水线的TensorFlow工具,以及弥补数据不足的各种解决方案(图像绘制、域适应和生成式网络,如VAE和GAN)。
第8章讨论循环神经网络,并介绍更高级的长短期记忆架构。本章提供将LSTM应用于视频动作识别的实用代码。
第9章详细介绍在速度、磁盘空间和计算性能方面的模型优化。本章通过一个实际的示例,介绍如何在移动设备和浏览器上部署TensorFlow解决方案。
附录提供关于TensorFlow 1的一些信息,重点介绍TensorFlow 2中引入的关键变化。此外,还包括从旧项目迁移到最新版本的指南。最后,列出了每章的参考书目,供想要深入了解相关领域的读者参考。
如何阅读本书
以下部分包含一些信息和建议,方便读者阅读本书,并帮助读者从其他材料中受益。
下载并运行示例代码文件
本书不仅对TensorFlow 2和先进的计算机视觉方法进行了深入探讨,还提供了大量的示例及其完整实现。
本书的示例代码可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。
本书的代码包也托管在GitHub上,地址是https://github.com/ PacktPublishing/Hands-On-Computer-Vision-with-TensorFlow-2。如果代码有更新,现有的GitHub存储库也会随之更新。
研究并运行实验
Jupyter Notebook (https://jupyter.org)是一个用于创建和共享Python脚本、文本信息、可视化结果、方程式等的开源Web应用程序。我们把随书提供的详细代码、预期结果和补充说明文件称为 Jupyter Notebook。每一个Jupyter Notebook都包含一个具体的计算机视觉任务。例如,一个Notebook解释了如何训练CNN在图像中检测动物,另一个则详细介绍了建立自动驾驶汽车识别系统的所有步骤,等等。
正如我们将在下面看到的,你可以直接研究这些文档,也可以将它们用作代码段来运行和重现书中介绍的实验。
在线学习Jupyter Notebook
如果只是想浏览一下提供的代码和结果,那么可以直接在本书的GitHub存储库中访问它们。事实上,GitHub能够渲染Jupyter Notebook并将其显示为静态网页。
但是,GitHub查看器会忽略一些样式和交互内容。为了获得最佳的在线观看体验,建议使用 Jupyter nbviewer (https://nbviewer.jupyter.org),这是一个官方的网络平台,可以用来阅读上传至网上的Jupyter Notebook。通过这个网站可以查询存储在GitHub存储库中的Notebook,因此,所提供的Jupyter Notebook也可以通过https://nbviewer.jupyter.org/github/PacktPublishing/Hands-On-Computer-Vision-with-TensorFlow-2阅读。
在你自己的计算机上运行Jupyter Notebook
要在你自己的计算机上阅读或运行这些文档,首先要安装Jupyter Notebook。对于那些已经使用Anaconda(https://www.anaconda.com)来管理和部署Python环境(本书推荐这种方式)的用户,Jupyter Notebook应该是可以直接使用的(因为它安装在Anaconda中)。对于那些使用其他Python发行版和不熟悉Jupyter Notebook的用户,建议查看一下说明文档,其中提供了安装说明和教程(https://jupyter.org/documentation)。
安装了Jupyter Notebook之后,导航到包含本书代码文件的目录,打开终端,并执行以下命令:
$ jupyter notebook
应该会在默认浏览器中打开Web界面,现在,就应该能够浏览目录并打开本书提供的Jupyter Notebook了,可以阅读、执行或编辑它们。
部分文档包含较高级的实验,可能需要大量的计算资源(比如在大型数据集上训练识别算法)。如果没有适当的加速硬件(也就是说,如果没有兼容的NVIDIA GPU,参见第2章),运行这些脚本可能需要数小时甚至数天(即使有兼容的GPU,运行最先进的实例也可能需要相当长的时间)。
用谷歌Colab运行Jupyter Notebook
对于那些希望自己运行Jupyter Notebook,或者尝试新实验,但又无法使用足够强大的计算机的用户,建议使用名为Colaboratory的谷歌Colab(https://colab.research.google.com)。它是一个基于云的Jupyter Notebook,由谷歌提供,以便在强大的计算机上运行计算密集型脚本。你可以在GitHub存储库中找到关于此服务的更多细节。
本书约定
本书中使用了以下约定。
正文中的代码字体:表示文本中的代码和用户输入。例如,“Model对象的.fit()方法启动训练过程”。
代码块示例:

代码块中需要关注的某个特定部分会以粗体表示:

命令行输入或输出示例:

粗体:表示新术语、重要词语以及在屏幕上显示的内容。例如,菜单或对话框中的单词会这样显示在文本中:“你可以在TensorBoard的Scalars页面上观察解决方案的性能。”
表示警告或重要提示。

表示提示或技巧。

上架指导

计算机\人工智能

封底文字

计算机视觉解决方案日益普及,在医疗、汽车、社交媒体和机器人等领域取得了不错的进展。本书将帮助你了解全新版本的谷歌机器学习开源框架TensorFlow 2,你将掌握如何使用卷积神经网络(CNN)完成视觉任务。
本书从计算机视觉和深度学习基础知识开始,教你如何从头开始构建神经网络。你将掌握一些让TensorFlow成为广泛使用的AI库的特性,以及直观的Keras接口,继而高效地构建、训练和部署CNN。通过具体的代码示例,本书展示了如何使用Inception和ResNet等现代神经网络分类图像,以及如何使用YOLO、Mask R-CNN和U-Net提取特定内容。本书还将介绍如何构建生成式对抗网络(GAN)和变分自编码器(VAE)来生成和编辑图像,以及如何使用LSTM分析视频。在此过程中,你将深入了解迁移学习、数据增强、域适应,以及移动设备和Web部署等高级知识以及其他关键概念。
通过阅读本书,你将获得使用TensorFlow 2解决高级计算机视觉问题的理论知识和实际技能。
通过阅读本书,你将学到:
如何从头开始创建神经网络。
如何使用包括Inception和ResNet在内的现代神经网络架构进行图像分类。
如何使用YOLO、Mask R-CNN和U-Net检测、分割图像中的目标。
如何解决自动驾驶汽车开发和面部表情识别系统中的问题。
如何使用迁移学习、GAN和域适应提升应用的性能。
如何使用循环神经网络进行视频分析。
如何在移动设备和浏览器上优化和部署神经网络。

作者简介

[法]本杰明·普朗什(Benjamin Planche),[法]艾略特·安德烈斯(Eliot Andres) 著:本杰明·普朗什(Benjamin Planche)是德国帕绍大学和西门子德国研究院的博士生。他在计算机视觉和深度学习领域的全球多个研究实验室(法国LIRIS、日本三菱电机和德国西门子)工作超过5年。他的研究重点是针对工业应用开发使用更少数据的更智能的视觉系统。他从法国国立应用科学学院和德国帕绍大学获得了一等荣誉的双硕士学位。他还在在线平台(例如StackOverflow)上分享自己的知识和经验,或者创建有美感的演示系统。

艾略特·安德烈斯(Eliot Andres)是一名深度学习和计算机视觉工程师。他在该领域拥有3年以上的经验,涉及银行、医疗、社交媒体和视频流等行业。他从巴黎路桥与电信学院获得了双硕士学位。他关注的是工业化,即通过将新技术应用于商业问题来实现价值。

译者序

近年来,在深度学习技术的推动下,计算机视觉技术在众多人工智能技术中率先成熟,被广泛用于车牌识别、人物检测、视频安防等诸多领域。计算机视觉成为深度学习领域中热门的技术方向之一,在图像分类、目标检测、情感分析、语义分割方面总有新的算法、神经网络结构和技术出现,智能处理能力不断提升。
特征选择和处理是计算机视觉领域的关键技术之一,早期一般采用人工方法构建特征(比如纹理、颜色、物体等底层特征),然后使用规则、机器学习等方法,根据这些特征判断并识别图像和视频中的任务、场景或者活动等高层语义。由于各类应用场景的特征难以统一定义,底层特征和高层语义之间的鸿沟无法有效弥补,传统的计算机视觉技术受到一定的限制,没有得到广泛应用。
随着深度学习技术的兴起、计算机运算能力的不断提升和数据集的日益完善,深度神经网络可以自动抽取底层视觉特征,并与高层语义关联,从而实现端到端的图像与视频的智能分析和检测,大大降低了计算机视觉应用的算法设计难度。特别是随着TensorFlow等神经网络框架的开源和普及,有大量的典型神经网络结构和优化算法可供使用,计算机视觉应用的工程开发难度进一步降低。很多优秀的神经网络结构和算法都有TensorFlow版本的开源实现。现在,越来越多的研究人员和软件工程师使用TensorFlow进行计算机视觉相关的研究与应用开发工作,使得TensorFlow社区的力量不断增强。近期发布的TensorFlow 2引入了很多新特性,让深度神经网络的设计和开发更加容易。本书是使用TensorFlow 2进行计算机视觉开发的实用指南,作者基于深厚的理论功底和丰富的实践经验,深入浅出地介绍了计算机视觉和神经网络、TensorFlow基础和模型训练、现代神经网络等知识,并结合最新进展和应用案例,介绍了VGG、GoogLeNet、ResNet、YOLO、R-CNN、U-Net等先进神经网络结构。通过阅读本书,读者可以掌握神经网络的理论知识,学习解决计算机视觉问题的方法,并能够着手解决一些高级计算机视觉问题。我们相信读者一定会收获颇丰。
最后,感谢本书的作者本杰明·普朗什和艾略特·安德烈斯,感谢他们精彩的作品和辛勤的工作。感谢机械工业出版社华章分社的编辑,是他们的信任和支持使得本书中文版能与读者见面。感谢家人的理解和帮助。尽管我们努力准确、简洁地表达作者的观点和方法,但仍难免有词不达意之处。译文中的错误和不当之处,敬请读者朋友不吝指正。

译 者
2021年6月

图书目录

译者序
前言
作者简介
审校者简介
第一部分 TensorFlow 2和应用于
计算机视觉的深度学习
第1章 计算机视觉和神经网络2
1.1 技术要求2
1.2 广义计算机视觉3
1.2.1 计算机视觉概述3
1.2.2 主要任务及其应用3
1.3 计算机视觉简史8
1.3.1 迈出成功的第一步9
1.3.2 深度学习的兴起12
1.4 开始学习神经网络14
1.4.1 建立神经网络15
1.4.2 训练神经网络23
1.5 本章小结30
问题30
进一步阅读30
第2章 TensorFlow基础和模型训练31
2.1?技术要求31
2.2?TensorFlow 2和Keras入门31
2.2.1 TensorFlow32
2.2.2 基于Keras的简单计算机视觉模型33
2.3?TensorFlow 2和Keras详述36
2.3.1 核心概念36
2.3.2 高级概念42
2.4?TensorFlow生态系统46
2.4.1 TensorBoard46
2.4.2 TensorFlow插件和扩展47
2.4.3 TensorFlow Lite和TensorFlow.js48
2.4.4 在何处运行模型48
2.5?本章小结49
问题50
第3章 现代神经网络51
3.1 技术要求51
3.2 卷积神经网络51
3.2.1 用于多维数据的神经网络52
3.2.2 CNN操作53
3.2.3 有效感受野63
3.2.4 在TensorFlow中使用CNN64
3.3 训练过程微调67
3.3.1 现代网络优化器67
3.3.2 正则化方法71
3.4 本章小结76
问题76
进一步阅读77
第二部分 先进的经典识别
问题解决方案
第4章 主流分类工具80
4.1 技术要求80
4.2 了解高级CNN架构81
4.2.1 VGG:CNN的标准架构81
4.2.2 GoogLeNet 和Inception模块85
4.2.3 ResNet:残差网络92
4.3 利用迁移学习96
4.3.1 概述96
4.3.2 基于TensorFlow和Keras的迁移学习100
4.4 本章小结102
问题103
进一步阅读103
第5章 目标检测模型104
5.1 技术要求104
5.2 目标检测介绍104
5.2.1 背景105
5.2.2  模型的性能评价106
5.3 YOLO:快速目标检测算法108
5.3.1 YOLO介绍109
5.3.2 使用YOLO推理110
5.3.3 训练YOLO117
5.4 Faster R-CNN:强大的目标检测模型120
5.4.1 Faster R-CNN通用架构120
5.4.2 训练Faster R-CNN124
5.4.3 TensorFlow目标检测API126
5.5 本章小结127
问题127
进一步阅读127
第6章 图像增强和分割128
6.1 技术要求128
6.2 使用编码器-解码器进行图像变换128
6.2.1 编码器-解码器概述129
6.2.2 基本示例:图像去噪132
6.2.3 卷积编码器-解码器133
6.3 理解语义分割140
6.3.1 使用编码器-解码器进行目标分割140
6.3.2 比较困难的实例分割145
6.4 本章小结148
问题148
进一步阅读148
第三部分 高级概念和计算机
视觉新进展
第7章 在复杂和稀缺数据集上训练150
7.1 技术要求150
7.2 高效数据服务151
7.2.1 TensorFlow 数据API151
7.2.2 设置输入流水线153
7.2.3 优化和监控输入流水线158
7.3 如何处理稀缺数据162
7.3.1 增强数据集162
7.3.2 渲染合成数据集166
7.3.3 利用域适应和生成模型(VAE和GAN) 170
7.4 本章小结179
问题179
进一步阅读179
第8章 视频和循环神经网络181
8.1 技术要求181
8.2 RNN简介181
8.2.1 基本形式182
8.2.2 对RNN的基本理解183
8.2.3 学习RNN权重184
8.2.4 长短期记忆单元185
8.3 视频分类188
8.3.1 计算机视觉应用于视频188
8.3.2 使用LSTM分类视频189
8.4 本章小结194
问题195
进一步阅读195
第9章 优化模型并在移动设备上部署196
9.1 技术要求196
9.2 优化计算和占用的磁盘空间197
9.2.1 测量推理速度197
9.2.2 提高模型推理速度199
9.2.3 当模型依旧很慢时201
9.2.4 减小模型大小202
9.3 基于终端设备的机器学习203
9.3.1 考虑因素203
9.3.2 实践204
9.4 app示例:识别面部表情206
9.4.1 MobileNet简介207
9.4.2 在终端设备上部署模型208
9.5 本章小结216
问题216
附录217
参考文献222
问题答案231

教学资源推荐
作者: [美]查鲁·C. 阿加沃尔(Charu C. Aggarwal) 著
作者: [日]德拉戈米尔·N. 涅切夫(Dragomir N. Nenchev),[日]绀野笃志(Atsushi Konno),[日]辻田彻平(Teppei Tsujita) 著
作者: 郭斌、刘思聪、王柱 等著
作者: [日]杉山将(Masashi Sugiyama) 著
参考读物推荐
作者: [中]郑楠(Nan Zheng),[美]皮纳基·马祖姆德(Pinaki Mazumder) 著
作者: [阿联酋] 赫德林·德·庞特维斯(Hadelin de Ponteves) 著
作者: 刘祥龙 杨晴虹 谭中意 蒋晓琳 等编著深度学习技术及应用国家工程实验室、百度技术学院 组编
作者: [美]乌黛·卡马特(Uday Kamath),[美]约翰·刘(John Liu),[美]詹姆斯·惠特克(James Whitaker) 著