首页> 中国专利> 基于GPGPU平台的CDVS提取过程加速方法

基于GPGPU平台的CDVS提取过程加速方法

摘要

本发明公布了基于GPGPU平台的CDVS提取过程加速方法,对CDVS提取过程的特征检测和局部描述符计算两个阶段,通过OpenCL通用并行编程框架实现其像素间可并行的各子阶段和特征点间可并行的各子阶段的运算逻辑与并行策略,并利用GPU的并行计算能力来实现加速;包括:划分GPU和CPU计算任务;重构图像的尺度空间金字塔存储模型;为GPU上各子阶段指定并行策略;应用局部内存弱化访存瓶颈。采用本发明技术方案,能够加速CDVS提取过程,提取性能获得显著提升。

著录项

  • 公开/公告号CN106095588A

    专利类型发明专利

  • 公开/公告日2016-11-09

    原文格式PDF

  • 申请/专利权人 北京大学深圳研究生院;

    申请/专利号CN201610488505.6

  • 发明设计人 王荣刚;张申;王振宇;高文;

    申请日2016-06-28

  • 分类号G06F9/50(20060101);G06F9/48(20060101);

  • 代理机构北京万象新悦知识产权代理事务所(普通合伙);

  • 代理人黄凤茹

  • 地址 518055 广东省深圳市南山区西丽镇丽水路深圳大学城北大校区

  • 入库时间 2023-06-19 00:49:26

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-03-15

    授权

    授权

  • 2016-12-07

    实质审查的生效 IPC(主分类):G06F9/50 申请日:20160628

    实质审查的生效

  • 2016-11-09

    公开

    公开

说明书

技术领域

本发明属于图像处理技术领域,涉及视觉搜索方法,尤其涉及一种基于GPGPU平台的CDVS(视觉搜索紧凑描述子)提取过程加速方法。

背景技术

视觉搜索技术在近二十年获得了快速发展,尤其随着互联网普及,各种围绕视觉搜索构建的应用已经在很大程度上改变了人们的生活方式,比如搜索引擎的图像检索、监控应用中的对象识别等。一般来讲,视觉搜索的出发点在于寻找图像中有代表性的一组特征点,然后基于该组特征点进行相关匹配工作。

文献[1](Duan L Y,Chandrasekhar V,Chen J,et al.Overview of the MPEG-CDVS Standard[J].IEEE Transactions on Image Processing,2015,25(1):323-332)记载的MPEG-7视觉搜索紧凑描述子(CDVS)是由ISO/IEC MPEG组织于2014年7月提出的一个视觉搜索标准。该标准旨在定义视觉搜索紧凑描述子、描述子提取过程和视觉搜索框架的格式,以使遵循该标准的视觉搜索应用之间互操作成为可能。

文献[2](Lowe D G.Distinctive Image Features from Scale-Invariant Keypoints[J].International Journal of Computer Vision,2004,60(2):91-110)记载的经典算法SIFT需要使用一幅图像的全部特征点进行图像匹配。这种方法在实际应用中会产生两种额外开销——目标图片量大时的匹配时延和低带宽网络下的传输时延。这两种时延占据了图像匹配流程整体耗时的绝大部分。CDVS即是针对这两个问题进行改进,它提出一种思路,即在图像匹配过程中,仅使用所有特征点的一个子集,并由该子集构建紧凑描述子以提升匹配效率,同时降低传输负载。

虽然MPEG-7CDVS既可减少网络传输的数据量,又可以提升图像两两匹配性能,但是该标准提取过程所依赖的算法过程具备高计算复杂度,在实际应用中也的确表现得相当耗时。比如在Intel(R)Core(TM)i7-2600K 3.4GHz处理器上,每秒仅4帧左右标准VGA尺寸(640×480p)的图像能被处理;在移动设备上,该过程速度会更慢,比如在三星Galaxy S3手机上每秒仅能处理1帧左右上述尺寸图像。这样缓慢的提取速度在很大程度上限制了标准的影响力,因此加速CDVS提取过程对于标准的应用和推广显得尤为迫切和重要。

