猜你喜欢
OpenCV深度学习应用与性能优化实践

OpenCV深度学习应用与性能优化实践

书籍作者:吴至文 ISBN:9787111656463
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:8246
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
下载地址
内容简介

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亚太研发有限公司资深图形图像工程师。涉及领域包括显示系统、图形图像处理、深度学习框架加速。是OpenCV DNN模块OpenCL后端主要贡献者之一。


赵娟

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


编辑推荐
适读人群 :1、图像视频应用与处理架构师;2、图像视频开发人员;3、深度学习应用开发人员;4、深度学习算法工程师;5、其他对视频技术感兴趣的人员

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

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

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

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

《OpenCV深度学习应用与性能优化实践》电子书免费下载

pdf下载 txt下载 epub下载 mobi下载 azw3下载

前言

为什么要写这本书

图像和视频由最基本的点(像素)组成,众多的像素按照一定规则排列组成了我们所熟知的图像,一系列的图像组成了我们所认识的视频。从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团队已经作为导师组连续带了三届学生。学生们可领项目为开源社区做一些贡献。开源社区欢迎大家积极贡献代码,不管是提供新的例子,还是修掉某个小问题,或者提交新的功能。

勘误和支持

由于笔者水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果你有更多的宝贵意见,欢迎给我们发电子邮件,作者电子邮箱:[email protected]。你也可以通过机械工业出版社联系我们,期待能够得到你们的真挚反馈,在技术之路上互勉共进。本书配套资源可到www.hzbook.com本书所在页面下载。

致谢

特别感谢我们的领导傅文庆,一年半以来一直支持、鼓励我们,直到我们将这本书完成。

特别感谢来自湖南大学的陈祎婧、来自华中科技大学的张鹏。他们贡献了第8章,为读者展示了一个完整的端到端人脸识别应用的开发细节。

特别感谢来自华中科技大学的李雨霏利用自己的业余时间,贡献了语义分割部分的内容,并提出自己的见解,更好、更完善地向读者展示语义分割。

特别感谢我的同事宋瑞岭对本书的校验及在OpenCL、GPU/CPU方面的补充和讨论。

特别感谢我的同事付挺、傅林捷对初稿的仔细审阅。

尽信书不如无书,大家还是需要结合自己的平台来实验。


赵娟

目录

序一

序二

序三

序四

前言

第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

短评

本书即有OpenCV深度学习理论的简明易懂解析,也有容易上手的实践,理论与实践的完美结合,五星推荐!!!

2020-06-30

内容比较有深度、实用,有整体,也有细节的分析,最后还有应用,是不错的一本书。

2020-07-01

对性能优化比较有兴趣,工作上遇到点瓶颈,应该用的上,比较及时的一本书。

2020-06-30

深入浅出,专业,五星好评

2020-06-29

Intel自己的专家写的OpenVINO,相比外面各种“专家”,专业度不用怀疑,写过源码的人跟只会调API的人显然不在一个档次,强烈推荐。实战项目也很有价值,用自己的PC就能搞出一个人脸识别的模型,相当有成就感。

2020-06-29

OpenCV深度学习应用与性能优化实践的书评

书里面对opencv深度学习模块的讲解挺深入的,自己水平有限看不大懂:( 那个人脸识别的项目非常有价值,数据集准备,训练,部署都有了,还有全部的源码,良心啊。刚好最近在研究这一块,感觉这部分就够书钱了。另外对openvino的讲解和使用也是这本书的特色之一,毕竟是英特尔的...

2020-07-01 09:36:49

原创:木羊同学 今天聊OpenCV,我想从人脸识别讲起。 这几年人脸识别技术在国内发展飞速,给生活带了很多便利,这个大家应该都有体会。早几年进高铁站还比较麻烦,要先排长队,得让检票口的工作人员一个一个查看证件然后“啪”地戳章,才能进站。很多人应该都和我一样想过一个...

2020-07-29 19:06:56

标签
OpenCV,深度学习,好书,值得一读,OpenVINO,人工智能
产品特色