基于GPU的并行计算研究及在三维重建中的应用

更新时间:2023-05-16 05:16:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

U P G基于 的并行计算研究及在三维重建中的应用 郑晓亮 武汉理工大学(申请工学硕士学位论文)基于 GPU 的并行计算研究 及在三维重建中的应用培 养 单 位 :计算机科学与技术学院 学 科 专 业 :计算机科学与技术 研 究 生 :郑晓亮 指导教师 :邹承明 教授2012 年 5 月

分类号 UDC密级 学校代码 10497学题 目位论文基于 GPU 的并行计算研究及在三维重建中的应用 Parallel computing research based on GPU and the application in 3D reconstruction 郑晓亮 姓名 邹承明 职称 教授 学位 邮 编 硕士 430070英 文 题 目 研究生姓名 指导教师单位名称 计算机科学与技术学院 硕 士 2012 年 5 月 武汉理工大学 钟珞 学科专业名称申请学位级别 论文提交日期 学位授予单位 答辩委员会主席计算机科学与技术 2012 年 5 月 2论文答辩日期 学位授予日期 评阅人 钟珞 饶文碧22012 年 5 月

独 创 性 声 明本人声明, 所呈交的论文是我个人在导师指导下进行的研究工作 及取得的研究成果。 尽我所知, 除了文中特别加以标注和致谢的地方 外, 论文中不包含其他人已经发表或撰写过的研究成果, 也不包含为 获得武汉理工大学或其它教育机构的学位或证书而使用过的材料。 与 我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确 的说明并表示了谢意。签 名:日 期:1学位论文使用授权书本人完全了解武汉理工大学有关保留、 使用学位论文的规定, 即: 学校有权保留并向国家有关部门或机构送交论文的复印件和电子版, 允许论文被查阅和借阅。 本人授权武汉理工大学可以将本学位论文的 全部内容编入有关数据库进行检索, 可以采用影印、 缩印或其他复制 手段保存或汇编本学位论文。 同时授权经武汉理工大学认可的国家有 关机构或论文数据库使用或收录本学位论文, 并向社会公众提供信息 服务。 (保密的论文在解密后应遵守此规定) 研究生(签名): 导师(签名): 日期:

摘要随着信息技术的迅猛发展以及计算机性能的逐步提高,人们对于计算机的 要求也越来越高,处理器也朝着专用化和通用化两个方向发展。在科学计算等 领域,随着研究内容的扩展和算法复杂度的提高,人们对计算的资源和耗时都 提出了更高的要求,给相关领域的研究带来很大的挑战。此时,作为高性能计 算的图形处理器 GPU 应运而生,并由 NVIDIA 公司于 2007 年推出统一计算设 备架构 CUDA,能充分利用 GPU 强大的并行计算能力和存储器带宽,为科学研 究带来了很大的方便。另一方面,三维重建一直是计算机科学领域当中一个非 常活跃的课题,凭借其在计算机视觉和计算机图形学、以及三维动画等领域中 广泛和深入的研究,已经成为了近几年来国际上的研究热点。其中,人脸是情 感表达和身份识别的重要载体,因而凭借其特有的普遍性和易用性成为众多专 家学者进行三维建模的研究对象。 本文首先介绍了 GPU 体系结构的演变和 CUDA 编程的相关理论知识,对 CPU 架构和 GPU 架构的不同进行了讨论,对 CUDA 的编程模式和 CUDA 的存 储模型进行了简单分析,随后介绍了 GPU 并行计算在三维重建中的两个重要应 用。接着对三维重建的过程进行了详细分析,通过对目前现存的主流特征点检 测算法的研究, 以人脸为研究对象, 提出了基于 ASM 模型的三维人脸重建算法。 通过对当前存在的各种网格细化方式的分析,本文采用了 LOOP 网格细化方法 对初步形成的三维人脸进行了改进,通过细化,将原本非常粗略的网格细化为 辨识度较高并且比较接近真实模型的网格。最后在 LOOP 细化的基础上,对在 CUDA 平台上实现三维人脸重建的可行性进行了分析。 在经过验证后,本文设计了基于 CUDA 平台的 LOOP 细化算法,并对实验 结果进行了分析和研究。实验结果表明,在计算量不是很大的情况下,单独用 CPU 开发和在 CUDA 平台上开发的效率相差不大,而随着细化的次数增加,对 计算量的要求越来越大,GPU 强大的并行处理能力开始得到体现,细化次数越 多,GPU 的加速比越大。 关键词: GPU 并行计算, CUDA,三维重建 ,ASM,LOOP 细化I

