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章重点讲解实践细节,包括用深度学习方法处理计算机视觉的基本问题,以及一个完整的人脸活体检测项目与主流识别项目解析。
封面图
目录
- 序一
- 序二
- 序三
- 序四
- 前言
- 第1章OpenCV和深度学习 1
- 1.1OpenCV处理流程 1
- 1.1.1OpenCV库 1
- 1.1.2OpenCV深度学习应用的典型流程 3
- 1.2机器学习的数学视角 5
- 1.2.1机器学习和非机器学习 5
- 1.2.2从人工神经网络到深度学习 8
- 1.2.3破除神秘——神经网络是如何训练的 11
- 1.3OpenCV深度学习模块 16
- 1.3.1主要特性 16
- 1.3.2OpenCV 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.3API层 30
- 2.3.1Layer 30
- 2.3.2Net 32
- 2.3.3 35
- 2.4DNN 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.2Intel GPU架构及其在并行计算中的应用 74
- 3.2.1Intel GPU 74
- 3.2.2SIMD棗AOSSOA 82
- 3.2.3cl_intel_subgroupsIntel GPU 89
- 3.3 100
- 4基于Vulkan的加速实现 101
- 4.1初识Vulkan 101
- 4.2使用Vulkan加速 102
- 4.3Vulkan后端加速过程解析 104
- 4.3.1数据对象初始化 105
- 4.3.2后端运算节点初始化 108
- 4.3.3调用后端运算节点进行前向运算 111
- 4.3.4Vulkan后端库 113
- 4.4本章小结 119
- 第5章基于OpenCL的加速实现 120
- 5.1OpenCL简介 120
- 5.2如何使用OpenCL加速 125
- 5.3OpenCL加速详解 128
- 5.3.1OpenCL API封装 129
- 5.3.2DNN模块的卷积层实现详解 132
- 5.3.3ocl4dnn库的卷积运算类详解 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.2Halide后端的实现 157
- 6.2.1Halide介绍 158
- 6.2.2如何启用Halide 163
- 6.2.3Halide后端的实现原理 165
- 6.3Intel推理引擎后端的实现 171
- 6.3.1Intel推理引擎介绍 171
- 6.3.2如何启用推理引擎后端 172
- 6.3.3Intel推理引擎后端的实现原理 176
- 6.4本章小结 185
- 第7章可视化工具与性能优化 186
- 7.1Netscope:基于Web的Caffe网络可视化工具 186
- 7.2TensorBoard:助力TensorFlow程序的理解和调试 188
- 7.2.1图的可视化 188
- 7.2.2数据的可视化 191
- 7.2.3调试的可视化 197
- 7.3VTuneIntel 199
- 7.3.1 200
- 7.3.2Intel VTune 202
- 7.3.3VTune 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.2GoogLeNet 247
- 9.1.3图像分类程序源码分析 249
- 9.1.4图像分类程序运行结果 255
- 9.2目标检测 256
- 9.2.1SSD算法解析 256
- 9.2.2目标检测程序源码分析 257
- 9.2.3目标检测程序运行结果 260
- 9.3语义分割 261
- 9.3.1FCN模型 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