目前,CDVS提取过程加速相关工作既有算法改进相关,也有技术应用相关,但总的来说数量较少。文献[3](Chen J,Duan L Y,Gao F,et al.A Low Complexity Interest Point Detector[J].IEEE Signal Processing Letters,2015,22(22):172-176.)提出了BFLoG快速检测法,即将高斯卷积从空域变换到频域,该方法可使提取过程的特征检测阶段获得约2.0倍加速比。文献[4](Garbo A,Loiacono C,Quer S,et al.CDVS Feature Selection on Embedded Systems[C].IEEE International Conference on Multimedia&Expo Workshops.IEEE,2015:1-6)提出了一种算法改进方式,即可以只计算部分特征点的局部描述符以节约局部描述符计算阶段的时间。他还尝试在移动设备上利用OpenCL和GPU以获得进一步的加速,但其陈述的方法却不符合OpenCL规范。总体而言,Garbo的加速方法可使CDVS提取过程获得约2.0倍的整体加速比。文献[5](Zhang Shen,Wang Ronggang,Wang Qiusi,Wang Wenmin.Accelerating CDVS Extraction on Mobile Platform[C].IEEE International Conference on Image Processing(ICIP).IEEE,2015:3837-3840.)提出了基于ARM平台的CDVS提取过程加速方法,即通过利用ARM处理器的NEON SIMD多媒体指令和多核并行机制来获得加速,这一方法可使CDVS提取过程获得约2.3倍的整体加速比。

文献[6](Luebke D,Harris M,Ger J,et al.GPGPU:General Purpose Computation on Graphics Hardware[C].ACM SIGGRAPH 2004Course Notes.ACM,2004:87–91.)记载的通用图形处理器(GPGPU)技术是近十年才兴起的一门新技术。尽管之前图形处理器(GPU)已广为人知,而且在图形渲染等专业领域得到广泛应用(比如3D图形渲染框架OpenGL),但当时无论GPU还是编程框架都不具备“通用”性。以往GPU都采用固定管线设计,这使得高层应用完全被固定的编程接口所限制,因此对于图像处理这种算法逻辑较复杂的工作,非通用的图形渲染管线难以胜任。但随着GPGPU的出现,固定管线的约束便不再存在,这为诞生更加灵活的高层编程框架提供了契机。此外,随着GPU制作工艺的改良,无论是单核运行频率或缓存容量,还是运算核心的集成数量,都出现了极大提升。因此,当下的GPGPU相比中央处理器(CPU)其并行计算能力更加优秀。

综上,对MPEG-7CDVS提取过程进行加速的实用价值较大,而目前已存在的加速方法所获得加速性能还远不能满足基于该标准的视觉搜索应用的性能需求,但GPGPU强大的并行计算能力为获得更好的加速效果提供了新的可能性。

发明内容

为了降低MPEG-7CDVS初始提取过程的时间开销,本发明提供一种基于GPGPU平台的CDVS提取过程加速方法,用GPGPU对MPEG-7CDVS提取过程进行加速,即怎样以GPGPU的并行计算能力为基础,并以OpenCL为编程实现框架,通过计算任务的重新划分、并行策略的选择和其他辅助性优化技术的应用,来降低CDVS提取过程的时间开销。

本发明所包含三部分内容:CDVS提取过程算法框架重构、以OpenCL作为编程实现框架时所采用的并行策略和其他辅助性优化技术。首先,本发明基于GPGPU平台重新划分了CDVS提取过程各阶段的计算任务,即将特征检测和局部描述符描述符计算两个瓶颈阶段的计算任务分配给GPU,而将其他剩余阶段的计算任务保留给CPU。其次,本发明在设计OpenCL并行策略时,对像素间可并行的各子阶段采用了二维工作组划分方式,而对特征点间可并行的各子阶段采用了一维工作组划分方式;并以32作为单一维度的工作组大小最优划分。最后,本发明还采用了两种辅助性优化技术以进一步提升CDVS提取过程在GPGPU平台上的加速性能,包括将层间不连续的图像尺度空间金字塔存储模型变换为层间连续的图像尺度空间金字塔存储模型,以便将主方向分配和描述符计算两个子阶段从图像尺度空间金字塔一层(Octave)的运算逻辑中抽离出,即在所有层的特征检测和梯度计算完成之后,再对所有特征点统一进行主方向分配和描述符计算;和在描述符计算子阶段应用局部内存以弱化这一子阶段在GPU上的访存瓶颈。

