正版保障 假一赔十 可开发票
¥ 75.33 5.4折 ¥ 139 全新
库存3件
作者张晨然
出版社电子工业出版社
ISBN9787121452581
出版时间2023-04
装帧平装
开本其他
定价139元
货号29561432
上书时间2024-11-02
推荐序一
在人工智能70余年的发展历程中,机器学习的重要性不容忽视。随着神经联结主义方法论的不断发展,近10年来,建立在深度神经网络模型之上的深度学习技术异军突起,已经成为人工智能的中坚力量。与此同时,计算机视觉技术也达到了前所未有的高度。
本书介绍的计算机视觉相关技术是深度学习在计算机视觉领域的具体应用,不仅介绍了当下为流行的图像分类和目标检测技术的算法框架,还介绍了它们的数据集处理、云计算、边缘计算的运用技巧,过程详实、简单实用。推广一个技术的好方式就是“运用它”,如果越来越多的企业和工程人员能够运用机器学习乃至机器意识的相关技术为用户和社会创造价值,那么人工智能的未来之路就一定会越走越宽!
“人无远虑,必有近忧。”为了能够参与全球性的人工智能竞争和合作,我们现在就应该前瞻性地开展前沿关键技术的基础性研究。本书在介绍工程应用的同时,还对深度学习的算法原理、神经网络设计意图等较为基础和抽象的概念进行了介绍,逻辑清晰、形象直观。特别是近些年兴起的三维计算机视觉和图卷积神经网络技术,它们与二维计算机视觉有着千丝万缕的联系。唯有夯实计算机视觉的技术基础,我们才能参与自动驾驶、感知计算等前沿领域的全球竞争和合作。
后,希望读者能够将书中的深度学习技术运用到具体问题的解决之中,通过扎实的研究建立深厚的人工智能理论基础,通过技术应用积累计算机视觉实战经验,共同参与到让计算机更加“灵活”地服务于人类社会的实践之中,为智能社会的发展贡献一份力量。
周昌乐
北京大学博士,厦门大学教授,心智科学家
中国人工智能学会理事,福建省人工智能学会理事长
推荐序二
I am happy to hear that Eric Zhang wrote a book covering object detection using TensorFlow. He knows how to quickly develop a solution based on the Neural Network using the high level frameworks like TensorFlow which otherwise would have required many more lines of code. The book also covers an end to end development cycle of a Deep Learning neural network and it will be very useful for the readers who are interested in this topic. Writing a book requires an extensive amount of effort and he finally completed it. Congratulations to Eric and all the readers who will gain a lot of useful knowledge from this book as well!
Soonson Kwon
Google Global ML Developer Programs Lead
我听闻Eric Zhang撰写了这本介绍如何使用TensorFlow进行目标检测的书。Eric深知如何使用以TensorFlow为代表的机器学习高级框架来提高神经网络的代码编写效率,以及如何使用深度神经网络来快速开发人工智能解决方案。这本书涵盖了深度学习神经网络“端到端”的全研发周期,对于读者大有裨益。这本书倾注了Eric的大量心力,祝贺他如愿完成了此书的编写,相信读者将从这本书中获得大量有用的知识。
Soonson Kwon
谷歌全球机器学习生态系统项目负责人
前言
数字化时代的核心是智能化。随着人工智能技术的逐步成熟,智能化应用不断涌现,因此信息行业从业人员需要具备一定的人工智能知识和技术储备。人工智能突出的两个技术应用领域是计算机视觉和自然语言。计算机视觉处理的是图像,自然语言处理的是语音和语言。由于计算机视觉采用的CNN神经元结构较早被提出,技术方案也较为成熟,因此本书着重介绍计算机视觉技术。
在整个计算机视觉领域中,本书选择重点讲述二维、三维目标检测技术,主要基于两方面的考虑:一方面,目标检测技术是当前计算机视觉中有应用价值的技术,大到自动驾驶中的行人和车辆识别,小到智慧食堂的餐盘识别,日常生活中的视频监控、专业领域中的路面铺装质量监控都是目标检测技术的具体应用场景;另一方面,目标检测神经网络一般包含骨干网络、中段网络(特征融合网络)、头网络(预测网络)、解码网络、数据重组网络、NMS算法模块等,知识点覆盖较为全面。
从计算机视觉的新手到目标检测专家的进阶过程不仅要求开发者具备数据集制作和骨干网络设计的基本技能,也要求开发者具备中段网络、头网络设计的技能,更需要具备根据边缘端部署和服务器端部署的要求调整网络的能力。可以说,学会了目标检测技术,就拥有了计算机视觉的完整技术栈,就具备了较为全面的技能去应对其他计算机视觉项目。
本书采用的编程计算框架TensorFlow是深度学习领域中应用广泛的编程框架,早由谷歌公司推出,目前已被广泛用于全球各大人工智能企业的深度学习实验室和工业生产环境。互联网上大部分的人工智能前沿成果都是通过TensorFlow实现的。TensorFlow提供了更齐全的数据集支持和更快的数据管道,支持GPU和TPU的硬件加速。TensorFlow支持多种环境部署。开发者可通过TensorFlow Serving工具将模型部署在服务器上,还可通过TensorFlow Lite工具将模型转化为可在边缘端推理的TFlite格式。特别地,TensorFlow升级至2.X版本之后可支持Eager Mode的立即执行模式,这使得它的编程更加直观和便于调试。
如果执着于由浅及深地讲授计算机视觉的基础理论,那么对读者而言会较为抽象、枯燥;如果拼凑、堆砌易于上手的实践案例,那么会落入“常用技术反复讲、关键技术脉络不清”的桎梏。因此,本书通过设计巧妙的案例,将计算机视觉技术“抽丝剥茧”,让读者在探索计算机视觉的每个学习阶段都能找到合适的项目代码并着手尝试,从而在积累基础理论知识的同时,稳步建立实践能力。
后,为避免混淆,有必要厘清两个概念——人工智能和深度学习。人工智能是指应用计算机达到与人类智慧相当的水平,深度学习是指运用深度神经网络技术达到一定的智能水平。人工智能指向的是“效果”,深度学习指向的是“方法”,二者不可等同。实现人工智能的方法不仅有深度学习,还包含传统的信息化手段和专家逻辑判断。但以目前的技术水平,深度学习所能达到的智能水平是的,所以一般用人工智能来指代深度学习,也用深度学习来指代人工智能,因此本书对二者不进行严格的区分。
为何撰写本书
笔者在做以目标检测为主题的讲座报告或技术分享时,发现听众普遍对人工智能技术很感兴趣,但是又不知从何下手。目标检测技术涉及理工科多种基础知识和技能。其一是数学,涉及矩阵计算、概率分布;其二是编程,涉及计算框架API和面向对象的Python编程技巧;其三是数据处理,涉及数字图像算法和嵌入式系统。每种基础知识和技能都对应着高等教育中的一门课程,多数开发者对此似曾相识,但又理解得不够深刻。高等教育偏向于挖掘垂直领域,并没有刻意将跨领域的知识融会贯通。因此,笔者在详细讲授目标检测原理和应用之前,先详细介绍了目标检测中将会用到的关键算法,并对目标检测中重要的骨干网络进行了由浅入深的介绍。深入理解本书所涵盖的理论知识便于读者阅读与本书紧密相关的进阶书籍《深入理解计算机视觉:在边缘端构建高效的目标检测应用》,并在目标检测的理论和实践上都达到一定的高度。
为避免读者在阅读公式和代码时感到抽象,笔者在编写过程中有意围绕较为形象的数据流阐释原理,尽量使用数据结构图来展示算法对数据的处理意图和逻辑。相信读者在理解了输入/输出数据流结构图的基础上,面对公式和代码时不会感到晦涩。
笔者发现许多企业在初期涉足人工智能时,由于对人工智能不甚了解,陷入了“模型选型→性能不理想→修改失败→尝试其他模型→再次失败”的怪圈。目前有大量的计算机视觉代码可供下载,简单配置后就能成功运行,但笔者仍建议从基础的数据集处理、特征提取网络入手,建立和解析若干个数据集,深入剖析若干个经典的神经网络,这对读者真正掌握目标检测的原理是很有帮助的。我们在工作中难免会不断更换模型,甚至不断更换框架,如果缺乏对神经网络设计的深入理解,那么对每种模型、每个框架都无法运用自如。不同模型和不同框架在本质上有异曲同工之处,笔者希望人工智能从业人员能扎实掌握某种框架下具有代表性的模型,在计算机视觉领域中自然也能有所创新。
关于本书的作者
作者本科毕业于天津大学通信工程专业,硕士研究生阶段就读于厦门大学,主攻嵌入式系统和数字信号底层算法,具备扎实的理论基础。作者先后就职于中国电信和福建省电子信息集团,目前担任福建省人工智能学会理事和企业工作委员会主任,同时也担任谷歌开发者社区、亚马逊开发者生态的福州区域负责人。作者长期从事计算机视觉和自然语言基础技术的研究,积累了丰富的人工智能项目经验,致力于推动深度学习在交通、工业、民生、建筑等应用领域的落地。作者于2017年获得高级工程师职称,拥有多项发明专利。
本书作者GitHub账号是fjzhangcr。
本书的主要内容
本书共6篇,第1篇至第4篇适合开发者和本科生快速入门计算机视觉,第5篇涉及目标检测中的特征提取网络设计原理和技巧,第6篇涉及三维计算机视觉入门和实战,适合进阶开发者和高等院校高年级学生深入了解人工智能。本书的主要内容如下。
第1篇旨在让读者快速搭建TensorFlow开发环境,并使用TensorFlow快速建立基础的神经网络。在具备开发环境的条件下,即使是次接触计算机视觉的新手,利用TensorFlow强大的编程能力,预计也能在10分钟内完成该篇介绍的图像分类项目。
第2篇旨在让读者快速熟悉计算机视觉的开发流程。从数据集的制作入手,延伸至神经网络的构建、编译和训练,以及神经网络静态图的边缘端和服务器端的部署,掌握该篇内容就可以应对大多数企业计算机视觉项目的研发、生产和运维。
第3篇旨在让读者深入理解深度学习的原理和TensorFlow的类继承关系。神经网络的本质是函数,该篇给出了神经网络推理和训练的数学定义,帮助开发者在神经网络的基础理论领域有所创新。该篇还介绍了TensorFlow的自动微分机制和基础类的继承关系,有助于开发者灵活地使用层和模型定义工具,将基础理论创新转化为代码编程实践。
第4篇旨在让读者熟练使用TensorFlow的重要层组件组装模型。该篇并非枯燥地介绍层组件的属性,而是通过计算机视觉神经网络的经典案例,让读者快速了解和掌握这些层组件的属性和资源开销。虽然这些神经网络只能用于图像分类,但在目标检测的计算机视觉应用中承担着特征提取的重要职责。该篇还介绍了神经网络计算加速硬件、TensorFlow的训练方法和训练过程监控,方便开发者灵活调用。
第5篇由浅及深地介绍了目标检测中的特征提取网络。该篇介绍的若干神经网络非常经典,“小核卷积”和“残差连接”是目前神经网络广泛使用的设计思路。该篇还介绍了目标检测神经网络中性能较强的特征提取骨干网络和知名计算机视觉数据集,以及如何使用预训练权重进行迁移学习。
第6篇旨在让读者了解三维机器学习领域,三维计算机视觉使用的数据表达方式与二维计算机视觉有着巨大的差别,对神经网络也有着特殊的要求。该篇在三维数据格式的基础上介绍了从二维数据重建三维物体的若干神经网络,并借助实际的编程案例展示了三维物体的识别。因为三维视觉数据在本质上是一个图,所以该篇还介绍了图计算的相关基础理论,展示了基于图卷积神经网络的具体应用。
附录中说明了本书的官方代码引用、运行环境搭建,以及TensorFlow矩阵的基本操作。读者若对基本操作有疑问,则可以根据附录说明登录相关网站进行查阅和提问。
如何阅读本书
本书适合具备一定计算机、通信、电子等理工科专业基础的本科生、研究生及具有转型意愿的软件工程师阅读。读者应当具备高等数学、线性代数、概率论、Python编程、图像处理等基础知识。上述知识有所遗忘也无大碍,本书会帮助读者进行适当的温习和回顾。
如果希望快速了解计算机视觉的整体概念,那么建议阅读本书的第1篇、第2篇。第1篇、第2篇以花卉识别的案例,介绍了计算机视觉项目从数据集到训练,再到云计算部署和边缘部署的全部流程。读者阅读这部分内容后,只需要稍微调整数据集,就可以实现个性化的计算机视觉项目。
如果希望深入掌握计算机视觉的基础原理,那么建议仔细阅读本书的第3篇、第4篇,这部分内容将介绍目标检测网络中骨干网络的结构及搭建网络必需的各种层组件,帮助读者形成触类旁通的知识沉淀。
如果希望掌握计算机视觉神经网络的设计原理,那么建议仔细阅读本书的第5篇。第5篇介绍了若干经典的骨干网络,骨干网络负责提取特征,是所有计算机视觉神经网络拥有的结构单元。掌握骨干网络的设计原理能够培养领悟计算机视觉相关文献和代码的能力,从而具备神经网络定制和开发的能力。
如果读者对二维计算机视觉已经有了较为深刻的认识,那么可以通过第6篇快速入门三维计算机视觉。虽然三维计算机视觉在数据结构和算法实现上与二维计算机视觉不同,但三维计算机视觉神经网络仍大量借鉴了二维计算机视觉的设计逻辑和层组件。
读完本书,相信读者能够掌握层组件的原理,具备多种神经网络的知识,理解二维、三维计算机视觉的异同点,熟练使用TensorFlow开发框架,从而应对复杂多变的应用场景。
本书遵循理论和实践相融合的编写原则,读者可以直接通过代码示例加深理论理解。数学是工科的基础,理论永远走在技术的前面。建议读者务必按照本书的篇章顺序,动手实践书中介绍的计算机视觉项目,从零开始打好计算机视觉基础,从而更快上手其他计算机视觉技术(如目标检测、图像分割、图像注意力机制、图像扩散模型等)。另外,需要声明的是,由于本书涉及实际工程知识较多,所以在书中习惯性地将计算机视觉称为机器视觉,机器视觉是计算机视觉在实际工程中的应用。
致谢
感谢我的家人,特别是我的儿子,是你平时提出的一些问题,推动我不断地思考人工智能的哲学和原理,这门充斥着公式和代码的学科背后其实也有着浅显和直白的因果逻辑。
感谢求学路上福州格致中学的王恩奇老师,福州中学的林立灿老师,天津大学的李慧湘老师,厦门大学的黄联芬老师、郑灵翔老师,是你们当年的督促和鼓励让我有能力和勇气用知识去求索技术的极限。
感谢福建省人工智能学会的周昌乐理事长,谷歌全球机器学习开发者生态的负责人Soonson Kwon,谷歌Coral产品线负责人栾跃,谷歌中国的魏巍、李双峰,北京算能科技有限公司的范砚池、金佳萍、张晋、侯雨、吴楠、檀庭梁、刘晨曦,福州十方网络科技有限公司,福建米多多网络科技有限公司,福州乐凡唯悦网络科技有限公司及那些无法一一罗列的默默支持我的专家。感谢你们一直以来对人工智能产业的关注,感谢你们对本书的关怀和支持。
感谢电子工业出版社计算机专业图书分社社长孙学瑛女士,珠海金山数字网络科技有限公司(西山居)人工智能技术专家、高级算法工程师黄鸿波的热情推动,终促成了我将内部培训文档出版成图书,让更多的人看到。你们具有敏锐的市场眼光,你们将倾听到的致力于人工智能领域的广大开发者的心声与我分享,坚定了我将技术积淀整理成书稿进行分享的决心。在本书的整理写作过程中,你们多次邀请专家提出有益意见,对于本书的修改和完善起到了重要作用。
由于作者水平有限,书中难免存在不足之处,敬请专家和读者批评指正。
张晨然
2023年2月
本书对二维、三维目标检测技术涉及的骨干网络及入门的计算机视觉算法进行全面的介绍。本书由浅入深地介绍了MNIST、ImageNet、CIFAR、波士顿房产、ModelNet等经典二维、三维数据集和相关国际赛事,还介绍了TensorFlow中的二维卷积层、全连接层、激活层、池化层、批次归一化层、随机失活层的算法和梯度下降原理,AlexNet、VGG、ResNet、DarkNet、CSP-DarkNet等经典骨干网络的设计原理,以及PointNet、GCN等三维计算机视觉神经网络。此外,本书通过设计巧妙且具体的案例,让读者稳步建立扎实的编程能力,包括数据集的制作和解析、神经网络模型设计能力和开销估算、损失函数的设计、神经网络的动态模式和静态模式的训练方法和过程控制、神经网络的边缘计算模型量化、神经网络的云计算部署。完成本书的学习,读者可以继续阅读与本书紧密衔接的《深入理解计算机视觉:在边缘端构建高效的目标检测系统》,将所学的计算机视觉基础知识运用到目标检测的神经网络设计中,对边缘计算环境下的神经网络进行游刃有余的调整。
作者本科毕业于天津大学通信工程专业,硕士研究生阶段就读于厦门大学,主攻嵌入式系统和数字信号底层算法,具备扎实的理论基础。作者先后就职于中国电信集团公司和福建省电子信息(集团)有限责任公司,目前担任福建省人工智能学会的理事和企业工作委员会的主任,同时也担任谷歌开发者社区、亚马逊开发者生态的福州区域负责人,长期从事机器视觉和自然语言基础技术的研究,积累了丰富的人工智能项目经验,致力于推动深度学习在交通、工业、民生、建筑等领域的应用落地。作者于2017年获得高级工程师职称,拥有多项发明专利。
目录
第1篇 计算机视觉开发环境的搭建 1
第1章 Python编程环境 2
1.1 Python语言简介 2
1.2 Python脚本的运行方式 3
1.3 Anaconda虚拟环境管理器 3
1.4 使用Anaconda建立虚拟环境 5
第2章 搭建三层的图像分类神经网络 7
2.1 下载数据集 7
2.2 探索数据集 8
2.3 构建、编译和训练神经网络 9
2.4 使用神经网络进行批量预测 12
2.5 将预测结果可视化 13
第2篇 计算机视觉模型从实验室到生产环境的部署 15
第3章 图片数据集的处理 16
3.1 数据集的预处理 16
3.1.1 下载和查看数据集 16
3.1.2 准备花卉类别名称和类别序号的对应关系 17
3.1.3 准备花卉图片和类别名称的对应关系 18
3.2 数据集的制作 20
3.2.1 拟写入数据集的数据 20
3.2.2 TFRecord格式的数据集 21
3.2.3 单个样本的生成函数 24
3.2.4 批量生成样本并写入TFRecord文件 26
3.3 数据集的读取和验证 27
3.3.1 解析单个样本 27
3.3.2 制作函数批量解析样本 30
3.4 数据管道的优化处理 31
第4章 迁移学习和神经网络的设计 35
4.1 迁移学习的概念和花卉分类应用 35
4.2 下载MobileNet 36
4.3 设置MobileNet 38
4.4 测试MobileNet的特征提取输入和输出 39
第5章 损失函数的基础原理 42
5.1 回归场景下常用的损失函数 42
5.2 回归场景下的损失函数实战 44
5.3 分类场景下的损失函数 47
5.3.1 概率、几率、对数几率的概念 47
5.3.2 对数几率和概率的相互转换 49
5.3.3 多标签与单标签分类问题 51
5.3.4 单标签分类问题和交叉熵算法原理 52
5.3.5 交叉熵损失函数 54
5.4 自定义损失函数 56
第6章 神经网络的编译和训练 58
6.1 神经网络的编译 58
6.2 神经网络的训练 59
6.2.1 神经网络训练的基本概念 59
6.2.2 神经网络训练的常用回调机制 60
6.2.3 训练的返回和过拟合的观测 62
6.3 神经网络的保存 65
6.3.1 神经网络保存的格式和命令 65
6.3.2 神经网络的性能测试和推理 72
第7章 TensorFlow模型的部署方式 74
7.1 以Edge TPU为例进行边缘端模型部署 75
7.1.1 将模型转换为TFLite格式 75
7.1.2 针对边缘硬件编译模型 77
7.1.3 模拟边缘端推理 79
7.1.4 配置边缘计算开发板Edge TPU 81
7.1.5 编写边缘端推理代码 85
7.1.6 将推理代码下载到开发板并运行 87
7.2 在服务器端部署模型 89
7.2.1 TensorFlow Serving的安装和使用 89
7.2.2 网络推理请求和响应实战 92
第3篇 神经网络的数学原理和TensorFlow计算框架 95
第8章 神经网络训练的数学原理和优化器 96
8.1 损失函数和神经网络训练的本质 96
8.1.1 神经网络函数的数学抽象 96
8.1.2 计算损失函数极值的数学抽象 97
8.2 使用符号微分法获得损失值的全局小值 98
8.3 使用局部梯度下降法不断靠近损失函数的小值 105
8.3.1 局部梯度下降法的原理和TensorFlow的优化器 105
8.3.2 自动微分法的原理及自定义梯度 110
8.3.3 使用自动微分法和局部梯度下降法训练波士顿房产数据模型 115
第9章 神经网络的编程范式和静态图转化机制 122
9.1 计算图和编程范式 122
9.2 静态图转化机制AutoGraph和装饰器@tf.function 126
9.3 TensorFlow神经网络模型的类继承关系 131
9.3.1 Tensor
深入理解计算机视觉
全新武汉
¥ 74.89
深入理解OpenCV:实用计算机视觉项目解析
九五品天津
¥ 11.92
深入理解OpenCV:实用计算机视觉项目解析
九品北京
¥ 15.23
深入理解OPenCV实用计算机视觉项目解析
九品保定
¥ 17.70
深入理解OpenCV:实用计算机视觉项目解析
八五品枣庄
¥ 15.99
深入理解OpenCV:实用计算机视觉项目解析
八五品济南
¥ 14.16
深入理解OpenCV:实用计算机视觉项目解析
八五品枣庄
¥ 14.16
深入理解OpenCV:实用计算机视觉项目解析
九品韶关
¥ 9.90
深入理解OpenCV:实用计算机视觉项目解析
九品天津
¥ 21.00
深入理解OpenCV:实用计算机视觉项目解析
九品天津
¥ 17.30
— 没有更多了 —
以下为对购买帮助不大的评价