AbstractWith the rapid development of information technology and the improvement of computer performance, people’s requirements for computer are higher and higher, at the same time, the processor is also developed toward two directions of specialty and generalization. In the scientific computing field, with the expansion of the research content and the improvement of algorithm complexity, people put forward higher request on the computing resources and consuming time which bring large challenges for the research in the related field. At this time, the graphic processor GPU arises at the historic moment for computing with high performance. In the year of 2007, NVIDIA Company released Compute Unified Device Architecture (CUDA) which can make full use of GPU’s strong parallel computing and powerful memory bandwidth to bring great convenience for scientific research. On the other hand, 3D reconstruction is a very active subject in the field of computer science , with its wide and deep research in the fields of computer vision , computer graphics and the three dimensional animation , it has become a hot spot in the international research in recent years. This paper first introduces the evolution of GPU system structure and the related theory of knowledge about CUDA programming, discusses the difference of CPU architecture and GPU structure and gives a simple analysis on CUDA programming model and CUDA storage model,and also r introduces two important applications with the parallel computing on GPU in 3D reconstruction. Then the paper gives a detailed analysis on the process of 3D reconstruction, through the research of the existing mainstream feature point detection algorithm, it puts forward a 3D face reconstruction algorithm on the ASM model to face as the research object. Based on the analysis of the current existence of various mesh refinement methods, the paper adopts LOOP mesh refinement method to improve the quality of the initial formation of the 3D face, through refining, it changes the original rough mesh to a closer true model grid with a higher identification. Finally, the paper analysis the feasibility of achieving 3D face reconstruction on CUDA platform based on LOOP refinement,. After verification, this paper introduces the design of LOOP refining algorithm based on CUDA platform and the experimental results are analyzed and studied. TheII

experimental results show that, there is little difference on the efficiency of CPU computing and GPU computing with not large calculation, but with more refinement, the requirements of the amount of calculation are larger and larger, the strong parallel processing ability of GPU began to be reflected, and the more refinement ,the greater acceleration of GPU will be. Keywords: GPU parallel computing,CUDA,3D reconstruction,ASM,LOOP refiningIII

目摘录要 ................................................................................................................... I ABSTRACT ......................................................................................................... II  第1章 绪论 ........................................................................................................1 1.1  研究背景及选题意义 ...............................................................................1  1.2 国内外研究现状及发展趋势 ......................................................................3  1.2.1 国内外研究现状...................................................................................3  1.3 本文的主要研究内容与组织结构 ..............................................................7  第2章 GPU 并行计算理论基础 .......................................................................9 2.1 引言 ..............................................................................................................9  2.2 GPU 体系结构 ............................................................................................10  2.3 CUDA 编程概述 ........................................................................................13  2.3.1 CUDA 简介 .........................................................................................13  2.3.2 CUDA 编程模型 .................................................................................13  2.3.3 CUDA 存储模型 .................................................................................15  2.3.4 CUDA API 和 CUDA C/C++语言......................................................15  2.3.5 nvcc 编译器 .........................................................................................16  2.4 本章小结 ....................................................................................................17  第3章 三维重建理论基础 ..............................................................................18 3.1 引言 ............................................................................................................18  3.2 人脸特征形状研究 ....................................................................................18  3.2.1 人脸构造及其特征.............................................................................18  3.2.2 人脸特征点研究与标定.....................................................................19  3.2.3 人脸拓扑结构.....................................................................................20  3.3 主动形状模型 ASM ..................................................................................21  3.3.1 ASM 简介 ............................................................................................21  3.3.2 ASM 算法 ............................................................................................21  3.4 三维人脸数据的表示方法.........................................................................26 i