本发明提供的技术方案是:

一种基于GPGPU平台的CDVS(视觉搜索紧凑描述子)提取过程加速方法,依次包括以下步骤:

第一步,划分CPU计算任务和GPU计算任务,将CDVS提取过程的特征检测阶段和局部描述符计算阶段分配给GPU,CDVS提取过程剩余的特征选择阶段、全局描述符聚合阶段、局部描述符压缩阶段和坐标编码阶段分配给CPU;所述特征检测阶段包括的子阶段为高斯卷积子阶段、拉普拉斯卷积子阶段、多项式系数计算子阶段、响应值计算子阶段和检测子阶段;所述局部描述符计算阶段包括的子阶段为梯度计算子阶段、主方向分配子阶段和描述符计算子阶段;针对所述分配给GPU的子阶段的运算逻辑得到源核程序,进一步得到GPU可执行程序对象;

第二步,重构图像的尺度空间金字塔存储模型,将层间不连续的存储模型变换为层间连续的存储模型,使得在金字塔所有层完成像素间可并行的阶段或子阶段之后,再统一进行特征点间可并行的子阶段计算;所述像素间可并行的阶段或子阶段包括特征检测阶段和局部描述符计算阶段的梯度计算子阶段;所述特征点间可并行的子阶段包括局部描述符计算阶段的主方向分配子阶段和描述符计算子阶段;

第三步,分别采用二维工作组划分和一维工作组划分,为分配给GPU的各子阶段指定并行策略;所述分配给GPU上的各子阶段包括特征检测阶段的五个子阶段和局部描述计算阶段的三个子阶段;

第四步,应用局部内存,在局部描述计算阶段的描述符计算子阶段为工作组中特征点在局部内存中分配存储空间,在描述符计算子阶段中使所有更新都发生在所述局部内存中分配的存储空间,在描述符计算子阶段结束之后,再用局部内存中的描述符数据更新全局内存;

由此实现加速CDVS提取过程。

针对上述基于GPGPU平台的CDVS提取过程加速方法,进一步地,第一步所述划分CPU计算任务和GPU计算任务,具体通过如下操作实现:

11)利用OpenCL核程序实现高斯卷积、拉普拉斯卷积、多项式系数计算、响应值计算、检测、梯度计算、主方向分配和描述符计算八个子阶段的运算逻辑,得到八个源核程序;

12)依次调用OpenCL接口clCreateProgramWithSource、clBuildProgram和clCreateKernel将步骤11)所述八个源核程序通过软编译得到GPU可执行程序对象;

13)利用C语言实现特征选择、局部描述符压缩、坐标编码和全局描述符聚合阶段的运算逻辑。

第一步划分GPU与CPU计算任务时,将特征检测和局部描述符计算两个阶段的所有运算任务分配给GPU,而将其他阶段计算任务分配给CPU;且将主方向分配和描述符计算两个子阶段的计算任务从金字塔一层中抽离出,即在完成金字塔所有层以像素为独立运算元的子阶段的计算任务之后,再对所有层上的特征点统一进行主方向分配和描述符计算两个以特征点为独立运算元的子阶段的计算任务。

针对上述基于GPGPU平台的CDVS提取过程加速方法,进一步地,第二步所述重构图像的尺度空间金字塔存储模型,具体执行如下操作:

21)调用OpenCL接口clCreateBuffer在GPU上为图像尺度空间金字塔的所有层统一申请存储空间,设输入图像长宽分别为W和H,而金字塔包含N(N=1,2,3,...)层,则存储空间大小S通过式1计算得到:

其中,S为存储空间大小,单位为字节。因为金字塔第一层尺寸等于输入图像尺寸,而所有更高的层都由较低的一层经过长宽减半的降采样而得;

22)逐层构建图像尺度空间金字塔,每一层的起始地址偏移offset通过式2计算得到:

