英语原文共 5 页,剩余内容已隐藏,支付完成后下载完整资料
快速和高效的SIFT器使用移动GPU
Blaine Rister, Guohui Wang, Michael Wu and Joseph R. Cavallaro
Department of Electrical and Computer Engineering, Rice University, Houston, Texas
Email: {blaine.rister, wgh, mwb2, cavallar}@rice.edu
摘要
新兴的移动应用程序,如增强现实、需求强劲功能检测在高帧速率的情况下。我们提出受欢迎的尺度不变特征变换的实现(SIFT)特征检测算法,融合强大的图形处理单元(GPU)的移动设备。在一般的GPU方法是低效的,在手机硬件上我们提出异构数据流方案。通过有条不紊地分区计算,压缩的数据存储传输量,并考虑由此产生的独特挑战的移动GPU,我们能够实现加速的4-7x优化CPU版本,和6.4 x加速/发表GPU实现。另外,我们每图像减少87%的能源消耗。我们实现接近实时的检测在并不影响原算法。
检索词:计算机视觉、移动计算、特征检测图形处理单元(GPU),OpenGL为嵌入式系统(OpenGL ES)
1.介绍
最近开发的低成本、高质量的相机在移动设备的移动计算机视觉应用产生了巨大的兴趣,如人脸检测和增强现实(1、2、3)。尺度不变的兴趣点或特性,对于许多计算机视觉任务至关重要,如目标识别和跟踪,并将继续获得相关性在移动计算领域[4]。尺度不变特征变换(SIFT)是一个实用的算法,它能检测和描述特性不变的缩放和旋转,和部分不变的仿射变换、光照、噪音,部分阻塞的要求[5]。
然而,SIFT等计算机视觉算法计算复杂,难以满足新兴移动应用的需求。手机硬件的局限性,缺乏编程工具防止特征检测算法在实时应用中实现。此外,依赖于相对较小的电池在移动设备上大大增加功耗的问题在计算机视觉的应用程序中,可以占领耗电CPU很长一段时间。寻求加速过程中,我们招募的帮助通用计算图形处理单元(GPGPU)。图形处理单元(gpu)的成本效益的处理器,远远超过在吞吐量计算cpu并行任务(4、6)。通过有条不紊地分区GPU和CPU之间的工作负载和组织有效的数据计算,我们能够实现重要的加速优化CPU版本和相关GPU的工作,并大幅减少能源消费总量。
2.之前的工作
gpu可以提供巨大的加速在广泛的计算机视觉算法,包括SIFT(7、8、9、10)。然而,这种成功也大多局限于桌面GPU的应用程序。首先,手机硬件有许多局限性,使GPGPU发展更具有挑战性。传统的GPGPU方法调用尽可能多的数据存储和处理的GPU[11],但这不是实际的移动设备上。不支持动态分支或异步回读,我们必须重新思考我们处理数据的方式在GPU[12]。
其次,编程模型支持GPGPU如CUDA和OpenCL不可用在大多数移动设备,迫使开发人员使用OpenGL为嵌入式系统(OpenGL ES),设计图形[13]。尽管一些算法,表达高度的并行性,已经成功地加快使用OpenGL ES(2、3、14),一些移动的GPU实现SIFT我们都知道没有足够快来支持新兴应用[12],由于频繁的分支算法的后期,和CPU-GPU存储传输量的相当大的开销。
为了克服这些障碍,我们返工算法的数据流执行最耗时和固有的GPU并行任务,离开了CPU和休息最小化内存传输。此外,我们利用一个高效的数据包装方案,降低了必须传输的数据量,同时最大化OpenGL ES渲染操作的效率。因为许多的竞争算法表达类似程度的并行性,我们的方法可以很容易地推断一个宽范围的算法,允许开发者定制技术具体应用程序(9、15)。
图1:SIFT器内存访问模式.顶层:极值检测;中间:极值,GSS,DOG;底部:极值和DOG
3. SIFT概述
有两个主要步骤,从图像中提取特征:检测和描述。特征检测识别感兴趣点的空间位置和主导方向,同时为匹配特性描述提供了标准。我们关注的特征检测阶段算法因为其固有的数据并行性使它适合GPU加速。我们现在描述的主要阶段SIFT检测器:为了实现尺度不变性,我们通过重复生成输入图像的多个副本高斯平滑,每个代表在不同的尺度,被统称为高斯尺度空间金字塔(GSS)[5]。一旦我们有平滑的两倍原来的规模,我们样品结果和开始的下一个八度金字塔。
然后构造高斯函数的差异(狗)减去对连续图像金字塔的GSS金字塔像素。这接近研究高斯函数的拉普拉斯算子[16]。要点被确定为局部极值的狗金字塔,相比之下与26个邻居3times;3地区当前和邻近的鳞片。最后,一些要点被当地对比及边缘检测阈值和剩余的位置由高斯消去法精制对亚像素精度。关键点的位置已知,我们决定他们的方向提供旋转不变性。梯度金字塔是由相关的灰度强度梯度GSS金字塔在每个像素的水平。当地方向转换梯度分配给每个关键点的极坐标形式的社区在每个关键点,并积累加权模方向的直方图,在四柱状图maxima成为关键点的方向。
表1:分析结果的主要阶段的CPU和GPU的算法,在谷歌Nexus 7与Tegra3芯片系统,每个图像的关键点平均为88。我们在粗体和斜体实现跟踪。
dagger;关键点细化不是GPU上实现的,由于缺乏支持动态循环
4.细节的实现
我们提出一个有效的SIFT探测器为移动设备,使用一个异构的方法。代码编写与OpenGL ES 2.0安卓原生开发工具包。我们的主要贡献包括系统的分区CPU和GPU之间的工作负载,有效的图像数据压缩到GPU纹理内存,和动态代码生成图形硬件branch-free卷积。每一个设计决策让我们改进工作Kayombya帧率和能源效率[12]。
4.1 Efficiently-partitioned异构计算
小心分区CPU和GPU之间的工作负载显著提高处理能力比其他SIFT实现[12]。图1显示了内存访问模式算法的关键阶段。表1显示的主要阶段的SIFT器,高斯平滑是迄今为止最昂贵的,唯一一个加速的GPU内存传输的开销。极值检测表现很差的GPU由于标量比较和缺乏支持动态移动GPU的分支。而梯度是由GPU加速的,回读时间是禁止的。所有其他操作是廉价处理器,和不会保证GPU加速的内存传输开销。
这些数据让我们计算只在GPU GSS金字塔,和离开休息theCPU,见图2。这个决定是出于移动gpu的独特挑战,回读数据摊位渲染管道,因此无法隐藏的并发计算,导致显著的开销在表1[13]。我们进一步减少内存传输将采样金字塔在GPU上水平,而不是执行一个CPU样本和随后的内存传输。生成的程序完成SIFT器只有一个CPU转让每级金字塔,和一个GPU转移。
图2:提出了数据流,极值和细化图结合在一起
4.2 GPU数据压缩的像素重新排序
我们实现一个有效像素重新排序方案,紧密包数据到GPU内存,减少内存传输时间和加速OpenGL ES渲染操作。在OpenGL ES被存储为纹理图像,每个像素的纹理被称为“特塞尔绵羊。“标准RGBA纹理格式,每个特塞尔绵羊包含单独的红色,蓝色,绿色,和alpha通道[13]。我们重新排序输入图像,这样每一个2times;2灰度广场作为一个RGBA像素存储通道,见图3。我们定义算术强度如下[6]:
算术强度=加法和乘法/纹理获取
以这种方式包装数据减少纹理获取的总数在高斯平滑和将采样的四个因素之一。使用这个方案,计算强度的高斯模糊从2增加到8,导致一个有效的程序,可以保持片段处理器GPU之间忙的内存访问。或许更重要的是,必须读回的数据量的GPU是减少相同的因素。包装2times;2广场,而不是其他几何,是有效的,因为它反映了SIFT的内存访问模式。数据处理一起返回同样的纹理提取,优化内存操作。如果图像是包装没有重新排序,如Kayombya的实现,算法强度取决于我们遍历的维度,导致很大的性能在垂直过滤[12]。我们的测试表明,重新排序的开销的输入图像,然后扭转CPU上的重新排序,可以忽略不计。因此,像素重新排序方案降低了内存传输时间和加速计算几乎没有成本。
图3:像素重新排序来压缩数据
4.3 通过动态代码生成无枝的卷积
我们生成GPU着色程序在运行时,以反映的参数算法,加速计算通过展开过滤循环。高斯平滑内核的宽度变化为金字塔的每一个层面上,通常是根据用户定义的参数,所以一套过滤程序必须评估循环条件,以确定哪些像素的过程。因为移动GPU缺乏动态分支,这将导致严重的性能损失。相反,我们生成和编译过滤程序循环展开,消除分支的程序。我们甚至不需要部门检查图像边界,这样做是为了我们的OpenGL ES。相同的二进制程序可用于所有的视频图像,假设算法的参数不改变,所以切换程序的开销不是一个性能问题。这些技术允许用户调整而不损失性能。
4.4 其他优化
原算法要求翻倍初始图像的宽度和高度,发现更多的功能,但这不利于实时处理。我们省略这一步,减少必须处理的数据量的两倍。这是一个常见的一步高频率实现SIFT[7]。在我们的测试结果中,特征的数量减少了百分之六十四,但是我们应该注意,失踪的是低尺度特性,这是不太稳定的匹配[5]。如果需要高特征数,采样可以以牺牲帧率为代价来得到。总的来说,这是一个必要的权衡通过SIFT来接近实时的速度。最后,我们利用高斯平滑的可分性对水平和垂直通过单独的着色器程序,减少纹理获取的总数从西北2到2 Nw,其中N是图像中像素的数量,和w是一维滤波器的宽度的内核。分离过滤允许一个线性内存访问模式,尤其高效GPU[6]。除了这些优化,我们高效的工作流的主要贡献分区,像素重新排序,和动态代码生成是必不可少的提供我们欲望的帧速率。
5.实验结果
我们测试了我们的实现的性能与优化CPU版本运行在单独的线程中。为大多数的比较,我们在四个不同的基准测试设备,代表了广泛的当前手机硬件。测试平台:高通Snapdragon S4 APQ8064移动开发平台,Android 4.1.2;谷歌Nexus 7,与NVIDIA Tegra 3,安卓4.2;三星Galaxy Note 2,与三星Exynos 4,Android以下4.4.1;和NVIDIA Tegra 250开发板,NVIDIA Tegra 2,Android 2.2。基准进行一个流行的320times;280像素的图像数据集,收益率平均88重点在三个八度像素[17]。的小图像大小适合我们的目标实时处理。正如所料,数量特征与图像大小和不同参数的算法。一些结果以图形方式显示在图4。所有设备我们测试显示相当大的加速度与异构计算,见图5。
图4所示。兴趣点检测到320times;240的图像。盒子大小规模成正比,方向没有显示。
图5:在不同的设备上执行时间观察
加速范围从4.7 x星系Note 2 7.0 x Nexus 7。表2显示回读时间急剧变化在不同的设备,主要是会计的执行时间较慢,注意的Mali- 400 GPU。手臂承认这个缺点的设计[18]。金鱼草的S4每秒9.9图像处理,提高SIFT探测器的领域接近实时的移动应用程序。
接下来,我们比较SIFT的异构移动GPU实现Kayombya[12]。我们引upsampling算法,减少图像大小为224times;224像素一个精确的比较。作者报告执行时间只有关键点细化,所以我们基准实现执行相同的任务。这种比较是不对我们有利,因为作者的数据流的完整实现方案阅读取向数据回到CPU,我们证明是一个昂贵的操作。此外,作者的GPU极值检测的实现使用一个近似方法来降低复杂性。我们比较我们的结果从Tegra250发展到Kayombya,从高通Snapdragon S2 soc FFA设备,这几乎是当代的测试平台。我们展示其他设计上的显著改善,平均148 ms /像素,Kayomba 952 ms,6.4倍加速。
表2:异构的实现,单位:毫秒
表3:NVIDIA Tegra 250开发板的电力和能源消耗
最后,我们测试我们的实现的电力和能源消耗的NVIDIA Tegra 250开发板。测量作为平均50秒的连续迭代的数据集。开发板需要15伏的输入,导致能耗高于手机或平板电脑。虽然表3表明,这两种实现能耗可比,异构系统减少了87%的能源消耗,实现图像与CPU版本相比,占用处理器为较短的一段时间。
6.结论
我们介绍了一种有效的实现SIFT特征检测器算法利用移动GPU加速。分析的主要阶段的算法在GPU和CPU使我们快速开发一个数据流异构计算方案。几个关键的优化,如重新排序和输入图像的压缩,减少了通信开销和GPU加速计算。相当大的加速实现在一个优化CPU版本和相关GPU的工作,导致接近实时的处理。此外,在一张一张的图像来的基础上大大降低能源消耗。这些技术可以用来提高帧率和节约能源在新兴移动应用程序,如目标识别、全景建设,增强现实。在未来,我们计划去探索什么额外的CPU多线程加速和OpenCL可能提供(19、20)。
致谢:
这部分工作是在三星,美国国家科学基金会资助下
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[146272],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。