3.5 人脸特征点提取 ........................................................................................27  3.5.1 人脸特征点提取思路.........................................................................27  3.5.2 正面人脸特征点提取.........................................................................27  3.5.3 侧面人脸特征点提取.........................................................................28  3.6 人脸模型重建 ............................................................................................28  3.6.1 建立人脸三角网格.............................................................................28  3.6.2 实验过程分析.....................................................................................29  3.6 小结 ............................................................................................................31  第 4 章 基于 LOOP 细化模式的三维人脸重建 ...............................................32  4.1 引言 ............................................................................................................32  4.2 网格细化方法概述 ....................................................................................32  4.3 改进的 BUTTERFLY 细化模式 ...................................................................34  4.3.1 改进的 Butterfly 细化规则 ................................................................34  4.3.2 改进的 Butterfly 细化流程 ................................................................35  4.43 细化模式 .............................................................................................35  4.4.1 3 细化规则 ......................................................................................35  4.4.2 3 细化流程 ......................................................................................36 4.5 LOOP 细化模式 .........................................................................................37  4.5.1 Loop 细化的数学基础 ........................................................................37  4.5.2 4.5.3 LOOP 细化规则 ...............................................................................37  LOOP 细化流程 ...............................................................................40 4.6 实验结果分析 ............................................................................................41  4.7 小结 ............................................................................................................42  第 5 章 基于 CUDA 的 LOOP 细化算法设计与实现 .....................................43  5.1 引言 ............................................................................................................43  5.2 算法的可行性分析 ....................................................................................43  5.3 算法设计与实现 ........................................................................................44  5.3.1 算法设计步骤.....................................................................................44  5.3.2 算法流程图.........................................................................................45  5.3.3 算法的实现.........................................................................................47 ii

5.4 测试结果与分析 ........................................................................................49  5.4.1 实验方法与环境.................................................................................49  5.4.2 实验结果与分析.................................................................................50  5.5 小结 ............................................................................................................53  第6章 结论 ......................................................................................................54 6.1 论文总结 ....................................................................................................54  6.2 工作展望 ....................................................................................................55  参考文献...............................................................................................................56  致 谢.....................................................................................................................59 iii

武汉理工大学硕士学位论文第1章1.1 研究背景及选题意义绪论由于计算机性能的不断提高,使得其应用范围越来越广泛,计算任务和需 求也在快速增长,因而决定了处理器朝着通用化和专用化两个方向飞速发展。 首先,以 CPU 为代表的通用处理器是现代计算机的硬件核心,随着多次部件的 换代,不仅集成度显著提高,性能和功用也大为改善。同时,处理器在视频、 图像和音频处理等一些特定领域的专用化程度也越来越高,并出现了相应的专 用处理器,如 VPU、GPU、APU 等[1]。 计算机图形处理器(graphics processing unit,简称 GPU) 似乎在一夜之间成 为一个十分热门的话题,但更让人们意想不到的是,在计算机图形处理器以超 过摩尔定律的速度发展的进程中,很少有人重视这一重大应用。而到现在,由 于 GPU 具备了极高的性能,同时兼具雄厚的技术、工业和应用基础,使得人们 对 GPU 的应用前景寄予了前所未有的期望和热情。近年来,受游戏市场和视景 仿真需求的牵引,GPU 明显的提高了计算机图形处理的质量和速度[2],逐步开 始从图像处理、虚拟现实、计算机仿真等图形处理领域拓展到通用计算领域, 并由传统的多流水线体系结构发展到如今的众核、多线程、高度并行化的体系 结构[3],为人们利用 GPU 进行通用计算提供了良好的运行平台 。 今天的 GPU 逐渐开始走向成熟,同期的 CPU 与主流 GPU 的单精度浮点处 理能力和外部存储器带宽不可同日而语,而且 GPU 已经从以往的固定流水线操 作模式发展成可编程流水线模式[4],同时在晶体管的规模、时钟频率、并行度和 带宽等指标上有了很大的提高,像素运算甚至使得利用 GPU 来进行通用计算成 为可能,包括利用 GPU 来实现矢量、矩阵的基本代数运算及在此基础上的一些 相对复杂的应用问题的求解[5]。 GPU 和 CPU 的浮点计算能力差异的主要原因是: GPU 是特别为计算密集,高并行度计算(比如图像渲染)设计的,因此将更多 的晶体管用于数据处理而不是数据缓存和流程控制, GPU 与 CPU 的晶体管结构 如图 1-1 所示:1