式2中,w为金字塔某层的长;h为金字塔某层的宽;n为金字塔层的层号,n=0,1,2,...;

23)构建尺度空间金字塔的其他逻辑与文献[1](Duan L Y,Chandrasekhar V,Chen J,et al.Overview of the MPEG-CDVS Standard[J].IEEE Transactions on Image Processing,2015,25(1):323-332)记载的方法相同。

针对上述基于GPGPU平台的CDVS提取过程加速方法,进一步地,第三步所述分别采用二维工作组划分和一维工作组划分为分配给GPU上的各子阶段指定并行策略,具体包括如下步骤:

31)对所有像素间可并行的子阶段指定全局工作组大小;

32)对所有像素间可并行的子阶段指定局部工作组大小;

33)对所有特征点间可并行的子阶段指定全局工作组大小;

34)对所有特征点间可并行的子阶段指定局部工作组大小。

第三步为GPU上的各子阶段指定并行策略时,为所有以像素作为独立运算元的子阶段指定二维工作组,工作组中的一个工作单元负责一个像素的运算逻辑,且将工作组大小设定为32×32;并为所有以特征点作为独立运算元的子阶段指定一维工作组,工作组中的一个工作单元负责一个特征点的运算逻辑,且将工作组大小设定为32;

更进一步地,步骤31)所述全局工作组大小具体是:设金字塔该层的长宽分别为w和h,设置包含两个整数的数组globalWorkSize[2],使得globalWorkSize[0]=w,globalWorkSize[1]=h;

步骤32)所述局部工作组大小具体是:直接设置包含两个整数的数组localWorkSize[2],使得当金字塔一层尺寸为640×480p时,localWorkSize[0]=32,localWorkSize[1]=32;当金字塔一层尺寸为320×240p时,localWorkSize[0]=32,localWorkSize[1]=16;当金字塔一层尺寸为160×120p时,localWorkSize[0]=32,localWorkSize[1]=8;当金字塔一层尺寸为80×60p时,localWorkSize[0]=16,localWorkSize[1]=4;当金字塔一层尺寸为40×30p时,localWorkSize[0]=8,localWorkSize[1]=2;

步骤33)所述全局工作组大小具体是:设特征检测阶段检测出的特征点总量为n(n=1,2,3,...),设置包含一个整数的数组globalWorkSize[1],使得globalWorkSize[0]=n;

步骤34)所述局部工作组大小具体是:直接设置包含一个整数的数组localWorkSize[1],使得localWorkSize[0]=32。

针对上述基于GPGPU平台的CDVS提取过程加速方法,进一步地,所述设置的globalWorkSize和localWorkSize,通过指定为OpenCL接口clEnqueueNDRangeKernel的参数确定GPU的并行执行策略,在所述局部工作组划分策略中,将32作为单一维度工作组大小的最优划分。

针对上述基于GPGPU平台的CDVS提取过程加速方法,进一步地,第四步所述应用局部内存具体执行如下操作:

41)为所述工作组中的特征点分配局部内存;

42)在所述核程序执行过程中使对特征点含有128个浮点数的描述符的访问与更新发生在步骤41)所述分配的局部内存之上;

43)在所述分配给GPU的子阶段的运算逻辑完成之后,用所述分配的局部内存中的描述符更新全局内存中的描述符。

针对上述基于GPGPU平台的CDVS提取过程加速方法,进一步地,所述提取过程的输入图像为640×480p的JPEG图像。

与现有技术相比,本发明的有益效果是:

本发明在图像处理技术领域,提出了一种利用通用图形处理器(GPGPU)加速视觉搜索标准MPEG-7视觉搜索紧凑描述子(CDVS)的提取过程的技术,该技术可有效降低CDVS提取过程耗时。本发明具有以下优点:

(一)本发明可有效利用GPU的并行计算能力,以此降低CDVS提取过程瓶颈阶段的时间开销,获得更好的加速,满足视觉搜索应用的性能需求;

(二)本发明对图像尺度空间金字塔存储模型的重构方式使特征点间可并行的子阶段获得了更好的并行性;

