内容简介
开源软件开发作为一种开发模式,社区互动是必不可少的组成部分。我们和OpenCV社区的互动,最早可以追溯到2010年。彼时OpenCV已经在业内流行了,但来自国内的贡献很少。最初,我们也经历了彷徨和不安,担心代码会不被接受。经过一些尝试后,我们逐渐与社区、OpenCV项目的维护者Vadim先生建立了良好的合作关系。待后来Intel收购了Itseez公司之后,大家成为同事,合作就变得更多了。《OpenCV深度学习应用与性能优化实践》的各位作者作为参与OpenCV项目的开发者,贡献了重要算法的优化和实现。他们希望通过《OpenCV深度学习应用与性能优化实践》,分享自己的成长经历,携手国内开源社区的程序员和工程师一起参与OpenCV项目的开发。
吴至文,Intel亚太研发有限公司资深图形图像工程师,拥有多年算法开发优化经验,技术领域涵盖显示系统、视觉处理、深度学习框架加速,尤其擅长基于OpenCL和Vulkan的算法设计及优化,是OpenCV DNN模块Vulkan后端的作者、OpenCL后端主要贡献者之一。近期关注深度学习视觉算法开发及其高效部署。
郭叶军,Intel资深图形图像工程师。多年图形芯片驱动开发经验,主要包括OpenGL驱动和OpenCL驱动。目前关注视频分析中的深度学习,是FFmpeg深度学习模块的代码维护者。
宗炜,Intel资深图形图像工程师,长期从事计算机视觉算法与应用、数字图像处理、Camera成像算法开发,在CPU/GPU/ISP异构计算算法设计与优化上经验颇丰,是图像处理与计算机视觉算法开源项目libXCam的维护者和主要贡献者。近期关注低延时、超高分辨率VR视频直播方案的开发和部署。
李鹏,阿里巴巴高级技术专家,原Intel亚太研发有限公司资深图形图像工程师。涉及领域包括显示系统、图形图像处理、深度学习框架加速。是OpenCV DNN模块OpenCL后端主要贡献者之一。
赵娟,Intel高级研发经理,钻研图形图像、视频编解码和视频处理十几年,带领团队深耕视频编解码和处理软硬件加速、深度学习算法分析与设计,致力于让开源软件在图形图像视频市场落地,并组织团队把多年的“干货”整理成书,与视频行业的朋友们一起探讨与成长。
内容简介
序一<br />序二<br />序三<br />序四<br />前言<br />第1章OpenCV和深度学习 1<br />1.1 OpenCV处理流程 1<br />1.1.1 OpenCV库 1<br />1.1.2 OpenCV深度学习应用的典型流程 3<br />1.2 机器学习的数学视角 5<br />1.2.1 机器学习和非机器学习 5<br />1.2.2 从人工神经网络到深度学习 8<br />1.2.3 破除神秘——神经网络是如何训练的 11<br />1.3 OpenCV深度学习模块 16<br />1.3.1 主要特性 16<br />1.3.2 OpenCV DNN图像分类举例(Python) 17<br />1.4 本章小结 19<br />第2章OpenCV深度学习模块解析 20<br />2.1 深度学习模块分层架构总览 20<br />2.2 语言绑定和测试层 21<br />2.2.1 深度学习模块的Python语言绑定 21<br />2.2.2 深度学习模块的正确性测试和性能测试 23<br />2.3 API层 30<br />2.3.1 Layer 类及如何定制一个新的层类型 30<br />2.3.2 Net 类 32<br />2.3.3 常用函数 35<br />2.4 DNN引擎层 37<br />2.4.1 模型导入 37<br />2.4.2 推理引擎数据对象管理 43<br />2.4.3 推理引擎重点层解释 47<br />2.4.4 层的合并优化 62<br />2.5 引擎加速层 66<br />2.5.1 深度学习模块支持的运算目标设备 67<br />2.5.2 深度学习模块支持的加速后端 68<br />2.5.3 加速方式的选择 69<br />2.6 本章小结 70<br />第3章并行计算与GPU架构 71<br />3.1 并行计算浅谈 71<br />3.2 Intel GPU架构及其在并行计算中的应用 74<br />3.2.1 Intel GPU的计算架构 74<br />3.2.2 两种不同的SIMD使用思路——AOS和SOA 82<br />3.2.3 cl_intel_subgroups 在 Intel GPU 上的参考实现 89<br />3.3 本章小结 100<br />第4章基于Vulkan的加速实现 101<br />4.1 初识Vulkan 101<br />4.2 使用Vulkan加速 102<br />4.3 Vulkan后端加速过程解析 104<br />4.3.1 数据对象初始化 105<br />4.3.2 后端运算节点初始化 108<br />4.3.3 调用后端运算节点进行前向运算 111<br />4.3.4 Vulkan后端库 113<br />4.4 本章小结 119<br />第5章基于OpenCL的加速实现 120<br />5.1 OpenCL简介 120<br />5.2 如何使用OpenCL加速 125<br />5.3 OpenCL加速详解 128<br />5.3.1 OpenCL API封装 129<br />5.3.2 DNN模块的卷积层实现详解 132<br />5.3.3 ocl4dnn库的卷积运算类详解 134<br />5.3.4 卷积核函数auto-tuning机制解析 138<br />5.4 本章小结 143<br />第6章CPU及第三方库加速的实现 144<br />6.1 原生CPU加速实现 144<br />6.1.1 基于多线程技术的加速 147<br />6.1.2 基于并行指令的加速 153<br />6.2 Halide后端的实现 157<br />6.2.1 Halide介绍 158<br />6.2.2 如何启用Halide 163<br />6.2.3 Halide后端的实现原理 165<br />6.3 Intel推理引擎后端的实现 171<br />6.3.1 Intel推理引擎介绍 171<br />6.3.2 如何启用推理引擎后端 172<br />6.3.3 Intel推理引擎后端的实现原理 176<br />6.4 本章小结 185<br />第7章可视化工具与性能优化 186<br />7.1 Netscope:基于Web的Caffe网络可视化工具 186<br />7.2 TensorBoard:助力TensorFlow程序的理解和调试 188<br />7.2.1 图的可视化 188<br />7.2.2 数据的可视化 191<br />7.2.3 调试的可视化 197<br />7.3 VTune:Intel 平台的性能调优 199<br />7.3.1 系统性能查看工具 200<br />7.3.2 Intel VTune 功能介绍 202<br />7.3.3 VTune 程序性能优化实例 211<br />7.4 程序优化流程总结和建议 213<br />7.5 本章小结 215<br />第8章支付级人脸识别项目开发实战 216<br />8.1 活体检测的概念与方法 216<br />8.2 支付级人脸识别项目流程 218<br />8.3 基于OpenCV的支付级人脸识别项目具体实现 220<br />8.3.1 数据准备 222<br />8.3.2 活体检测模型训练 230<br />8.3.3 支付级人脸识别系统实现 238<br />8.4 本章小结 244<br />第9章深度学习模块不同场景下的应用实践 245<br />9.1 图像分类 245<br />9.1.1 图像分类经典网络结构 245<br />9.1.2 GoogLeNet 247<br />9.1.3 图像分类程序源码分析 249<br />9.1.4 图像分类程序运行结果 255<br />9.2 目标检测 256<br />9.2.1 SSD算法解析 256<br />9.2.2 目标检测程序源码分析 257<br />9.2.3 目标检测程序运行结果 260<br />9.3 语义分割 261<br />9.3.1 FCN模型 262<br />9.3.2 语义分割程序源码分析 263<br />9.3.3 语义分割程序运行结果 267<br />9.4 视觉风格变换 268<br />9.4.1 视觉风格变换模型 268<br />9.4.2 视觉风格变换程序源码分析 269<br />9.4.3 视觉风格变换程序运行结果 271<br />9.5 本章小结 273<br />附录AOpenCV的编译安装及patch开发流程 274<br />附录Bintel_gpu_frequency工具的安装和使用 280
猜你喜欢
-
[美] David A.Patterson
-
马翀炜
-
廖延彪
-
Hugh Taylor
-
菲利普·钟和顺
-
-
印建坤
-
童诗白
-
罗有明
-
郭书瑶 编
大家都喜欢
-
蔡崇达
-
文聘元
-
莫言
-
蔡崇达
-
[丹]安娜·艾克博
-
胡成
-
凯瑟琳·麦考利夫
-
凯茜·霍姆斯
-
常青
-
胡学文