龔強(qiáng),謝凱
(長(zhǎng)江大學(xué)電子信息學(xué)院,湖北 荊州 434023)
賀建彪
(中南大學(xué)信息科學(xué)與工程學(xué)院,湖南 長(zhǎng)沙 410083)
阮寧君
(長(zhǎng)江大學(xué)電子信息學(xué)院,湖北 荊州 434023)
?
基于GPU的并行人臉檢測(cè)方法研究
龔強(qiáng),謝凱
(長(zhǎng)江大學(xué)電子信息學(xué)院,湖北 荊州 434023)
賀建彪
(中南大學(xué)信息科學(xué)與工程學(xué)院,湖南 長(zhǎng)沙 410083)
阮寧君
(長(zhǎng)江大學(xué)電子信息學(xué)院,湖北 荊州 434023)
為了進(jìn)一步提高人臉檢測(cè)的精度和速度,提出了一種改進(jìn)的Viola-Jones人臉檢測(cè)算法,并在GPU平臺(tái)上對(duì)改進(jìn)后的算法加以優(yōu)化。采用新型稀疏特征來(lái)進(jìn)行人臉檢測(cè),利用計(jì)算機(jī)的圖形處理單元GPU進(jìn)行并行加速,并對(duì)優(yōu)化前后的結(jié)果進(jìn)行對(duì)比。結(jié)果表明,該算法把檢測(cè)率提高到93.6%,與傳統(tǒng)Viola-Jones人臉檢測(cè)算法相比檢測(cè)精度有了較大的提升;GPU并行加速實(shí)現(xiàn)了對(duì)OpenCV 1.6~3.2倍左右的加速比,有效提高了人臉檢測(cè)性能。
人臉檢測(cè);Viola-Jones算法;GPU并行;OpenCV
人臉檢測(cè)一直是圖像處理、計(jì)算機(jī)視覺(jué)和模式識(shí)別領(lǐng)域的熱門研究方向之一,人臉檢測(cè)作為人臉處理系統(tǒng)中的第一步,如何快速準(zhǔn)確找到圖片或視頻中的人臉,對(duì)人臉識(shí)別、安防監(jiān)控和智能人機(jī)交互等人臉應(yīng)用領(lǐng)域有重要的研究?jī)r(jià)值。Viola-Jones人臉檢測(cè)算法[1]由劍橋大學(xué)Paul Viola和Michael Jones于2001年提出,是一種能滿足實(shí)時(shí)要求的人臉檢測(cè)算法,算法中應(yīng)用積分圖、Adaboost算法和分類器級(jí)聯(lián)的方法和概念,包括后來(lái)的Real Adaboost[2],LogitBoost等改進(jìn)。傳統(tǒng)Viola-Jones人臉檢測(cè)算法中應(yīng)用的Haar矩形特征對(duì)偏轉(zhuǎn)等姿態(tài)人臉檢測(cè)的應(yīng)用有較大的局限,而且隨著人臉檢測(cè)應(yīng)用領(lǐng)域需要同時(shí)處理海量數(shù)據(jù)以及圖片分辨率的不斷提高,CPU平臺(tái)上Viola-Jones人臉檢測(cè)很難滿足交互性和實(shí)時(shí)性要求。隨著GPU計(jì)算能力與可編程能力的不斷增強(qiáng),基于GPU的并行計(jì)算[3]也越來(lái)越多的應(yīng)用于對(duì)應(yīng)用程序的加速,這已成為提高程序性能的主要模式。為此,筆者從Viola-Jones人臉檢測(cè)算法的缺點(diǎn)和內(nèi)在并行性特點(diǎn)出發(fā),用新型稀疏特征[4]來(lái)代替Haar特征對(duì)該算法進(jìn)行優(yōu)化,根據(jù)GPU硬件架構(gòu)特點(diǎn)對(duì)改進(jìn)后的算法進(jìn)行加速,提高了人臉檢測(cè)的精度和速度。
圖1 Haar特征模板
Viola-Jones人臉檢測(cè)算法引入Haar特征,采用Adaboost算法進(jìn)行訓(xùn)練得到基于Haar特征的級(jí)聯(lián)分類器[5,6],直接對(duì)圖像上一小塊區(qū)域進(jìn)行特征匹配,從而判定該區(qū)域內(nèi)有沒(méi)有人臉。如圖1所示,Haar特征值使用了3種類型4種形式的特征模板,每種特征模板的特征值等于白色矩形像素和與黑色矩形像素和之差。
每次計(jì)算Haar特征值都會(huì)有龐大的計(jì)算量,會(huì)降低檢測(cè)速度。因此,引入了積分圖作為待檢測(cè)人臉圖像的一種中間表達(dá)形式,通過(guò)圖像積分圖來(lái)計(jì)算Haar特征值。積分圖圖像坐標(biāo)(x,y)處的值In(x,y)等于原圖像坐標(biāo)(x,y)左上角矩形內(nèi)的像素I(x′,y′)的和,即:
(1)
采用式(1)對(duì)給定的圖像計(jì)算積分圖,同時(shí)采用式(2)和式(3)計(jì)算Haar特征值:
s(x,y)=s(x,y-1)+I(x,y)
(2)
In(x,y)=In(x-1,y)+s(x,y)
(3)
式中,s(x,y)表示原圖像x行前y個(gè)像素的累加和。
然后利用Adaboost算法訓(xùn)練強(qiáng)分類器構(gòu)建級(jí)聯(lián)分類器,最后用級(jí)聯(lián)分類器來(lái)檢測(cè)人臉。
由圖1可知,Haar特征只能對(duì)水平、垂直和對(duì)角的簡(jiǎn)單灰度結(jié)構(gòu)進(jìn)行描述,對(duì)傾斜、大角度偏轉(zhuǎn)等人臉會(huì)漏檢,影響了人臉檢測(cè)的準(zhǔn)確率。鑒于此,在人臉檢測(cè)算法的優(yōu)化階段,筆者用一種稀疏特征代替Haar特征,即改進(jìn)的Viola-Jones人臉檢測(cè)算法。
定義稀疏特征為若干粒子的線性組合,即:
(4)
式中, F(π)表示待檢測(cè)圖像的灰度值;pi是稀疏特征中第i個(gè)粒子;ai是組合的系數(shù),為了避免浮點(diǎn)運(yùn)算,ai的取值為±1。
粒子由粒子左上角x、y坐標(biāo)和尺度s共同定義的。該粒子的尺寸用s可以表示為2s×2s。在提取稀疏特征值時(shí),引入了金字塔結(jié)構(gòu)的4個(gè)位圖I0、I1、I2、I3。位圖Is對(duì)應(yīng)著尺度為2s×2s的粒子。
要想檢測(cè)出人臉,需要先選取特征,訓(xùn)練生成檢測(cè)的級(jí)聯(lián)分類器。圖2是試驗(yàn)生成級(jí)聯(lián)分類器的流程圖,在獲取待測(cè)樣本后,計(jì)算樣本的積分圖,得到樣本的稀疏特征集并計(jì)算特征值,然后確定閾值,接著按照Viola-Jones人臉檢測(cè)算法相關(guān)方法,使用Adaboost算法訓(xùn)練強(qiáng)分類器,最后級(jí)聯(lián)這些強(qiáng)分類器生成級(jí)聯(lián)分類器。
在生成級(jí)聯(lián)分類器完成后,就可以進(jìn)行人臉檢測(cè)。檢測(cè)過(guò)程如圖3所示:首先需要讀取圖片,獲取圖片里面的像素信息,并加載訓(xùn)練好的級(jí)聯(lián)分類器;然后調(diào)整原始圖像為不同尺度上的圖像金字塔[7,8],即圖像變換;在完成上面步驟的試驗(yàn)后,計(jì)算變換后的圖像的積分圖來(lái)確定待測(cè)圖像的特征值,根據(jù)這些特征值,利用已經(jīng)訓(xùn)練好的級(jí)聯(lián)分類器進(jìn)行人臉檢測(cè)并得出結(jié)果。
圖2 生成級(jí)聯(lián)分類器流程圖
圖3 人臉檢測(cè)流程圖
3.1 GPU生成圖像金字塔
圖4為GPU優(yōu)化算法流程圖。原始算法對(duì)圖像變換采用先對(duì)原始圖像一定比例的放縮,然后用原始掃描窗口進(jìn)行檢測(cè)。改進(jìn)后,對(duì)原始圖像生成圖像金字塔,當(dāng)進(jìn)行人臉檢測(cè)時(shí),利用固定大小的掃描窗口對(duì)金字塔圖像進(jìn)行掃描,這個(gè)過(guò)程具有很高的并行性,所以筆者將生成圖像金字塔放在GPU上處理[9,10],首先采用GPU對(duì)原始圖像進(jìn)行顏色空間轉(zhuǎn)換[11],得到灰度圖像,并保存在Device內(nèi),然后利用雙線性差值對(duì)灰度圖以放縮因子Us(Us>1.0)進(jìn)行放縮,得到大小為(Wp,Hp)的金字塔圖像,其中:
(5)
(6)
式中,(w0,h0)為原始圖片大小;(wk,hk)為縮小第k級(jí)灰度圖的大小;(xk,yk)為灰度圖縮小到第k級(jí)時(shí)生成金字塔圖像的坐標(biāo);a、b、k分別為縮小的級(jí)數(shù)。
圖4 GPU優(yōu)化算法流程圖
3.2 GPU計(jì)算積分圖
在GPU平臺(tái)上計(jì)算積分圖,為了避免數(shù)據(jù)的相關(guān)性[12],引入了先行后列的積分圖算法。利用2個(gè)Kernel分別實(shí)現(xiàn)行積分和列積分,每一行或一列的積分分別由單獨(dú)的一個(gè)線程負(fù)責(zé)。由于CUDA中threads是以warp(32個(gè)threads)的形式調(diào)度的,計(jì)算中某一行積分需要訪問(wèn)不同列的源圖像數(shù)據(jù),由于數(shù)據(jù)不連續(xù),這將帶來(lái)額外的計(jì)算,計(jì)算積分圖的效率會(huì)受到較大的影響。所以引入CUDA中共享存儲(chǔ)器來(lái)對(duì)積分器進(jìn)行優(yōu)化存儲(chǔ)訪問(wèn)[13],原圖像寬度設(shè)為M,一個(gè)block內(nèi)有N個(gè)threads。
3.3 GPU級(jí)聯(lián)分類器人臉檢測(cè)
生成積分圖像后,就需要利用訓(xùn)練好的級(jí)聯(lián)分類器進(jìn)行人臉檢測(cè),為了減少不必要的計(jì)算,GPU上利用線程的并行特性[14],一個(gè)線程對(duì)應(yīng)著一個(gè)特征的分類器判斷是否為人臉,極大地減少了級(jí)聯(lián)分類器檢測(cè)人臉的時(shí)間,提高了人臉檢測(cè)的效率。
評(píng)判一個(gè)人臉檢測(cè)算法的性能,主要是通過(guò)檢測(cè)率、誤檢率、漏檢率和檢測(cè)速度等進(jìn)行判定的。
檢測(cè)率(Rd)是在待測(cè)圖像中正確檢測(cè)出的人臉數(shù)(Nt)與圖像中真實(shí)人臉數(shù)(N)的比值,即:
(7)
誤檢率(Rfd)是指被錯(cuò)誤檢測(cè)為人臉的數(shù)量(Nf)與圖像中真實(shí)人臉數(shù)(N)的比值, 即:
(8)
漏檢率(Red)是指被錯(cuò)誤檢測(cè)為非人臉數(shù)(Ne)與圖像中真實(shí)人臉數(shù)(N)的比值,即:
(9)
檢測(cè)加速比(S)是沒(méi)加入GPU并行順序執(zhí)行的時(shí)間TCV與GPU并行執(zhí)行的時(shí)間TGPU的比值,即:
(10)
5.1 人臉檢測(cè)算法改進(jìn)前后結(jié)果對(duì)比
人臉樣本庫(kù)來(lái)自于網(wǎng)絡(luò)圖片和本實(shí)驗(yàn)室成員人臉圖像,人臉庫(kù)是由大小為24×24的500張圖片組成,其中包括正位人臉、側(cè)位人臉、傾斜的人臉以及非人臉圖片,用大小為960×1280測(cè)試圖片在OpenCV4.8.6和VS2010平臺(tái)上分別用傳統(tǒng)Viola-Jones算法和改進(jìn)的Viola-Jones算法進(jìn)行測(cè)試試驗(yàn),如圖5和圖6所示。傳統(tǒng)算法只是對(duì)正位人臉和旋轉(zhuǎn)角度較小的側(cè)位人臉檢測(cè)效果較好,對(duì)旋轉(zhuǎn)角度相對(duì)大的以及傾斜人臉無(wú)法檢測(cè);改進(jìn)算法對(duì)正位人臉和側(cè)位人臉都有較好的檢測(cè)效率,同時(shí)對(duì)傾斜人臉也能很好地檢測(cè)。2種算法人臉檢測(cè)測(cè)試結(jié)果對(duì)比如表1所示,傳統(tǒng)Viola-Jones算法的檢測(cè)率Rd只有91.8%,誤檢率Rfd達(dá)到了9.6%;改進(jìn)算法不但把檢測(cè)率Rd提高到了93.6%,同時(shí)把誤檢率Rfd降低至6.2%,大大提高了檢測(cè)的效率。
圖5 Viola-Jones算法測(cè)試結(jié)果人臉檢
圖6 改進(jìn)算法測(cè)試結(jié)果
表1 2種算法人臉檢測(cè)試驗(yàn)結(jié)果對(duì)比
圖7是改進(jìn)算法后的人臉檢測(cè)與識(shí)別系統(tǒng)操作界面。
圖7 人臉檢測(cè)與識(shí)別系統(tǒng)操作界面
5.2 GPU優(yōu)化前后對(duì)比
試驗(yàn)硬件平臺(tái)為Intel(R) Core(TM) i5-6300HQ CPU,2.30GHz,4.00GB內(nèi)存,NVIDIA GeForce GTX950M GPU,軟件平臺(tái)為Windows7 64bit。對(duì)于同一分辨率,采用測(cè)試50張圖片后求時(shí)間的平均值,測(cè)試結(jié)果如表2所示。由表2數(shù)據(jù)可以看出,利用GPU平臺(tái)并行加速,檢測(cè)速度得到了提高,隨著圖像分辨率的增大,由表2可知,GPU對(duì)OpenCV的加速比可以達(dá)到1.6~3.2倍左右。
表2 優(yōu)化前后人臉檢測(cè)用時(shí)對(duì)比表
詳細(xì)介紹了Viola-Jones人臉檢測(cè)技術(shù),就該傳統(tǒng)算法的一些不足之處進(jìn)行了研究,并提出了合理化的改進(jìn)方法。同時(shí),利用GPU并行模塊和檢測(cè)算法中并行特性進(jìn)行GPU并行人臉檢測(cè)方法的研究,對(duì)人臉檢測(cè)進(jìn)行優(yōu)化。結(jié)果表明,該方法有效地提高了人臉檢測(cè)的精度和速度,對(duì)后續(xù)的人臉識(shí)別系統(tǒng)識(shí)別率的提高起到了較大的作用。
[1]Viola P, Jones M J.Rapid object detection using a boosted cascade of simple features[A].Proceedings of the Conference on Computer Vision and Pattern Recognition[C].2001:511~518.
[2] 余益民,黃廷輝,桑濤.基于Real AdaBoost算法的膚色分割方法[J].計(jì)算機(jī)應(yīng)用,2011,31(12):3370~3373.
[3] Sun Lichao, Zhang Shengbing, Cheng Xuntao,et al.Acceleration algorithm for CUDA-based face detection[A].Signal Processing, Communication and Computing (ICSPCC), 2013 IEEE International Conference[C].2013:1~5.
[4] 李瑞淇.基于膚色和改進(jìn)的AdaBoost人臉檢測(cè)算法研究[D].西安:西安電子科技大學(xué),2014.
[5] 劉嘉敏,梁瑩,孫洪興,等.融合檢測(cè)和跟蹤的實(shí)時(shí)人臉跟蹤[J].中國(guó)圖象圖形學(xué)報(bào),2015,20(11):1473~1481.
[6] 劉王勝,馮瑞.一種基于AdaBoost的人臉檢測(cè)算法[J].計(jì)算機(jī)工程與應(yīng)用,2016,52(11):209~214.
[7] 薛翠紅,于明,于洋,等.基于MAP框架的金字塔人臉超分辨率算法[J].2012,38(10):206~211.
[8]Atta R,Ghanbari M.An efficient face recognition system based on embedded DCT pyramid[J].IEEE Transactions on Consumer Electronics,2012,58(4):1285~1293.
[9] 楊賽勇.基于CUDA加速的并行人臉檢測(cè)[D].武漢:華中科技大學(xué),2013.
[10] Bhutekar J S, Manjaramkar K A.Parallel face Detection and Recognition on GPU[J] .International Journal of Computer Science and Information Technologies, 2014,5: 2013~2018.
[11] Dong Chen, Wang Xiaoli, Lin Tao,et al.Face Detection under Particular Environment Based on Skin Color Model and Radial Basis Function Network[A].Big Data and Cloud Computing (BDCloud), 2015 IEEE Fifth International Conference[C].2015:256~259.
[12] Papenhausen E, Bing W,Sungsoo H,et al.GPU-accelerated incremental correlation clustering of large data with visual feedback [A].Big Data, 2013 IEEE International Conference[C].2013:63~70.
[13]Nakano K,Matsumae S, Ito Y.Random Address Permute-Shift Technique for the Shared Memory on GPUs[A].2014 43rd International Conference on Parallel Processing Workshops[C].2014:429~438.
[14]Wai A W Y, Chang Y C.GPU acceleration of real time Viola-Jones face detection[A].2015 IEEE International Conference on Control System, Computing and Engineering (ICCSCE)[C].2015:183~188.
[編輯] 洪云飛
2016-04-26
國(guó)家自然科學(xué)基金項(xiàng)目(61272147);湖北省教育廳指導(dǎo)性項(xiàng)目(B2015446)。
龔強(qiáng)(1989-),男,碩士生,現(xiàn)主要從事信號(hào)處理、圖像與視頻處理方面的研究工作。
謝凱(1974-),男,博士,教授,博士生導(dǎo)師,現(xiàn)主要從事油氣信息處理和三維地質(zhì)建模方面的教學(xué)與研究工作;E-mail:pami2010@163.com。
TP391.4
A
1673-1409(2016)25-0031-05
[引著格式]龔強(qiáng),謝凱,賀建彪,等.基于GPU的并行人臉檢測(cè)方法研究[J].長(zhǎng)江大學(xué)學(xué)報(bào)(自科版),2016,13(25):31~35.