搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
出版时间 :
OpenCV深度学习应用与性能优化实践
0.00     定价 ¥ 89.00
浙江图书馆
  • ISBN:
    9787111656463
  • 作      者:
    吴至文,郭叶军,宗炜,李鹏,赵娟
  • 出 版 社 :
    机械工业出版社
  • 出版日期:
    2020-07-01
收藏
编辑推荐

1)作者阵容豪华。Intel与阿里巴巴高级图形图像专家联合撰写;

2)范围全面。从应用、架构、加速原理与技巧,全面覆盖;

3)案例丰富。完整人脸活体检测案例与主流视觉项目解析;

4)内容独特。涵盖Intel推理引擎加速等鲜见一手深度信息。

展开
作者简介

吴至文

Intel亚太研发有限公司资深图形图像工程师,拥有多年算法开发优化经验,技术领域涵盖显示系统、视觉处理、深度学习框架加速,尤其擅长基于OpenCL和Vulkan的算法设计及优化,是OpenCV DNN模块Vulkan后端的作者、OpenCL后端主要贡献者之一。近期关注深度学习视觉算法开发及其高效部署。

 

郭叶军

Intel资深图形图像工程师。多年图形芯片驱动开发经验,主要包括OpenGL驱动和OpenCL驱动。目前关注视频分析中的深度学习,是FFmpeg深度学习模块的代码维护者。

 

宗炜

Intel资深图形图像工程师,长期从事计算机视觉算法与应用、数字图像处理、Camera成像算法开发,在CPU/GPU/ISP异构计算算法设计与优化上经验颇丰,是图像处理与计算机视觉算法开源项目libXCam的维护者和主要贡献者。近期关注低延时、超高分辨率VR视频直播方案的开发和部署。

 

李鹏

阿里巴巴高级技术专家,原Intel亚太研发有限公司资深图形图像工程师。涉及领域包括显示系统、图形图像处理、深度学习框架加速。是OpenCV DNN模块OpenCL后端主要贡献者之一。


赵娟

Intel高级研发经理,钻研图形图像、视频编解码和视频处理十几年,带领团队深耕视频编解码和处理软硬件加速、深度学习算法分析与设计,致力于让开源软件在图形图像视频市场落地,并组织团队把多年的“干货”整理成书,与视频行业的朋友们一起探讨与成长。


展开
内容介绍

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章重点讲解实践细节,包括用深度学习方法处理计算机视觉的基本问题,以及一个完整的人脸活体检测项目与主流识别项目解析。


展开
精彩书评

本书的作者们长期从事图形图像和视频编解码处理的算法研究、软件的功能实现及性能加速,各自在OpenCV项目里都有重要贡献,直至成为一些模块的维护者。本书从OpenCV入门,结合行业热点,花更多笔墨于机器学习相关实现、平台相关的性能优化,更贴近实战,为学生、工程技术人员提供了实用价值。

—— 傅文庆,Intel公司系统软件产品事业部研发总监

 

本书讲解了各种计算架构下深度学习的计算优化和加速,列举了一些精准实用的项目样例,内容不仅涵盖全面详尽的算法原理,还解释分析相关源代码和实践结果。本书对深度学习的新发展趋势和主要研究方向进行了全面而综合的介绍,从不同的用户场景出发,对算法做了深度的分析和详细的解释,能够满足初学者对于各种计算机视觉应用的需求。

—— 邹复好,华中科技大学计算机学院教授

 

本书由Intel中国团队的成员编写,他们优化了OpenCV DNN模块在GPU上的性能。本书包含一些深度的第一手信息,这些信息在其他地方很难找到。其中包括一些很少讨论的话题,如OpenCL、Vulkan、OpenCV DNN和Halide后端。

—— Vadim Pisarevsky,OpenCV团队主管

 

本书深入解析了OpenCV DNN模块,详述了深度学习引擎的性能优化策略,介绍了在GPU和CPU上进行计算加速的方法,并通过几个案例展示如何在OpenCV中使用深度学习,最后则带着大家完整实现一个人脸活体检测、识别的大项目。书中提供的案例,紧跟技术前沿,贴近实际应用场景,相信对从事工程项目开发的读者也非常有参考价值。

—— 周强(CV君),“我爱计算机视觉”公众号负责人


展开
精彩书摘

序一

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君)

“我爱计算机视觉”公众号负责人


展开
目录

序一

序二

序三

序四

前言

第1章OpenCV和深度学习 1

1.1 OpenCV处理流程  1

1.1.1 OpenCV库  1

1.1.2 OpenCV深度学习应用的典型流程  3

1.2 机器学习的数学视角  5

1.2.1 机器学习和非机器学习  5

1.2.2 从人工神经网络到深度学习  8

1.2.3 破除神秘——神经网络是如何训练的  11