(三)本发明利用OpenCL实现并行策略时,所采用的工作组划分方式是通过实验获得的在NVIDIA GTX-980显卡上的最优划分方式;

(四)本发明在GPGPU平台上对CDVS提取过程的描述符计算子阶段应用局部内存,弱化了这一子阶段的访存瓶颈,从而提升了这一子阶段的性能。

附图说明

图1是本发明方法的整体流程框图。本发明提供的加速方法是在CDVS初始提取过程基础上,将基于GPGPU平台的优化技术应用于CDVS提取过程的瓶颈阶段,进而实现加速提取过程的方法。

图2是CDVS提取的现有方法的流程划分框图;

其中,(a)为CDVS提取过程的主要阶段划分,包含特征检测、特征选择、局部描述符计算、全局描述符聚合、局部描述符压缩和坐标编码等六个阶段;(b)为特征检测阶段的子阶段划分,包含高斯卷积(Gaussian)、拉普拉斯卷积(Laplacian)、多项式系数计算(ABCD)、响应值计算(Response)和检测(Detect)等五个子阶段;(c)为局部描述符计算计算阶段的子阶段划分,包含梯度计算(Gradient)、主方向分配(Orientation)和描述符计算(Descriptor)等三个子阶段。

图3是本发明将层间不连续的尺度空间金字塔存储模型重构为层间连续的金字塔存储模型的示意图;

其中,(a)为层间不连续的金字塔内存模型;(b)为层间连续的金字塔内存模型。

图4是本发明采用并用OpenCL实现的工作组与工作单元划分策略的示意图;

其中,(a)为二维工作组划分方式,(b)为二维工作组内工作单元划分方式,(c)为一维工作组与工作单元划分方式;工作组用work-group表示,且二维工作组有x和y等两个维度;工作单元用work-item表示。

图5是本发明实验中最具代表性的两个子阶段采用不同大小工作组划分时的性能表现;

其中,(a)为高斯卷积子阶段采用不同大小工作组划分时的性能表现,(b)为描述符计算子阶段采用不同大小工作组划分时的性能表现。

图6是本发明实验中像素间可并行的各子阶段的加速性能,输入图像尺寸为640×480p。

图7是本发明实验中特征点间可并行的各子阶段的加速性能;

其中,(a)为主方向分配子阶段的加速性能,(b)为描述符计算子阶段的加速性能;输入图像尺寸为640×480p;横轴标签F_567、F_988、F_1336和F_1628中的数值代表四种不同的特征点数量,如F_567表示该图在初始条件下可由CDVS提取过程检测出567个特征点。

图8是实验中CDVS提取过程在采用本发明提供方法进行加速前后整体耗时的性能对比图;

图中,LFD是Local Feature Detection(局部特征检测)的缩写,此处指代特征检测阶段的所有五个子阶段的耗时之和;LDC是Local Descriptor Computation(局部描述符计算)的缩写,此处指代局部描述符计算阶段的三个子阶段耗时之和;GDA是Global Descriptor Aggregation(全局描述符聚合)的缩写,此处指代其他未经过加速阶段(特征选择、全局描述符聚合、局部描述符压缩和坐标编码)的耗时之和;输入图像尺寸为640×480p;进行加速前,提取过程整体耗时随特征点数量增加而增大。

具体实施方式

下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。

本发明提出了一种利用通用图形处理器(GPGPU)加速视觉搜索标准MPEG-7CDVS的提取过程的方法,该方法可有效降低CDVS提取过程时间开销。

在图像处理技术领域,由于GPU不支持直接编程,本发明借助外部编程框架来实现加速策略,选择开放计算语言(OpenCL,TheKhronos OpenCL Working Group.OpenCL Specification v1.2[S].2012)作为一种实现媒介,主要是考虑到这一框架的跨平台性可以使一个平台上的工作方便地移植到另一支持OpenCL的平台。