武汉理工大学硕士学位论文图 1-1 GPU 与 CPU 晶体管对比 目前,尽管 CPU 及其相关硬件的性能越来越高,但还是不能满足某些行业 超大规模计算的要求,除此之外,高性能硬件的价格一般都比较昂贵,那些需 要大规模计算行业的发展因而受到了阻碍。而另一方面,GPU 本身就是一种多 核并行处理器,并且在处理单元的数量上远远超过 CPU。因此,随着 GPU 硬件 的快速发展,廉价易用的高性能计算必将成为计算机研究领域的一个热点方向。 三维重建(3D Reconstruction)一直是计算机视觉领域中一个非常重要的课 题,它是指根据单视图或者多视图的图像对三维物体重新建立适合计算机表示 和处理的数学模型,其本质是利用三维物体的二维投影恢复其三维信息,整个 重建的过程包括数据获取、预处理、点云拼接和特征分析等步骤[6]。近几年来, 凭借其在计算机视觉、计算机图形学和三维动画等领域中广泛和深入的研究, 三维重建已经成为了国际上的热点研究方向。另一方面,在客观世界的三维物 体中,人脸是一个比较特殊的对象,它富含各种丰富的表情,是情感表达和身 份识别的重要载体,凭借其特有的普遍性和易用性成为众多专家学者进行三维 重建的研究对象。现在,关于人脸识别与重建的研究与应用已经存在很多,通 过这些应用,人们不但可以通过人脸信息识别出某个人的身份,还可以据此推 断出人的相关情感信息。在三维人脸建模的研究中,人脸形状模型[7]重建是其中 的一个非常关键的技术,它已经应用于现实的脸部动画,三维游戏产业,电影 和特效产业等。随着虚拟现实、影视创作、游戏娱乐及可视电话等方面的发展, 该领域越来越受到人们的关注。目前,人们经常用到的三维人脸重建方法主要 有如下两种[8]:其一是根据已经知道的三维人脸信息对人脸直接开始建模,其二 是在一般人脸的模型基础上,根据图像的不同二维投影信息来重建其三维模型。 利用前者建模的方法虽然精度比较高,但随之而来的建模代价也相对较高,而2

武汉理工大学硕士学位论文利用后者不仅容易获取数据信息,方法也比较简单,最重要的是模型生成的速 度也很快。所以现在的专家和研究者们越来越乐于用一般人脸模型为基础,通 过图形的二维投影信息来重新建立其三维人脸模型。 在三维人脸重建的过程中, 我们将用到网格细化算法[9]对初始得到的图像进 行细化,以得到更加精确和辨识度更高的目标对象。随着细化次数的增加,模 型的顶点数和网格数都急剧增加,对计算量的要求也越来越大,计算机的耗时 也会急速增长,不仅不利于实验结果的精确,对计算机的性能也提出了更高的 要求。而我们知道,当前的 GPU 具有非常高的单精度浮点计算能力和可观的存 储器带宽,其双精度浮点计算能力也在不断攀升。鉴于此,利用 GPU 强大的并 行处理能力和存储器带宽,来对三维人脸重建过程中细化后的顶点和网格进行 并行计算,必将解决计算量大的问题,并且带来很高的效率。因此,本文设计 了一套基于 CUDA 的网格细化算法,并通过最终的实验,比较了基于 CUDA 的 LOOP 细化算法和基于 CPU 的 LOOP 细化算法的性能。通过分析,可以看出, CUDA 针对大规模的数据,并且在数据计算方法和对有并行特点的数据处理时 有明显优势。这种 CPU+GPU 的异构计算模式在完成三维人脸重建过程的同时, 具有较高的性价比,有利于节约能源、节约空间和降低成本。1.2 国内外研究现状及发展趋势1.2.1 国内外研究现状自 1993 年以来,GPU 的性能增长速度很快,以每年 2.8 倍的速度增长并估 计可以维持 5 年左右,现在每隔半年左右,新一代 GPU 便会诞生,并且处理速 度还会提高一倍。2007 年 NVIDIA 公司推出了基于 GPU 的统一计算设备架构 CUDA,由于 GPU 具有强大的计算能力,对于完成数据并行和计算密集型的任 务非常适合,很多计算密集型的应用程序通过 GPU 加速使其执行速度得到了无 法想象的提升,从此基于 CUDA 的 GPU 通用计算研究开始引起了广泛的关注。 在国外, 专家和学者对 GPU 通用计算的研究比较早, 研究的领域也非常多, 在相关领域也取得了明显的成效[10],表 1-1 中显示了国外 GPU 研究在相关领域 的研究工作和研究成果。3

