| 作者 |
| 吴至文 郭叶军 宗炜 李鹏 赵娟 罗伊·希尔克罗特 大卫·米兰·埃斯克里瓦 |
| 丛书名 |
| 智能系统与技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9782007011054 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------OpenCV深度学习应用与性能优化实践--------------------------- 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:实用计算机视觉项目解析(原书第3版)--------------------------- 本书第3版仍然坚持“帮助计算机视觉工程师迈出掌握OpenCV的第一步”的初心。本书简化数学公式,但保留了重要的数学公式。针对当前热门的计算机视觉主题,如人脸及特征点检测、姿态估计,以及基于深度卷积网络的车牌识别,展示了从构思到运行的全过程,并提供了完整的项目代码。新版本加入“为项目找到最佳OpenCV算法”、“避免OpenCV中的常见陷阱”两个章节帮助程序员从成百上千的API中进行需求权衡、设计、技术选型、优化和避免陷阱。 |
| 目录 |
---------------------------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 ---------------------------深入理解OpenCV:实用计算机视觉项目解析(原书第3版)--------------------------- 译者序 前言 作者简介 审阅者简介 第1章 树莓派上的卡通化和皮肤颜色分析 1 1.1 访问摄像头 2 1.2 桌面应用程序的相机处理主循环 4 1.2.1 生成黑白素描 4 1.2.2 生成彩色绘画和卡通 6 1.2.3 用边缘滤波器来生成邪恶模式 8 1.2.4 用皮肤检测来生成外星人造型 9 1.3 皮肤变色器的实现 12 1.4 从桌面移植到嵌入式设备 19 1.4.1 用于开发嵌入式设备代码的设备配置 21 1.4.2 在嵌入式设备上安装OpenCV 27 1.5 小结 39 第2章 使用SfM模块从运动中恢复结构 40 2.1 技术要求 40 2.2 SfM的核心概念 41 2.2.1 相机标定和对极几何 42 2.2.2 立体重建和SfM 45 2.3 在OpenCV中实现SfM 48 2.3.1 图像特征匹配 48 2.3.2 找到特征轨迹 52 2.3.3 3D重建和可视化 55 2.3.4 用于稠密重建的MVS 57 2.4 小结 60 第3章 使用人脸模块进行人脸特征点及姿态检测 61 3.1 技术要求 61 3.2 背景和理论 63 3.2.1 主动外观模型与受约束的局部模型 63 3.2.2 回归方法 64 3.3 OpenCV中的人脸特征点检测 65 3.4 基于特征点的人脸方向估计 68 3.4.1 估计姿态计算 69 3.4.2 将姿态投影到图像上 70 3.5 小结 71 第4章 基于深度卷积网络的车牌识别 72 4.1 ANPR简介 72 4.2 ANPR算法 74 4.3 车牌检测 77 4.3.1 分割 78 4.3.2 分类 84 4.4 车牌识别 87 4.4.1 OCR分割 88 4.4.2 基于卷积神经网络的字符分类 89 4.5 小结 105 第5章 通过DNN模块进行人脸检测和识别 106 5.1 介绍人脸检测和人脸识别 106 5.1.1 人脸检测 108 5.1.2 人脸预处理 116 5.1.3 收集人脸并从中学习 127 5.1.4 人脸识别 138 5.1.5 收尾工作——保存和加载文件 141 5.1.6 收尾工作——制作一个漂亮的、交互体验好的GUI 141 5.2 小结 153 5.3 参考文献 154 第6章 Web计算机视觉之初识OpenCV.js 155 6.1 什么是OpenCV.js 155 6.2 编译OpenCV.js 157 6.3 OpenCV.js开发基础 159 6.4 访问摄像头流 165 6.5 图像处理和基本用户界面 169 6.5.1 阈值滤波器 170 6.5.2 高斯滤波器 170 6.5.3 canny滤波器 170 6.6 浏览器中的光流 174 6.7 在浏览器中使用Haar级联分类器进行人脸检测 178 6.8 小结 180 第7章 使用ArUco模块的Android相机校准和AR 182 7.1 技术要求 182 7.2 增强现实和姿态估计 183 7.2.1 相机校准 184 7.2.2 用于平面重建的增强现实标记 186 7.3 Android系统中的相机访问 188 7.4 使用ArUco进行相机校准 191 7.5 使用jMonkeyEngine实现增强现实 195 7.6 小结 196 第8章 带有拼接模块的iOS全景图 198 8.1 技术要求 198 8.2 全景图像拼接方法 199 8.2.1 全景图的特征提取和鲁棒匹配 200 8.2.2 变形图像,以便全景创建 203 8.3 项目概况 204 8.4 用CocoaPods设置iOS OpenCV项目 204 8.5 用于全景捕捉的iOS UI 205 8.6 Objective-C++包装器中的OpenCV拼接 209 8.7 小结 212 8.8 进一步阅读 212 第9章 为项目找到最佳OpenCV算法 213 9.1 技术要求 213 9.2 方案是否包含在OpenCV中 214 9.3 OpenCV中的算法选项 215 9.4 哪种算法最好 217 9.5 算法性能比较的示例 218 9.6 小结 223 第10章 避免OpenCV中的常见陷阱 224 10.1 OpenCV从v1到v4的历史 224 10.2 OpenCV中的历史算法 228 10.3 常见陷阱和建议解决方案 231 10.4 小结 236 10.5 进一步阅读 236 |