CDVS提取过程的主要阶段包含特征检测、特征选择、局部描述符计算、全局描述符聚合、局部描述符压缩和坐标编码等六个阶段,特征检测又包含高斯卷积、拉普拉斯卷积、多项式系数计算、响应值计算和检测等五个子阶段,局部描述符计算又包含梯度计算、主方向分配和描述符计算等三个子阶段(见图2)。各阶段或子阶段按图2所示的流程逻辑顺序执行。不妨将高斯卷积、拉普拉斯卷积、多项式系数计算、响应值计算、检测和梯度计算等六个子阶段统称为像素间可并行的子阶段,因为在这些子阶段内部像素间的运算逻辑是相互独立的;将主方向分配和描述符计算等两个子阶段统称为特征点间可并行的子阶段,因为在这些子阶段内部特征点间的运算逻辑是相互独立的。

CDVS提取过程的输入为640×480p的JPEG图像,输出为MPEG-7CDVS标准所定义格式的紧凑描述子[1]。

本发明实现的具体步骤如下:

第一步:划分CPU和GPU计算任务,将CDVS提取过程的特征检测和局部描述符计算两个阶段分配给GPU,剩余阶段分配给CPU。特征检测和局部描述符计算两个阶段是CDVS提取过程的瓶颈阶段(这两个阶段在CPU上的时间开销占据CDVS提取过程整体时间开销的90%以上),本发明的核心思想就是利用GPU的并行计算能力来降低这两个瓶颈阶段的时间开销。这种分配方法的依据在于这两个瓶颈阶段内部的各子阶段拥有良好的可并行性,而剩余四个阶段内部不具备适合GPU并行机制的可并行性。

这一步的具体实施方式如下:

11)利用OpenCL核程序实现高斯卷积、拉普拉斯卷积、多项式系数计算、响应值计算、检测、梯度计算、主方向分配和描述符计算等八个子阶段的运算逻辑,得到八个源核程序;

12)依次调用OpenCL接口clCreateProgramWithSource、clBuildProgram和clCreateKernel将上一步的八个源核程序软编译(即在主体程序执行时编译客体程序)成GPU可执行程序对象;

13)利用C语言实现特征选择、局部描述符压缩、坐标编码和全局描述符聚合等四个主要阶段的运算逻辑;

第二步:重构图像的尺度空间金字塔存储模型,将层间不连续的存储模型变换为层间连续的存储模型(见图3)。这样可将主方向分配和描述符计算两个特征点间可并行的子阶段从图像尺度空间金字塔一层的运算逻辑内部提取到外部,即在金字塔所有层完成特征检测和梯度计算等像素间可并行的阶段或子阶段之后,再统一进行特征点间可并行的子阶段相关计算。这样可以提升主方向分配和描述符计算等两个子阶段特征点间的并行性,从而更有效地利用GPU的并行计算机制。

这一步的具体实施方式如下:

21)调用OpenCL接口clCreateBuffer在GPU上为图像尺度空间金字塔的所有层统一申请存储空间。设输入图像长宽分别为W和H,而金字塔包含N(N=1,2,3,...)层,则存储空间大小S通过式1计算得到:

其中,S为存储空间大小,单位为字节。因为金字塔第一层尺寸等于输入图像尺寸,而所有更高的层都由较低的一层经过长宽减半的降采样而得;

22)逐层构建图像尺度空间金字塔,这一步关键在于每一层的起始地址偏移offset通过金字塔该层的长w、宽h和层号n(n=0,1,2,...)确定,且满足式2:

构建尺度空间金字塔的其他逻辑则与现有方法[1]相同。

第三步:分别采用二维工作组划分和一维工作组划分,为GPU上各子阶段(即特征检测阶段(包括五个子阶段)和局部描述计算阶段(包括三个子阶段))指定并行策略(见图4)。

这一步的具体实施方式如下:

31)对所有像素间可并行的子阶段指定全局工作组大小。设金字塔该层的长宽分别为w和h,则可设置包含两个整数的数组globalWorkSize[2],使得globalWorkSize[0]=w,globalWorkSize[1]=h;

32)对所有像素间可并行的子阶段指定局部工作组大小。直接设置包含两个整数的数组localWorkSize[2],使得金字塔一层尺寸为640×480p时,localWorkSize[0]=32,localWorkSize[1]=32;金字塔一层尺寸为320×240p时,localWorkSize[0]=32,localWorkSize[1]=16;金字塔一层尺寸为160×120p时,localWorkSize[0]=32,localWorkSize[1]=8;金字塔一层尺寸为80×60p时,localWorkSize[0]=16,localWorkSize[1]=4;金字塔一层尺寸为40×30p时,localWorkSize[0]=8,localWorkSize[1]=2;