武汉理工大学硕士学位论文表 1-1国外 GPU 发展状况研究领域 信号处理研究成果 Ujaldonl 提出了一种基于 CUDA 的二维快速小波变换方法, 在 IntelQ6700Core2Quad2.66GHz 和 TeslaC870GPU 上 进 行 了 2048x2048 和 8192x192 图像测试,GPU 的加速效果明显,分别获 得了 46 倍和 98 倍的速度提升。 美国 Elemental tehnologies 公司借助 NVIDIA 的 CUDA 技术 开发出比较成熟的民用级别的视频编码软件产品一 Badaboom,同 时也推出面向专业市场的产品一 RapiHD Aecelerator for Adobe视频与音频premiere pro,使得专业人员大大提高了工作效率。CoreCodec 公司应用 CUDA 技术,开发出高清视频解码器一 CoreAvc,它成功 利用流处理器进行解码,能够极大降低 CPU 压力,并提供良好的 兼容性。 东京大学 Takeyoshi Dohi 等利用 GeForce8800GTX 构建并行计算医疗成像平台,利用 CT 和 MRI 扫描获得的实时活体截面图数据进行测试, GPU 交付了几乎等同于 UltraSPARC 系统的三倍性能,而成本却远 远低于 UltraSRARC 系统。 Hanweck Associatesl 公司用 12 块 GPU 实时分析了美国整个金融期权市场,延迟时间不超过 10 微妙,而达到这样的速度则通常需 要至少 60 个传统的服务器。 Govindaraju NK 等在 Intel QX9650 3.0GHz CPU 上分别配置科学计算8800GTX、8800GTS、GTX280 三块不同的显卡,进行了基于 CUDA 的快速傅里叶变换,相对于 NVIDIA CUFFT 1.1 和 Intel MathMKL 10.2 实现的算法, CUDA 带来了 2 一 4 倍和 8 一 40 倍的加速效果。在国内,对于 GPU 通用计算这一领域的研究比较晚, 2004 年国内学者吴 恩华[11]等人发表了一篇关于 GPU 通用计算的文章,其中介绍了 GPU 的发展过 程和硬件特点,以及一些例子的实现方法。最近几年,针对 GPU 通用计算的 研究[12]逐步开展起来,主要是在一些科研院校和商业机构,如清华大学、中科 院计算技术研究所以及国防科技大学等。下表是国内 GPU 研究发展状况。4

武汉理工大学硕士学位论文表 1-2 国内 GPU 研究发展状况时间研究成果 中国科学院过程工程研究所利用 GPU 编程环境更新的2008 年 2 月机遇,采用 Nvidia 公司的 Tesla 系列 GPU 产品及 CUDA 开发环境,研制了单精度峰值 120 万亿次的高性能计算机 系统。 浪潮发布了万次桌面超级计算机“倚天”。“倚天”采 用了 “CPU+GPU” 协同加速架构, 使用了第二代 Nvidia Tesla GPU,每颗 Tesla GPU 集成 14 亿个晶体管、240 个处理器2009 年 3 月内核,计算速度最高可达 4 万亿次,改变了超级计算机的 传统模式,将超级计算机从庞大的实验室和计算中心转移到 了用户桌面,实现了超级计算机的低功耗和小型化,揭开了 高性能计算普及化的新序幕。 国防科技大学发布了中国第一台国产千万亿次超级计 算机“天河一号”。“天河一号”由 103 台机柜组成,共 包含 6144 个 Intel CPU 和 5120 个 AMD GPU,其理论峰 值性能为每秒 1206 万亿次,Linpack 实测性能为每秒2009 年 10 月563.1 万亿次, 全系统运行情况下, 每小时耗电量仅为 1280 度,能耗比(每瓦特电创造的计算效能)为 4.3 亿次运算, 在 2009 年 11 月的 TOP500 中名列第五。“天河一号”的 诞生使得中国成为继美国之后世界上第二个能够研制千万 亿次超级计算机的国家从以上方面的描述可以看出 GPU 通用计算应用领域很广,但这方面的研究 工作才刚刚起步。随着 GPU 计算持续上涨的受关注度,CUDA 技术将会得到越 来越广泛的应用,图形处理器硬件和软件正在以一个非凡的步伐而改变。在即 将到来的几年,我们期待能看到在未来的 GPU 计算系统里拥有更多的灵活性和5

