《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于GPU的CLABP特征提取方法研究
基于GPU的CLABP特征提取方法研究
2014年微型机与应用第16期
罗 沛1,梁 鹏2,3
1.英伟达半导体(深圳)有限公司,广东 深圳 518057; 2.广东技术师范学院 计算机科学学院,广东 广州 510665; 3.华南理工大学 计算机科学与工程学院,广东 广州 510006
摘要: 彩色局部角度二值模式(CLABP)可以有效地提取彩色图像中的纹理特征,但是算法复杂、计算量大。针对这一问题,采用GPU实现CLABP特征提取和表示的并行方法。该方法一方面使用异步处理的方式实现CLABP的并行加速,另一方面采用共享内存的形式减少读取数据的次数。为了验证该方法的有效性,在Outex纹理图像数据库上与CPU程序性能进行对比,结果表明,GPU实现方法可以提升加速比约25倍
Abstract:
Key words :

  摘  要彩色局部角度二值模式(CLABP)可以有效地提取彩色图像中的纹理特征,但是算法复杂、计算量大。针对这一问题,采用GPU实现CLABP特征提取和表示的并行方法。该方法一方面使用异步处理的方式实现CLABP的并行加速,另一方面采用共享内存的形式减少读取数据的次数。为了验证该方法的有效性,在Outex纹理图像数据库上与CPU程序性能进行对比,结果表明,GPU实现方法可以提升加速比约25倍。

  关键词: GPU;彩色局部角度二值模式;异步处理

  局部纹理特征在图像分类和目标识别中得到广泛应用,是图像的重要特征之一。局部二值模式LBP(Local Binary Patterns)[1-2]具有良好的几何不变性、角度不变性和旋转不变性等适应性,在许多方法中得到了应用和推广[3-4]。然而LBP特征对图像光照变化敏感,针对这一问题,参考文献[5]提出了一种彩色局部角度二值模式CLABP(Color Local Angel Binary Patterns),通过提取不同信号通道之间的像素夹角,对不同光照变化下的彩色人脸图像进行分类,提高了不同光照变化条件下对人脸图像识别的准确率。但是对于大量的图像检索数据而言,CPU实现的CLABP纹理特征提取方法速度较慢,对图像检索性能产生很大影响。解决这一问题的方法是采用GPU对CLABP纹理特征提取方法进行编程,实现并行计算加速。近年来,已经有部分学者尝试使用GPU对各种图像方法进行编码[6-8]。

  本文采用GPU对参考文献[5]中提出的CLABP实现并行化编程。首先将方法分解为GPU和CPU任务,然后对GPU实现部分进行核函数处理和共享内存设计,最后通过实验验证所提方法的有效性。实验结果表明,本文采用的GPU实现方法在Outex纹理图像数据库中能取得将近25倍的加速比。

1 彩色局部角度二值模式

  参考文献[5]针对纹理特征对光照变化下识别率不高的问题,提出了彩色局部角度二值模式纹理特征。如图1所示,无论空间矢量的大小发生怎样的变化,它与各个通道的夹角始终没有发生变化。定义Y、Cb、Cr三信号模型中任意两个信号通道之间像素值的夹角为,定义空间矢量r与信号通道内投影与参光线夹角为?兹0,则根据CLABP纹理特征的定义,用旋转不变的uniform LBP对图中任意像素点z及其邻近像素点的彩色角度进行编码如下:

  1.png

  其中,s(x)是阶跃函数,H是对中心像素点周围P个像素点的比较结果。将所有的图像像素点用网格形式进行统计,最后用级联的形式将所有网格的CLABP纹理特征连成CLABP直方图,如式(2)所示:

  2.jpg

2 CLABP纹理特征并行实现

  CLABP纹理特征提取分为以下三个部分实现:

  (1)用CPU将彩色图像分为Y、Cb、Cr颜色图像,然后将图像数据分别送入GPU显存;

  (2)启动核函数计算Y、Cb、Cr颜色图像的CLABP纹理特征;

  (3)将CLABP纹理特征从GPU送回CPU。

  CLABP的三个实现步骤是串行实现的,而影响实现方法性能的关键在于步骤之间的数据传输。为了利用GPU的多核并行计算和多存储器功能,需要使用异步传输的方式实现数据传输,即主机无需等待设备端完成计算,就可返回继续准备下一个图像的传输和接收工作,如图2所示。

001.jpg

