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

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

【技术实现步骤摘要】

本专利技术属于图像处理
,涉及视觉搜索方法,尤其涉及一种基于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)的运算逻辑中抽离出,即在所有层的特征检测和梯度计算完成之后,再对所有特征点统一进行主本文档来自技高网
...

【技术保护点】
一种基于GPGPU平台的CDVS提取过程加速方法,依次包括以下步骤:第一步,划分CPU计算任务和GPU计算任务,将CDVS提取过程的特征检测阶段和局部描述符计算阶段分配给GPU,CDVS提取过程剩余的特征选择阶段、全局描述符聚合阶段、局部描述符压缩阶段和坐标编码阶段分配给CPU;所述特征检测阶段包括的子阶段为高斯卷积子阶段、拉普拉斯卷积子阶段、多项式系数计算子阶段、响应值计算子阶段和检测子阶段;所述局部描述符计算阶段包括的子阶段为梯度计算子阶段、主方向分配子阶段和描述符计算子阶段;针对所述分配给GPU的子阶段的运算逻辑得到源核程序,进一步得到GPU可执行程序对象;第二步,重构图像的尺度空间金字塔存储模型,将层间不连续的存储模型变换为层间连续的存储模型,使得在金字塔所有层完成像素间可并行的阶段或子阶段之后,再统一进行特征点间可并行的子阶段计算;所述像素间可并行的阶段或子阶段包括特征检测阶段和局部描述符计算阶段的梯度计算子阶段;所述特征点间可并行的子阶段包括局部描述符计算阶段的主方向分配子阶段和描述符计算子阶段;第三步,分别采用二维工作组划分和一维工作组划分,为分配给GPU上的各子阶段指定并行策略;所述分配给GPU上的各子阶段包括特征检测阶段的五个子阶段和局部描述计算阶段的三个子阶段;第四步,应用局部内存,在局部描述计算阶段的描述符计算子阶段为工作组中特征点在局部内存中分配存储空间,在描述符计算子阶段中使所有更新都发生在所述局部内存中分配的存储空间,在描述符计算子阶段结束之后,再用局部内存中的描述符数据更新全局内存;由此实现加速CDVS提取过程。...

【技术特征摘要】
1.一种基于GPGPU平台的CDVS提取过程加速方法,依次包括以下步骤:第一步,划分CPU计算任务和GPU计算任务,将CDVS提取过程的特征检测阶段和局部描述符计算阶段分配给GPU,CDVS提取过程剩余的特征选择阶段、全局描述符聚合阶段、局部描述符压缩阶段和坐标编码阶段分配给CPU;所述特征检测阶段包括的子阶段为高斯卷积子阶段、拉普拉斯卷积子阶段、多项式系数计算子阶段、响应值计算子阶段和检测子阶段;所述局部描述符计算阶段包括的子阶段为梯度计算子阶段、主方向分配子阶段和描述符计算子阶段;针对所述分配给GPU的子阶段的运算逻辑得到源核程序,进一步得到GPU可执行程序对象;第二步,重构图像的尺度空间金字塔存储模型,将层间不连续的存储模型变换为层间连续的存储模型,使得在金字塔所有层完成像素间可并行的阶段或子阶段之后,再统一进行特征点间可并行的子阶段计算;所述像素间可并行的阶段或子阶段包括特征检测阶段和局部描述符计算阶段的梯度计算子阶段;所述特征点间可并行的子阶段包括局部描述符计算阶段的主方向分配子阶段和描述符计算子阶段;第三步,分别采用二维工作组划分和一维工作组划分,为分配给GPU上的各子阶段指定并行策略;所述分配给GPU上的各子阶段包括特征检测阶段的五个子阶段和局部描述计算阶段的三个子阶段;第四步,应用局部内存,在局部描述计算阶段的描述符计算子阶段为工作组中特征点在局部内存中分配存储空间,在描述符计算子阶段中使所有更新都发生在所述局部内存中分配的存储空间,在描述符计算子阶段结束之后,再用局部内存中的描述符数据更新全局内存;由此实现加速CDVS提取过程。2.如权利要求1所述基于GPGPU平台的CDVS提取过程加速方法,其特征是,第一步所述划分CPU计算任务和GPU计算任务,具体通过如下操作实现:11)利用OpenCL核程序实现高斯卷积、拉普拉斯卷积、多项式系数计算、响应值计算、检测、梯度计算、主方向分配和描述符计算八个子阶段的运算逻辑,得到八个源核程序;12)依次调用OpenCL接口clCreateProgramWithSource、clBuildProgram和clCreateKernel将步骤11)所述八个源核程序通过软编译得到GPU可执行程序对象;13)利用C语言实现特征选择、局部描述符压缩、坐标编码和全局描述符聚合阶段的运算逻辑。3.如权利要求1所述基于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].IEE...

【专利技术属性】
技术研发人员:王荣刚张申王振宇高文
申请(专利权)人:北京大学深圳研究生院
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1