武汉理工大学硕士学位论文性能。在商品计算机时代,协处理器的命运已经进入到晶片组和微处理器,而 GPU 拒绝了这一趋势,通过不断地提高自己的性能和功能,成为当今计算机环 境里越来越重要的部分。 基于 CUDA 的 GPU 通用计算将会在大规模的数据密集 型计算领域, 如数理统计、 军事模拟、 数据挖掘、 搜索引擎中发挥巨大的作用[13]。 目前,很多专家学者及研究人士在三维重建领域都做出了一定的研究,并 对其在 CUDA 架构下的实现进行了实验和验证,对本文的研究举证有着重要的 意义,下面将列举一些在 GPU 上进行三维重建的重要应用。 (1)视频图像的三维重建 随着人们审美观念的提高,对于视频图像的三维重建显得很有意义,目前 广泛采用的方法是可视外壳三维重建,由于在重建过程中所需设备量大和计算 要求非常高,陈玉军,牛玉美及申宝明[14]等人提出了一种基于 CUDA 架构的可 视外壳并行计算仿真平台,将原来基于体素的可视外壳算法转化为基于 CUDA 的线程块并行计算,并通过实验进行了验证,下图是实验的过程:图 1-2 视频图像的三维重建并行仿真平台 该实验采用的对象是卡通人物,获取了不同角度的五副图像,分别在 CPU 平台和 CUDA 架构上进行了实验并对比,实验结果表明,随着体素规模的增加, 在 GPU 和 CPU 上的加速比越来越大,从而验证了通过 GPU 并行计算能够有效 地提高计算速度和效率。 (2) 电子断层的三维重建 电子断层的显微三维重建是结构生物学的重要研究手段之一,其本质是将 一个二维物体进行多次投影,通过这些投影图来反向实现三维重构,主要用到 的重构方法为迭代重构法,但是迭代重构法有一个比较重要的缺陷,就是运算 速率比较慢,不过随着 GPU 的快速发展,将电子断层重构技术移植到 GPU 上6

武汉理工大学硕士学位论文进行实现已不是什么难题。张广勇[15]在 GPU 平台上对该技术进行了实验, 通 过对实验数据的分析能够发现,随着迭代次数的增加,重构的效果越明显,当 达到一定的迭代次数后,得到的解将会趋近真实解,与此同时,相应的计算量 也变得越来越大,GPU 并行算法和在 CPU 上运行的加速比也越来越大,能够达 到 22-50 倍的加速比,从而再次验证了 GPU 并行计算的效率。1.3 本文的主要研究内容与组织结构本文是在利用 ASM 模型进行人脸特征点检测的基础上,首先在 CPU 上实 现了三维人脸重建过程,提出了基于 GPU 并行计算的三维人脸重建算法,其中 顺序部分在 CPU 上实现,并行部分在 GPU 上实现,利用 GPU 强大的并行处理 能力及低成本、浮点运算能力强的特点,将人脸重建过程中的并行部分抽取出 来,转化为基于 GPU 并行执行的过程,提高算法的执行效率,以节约时间和资 源。本文的主要研究内容如下: (1)基于 ASM 模型的人脸特征点检测 找到两幅同一个人的二维图片,其中一幅为正面图,一幅为右侧 45 度角拍 摄的侧面图。首先初始化网络拓扑信息及特征点位置信息,为正面图和侧面图 分别搜寻特征点,建立三维网格,最后进行纹理贴图,这样就完成了最初的人 脸重建过程。 (2)基于 LOOP 网格细化算法的三维人脸重建 最初得到的三维人脸网格模型是一个比较粗糙的模型,模型拥有 78 个特征 点,136 个三角面片,从肉眼上看起来不是太精确,很多地方网格比较凌厉,显 得比较突兀,真实度也较差。因此本文采取了 LOOP 网格细化方法对初步生成 的三维人脸模型进行优化,从而使整个人脸模型趋于细腻。 (3)基于 GPU 并行计算的三维人脸重建 在 78 点模型建模的三维人脸重建过程中,经过两次 LOOP 细化后,顶点数 达到 1127 个,面片数达到 2176 个,随着细化次数的增加,在一个更加精细的 网格模型中, 顶点数和三角面片数将达到成千上万, 如果通过普通的 CPU 运算, 细化将变的非常缓慢,对计算的要求将会是一个很大的考验,因此本文设计了 一套基于 CUDA 的网格细化算法,并分析在 CPU 平台上和在 CUDA 架构下同 一细化算法的速度优劣。 本文共分为六章,其内容如下:7

