全新正版书籍,24小时发货,可开发票。
¥ 47.2 5.3折 ¥ 89 全新
库存8件
作者吴至文 郭叶军 宗炜 李鹏 赵娟
出版社机械工业出版社
ISBN9787111656463
出版时间2020-07
装帧平装
开本16开
定价89元
货号28973007
上书时间2024-12-28
◆推荐序 ◆
序一
OpenCV以其易得、易懂、易用为国内学术界和工业界所熟知。作为经典的图形图像类开源软件,OpenCV可以说是兼具“大而全”和“小而精”特点。“大而全”是指OpenCV全面涵盖了从教科书式的基本图像处理单元算法,到更复杂的高级算法,直至的围绕机器学习的算法。“小而精”是指其每个算法的实现被社区反复锤炼、优化,甚至满足一些项目需求的KPI,可以直接用于产品化。
本书的作者团队长期从事图形图像和视频编解码处理的算法研究、软件的功能实现及性能加速,各自在OpenCV项目里都有重要贡献,直至成为一些模块的维护者。本书从OpenCV入门,结合行业热点,花大量笔墨介绍机器学习相关实现及平台相关的性能优化,贴近实战,为学生、工程技术人员提供了实用指导。
作者团队所在的Intel开源软件中心音视频团队,自2008年开始从事GPU内核驱动开发,开发项目贯穿整个图形图像软件栈,涵盖开源软件桌面(X.org)、3D加速协议OpenGL(Mesa)、通用计算加速协议OpenCL(Project Beignet)、视频编解码与处理(FFmpeg/GStreamer)及基于软件的全栈式摄像头流水线处理算法实现(libXCam)。很多团队成员如今在流媒体框架、图形图像处理等主要开源软件社区成长为项目维护者。
开源软件开发作为一种开发模式,社区互动是必不可少的组成部分。我们和OpenCV社区的互动,早可以追溯到2010年。彼时OpenCV已经在业内流行了,但来自国内的贡献很少。初,我们也经历了彷徨和不安,担心代码会不被接受。经过一些尝试后,我们逐渐与社区、OpenCV项目的维护者Vadim先生建立了良好的合作关系。待后来Intel收购了Itseez公司之后,大家成为同事,合作就变得更多了。本书的各位作者作为参与OpenCV项目的开发者,贡献了重要算法的优化和实现。他们希望通过本书,分享自己的成长经历,携手国内开源社区的程序员和工程师一起参与OpenCV项目的开发。
图形图像技术自诞生之日起,就与网络技术的发展相辅相成。随着机器学习的发展,技术热点也从围绕存储和分发,越来越多地转向内容的分析和挖掘。华为的任正非先生曾经说过,下一个时代是图像时代。智能手机的普及使得拍摄成为通俗易用的信息产生方式,由此产生了海量数据。为这些非结构化数据的有效挖掘和利用将催生下一个行业巨人。“把图像处理变得像文字处理一样简单”,一直是本书作者们及其所在团队追求的技术方向。机器学习和图像处理相结合,必将对机器人、工业自动化、医疗和生物技术带来深远的影响。5G的低延时、物对物的连接特性,也将给图形图像技术注入新的催化剂并带来广阔的应用。有幸能为本书作序,借此与读者共勉。
傅文庆
Intel公司系统软件产品事业部研发总监
于美国俄勒冈州
序二
应Intel IAGS的赵娟女士邀请为本书写序,我深感荣幸。本书由Intel开源软件中心音视频团队一线工作人员吴至文、郭叶军、宗炜、(前成员)、赵娟共同撰写,可以说是集体智慧的结晶。该团队成员目前都是资深研发工程师,有的深耕于OpenCV加速,有的是视频处理和深度学习领域的专家。在本书中,他们由浅入深地对OpenCV在深度学习上的应用和性能优化进行了全面解读。我在阅读本书时获益良多,尤其是加深了对OpenCV在深度学习方面的实际应用的理解。我相信本书能够覆盖相当大一部分学习者的需求。
众所周知,OpenCV是Intel公司主导的开源计算机视觉库,它实现了一系列图像处理和计算机视觉算法,目前已经延伸到计算机视觉的各个领域,其功能几乎涵盖了每个研究方向。另外,OpenCV实现的算法不仅紧跟视觉前沿,而且在性能优化方面做了很多工作,因功能强大而在学术界和工业界得到了非常广泛的应用。深度学习是机器学习中一种基于对数据进行表征学习的算法,近些年来,得益于数据的增多、计算能力的增强、学习算法的成熟及应用场景的丰富,越来越多的学者开始关注并研究深度学习,并掀起了新一轮人工智能的热潮。OpenCV为了支持基于深度学习的计算机视觉应用加入了新特性,搭建了一个轻量的深度学习框架,添加了支持网络推理的深度学习模块。
本书面向OpenCV和深度学习的初学者,按照循序渐进的学习步骤,详细介绍了一些OpenCV和深度学习的基本概念与结构,讲解了各种计算架构下深度学习的计算优化和加速,列举了一些精准实用的项目样例,内容不仅涵盖全面详尽的算法原理,还解释分析相关源代码和实践结果。本书对深度学习的发展趋势和主要研究方向进行了全面而综合的介绍,从不同的用户场景出发,对算法进行深度的分析和详细的解释,能够满足初学者对各种计算机视觉的应用需求。
鉴于计算机学科是一个高速发展学科,计算机视觉、深度学习必然同样处于高速发展状态。希望Intel IAGS团队在出版本书之后,要随着新技术、新方法的涌现而与时俱进,及时更新内容,为广大读者提供持续支撑和服务。
邹复好
华中科技大学计算机学院教授
于华中科技大学
序三
Among many books about OpenCV that have been published already, this one has some interesting properties that make it special. It has been written by the members of Intel China team who optimized OpenCV deep learning module (OpenCV DNN) for GPU. So, the book contains some in-depth first-hand information that would be difficult to find somewhere else. That includes some rarely discussed topics, such as OpenCL, Vulkan and Halide backends of OpenCV DNN. Another expert-level and very useful topic is discussion with practical examples of how to analyse application performance and then tune it using Intel VTune. At the same time, the book is not just for experts. It also provides a comprehensive guide to OpenCV DNN usage, from the simple models, like image classification, to more complex models, such as object detection. Overall, the book is highly recommended for all the software engineers who want to build highly-efficient deep learning applications using OpenCV.
在已经出版的众多关于OpenCV的书籍中,本书具有一些有趣的特性,因之与众不同。本书是由Intel中国团队的成员编写的,他们优化了OpenCV模块在GPU上的性能。因此,本书包含了一些深度的一手信息,这些信息在其他地方很难找到。其中包括一些很少讨论的有用话题,如OpenCL、Vulkan,以及OpenCV DNN的Halide后端。另一个专家级且非常有用的主题是讨论如何使用Intel VTune分析应用程序性能,然后根据它提供的信息对程序进行优化。本书的读者对象包含但不限于专家。它为OpenCV DNN模块的使用提供了全面的指导,从简单的模型(如图像分类)到更复杂的模型(如对象检测)。总体来说,本书值得强烈推荐给所有希望使用OpenCV构建高效深度学习应用程序的软件工程师。
Vadim Pisarevsky
OpenCV team lead
Senior Software Engineer, AIRS(Artificial Intelligence for Robotics and Society) Institute, Shenzhen
In Russia
序四
非常荣幸能为本书作序,这是一本视觉工程师的OpenCV深度学习开发指南。
深度学习技术的兴起,极大地促进了图像、视频相关应用的发展。现在,类似人脸动画、人体动作识别等高级别视觉任务等需要用到深度学习技术,甚至近深度学习也在悄悄进入图片、视频压缩、质量增强等低级别视觉任务领域。
一方面,我们使用深度学习技术时需要在性能强大的服务器上训练模型;另一方面,我们需要将模型部署到移动、嵌入式、物联网设备端等。后者往往更具挑战性。
OpenCV作为计算机视觉领域影响力的开发工具,在模型推理部署方面也做了大量工作,其DNN模块为此提供了丰富的技术支持。但仅仅有官方文档和少量例程并不够,长久以来,业界迫切需要一本深入解析DNN模块相关技术的参考书,而本书恰好满足了广大读者的需求。
作为一直从事计算机视觉算法研究与开发的工程师,我经常关注OpenCV的新版本和新特性,在近几次的版本更新中,深度学习DNN模块都是OpenCV开发的重点。OpenCV提供了大量基础且重要的视觉算法的实现,是快速进行产品原型开发验证的工具,其深度学习模块也提供了大量的方便实用的功能,是深度学习模型快速部署的重要工具。
图像和视频的应用计算量通常很大,在产品开发中后期,算法工程师更多的工作往往是程序优化,如何化利用硬件计算能力、减少计算冗余是颇具挑战的事情。
本书深入解析了OpenCV DNN模块,详述了深度学习引擎的性能优化策略,介绍了在GPU和CPU上进行计算加速的方法,并通过涵盖计算机视觉主流应用的几个案例展示如何在OpenCV中使用深度学习,后则带着大家完整实现一个人脸活体检测与识别的大项目。本书提供的案例,紧跟技术前沿,贴近实际应用场景,相信对参与工程项目开发的读者具有直接的参考价值。
对于想要学习OpenCV DNN深度学习模块,并将其应用到工程实践中的读者,这无疑是一本参考书。
技术是不断迭代更新的,但思想可以让我们走得更远。值得一提的是,本书介绍的优化策略和加速方法,对于开发其他视觉算法也大有裨益。
强烈建议大家不要只停留在读这本书,而要动手把书里的程序跑起来,将书中介绍的方法用起来,当你成功让一段程序取得几倍加速后,你一定会获得巨大的成就感!
周强(CV君)
“我爱计算机视觉”公众号负责人
◆ 前言◆
为什么要写这本书
图像和视频由基本的点(像素)组成,众多的像素按照一定规则排列组成了我们所熟知的图像,一系列的图像组成了我们所认识的视频。从2013年开始,随着智能手机的普及,全球进入了大数据时代。除了数据本身的多样性,文件数目呈指数级增加,数据的大小也在大规模增长。其中,典型的是图像和视频数据的爆发式增长,这不仅源于分辨率和帧率的不断提高(分辨率从标清到高清,从4K到8K,帧率从25FPS、60FPS到120FPS),更多是源于采集设备的多样化和各种基于图像视频的社交软件的流行。图像和视频数据的分析与处理已经在目前的大数据处理中占据了举足轻重的地位。如何对图像和视频数据进行高效快捷的分析与处理是摆在软件工程师面前的一个重要问题,而OpenCV是我们解决这个问题的一个很好选择。
OpenCV是一个计算机视觉开源软件库,它提供了大量的图像视频处理的算法工具。在近几年,随着深度学习的爆发,计算机视觉的算法研究全面转向了深度学习方法,OpenCV也应需增加了对深度学习的支持。目前,OpenCV已经广泛应用于基于深度学习的图像分析处理领域,具体的应用场景包括但不限于右图展示的各领域。
我们团队的伙伴们深耕在视频处理和框架领域十几年。近几年,在开源深度学习框架的GPU加速方面相继有了很多积累。与此同时,我们时常会收到来自各方的关于OpenCV和深度学习的咨询,内容从初步入门到高级结构和应用,不一而足。于是,我们就萌生了把所积累的知识以中文图书的形式分享给更多人的想法。
作者团队
吴至文曾为OpenCV贡献了Vulkan加速代码,在2018年欧洲嵌入式Linux峰会(Embedded Linux Summit Europe 2018)上分享了OpenCV中深度学体结构、实现细节和硬件加速相关的话题(见下图)。演讲材料可以在Linux基金会的官网下载。
郭叶军是FFmpeg深度学习模块的代码维护者,曾参与开源的OpenCL驱动(Beignet)的开发,参与向Khronos OpenCL提供了两个扩展库:cl_intel_acceleerator和cl_intel_motion_estimation。他也是本书主要架构的贡献者,在2019年5月参与本书的整体重构和重写时,对作者团队提出了更高的质量目标要求,几乎重写了之前的14万字内容,使书稿达到目前的可以出版的状态。
我是视频处理和框架团队的研发经理,于2018年与2019年的中国架构师大会(http://sacc.it168.com/)上分别介绍了OpenCV深度学习和AI在FFmpeg/Gstrea项目libxcam(github/intel/libxcam)的维护者,为图像处理算法提供了CPU指令集级别的加速,对图形图像处理、摄像头相关软件开发和视频处理有很深的认识。我们参加CVPR会议的Face Antispoof官方源代码也存放在libxcam项目中。
我们团队的前成员为OpenCV深度学习模块提供了OpenCL FP32和FP16的加速方法。这里面的贡献包含了团队前成员龚志刚在clCaffe加速工作中的基本思想。
本书的贡献者还包括来自华中科技大学的张鹏、李雨霏和来自湖南大学的陈祎婧。
我们希望借这次撰写OpenCV深度学习书籍的机会和大家分享一下我们的技术积累,打破语言的壁垒,方便更多的国内开发者获利于开源、反馈开源,让开源开发方式可以更好地助力科技发展,创造更大的社会价值。
本书特色
本书由资深架构师利用业余时间倾情奉献,他们很多是OpenCV贡献者、算法的开发者。本书还特别结合硬件结构、优化的流程和方法,保证内容深度的同时注重实用性和可操作性,因此本书适合从初学者、高级工程师到架构师的各层面读者。
读者对象
图像视频处理架构师;
图像视频开发人员;
图像视频应用架构师;
深度学习应用开发人员;
深度学习算法工程师;
图像视频相关的管理人员;
其他对视频技术感兴趣的人员。
如何阅读本书
我们希望读者可以准备一个运行环境,一边运行代码,一边阅读本书。OpenCV是一个开源的计算机视觉库,它的开发和维护都遵循开源软件的工作方式,而开源作为一种软件开发方式正在被越来越多的公司和组织所采用。我们希望读者在学习过程中能够积累一些开源软件的使用和调试技巧,迈出探索开源世界的步。下面是本书的脉络,供读者参考。
第1章首先介绍OpenCV的背景和基础,以及机器学习、深度学习的基础知识,在第1章结束时从一个简单对象分类的例子开始展开介绍如何使用OpenCV深度学习模块。
第2章主要介绍OpenCV深度学习模块的架构和实现原理。为了使读者更好地理解深度学习模块,第2章首先介绍深度学习的数学基础,然后从程序员的角度去解析深度学习的结构。接着从深度学习模块的分层架构展开,结合语言绑定及不同的正确性/性能测试以更进一步地了解OpenCV深度学习模块。接下来从使用者的角度,介绍深度学习模块相关的函数接口、Layer类、Net类。然后深入地介绍DNN引擎的实现,内容包括模型导入、推理引擎内存分配,以及卷积、激活、池化、全连接等典型层类型的原理讲解。第2章还将介绍深度学习架构层面的优化方法,如层的融合、内存的复用等。后介绍深度学习模块支持的各种加速方法和硬件设备,以及如何使用它们。
在理解了深度学习模块的架构和实现原理之后,我们继续从GPU、CPU及第三方库的角度深入探讨深度学习模块的加速实现。
第3~5章的主题是利用GPU的并行计算能力加速深度学习计算。第3章讨论并行计算的基础知识和Intel GPU的硬件结构。在此基础上,第4章和第5章将详细讲解深度学习模块的OpenCL和Vulkan加速。
第6章将讨论CPU的硬件知识,以及深度学习模块的CPU加速方法。读者可以了解到OpenCV中使用到的各种CPU加速的技巧,如指令集SIMD加速的具体方法。近些年,Halide语言因其跨平台特点备受开发者的关注。OpenCV也引入了Halide的加速方法,所以本书也向读者深入浅出地谈了Halide,以及基于Halide的深度学习模块加速。Intel的OpenVINO软件包提供了各种Intel硬件平台(包括CPU、GPU、FPGA、Movidius)的深度学习加速实现,在OpenCV中也有引入,对应的是Intel推理引擎后端,该章也将做详细介绍。
第7章将介绍常用的深度神经网络可视化工具TensorBoard(适用于TensorFlow网络格式)和Netscope(适用于Caffe网络格式)。本章将详细讲解针对Intel硬件平台的性能分析和调优工具VTune。第7章后给出了高阶程序优化的思路和方法。
本书的另一个重点是应用实践。在第8章和第9章中,我们讲解基于深度学习的应用实践的具体细节,包括用深度学习方法处理计算机视觉的基本问题及一个完整的、实践性很强的人脸识别项目。
请看到本书的学生关注一下Google Summer of Code项目,之前很多年OpenCV社区就多次参加过,我所在的Intel Media and Audio团队已经作为导师组连续带了三届学生。学生们可领项目为开源社区做一些贡献。开源社区欢迎大家积极贡献代码,不管是提供新的例子,还是修掉某个小问题,或者提交新的功能。
勘误和支持
由于笔者水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果你有更多的宝贵意见,欢迎给我们发电子邮件,作者电子邮箱:zhaojuanamy@163.com。你也可以通过机械工业出版社联系我们,期待能够得到你们的真挚反馈,在技术之路上互勉共进。本书配套资源可到www.hzbook.com本书所在页面下载。
致谢
特别感谢我们的领导傅文庆,一年半以来一直支持、鼓励我们,直到我们将这本书完成。
特别感谢来自湖南大学的陈祎婧、来自华中科技大学的张鹏。他们贡献了第8章,为读者展示了一个完整的端到端人脸识别应用的开发细节。
特别感谢来自华中科技大学的李雨霏利用自己的业余时间,贡献了语义分割部分的内容,并提出自己的见解,更好、更完善地向读者展示语义分割。
特别感谢我的同事宋瑞岭对本书的校验及在OpenCL、GPU/CPU方面的补充和讨论。
特别感谢我的同事付挺、傅林捷对初稿的仔细审阅。
尽信书不如无书,大家还是需要结合自己的平台来实验。
赵娟
Intel音视频团队与阿里巴巴图像处理专家联合撰写,知名专家联袂推荐,深入解析OpenCV DNN 模块、基于GPU/CPU的加速实现、性能优化技巧与可视化工具,以及人脸活体检测(完整案例)与主流识别项目解析。
第1~2章介绍了OpenCV编译、运行,深度学习模块(Open DNN)的架构、实现原理,以及深度学习的数学基础与如何快速上手。
第3~5章主要介绍了OpenCV的GPU加速原理,涵盖必要的并行计算知识、Intel GPU硬件结构,以及OpenCL和Vulkan加速实现,是性能优化工作的核心。
第6章介绍了CPU的硬件知识,以及深度学习模块的CPU加速方法,重点讲解了指令集SIMD加速,讨论了Halide后端加速、OpenVINO(Intel推理引擎)加速。
第7章介绍了常用的深度神经网络可视化工具——TensorBoard(适用于TensorFlow网络格式),Netscope(适用于Caffe网络格式),针对Intel硬件平台的性能调优工具VTune,以及高阶程序优化的思路和方法。
第8~9章重点讲解实践细节,包括用深度学习方法处理计算机视觉的基本问题,以及一个完整的人脸活体检测项目与主流识别项目解析。
吴至文
Intel亚太研发有限公司资深图形图像工程师,拥有多年算法开发优化经验,技术领域涵盖显示系统、视觉处理、深度学习框架加速,尤其擅长基于OpenCL和Vulkan的算法设计及优化,是OpenCV DNN模块Vulkan后端的作者、OpenCL后端主要贡献者之一。近期关注深度学习视觉算法开发及其高效部署。
郭叶军
Intel资深图形图像工程师。多年图形芯片驱动开发经验,主要包括OpenGL驱动和OpenCL驱动。目前关注视频分析中的深度学习,是FFmpeg深度学习模块的代码维护者。
宗炜
Intel资深图形图像工程师,长期从事计算机视觉算法与应用、数字图像处理、Camera成像算法开发,在CPU/GPU/ISP异构计算算法设计与优化上经验颇丰,是图像处理与计算机视觉算法开源项目libXCam的维护者和主要贡献者。近期关注低延时、超高分辨率VR视频直播方案的开发和部署。
阿里巴巴高级技术专家,原Intel亚太研发有限公司资深图形图像工程
— 没有更多了 —
以下为对购买帮助不大的评价