OPENCV深度学习应用与性能优化实践
作者: 吴至文
出版时间:2020年版
内容简介
深度剖析OpenCV DNN模块的架构、原理与加速策略等; 重点介绍了 CPU/GPU加速原理与实现,诸如Intel GPU架构与参考实现,Vukan与OpenCL的加速实现; 详细讲解可视化工具与主流OpenCV深度学习应用,如支付级别人脸识别、图像分类、目标检测等。
目录
目录
序一
序二
序三
序四
前言
第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.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.2 Intel 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.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.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.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