武汉理工大学硕士学位论文第1章 首先描述了本课题的研究背景及选题意义,列举了一些专家学者在 三维人脸建模方面的研究,阐述了GPU通用计算在国内外的研究现状和发展趋 势,介绍了GPU并行计算在三维重建中的两个重要应用最后介绍了本文的主要 研究内容和结构安排。 第 2 章 介绍了 GPU 并行计算的理论基础。首先分析了 GPU 体系结构的演 变和 CUDA 编程模型, 并对 CPU 架构和 GPU 架构的不同进行了讨论, 对 CUDA 的编程模式和 CUDA 的存储模型进行了简单分析,最后介绍了 CUDA API 以及 CUDA C 语言的基本规则。 第3章 基于ASM模型的人脸特征点检测。本章通过对人脸结构分布的分析, 以及对目前现存主流的特征点检测算法的研究,提出了基于ASM模型的78点人 脸特征点检测算法,并对算法进行了详细的描述,通过建立三角网格和纹理贴 图实现了三维人脸的初步重建。 第 4 章 本章着重分析了现今流行的一些网格细化算法。在介绍的三种细化 算法中,LOOP 细化算法属于逼近型算法,而改进的 Butterfly 细化算法、 3 细 化算法均属于插值型细化算法。其中,对 LOOP 细化算法进行了详细的分析与 介绍,因为在本文的研究过程中我们使用的是 LOOP 细化算法。实验结果表明, 通过细化,将原本非常粗略的网格细化为辨识度较高、比较接近真实模型的网 格。 第 5 章 本章首先在前一章的基础上分析并肯定了基于 CUDA 平台的三维人 脸网格细化算法的可行性,利用 GPU 强大的并行处理能力及低成本、浮点运算 能力强的特点, 将人脸重建过程中的并行部分抽取出来, 设计了一套基于 CUDA 的 LOOP 细化算法,并通过实验得到了实现,最后比较了基于 CUDA 的 LOOP 细化算法和基于 CPU 的 LOOP 细化算法的性能。 第 6 章 总结和展望。对全文的工作进行了总结和展望,并指出本文工作中 的不足以及未来有待完善的地方。8

武汉理工大学硕士学位论文第2章2.1 引言GPU 并行计算理论基础随着科学技术的迅猛发展和计算机性能的飞速提高,人们对信息的需求呈 现出爆炸性增长,一些大规模高性能计算发展也越来越快。但是,能用于大规 模高性能计算的硬件要求也相应地非常高,价格也随之比较昂贵,这些实际问 题的产生,都使得大规模高性能计算的发展遇到瓶颈。这时,图形处理器(GPU) 应运而生,并且已经成为当今主流计算系统中不可分割的一部分,在过去的十 年里,GPU 在性能上有了显著的提高[16]。现代 GPU 不再只是一个强大的图形引 擎,也是一种高度并行化的可编程处理器,其峰值算术和记忆带宽在本质上就 是传统 CPU 的翻版。 在上述大背景下,基于 GPU 的通用计算(General Purpose GPU,GPGPU) 已经成了计算机领域的发展新趋势, 而 GPU 也成为了最强有力的计算设备。 GPU 在某些领域的并行计算处理上比 CPU 的处理速度快很多,这种差别出现的关键 在于所处领域和架构的不同[17]。因为 CPU 更多地被人们用来执行一般化和顺序 化的操作,比如文件管理、I/O 访问和数据处理等等;而 GPU 对计算的优化用 在了很多特定的方面,随着 GPU 架构的不断完善和发展,其所能够胜任的领域 也逐渐会越来越宽。当然,并不是所有的算法都可以在 GPU 上来进行执行,从 而实现其高效化和优化功能,只有一些特定领域的算法,如大规模、高性能、 并行计算类的算法,才能在该平台上发挥出其最大的威力和享受其架构带来的 便利。相比较 CPU 而言,由于 GPU 有更加强大的内存带宽和更多的处理单元, 因而 GPU 在并行计算上有很多明显的优势[18],图 2-1 展示了 GPU 相对于 CPU 在浮点处理和存储带宽方面所占有的优势:图 2-1 GPU 和 CPU 每秒浮点操作数和存储器带宽9

