书籍作者:克里斯南杜·卡尔 | ISBN:9787302614586 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:7033 |
创建日期:2023-05-08 | 发布日期:2023-05-08 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
《TensorFlow2.x高级计算机视觉》详细阐述了与TensorFlow高级计算机视觉相关的基本解决方案,主要包括计算机视觉和TensorFlow基础知识,局部二值模式和内容识别,使用OpenCV和CNN进行面部检测,图像深度学习,神经网络架构和模型,迁移学习和视觉搜索,YOLO和对象检测,语义分割和神经风格迁移,使用多任务深度学习进行动作识别,使用R-CNN、SSD和R-FCN进行对象检测,通过CPU/GPU优化在边缘设备上进行深度学习,用于计算机视觉的云计算平台等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。
本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学用书和参考手册。
计算机视觉是一种技术,机器可以通过这种技术获得与人类媲美的能力,以处理和分析图像或视频。《TensorFlow2.x高级计算机视觉》将重点介绍如何使用TensorFlow开发和训练深度神经网络,以解决高级计算机视觉问题,并在移动和边缘设备上部署解决方案。
前 言
计算机视觉是一种技术,机器可以通过这种技术获得与人类媲美的能力,以处理和分析图像或视频。本书将重点介绍如何使用TensorFlow开发和训练深度神经网络,以解决高级计算机视觉问题,并在移动和边缘设备上部署解决方案。
本书将从计算机视觉和深度学习的关键原理开始,逐渐介绍各种模型和架构以及它们的优缺点。你将会了解到各种架构,如VGG、ResNet、Inception、R-CNN和YOLO等。你还将掌握通过迁移学习来使用各种视觉搜索的方法。
本书将帮助你理解计算机视觉的各种高级概念,包括语义分割、图像修复、对象(目标)跟踪、视频分割和动作识别等。你将逐步探索如何将各种机器学习和深度学习概念应用于诸如边缘检测和面部识别之类的计算机视觉任务中。
在本书的后面,还讨论如何进行性能优化、部署动态模型以提高处理能力,以及进行扩展以应对各种计算机视觉挑战。
学习完本书之后,你将对计算机视觉有深入的了解,并且将知道如何开发模型以自动执行任务。
本书读者
本书适用于对机器学习和深度学习有一定的了解,并希望构建专家级的计算机视觉应用程序的计算机视觉专业人员、图像处理专业人员、机器学习工程师和AI开发人员。阅读本书时,你应熟悉Python编程和TensorFlow。
内容介绍
本书分为4篇共12章,具体介绍如下。
第1篇:计算机视觉和神经网络概论,包括第1~4章。
第1章“计算机视觉和TensorFlow基础知识”,讨论计算机视觉和TensorFlow的基本概念,帮助读者为本书的后续学习打下坚实的基础。我们研究如何执行图像哈希和滤波;然后,学习特征提取和图像检索的各种方法;接下来,介绍基于轮廓的对象检测、定向梯度的直方图以及各种特征匹配方法;最后,还简要介绍高级TensorFlow软件及其不同的组件和子系统。本章提供许多用于对象检测、图像滤波和特征匹配的实际编码练习。
第2章“局部二值模式和内容识别”,讨论局部二值特征描述子和直方图,它们可用于对纹理图像和非纹理图像进行分类。我们学习调整局部二值模式(local binary pattern,LBP)参数并计算LBP之间的直方图差异,以匹配图像之间的相同模式。本章提供两种编码练习,一种用于匹配地板图案,另一种用于匹配面部颜色与基础颜色。
第3章“使用OpenCV和CNN进行面部检测”,从Viola-Jones的面部和关键特征检测开始,介绍基于神经网络的面部关键点检测和面部表情识别的高级概念。本章以3D人脸检测的高级概念作为结尾。另外,本章还提供两种编码练习,一种用于网络摄像头中基于OpenCV的面部检测,另一种是基于卷积神经网络的端到端面部关键点检测管道。端到端神经网络管道包括从网络摄像头裁剪面部图像以收集数据、标注面部图像中的关键点、将数据采集到卷积神经网络中、建立卷积神经网络模型、训练并最终评估面部图像关键点的模型。
第4章“图像深度学习”,深入研究如何使用边缘检测在空间上创建卷积运算,以及不同的卷积参数(如滤波器大小、维度和操作类型)如何影响卷积体积。本章还详细介绍神经网络如何查看图像,以及如何通过可视化对图像进行分类。另外,本章提供基于TensorFlow Keras的编码练习,以构建神经网络并进行可视化。最后,本章还比较我们创建的网络模型与诸如VGG 16或Inception之类的高级网络的准确率。
第2篇:TensorFlow和计算机视觉的高级概念,包括第5~8章。
第5章“神经网络架构和模型”,探讨不同的神经网络架构和模型。通过更改卷积、池化、激活、全连接和Softmax层的参数,介绍如何将第1章和第4章中学到的概念应用于各种场景。通过这些练习,你将对一系列神经网络模型有一个整体理解,这将为你成为计算机视觉工程师奠定坚实的基础。
第6章“迁移学习和视觉搜索”,介绍使用TensorFlow将数据输入模型中,并为现实应用开发视觉搜索方法。你将学习如何使用Keras数据生成器和TensorFlow tf.data API将图像及其类别输入TensorFlow模型中,然后剪切一部分预训练的模型,并在最后添加你自己的模型内容,以开发自己的分类器。这些练习背后的思路是学习如何在TensorFlow中为你在第4章和第5章中开发的神经网络模型进行编码。
第7章“YOLO和对象检测”,介绍两种单阶段的快速对象检测方法:仅看一次(You Only Look Once,YOLO)和RetinaNet。本章详细阐释不同的YOLO模型,如何更改其配置参数并进行推论。你还将学习如何处理自己的图像,以使用Darknet网络训练自定义YOLO v3模型。
第8章“语义分割和神经风格迁移”,讨论如何使用深度神经网络将图像分割为空间区域,从而生成人工图像并将风格从一种图像迁移到另一种图像。我们使用TensorFlow DeepLab进行练习以进行语义分割,并在Google Colab中编写TensorFlow代码以进行神经风格迁移。我们还使用深度卷积生成对抗网络(DCGAN)生成人工图像,并使用OpenCV进行图像修复。
第3篇:使用TensorFlow的计算机视觉高级实现,包括第9章和第10章。
第9章“使用多任务深度学习进行动作识别”,详细介绍如何开发多任务神经网络模型来识别动作(如手、嘴、头或腿的动作),以使用基于视觉的动作来检测动作类型。最后,我们还使用手机加速度计数据通过深度神经网络模型对它进行补充,以验证该动作。
第10章“使用R-CNN、SSD和R-FCN进行对象检测”,深入探讨各种对象检测模型,如R-CNN、单发检测器(single-shot detector,SSD)、基于区域的全卷积网络(region-based fully convolutional network,R-FCN)和Mask R-CNN,并使用Google Cloud和Google Colab Notebook进行实际练习。我们还练习如何训练自定义图像,以使用TensorFlow对象检测API开发对象检测模型。最后,本章还深入介绍各种对象跟踪方法,并使用Google Colab Notebook进行练习。
第4篇:在边缘和云端上的TensorFlow实现,包括第11章和第12章。
第11章“通过CPU/GPU优化在边缘设备上进行深度学习”,讨论如何采用已生成的模型并将其部署在边缘设备和生产系统上。这将导致完整的端到端TensorFlow对象检测模型实现。特别是,我们可以使用TensorFlow Lite和Intel开放式视觉推理和神经网络优化(intel open visual inference and neural network optimization,OpenVINO)架构开发、转换和优化TensorFlow模型,并将其部署到Raspberry Pi、Android和iPhone中。尽管本章主要关注Raspberry Pi、Android和iPhone上的对象检测,但是所讨论的方法也可以扩展到图像分类、风格迁移和所考虑的任何边缘设备的动作识别。
第12章“用于计算机视觉的云计算平台”,讨论如何在Google云平台(Google cloud platform,GCP)、Amazon Web Services(AWS)和Microsoft Azure云平台中打包应用程序以进行训练和部署。你将学习如何准备数据,将数据上传到云数据存储中并开始监视训练。你还将学习如何将图像或图像向量发送到云平台进行分析并获得JSON响应。本章将讨论单个应用程序以及如何在计算引擎上运行分布式TensorFlow。训练完成后,本章将讨论如何评估模型并将其集成到应用程序中以进行大规模操作。
充分利用本书
如果你是计算机视觉和TensorFlow的初学者,并且想要精通该主题,那么最好按顺序阅读本书的各个章节,而不是随便翻翻。本书以计算机视觉和神经网络的概念为基础,并提供了大量代码示例。请确保对所介绍的概念和架构有很好的了解,然后应用代码示例。
由于大小限制,我们无法将图像数据上传到GitHub上。你可以使用自己相机中的图像,也可以从Kaggle中下载图像数据集。
食物图像(用于汉堡和薯条样本):也可以使用手机相机拍摄照片。
Kaggle家具检测器:
https://www.kaggle.com/akkithetechie/furniture-detector
如果你一开始不理解某个概念,请复习本书有关该概念的解释,甚至阅读其原始论文。
本书上大多数代码是在Jupyter Notebook环境中编写的,因此请确保已下载Anaconda。你还需要下载TensorFlow 2.0(详见第1章“计算机视觉和TensorFlow基础知识”)。
本书上大多数对象检测训练都是使用Google Colab完成的。第10章“使用R-CNN、SSD和R-FCN进行对象检测”和第11章“通过CPU/GPU优化在边缘设备上进行深度学习”提供了有关如何使用Google Colab的说明。
如果要将计算机视觉代码部署到边缘设备上,并且你正在考虑要购买什么设备,则可以参考第11章“通过CPU/GPU优化在边缘设备上进行深度学习”,它详细分析了各种设备。
该书在很大程度上依赖于终端的用法。在阅读第7章“YOLO和对象检测”之前,请确保你已经对终端的用法有了基本的了解。
第12章“用于计算机视觉的云计算平台”涉及云计算,因此你必须拥有一个Google云平台(GCP)、Amazon Web Services或Azure账户。如果你不严格跟踪自己的时间,那么云计算可能会变得昂贵。许多云计算提供商将在一段时间内为你提供免费使用服务的权利,但是在那之后,即使你的项目仍未开放,并且你没有进行训练,费用也会增加。因此请记住,在结束账户以停止产生费用之前,一定要先关闭你的项目。如果你对云计算有技术问题并且感到困惑,则可以阅读相关云计算平台的说明文档。
要充分利用本书,最好的方法是阅读理论,了解为什么要以这种方式开发模型,尝试示例练习,然后更新代码以适合你的需求。
下载示例代码文件
读者可以从www.packtpub.com下载本书的示例代码文件。具体步骤如下。
(1)注册并登录www.packtpub.com。
(2)在页面顶部的搜索框中输入图书名称Mastering Computer Vision with TensorFlow 2.x(不区分大小写,也不必输入完整),即可看到本书,单击打开链接,如图P-1所示。
图P-1
(3)在本书详情页面中,找到并单击Download code from GitHub(从GitHub上下载代码文件)按钮,如图P-2所示。
图P-2
提示:如果你看不到该下载按钮,可能是没有登录packtpub账号。该站点可免费注册账号。
(4)在本书GitHub源代码下载页面中,单击右侧的Code(代码)按钮,在弹出的下拉菜单中选择Download ZIP(下载压缩包),如图P-3所示。
下载文件后,请确保使用最新版本解压缩或解压缩文件夹。
WinRAR/7-Zip(Windows系统)。
Zipeg/iZip/UnRarX(Mac系统)。
7-Zip/PeaZip(Linux系统)。
图P-3
你也可以直接访问本书在GitHub上的存储库,其网址如下。
https://github.com/PacktPublishing/Mastering-Computer-Vision-with-TensorFlow-2.0
如果代码有更新,也会在现有GitHub存储库上更新。
下载彩色图像
我们还提供了一个PDF文件,其中包含本书中使用的屏幕截图/图表的彩色图像。可以通过以下地址下载。
http://www.packtpub.com/sites/default/files/downloads/9781789956085_ColorImages.pdf
本书约定
本书中使用了许多文本约定。
(1)有关代码块的设置如下所示。
faceresize = cv2.resize(detected_face, (img_size,img_size))
img_name =
"dataset/opencv_frame_{}.jpg".format(img_counter)
cv2.imwrite(img_name, faceresize)
(2)任何命令行输入或输出都采用如下所示的粗体代码形式。
$ echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg]
http://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a
/etc/apt/sources.list.d/google-cloud-sdk.list
(3)术语或重要单词采用中英文对照形式,在括号内保留其英文原文。示例如下。
张量处理单元(tensor processing unit,TPU)是Google开发的一种AI加速器,用于快速处理大量数据以训练神经网络。
(4)对于界面词汇或专有名词将保留其英文原文,在括号内添加其中文译名。示例 如下。
完成此操作后,单击APIs & Services(API和服务),然后单击Enable API & Services(启用API和服务),最后在Machine Learning(机器学习)下选择AI Platform Training & Prediction API(AI平台训练和预测API)。
(5)本书还使用了以下两种图标。
表示警告或重要的注意事项。
表示提示或小技巧。