新書推薦:
《
古典的回響:溪客舊廬藏明清文人繪畫
》
售價:HK$
437.8
《
根源、制度和秩序:从老子到黄老学(王中江著作系列)
》
售價:HK$
121.0
《
索恩丛书·北宋政治与保守主义:司马光的从政与思想(1019~1086)
》
售價:HK$
75.9
《
掌故家的心事
》
售價:HK$
85.8
《
农为邦本——农业历史与传统中国
》
售價:HK$
74.8
《
郊庙之外:隋唐国家祭祀与宗教 增订版 (三联·哈佛燕京学术丛书)
》
售價:HK$
105.6
《
小麦文明:“黄金石油”争夺战
》
售價:HK$
97.9
《
悬壶杂记全集:老中医多年临证经验总结(套装3册) 中医医案诊疗思路和处方药应用
》
售價:HK$
135.1
|
編輯推薦: |
本书是OpenCV开发人员的必读指南,手把手教你使用OpenCV和CUDA实现GPU加速的计算机视觉项目开发,帮你快速掌握利用GPU实时处理复杂图像数据的高效技术。
全书共11章,第1章介绍CUDA架构及应用;第2章介绍如何使用CUDA为GPU编写程序;第3章介绍如何从CUDA程序中调用线程,以及多个线程如何相互通信;第4章介绍CUDA streams和CUDA events等高级概念;第5章介绍在所有操作系统中安装支持CUDA的OpenCV库;第6章讲解如何使用OpenCV编写基本的计算机视觉操作,如像素级的图像操作、过滤和形态学操作;第7章介绍使用OpenCV和CUDA加速一些实际计算机视觉应用程序的步骤;第8章介绍如何在Jetson Tx1嵌入式平台上安装OpenCV;第9章介绍如何在Jetson TX1上部署计算机视觉应用程序 ;第10章介绍PyCUDA;第11章讲解如何使用PyCUDA编写程序。
|
內容簡介: |
本书提供了OpenCV与CUDA集成以实现实际应用的详细概述。首先介绍使用CUDA进行GPU编程的基础知识。然后,通过一些实际的例子讲解如何利用GPU和CUDA实现OpenCV加速。一旦掌握了核心概念,读者将熟悉如何在NVIDIA Jetson TX1上部署OpenCV应用程序,该应用程序在计算机视觉和深度学习应用程序中非常流行。本书的*后几章解释了PyCUDA,这是一个Python库,它利用CUDA和GPU的强大功能来加速。在本书的*后,读者将通过本书的实践方法增强计算机视觉应用程序。
|
關於作者: |
包米克·维迪雅(Bhaumik Vaidya)是一位经验丰富的计算机视觉工程师和导师。他在OpenCV库,尤其是解决觉计算机视觉问题方面做了大量工作。他是大学硕士项目的金牌得主,目前正在攻读计算机视觉算法加速方面的博士学位。他指导了许多计算机视觉和超大规模集成VLSI方面的项目。他曾在VLSI领域做过ASIC验证工程师,对硬件架构也有很好的了解。他在声誉良好的期刊上发表了许多研究论文。他和他的博士导师还获得了英伟达Jetson TX1嵌入式开发平台的研究资助。
|
目錄:
|
前言
作者简介
审稿人简介
第1章 CUDA介绍及入门1
1.1 技术要求1
1.2 CUDA介绍1
1.2.1 并行处理2
1.2.2 GPU架构和CUDA介绍2
1.2.3 CUDA架构3
1.3 CUDA应用程序4
1.4 CUDA开发环境5
1.4.1 支持CUDA的GPU5
1.4.2 CUDA开发工具包6
1.5 在所有操作系统上安装CUDA工具包6
1.5.1 Windows6
1.5.2 Linux7
1.5.3 Mac8
1.6 一个基本的CUDA C程序9
1.6.1 在Windows上创建CUDA C程序的步骤10
1.6.2 在Ubuntu上创建CUDA C程序的步骤10
1.7 总结11
1.8 测验题11
第2章 使用CUDA C进行并行编程12
2.1 技术要求12
2.2 CUDA程序结构13
2.2.1 CUDA C中的双变量加法程序13
2.2.2 内核调用14
2.2.3 配置内核参数15
2.2.4 CUDA API函数16
2.2.5 将参数传递给CUDA函数17
2.3 在设备上执行线程19
2.4 在CUDA程序中获取GPU设备属性20
2.4.1 通用设备信息21
2.4.2 内存相关属性22
2.4.3 线程相关属性22
2.5 CUDA中的向量运算24
2.5.1 两个向量加法程序24
2.5.2 对比CPU代码和GPU代码的延迟27
2.5.3 对向量的每个元素进行平方28
2.6 并行通信模式29
2.6.1 映射29
2.6.2 收集29
2.6.3 分散式30
2.6.4 蒙板30
2.6.5 转置30
2.7 总结30
2.8 测验题31
第3章 线程、同步和存储器32
3.1 技术要求32
3.2 线程33
3.3 存储器架构36
3.3.1 全局内存37
3.3.2 本地内存和寄存器堆38
3.3.3 高速缓冲存储器39
3.4 线程同步39
3.4.1 共享内存39
3.4.2 原子操作42
3.5 常量内存46
3.6 纹理内存48
3.7 向量点乘和矩阵乘法实例50
3.7.1 向量点乘50
3.7.2 矩阵乘法54
3.8 总结58
3.9 测验题58
第4章 CUDA中的高级概念60
4.1 技术要求60
4.2 测量CUDA程序的性能61
4.2.1 CUDA事件61
4.2.2 NVIDIA Visual Profiler63
4.3 CUDA中的错误处理64
4.3.1 从代码中进行错误处理65
4.3.2 调试工具66
4.4 CUDA程序性能的提升66
4.4.1 使用适当的块数量和线程数量66
4.4.2 最大化数学运算效率67
4.4.3 使用合并的或跨步式的访存67
4.4.4 避免warp内分支67
4.4.5 使用锁定页面的内存68
4.5 CUDA流69
4.6 使用CUDA加速排序算法73
4.7 利用CUDA进行图像处理75
4.8 总结80
4.9 测验题81
第5章 支持CUDA的OpenCV入门82
5.1 技术要求82
5.2 图像处理和计算机视觉简介83
5.3 OpenCV简介83
5.4 安装支持CUDA的OpenCV84
5.4.1 在Windows上安装OpenCV84
5.4.2 在Linux上安装OpenCV89
5.5 使用OpenCV处理图像92
5.5.1 OpenCV中的图像表示92
5.5.2 图像的读取和显示93
5.5.3 使用OpenCV创建图像96
5.5.4 将图像保存到文件99
5.6 使用OpenCV处理视频99
5.6.1 处理存储在计算机上的视频100
5.6.2 处理从网络摄像机读取的视频101
5.6.3 将视频保存到磁盘102
5.7 使用OpenCV CUDA模块的基本计算机视觉应用程序104
5.7.1 OpenCV CUDA模块简介104
5.7.2 对图像的算术和逻辑运算104
5.7.3 更改图像的颜色空间108
5.7.4 图像阈值处理109
5.8 OpenCV应用程序使用和不使用CUDA支持的性能比较110
5.9 总结113
5.10 测验题114
第6章 使用OpenCV和CUDA进行基本的计算机视觉操作115
6.1 技术要求115
6.2 访问图像的各个像素强度116
6.3 OpenCV中直方图的计算和均衡117
6.4 图像的几何变换120
6.4.1 图像大小调整120
6.4.2 图像平移与旋转121
6.5 对图像进行滤波操作122
6.5.1 对图像的卷积运算122
6.5.2 对图像进行低通滤波操作123
6.5.3 对图像进行高通滤波操作128
6.6 图像的形态学操作131
6.7 总结134
6.8 测验题134
第7章 使用OpenCV和CUDA进行对象检测和跟踪135
7.1 技术要求135
7.2 对象检测和跟踪简介136
7.2.1 对象检测和跟踪的应用136
7.2.2 对象检测中的挑战136
7.3 基于颜色的对象检测和跟踪136
7.4 基于形状的对象检测和跟踪139
7.4.1 Canny边缘检测139
7.4.2 使用Hough变换进行直线检测140
7.4.3 对圆形进行检测143
7.5 关键点检测器和描述符144
7.5.1 加速段测试特征功能检测器144
7.5.2 面向FAST和旋转BRIEF的特征检测145
7.5.3 加速强特征检测和匹配147
7.6 使用Haar级联的对象检测150
7.6.1 使用Haar级联进行人脸检测151
7.6.2 使用Haar级联进行眼睛检测153
7.7 使用背景减法进行对象跟踪155
7.7.1 高斯混合法155
7.7.2 GMG背景减法157
7.8 总结159
7.9 测验题160
第8章 Jetson TX1开发套件161
8.1 技术要求161
8.2 Jetson TX1简介161
8.2.1 Jetson TX1的重要特性163
8.2.2 Jetson TX1的应用163
8.3 在Jetson TX1上安装JetPack163
8.3.1 安装的基本要求164
8.3.2 安装的步骤164
8.4 总结171
8.5 测验题171
第9章 在Jetson TX1上部署计算机视觉应用程序172
9.1 技术要求172
9.2 Jetson TX1 GPU的设备属性173
9.3 Jetson TX1上的基本CUDA程序174
9.4 Jetson TX1上的图像处理176
9.4.1 编译支持CUDA的OpenCV176
9.4.2 读取和显示图像178
9.4.3 图像合成178
9.4.4 图像阈值处理180
9.4.5 Jetson TX1上的图像滤波182
9.5 Jetson TX1的摄像机接口184
9.6 Jetson TX1上的高级应用程序185
9.6.1 使用Haar级联进行人脸检测185
9.6.2 使用Haar级联进行眼睛检测187
9.6.3 高斯混合背景减法188
9.7 在Jetson TX1上使用Python和OpenCV实现计算机视觉191
9.8 总结192
9.9 测验题193
第10章 PyCUDA入门194
10.1 技术要求194
10.2 Python编程语言简介194
10.3 PyCUDA模块简介195
10.4 在Windows上安装PyCUDA196
10.5 在Ubuntu上安装PyCUDA199
10.6 总结201
10.7 测验题201
第11章 使用PyCUDA202
11.1 技术要求202
11.2 编写第一个PyCUDA程序203
11.3 从PyCUDA程序访问GPU设备属性204
11.4 在PyCUDA中执行线程和块206
11.5 PyCUDA中的基本编程概念206
11.5.1 在PyCUDA中两个数字相加207
11.5.2 使用driver类简化加法程序208
11.6 使用CUDA事件测量PyCUDA程序的性能209
11.6.1 CUDA事件209
11.6.2 使用大型数组加法测量PyCUDA的性能210
11.7 PyCUDA中的复杂程序212
11.7.1 对PyCUDA中的矩阵元素进行平方运算212
11.7.2 GPU数组点乘215
11.7.3 矩阵乘法217
11.8 PyCUDA的高级内核函数219
11.8.1 PyCUDA的元素级内核函数219
11.8.2 归约内核函数220
11.8.3 scan内核函数221
11.9 总结222
11.10 测验题223
第12章 使用PyCUDA的基本计算机视觉应用程序224
12.1 技术要求224
12.2 PyCUDA中的直方图计算224
12.2.1 使用原子操作225
12.2.2 使用共享内存227
12.3 使用PyCUDA进行基本的计算机视觉操作229
12.3.1 PyCUDA中的颜色空间转换230
12.3.2 在PyCUDA执行图像合成233
12.3.3 在PyCUDA中使用gpuarray进行图像反转234
12.4 总结235
12.5 测验题235
测验题答案236
|
內容試閱:
|
计算机视觉正在给许多行业带来革命性的变化,OpenCV是使用最广泛的计算机视觉工具之一,能够在多种编程语言中工作。目前,需要在计算机视觉中实时处理较大的图像,而单凭OpenCV是难以做到的。在这方面图形处理器(GPU)和CUDA可以提供帮助。因此,本书提供了一个将OpenCV与CUDA集成的实际应用的详细概述。本书首先解释了用CUDA对GPU编程,这对于从未使用过GPU的计算机视觉开发人员来说是必不可少的。然后通过一些实例说明了如何用GPU和CUDA对OpenCV进行加速。当要在现实生活场景中使用计算机视觉应用程序时,需要将其部署在嵌入式开发板上,本书涵盖了如何在NVIDIA Jetson TX1上部署OpenCV应用程序,这是非常流行的计算机视觉和深度学习应用程序。本书的最后一部分介绍了PyCUDA,结合Python使用OpenCV的计算机视觉开发人员会使用它。PyCUDA是一个Python库,它利用CUDA和GPU的功能来加速。本书为在C++或Python中使用OpenCV的开发人员提供了一个完整的指南,帮助他们通过亲身体验来加速计算机视觉应用程序。
本书的读者对象
对于想学习如何利用GPU处理更复杂的图像数据的OpenCV开发人员,本书是必读指南。大多数计算机视觉工程师或开发人员在试图实时处理复杂的图像数据时都会遇到问题。这就需要使用GPU进行计算机视觉算法的加速,而这有助于人们开发能够实时处理复杂图像数据的算法。大多数人认为硬件加速只能通过FPGA和ASIC设计来实现,为此,他们需要Verilog或VHDL等硬件描述语言的知识。然而,只在CUDA出现之前情况才如此。CUDA利用了NVIDIA GPU的强大功能,可以使用支持CUDA的C++和Python等编程语言来加速算法。本书将通过开发实际应用程序来帮助这些开发人员了解这些概念并在嵌入式平台上部署计算机视觉应用程序,如NVIDIA Jetson TX1。
本书的主要内容
第1章介绍了CUDA架构以及它如何重新定义GPU的并行处理能力,讨论了CUDA架构在实际场景中的应用,介绍了CUDA的开发环境,以及如何在所有操作系统上安装CUDA。
第2章教读者使用CUDA为GPU编写程序。从一个简单的Hello World程序开始,逐步用CUDA C构建复杂示例。该章还介绍了内核如何工作以及如何使用设备属性,并讨论了与CUDA编程相关的术语。
第3章向读者介绍了如何从CUDA程序中调用线程,多个线程如何相互通信,多个线程并行工作时如何同步,以及常量内存和纹理内存。
第4章包括CUDA流和CUDA事件等高级概念,描述了如何使用CUDA加速排序算法,并研究了使用CUDA加速简单图像处理功能。
第5章描述了在所有操作系统中安装支持CUDA的OpenCV库,解释了如何使用一个简单的程序来测试这个安装,比较了使用和不使用CUDA支持执行的图像处理程序的性能。
第6章教读者如何使用OpenCV开发基本的计算机视觉操作应用程序,如像素级的图像操作、滤波和形态学操作。
第7章介绍了使用OpenCV和CUDA加速一些实际计算机视觉应用程序的步骤,描述了用于对象检测的特征检测和描述算法。该章还介绍了基于Haar级联和视频分析技术的人脸检测加速,如用于对象跟踪的背景减法。
第8章介绍了Jetson TX1嵌入式平台以及如何使用它来加速和部署计算机视觉应用程序,还介绍了在Jetson TX1上使用JetPack安装文件安装OpenCV for Tegra的过程。
第9章包括在Jetson TX1上部署计算机视觉应用程序,介绍了如何构建不同的计算机视觉应用程序,以及如何将摄像机与Jetson TX1连接用于视频处理应用程序。
第10章介绍了PyCUDA,这是一个用于GPU加速的Python库。该章描述了在所有操作系统上的安装过程。
第11章教读者如何使用PyCUDA编写程序,其中详细描述了从主机到设备的数据传输和内核执行的概念,涵盖了如何在PyCUDA中使用数组和开发复杂的算法。
第12章介绍了使用PyCUDA的基本计算机视觉应用的开发和加速,描述了颜色空间转换操作、直方图计算和不同的算术操作作为计算机视觉应用的例子。
充分利用本书
本书介绍的示例可以在Windows、Linux和macOS上运行,书中涵盖了所有的安装说明。读者最好对计算机视觉概念和编程语言(如C++和Python)有全面了解,最好用NVIDIA GPU硬件来执行书中介绍的示例。
下载示例代码及彩色图像
本书的示例代码及所有截图和样图,可以从http:www.packtpub.com通过个人账号下载,也可以访问华章图书官网http:www.hzbook.com,通过注册并登录个人账号下载。
|
|