武汉理工大学硕士学位论文由上图可看出,GPU 和 CPU 在浮点计算方面的能力有很大的差异,其主要 原因是因为 GPU 是专门为计算密集型和计算高并行化设计的,因此 GPU 拥有 更多的晶体管来进行数据处理,而不是像 CPU 作为数据缓存和电路控制, 2007 年, 来自全世界最大的 GPU 生产厂商 NVIDIA 公司开创性地推出了统 一计算设备架构,即 CUDA 架构,从此引发了 GPU 在通用计算领域的新浪潮。 CUDA 是一个完整的基于 GPU 通用计算的解决方案,为了能够充分使用 GPU 的资源,它采用了一种全新的通用计算体系结构,直接为 GPU 硬件提供了访问 接口, 而避免了像早期的 GPGPU 编程那样,非得依赖图形学 API 接口以达到实 现 GPU 访问的目的。同时,CUDA 平台还为程序员提供了一种非常容易上手的 编程语言, 这种语言与流行的 C 语言非常类似, 因而很容易上手, 用来开发 GPU 通用计算程序相当方便。2.2 GPU 体系结构毫无疑问,GPU 已经成为了一种具有丰富计算资源的处理器,尽管如此, 它目前的发展趋势仍然是要将这种计算优势展现给编程者。在过去的一些年里, GPU 从固定功能的专用处理器转变到成熟的并行可编程处理器,并且将这种可 编程功能搬到了中心舞台。以下是对 GPU 转变过程[19]的一个简单的介绍。 传统的 GPU 采用了功能固定的设计方式,并具备了数据和任务并行处理结 构,图 2-2 显示了传统的 GPU 结构:图 2-2传统的 GPU 结构10

武汉理工大学硕士学位论文图 2-3 显示了传统的 GPU 图形绘制流水线:图 2-3传统的 GPU 图形绘制流水线图 2-4 显示了可编程的 GPU 结构图 2-4可编程的 GPU 结构图 2-5 显示了 GPU 统一渲染架构(Unified Shader GPU),图形采用流水线 的处理流程,也就是下一个阶段的工作开始之前,必须要等到上一个阶段处理 完成,这可能容易导致性能方面的问题,但可以提高可编程 GPU 的效率。图 2-5 GPU 统一渲染架构11

武汉理工大学硕士学位论文由于 GPU 统计渲染架构在不断地演变并且变得越来越强大,关于 GPU 的 各类应用都增加了顶点和片元程序的复杂性,其结构也逐步倾向于图形绘制流 水线的可编程部分。实际上,第一代的 GPU 可以被认为是可编程性和固定功能 流水线的附加物,而今天的 GPU 已经变成了一个强大的编程引擎来支持固定功 能单元。图 2-6 是第二代 GPU(GeForce 8800)[20]的架构示意图:图 2-6 第二代 GPU 的架构示意图 其中 Geforce 8800 的主要技术参数如下: 表 2-1 Geforce 8000 的技术参数 晶体管数目(百万) 工艺(nm) 芯片面积(nm * nm) 工作主频(GHz) 峰值速度(Gflops) 处理器数目 片上存储器容量(KB) 功耗(W) 681 90 470 1.5 576 128 488 150其中,Geforce 8800 拥有 16 个流多处理器 SM(Stream MultiProcessor), 在每个 SM 中都有 8 个流处理器 SP(Stream Processor),每个 SP 中包含一个乘 加单元,每 32 个线程组成了一个线程簇 Wrap,一个 SM 则管理了 24 个 Wrap, 也就是 768 个线程。 Geforce 8800 采用单线程多数据 STMD(Single Thread Multiple-Data)技术,在每个周期中,8 个 SP 一起并行执行一个线程簇。12

本文来源:https://www.bwwdw.com/article/klc4.html

Top