33)对所有特征点间可并行的子阶段指定全局工作组大小。设特征检测阶段检测出的特征点总量为n(n=1,2,3,...),则可设置包含一个整数的数组globalWorkSize[1],使得globalWorkSize[0]=n;

34)对所有特征点间可并行的子阶段指定局部工作组大小。直接设置包含一个整数的数组localWorkSize[1],使localWorkSize[0]=32。

在上述步骤中设置的globalWorkSize和localWorkSize,最终通过指定为OpenCL接口clEnqueueNDRangeKernel的参数而确定GPU的并行执行策略。在上述局部工作组划分策略中,将32作为单一维度工作组大小的最优划分。其依据在于,工作组较小时各子阶段的性能会受到限制,而工作组更大对性能提升没有助益(见图5)。尽管也采用了其他整数来划分单一维度,如16、8、4和2,但这是因为此时全局工作组大小不能被32整除而不得不采用其他整数划分。

第四步:应用局部内存,在描述符计算子阶段,为本子阶段工作组(工作组中的每个工作单元负责一个特征点的运算逻辑,且工作组是一维的)中的特征点在局部内存中分配存储空间。在描述符计算子阶段,由于每个特征点都需要频繁更新其包含128个浮点数的局部描述符,即所有特征点局部描述符的128个分量都会在同一时刻被随机存取,因此会产生较大的访存负担。此时我们需要先为工作组中的所有特征点在局部内存中各分配一片存储空间,并在描述符计算过程中使所有对描述符的访问和更新都发生在这片局部内存存储空间之上,在描述符计算过程结束之后,再用局部内存中的描述符数据更新全局内存。由此可以弱化描述符计算这一子阶段的访存瓶颈。

这一步具体实施方式如下:

41)为工作组中的特征点分配局部内存;

42)在核程序执行过程中使对特征点含有128个浮点数的描述符的访问与更新发生在上一步分配的局部内存之上;

43)在描述符计算子阶段的运算逻辑完成之后用局部内存中的描述符更新全局内存中的描述符。

为了检验本发明的有效性,本发明使用CDVS标准化组织提供的图像集Graphics进行性能测试,并对比CDVS初始提取过程和加速提取过程的时间开销。输入图像尺寸固定为640×480p的JPEG图像,因为CDVS标准规定对所有长或宽大于640像素的图像进行降采样,并使长或宽的较大者为640像素。

图6展示了像素间可并行的各子阶段在加速前后的耗时对比。这些子阶段包括特征检测阶段的所有五个子阶段,即高斯卷积(Gaussian)、拉普拉斯卷积(Laplacian)、描述符系数计算(ABCD)、响应值计算(Response)和检测(Detect),和局部描述符阶段的梯度计算(Gradient)子阶段。从图中可见,高斯卷积子阶段加速比最高,达7.9倍,拉普拉斯卷积最低,为1.0倍,所有子阶段的加速比加权平均为4倍。

图7展示了特征点间可并行的各子阶段在加速前后的耗时对比。这些子阶段包括局部描述符计算阶段的两个子阶段,即主方向分配(Orientation)和描述符计算(Descriptor)。从图中可见,主方向分配子阶段加速比在3.2~9.6倍,平均约6.4倍;描述符计算子阶段加速比在5.0~14.2倍,平均约9.6倍。两个子阶段初始耗时都随特征点数量增加而增大,而加速后的耗时非常稳定。

图8展示了CDVS提取过程在加速前后的整体耗时。从图中可见,提取过程整体初始耗时随特征点数量增加而增大,并分布在170~330毫秒,而加速之后整体耗时稳定在45毫秒左右,整体加速比为3.8~7.2倍,平均约5.5倍。

综上,基于GPGPU平台的加速技术可显著减少CDVS提取过程时间开销,进而实现加速。

需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号