1.3 OpenCV深度学习模块  16

1.3.1 主要特性  16

1.3.2 OpenCV DNN图像分类举例(Python)  17

1.4 本章小结  19

第2章OpenCV深度学习模块解析 20

2.1 深度学习模块分层架构总览  20

2.2 语言绑定和测试层  21

2.2.1 深度学习模块的Python语言绑定  21

2.2.2 深度学习模块的正确性测试和性能测试  23

2.3 API层  30

2.3.1 Layer 类及如何定制一个新的层类型  30

2.3.2 Net 类  32

2.3.3 常用函数  35

2.4 DNN引擎层  37

2.4.1 模型导入  37

2.4.2 推理引擎数据对象管理  43

2.4.3 推理引擎重点层解释  47

2.4.4 层的合并优化  62

2.5 引擎加速层  66

2.5.1 深度学习模块支持的运算目标设备  67

2.5.2 深度学习模块支持的加速后端  68

2.5.3 加速方式的选择  69

2.6 本章小结  70

第3章并行计算与GPU架构 71

3.1 并行计算浅谈  71

3.2 Intel GPU架构及其在并行计算中的应用  74

3.2.1 Intel GPU的计算架构  74

3.2.2 两种不同的SIMD使用思路——AOS和SOA  82

3.2.3 cl_intel_subgroups 在 Intel GPU 上的参考实现  89

3.3 本章小结  100

第4章基于Vulkan的加速实现 101

4.1 初识Vulkan  101

4.2 使用Vulkan加速  102

4.3 Vulkan后端加速过程解析  104

4.3.1 数据对象初始化  105

4.3.2 后端运算节点初始化  108

4.3.3 调用后端运算节点进行前向运算  111

4.3.4 Vulkan后端库  113

4.4 本章小结  119

第5章基于OpenCL的加速实现 120

5.1 OpenCL简介  120

5.2 如何使用OpenCL加速  125

5.3 OpenCL加速详解  128

5.3.1 OpenCL API封装  129

5.3.2 DNN模块的卷积层实现详解  132

5.3.3 ocl4dnn库的卷积运算类详解  134

5.3.4 卷积核函数auto-tuning机制解析  138

5.4 本章小结  143

第6章CPU及第三方库加速的实现 144

6.1 原生CPU加速实现  144

6.1.1 基于多线程技术的加速  147

6.1.2 基于并行指令的加速  153

6.2 Halide后端的实现  157

6.2.1 Halide介绍  158

6.2.2 如何启用Halide  163

6.2.3 Halide后端的实现原理  165

6.3 Intel推理引擎后端的实现  171

6.3.1 Intel推理引擎介绍  171

6.3.2 如何启用推理引擎后端  172

6.3.3 Intel推理引擎后端的实现原理  176

6.4 本章小结  185

第7章可视化工具与性能优化 186

7.1 Netscope:基于Web的Caffe网络可视化工具  186

7.2 TensorBoard:助力TensorFlow程序的理解和调试  188

7.2.1 图的可视化  188

7.2.2 数据的可视化  191

7.2.3 调试的可视化  197

7.3 VTune:Intel 平台的性能调优  199

7.3.1 系统性能查看工具  200

7.3.2 Intel VTune 功能介绍 202

7.3.3 VTune 程序性能优化实例  211

7.4 程序优化流程总结和建议  213

7.5 本章小结  215

第8章支付级人脸识别项目开发实战 216

8.1 活体检测的概念与方法  216

8.2 支付级人脸识别项目流程  218

8.3 基于OpenCV的支付级人脸识别项目具体实现  220

8.3.1 数据准备  222

8.3.2 活体检测模型训练  230

8.3.3 支付级人脸识别系统实现  238

8.4 本章小结  244

第9章深度学习模块不同场景下的应用实践 245

9.1 图像分类  245

9.1.1 图像分类经典网络结构  245

9.1.2 GoogLeNet  247

9.1.3 图像分类程序源码分析  249

9.1.4 图像分类程序运行结果  255

9.2 目标检测  256

9.2.1 SSD算法解析  256

9.2.2 目标检测程序源码分析  257

9.2.3 目标检测程序运行结果  260

9.3 语义分割  261

9.3.1 FCN模型  262

9.3.2 语义分割程序源码分析  263

9.3.3 语义分割程序运行结果  267

9.4 视觉风格变换  268

9.4.1 视觉风格变换模型  268

9.4.2 视觉风格变换程序源码分析  269

9.4.3 视觉风格变换程序运行结果  271

9.5 本章小结  273

附录AOpenCV的编译安装及patch开发流程 274

附录Bintel_gpu_frequency工具的安装和使用 280

展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

温馨提示:请使用浙江图书馆的读者帐号和密码进行登录

点击获取验证码
登录