002.jpg

  GPU中的并行计算由核函数完成,核函数由网格、线程块和线程组成,启动一个核函数就对应一个网格,网格由多个线程块组成,每个线程块包括多个线程。计算时将线程块送入多核处理器中运行,线程块的最小执行单元为warp,每个warp由32个线程组成,而CLABP计算属于二维的块计算,因此将线程块大小定义为[32,32]。

  以P=8,R=1为例,当核函数开始计算时,每个线程对图像中的一个像素点进行CLABP编码,由于CLABP是对Y、Cb、Cr颜色模型中三个信号通道内的图像像素值之间的夹角进行计算,因此每次计算均需要从全局存储器中读取三幅图像中的3×9=27个像素点值,而频繁地读取全局存储器将会导致拥塞现象。

  为了减少并行计算时对全局存储器的频繁读取,GUP中提供了大量的共享内存和寄存器解决这一问题。同一个线程块内的程序通过访问共享内存可以获取到计算所需数据,无需再访问全局存储器,而寄存器可以保存每个线程的私有数据。

  因此在计算像素点的CLABP值时,每次将整个线程块所需的34×34个像素点的值送入共享内存,则每个像素点的数据均可以读取共享内存以提高数据的读取速度。将每个像素点的CLABP值计算完成后送入寄存器,进行直方图的统计。再将每个线程块的直方图统计结果送回全局存储器进行统计,得到最终的CLABP直方图。

3 实验及讨论

  本文采用的实验平台是Windows 7,MATLAB 2011b,联想ThinkPad T420笔记本,其CPU为Intel Core i7 2.8 GHz,显卡为NVIDIA NVS 4200M。评价数据集是公开的纹理数据库Outex[9]。该数据库包含了大量的纹理图片,包括自然纹理和表面纹理,而且提供了不同的光照条件、旋转角度和分辨率。图3是Outex纹理图像数据库的部分示例图像。所有的图像尺度都重新变换为128像素×128像素大小,CLABP的局部区域大小采用3像素×3像素和4像素×4像素两种尺寸。

  本文所采用的评价准则是加速比,即:

  T7QJSN~HDFLROOW7D}M]}_6.jpg

003.jpg

  对于每幅图像,对GPU提取的CLABP特征进行10次实验,加速比取这10次实验的平均值。表1为不同图像数量下CLABP特征提取时间及加速比。

005.jpg

  从表1可以看出,本文采用的GPU实现方法比CPU实现方法效率要高,而且随着处理的图像个数的增多,加速比逐渐变大。这是因为传输图像数据采用的是异步传输的方式,传输的图像数量越多,加速越明显,效果越好。

007.jpg

  图4是不同图像个数下的CLABP纹理特征提取加速比。从图中可以看出,随着图像个数增加,加速比也随之增多,但是当图像个数稳定为200个之后,加速比提升不明显。这是因为异步传输和并行计算加速已经趋于稳定,进一步提升加速比需要加入其他的加速方法或技巧。

  本文针对CLABP特征提取速度较慢的问题,采用GPU对CLABP特征提取方法进行加速,通过异步传输和核函数并行计算提高了纹理特征的计算效率。实验结果表明,本文所采用的GPU实现方法在Outex纹理数据库上具有将近25倍的加速比。对于其他的纹理特征提取方法,本文方法也同样适用。

  由于本文主要研究程序方面的优化,对于GPU硬件优化并无深入,将CLABP纹理特征与GPU硬件结合将是今后研究的重点。

  参考文献

  [1] AHONEN T, HADID A, PIETIK?魧INEN M. Face description with local binary pattern: application to face recognition[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2006, 28(12):2037-2041.

  [2] OJALA T, PIETIKAINEN M, MAENPAA T. Multiresolution gray-scale and rotation-invariant texture classification with local binary patterns[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2002, 24(7):971-987.

  [3] 林似水,郑力新.联合LBP与SOM的多分辨率织物疵点检测[J].微型机与应用,2012,31(23):45-47.

  [4] 郭春凤,何建农.彩色与纹理不变性的阴影消除新算法[J].微型机与应用,2013,32(5):38-41.

  [5] LEE S H, CHOI J Y, RO Y M, et al. Local color vector binary patterns from multi-channel face images for face recognition[J]. IEEE Transactions on Image Processing, 2012, 21(4):2347-2353.

  [6] KIRK D B, HWU W W.大规模并行处理器编程实战[M].陈曙晖,熊淑华,译.北京:清华大学出版社,2010.

  [7] SANDERS J, KANDROT E. GPU高性能编程CUDA实战[M].聂雪军,译.北京:机械工业出版社,2011.

  [8] 张舒,褚艳利,赵开勇,等.GPU高性能运算之CUDA[M].北京:中国水利水电出版社,2009.

  [9] OJALA T, MAENPAA T, PIETIKAINEN M, et al. Outex-a new framework for empirical evaluation of texture analysis algorithms[C]. Proceedings of the 16th Conference on Pattern Recognition, 2002:701-706.


此内容为AET网站原创,未经授权禁止转载。