龔強,謝凱
(長江大學電子信息學院,湖北 荊州 434023)
賀建彪
(中南大學信息科學與工程學院,湖南 長沙 410083)
阮寧君
(長江大學電子信息學院,湖北 荊州 434023)
?
基于GPU的并行人臉檢測方法研究
龔強,謝凱
(長江大學電子信息學院,湖北 荊州 434023)
賀建彪
(中南大學信息科學與工程學院,湖南 長沙 410083)
阮寧君
(長江大學電子信息學院,湖北 荊州 434023)
為了進一步提高人臉檢測的精度和速度,提出了一種改進的Viola-Jones人臉檢測算法,并在GPU平臺上對改進后的算法加以優化。采用新型稀疏特征來進行人臉檢測,利用計算機的圖形處理單元GPU進行并行加速,并對優化前后的結果進行對比。結果表明,該算法把檢測率提高到93.6%,與傳統Viola-Jones人臉檢測算法相比檢測精度有了較大的提升;GPU并行加速實現了對OpenCV 1.6~3.2倍左右的加速比,有效提高了人臉檢測性能。
人臉檢測;Viola-Jones算法;GPU并行;OpenCV
人臉檢測一直是圖像處理、計算機視覺和模式識別領域的熱門研究方向之一,人臉檢測作為人臉處理系統中的第一步,如何快速準確找到圖片或視頻中的人臉,對人臉識別、安防監控和智能人機交互等人臉應用領域有重要的研究價值。Viola-Jones人臉檢測算法[1]由劍橋大學Paul Viola和Michael Jones于2001年提出,是一種能滿足實時要求的人臉檢測算法,算法中應用積分圖、Adaboost算法和分類器級聯的方法和概念,包括后來的Real Adaboost[2],LogitBoost等改進。傳統Viola-Jones人臉檢測算法中應用的Haar矩形特征對偏轉等姿態人臉檢測的應用有較大的局限,而且隨著人臉檢測應用領域需要同時處理海量數據以及圖片分辨率的不斷提高,CPU平臺上Viola-Jones人臉檢測很難滿足交互性和實時性要求。隨著GPU計算能力與可編程能力的不斷增強,基于GPU的并行計算[3]也越來越多的應用于對應用程序的加速,這已成為提高程序性能的主要模式。為此,筆者從Viola-Jones人臉檢測算法的缺點和內在并行性特點出發,用新型稀疏特征[4]來代替Haar特征對該算法進行優化,根據GPU硬件架構特點對改進后的算法進行加速,提高了人臉檢測的精度和速度。

圖1 Haar特征模板
Viola-Jones人臉檢測算法引入Haar特征,采用Adaboost算法進行訓練得到基于Haar特征的級聯分類器[5,6],直接對圖像上一小塊區域進行特征匹配,從而判定該區域內有沒有人臉。如圖1所示,Haar特征值使用了3種類型4種形式的特征模板,每種特征模板的特征值等于白色矩形像素和與黑色矩形像素和之差。
每次計算Haar特征值都會有龐大的計算量,會降低檢測速度。因此,引入了積分圖作為待檢測人臉圖像的一種中間表達形式,通過圖像積分圖來計算Haar特征值。積分圖圖像坐標(x,y)處的值In(x,y)等于原圖像坐標(x,y)左上角矩形內的像素I(x′,y′)的和,即:
(1)
采用式(1)對給定的圖像計算積分圖,同時采用式(2)和式(3)計算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個像素的累加和。
然后利用Adaboost算法訓練強分類器構建級聯分類器,最后用級聯分類器來檢測人臉。
由圖1可知,Haar特征只能對水平、垂直和對角的簡單灰度結構進行描述,對傾斜、大角度偏轉等人臉會漏檢,影響了人臉檢測的準確率。鑒于此,在人臉檢測算法的優化階段,筆者用一種稀疏特征代替Haar特征,即改進的Viola-Jones人臉檢測算法。
定義稀疏特征為若干粒子的線性組合,即:
(4)
式中, F(π)表示待檢測圖像的灰度值;pi是稀疏特征中第i個粒子;ai是組合的系數,為了避免浮點運算,ai的取值為±1。
粒子由粒子左上角x、y坐標和尺度s共同定義的。該粒子的尺寸用s可以表示為2s×2s。在提取稀疏特征值時,引入了金字塔結構的4個位圖I0、I1、I2、I3。位圖Is對應著尺度為2s×2s的粒子。
要想檢測出人臉,需要先選取特征,訓練生成檢測的級聯分類器。圖2是試驗生成級聯分類器的流程圖,在獲取待測樣本后,計算樣本的積分圖,得到樣本的稀疏特征集并計算特征值,然后確定閾值,接著按照Viola-Jones人臉檢測算法相關方法,使用Adaboost算法訓練強分類器,最后級聯這些強分類器生成級聯分類器。
在生成級聯分類器完成后,就可以進行人臉檢測。檢測過程如圖3所示:首先需要讀取圖片,獲取圖片里面的像素信息,并加載訓練好的級聯分類器;然后調整原始圖像為不同尺度上的圖像金字塔[7,8],即圖像變換;在完成上面步驟的試驗后,計算變換后的圖像的積分圖來確定待測圖像的特征值,根據這些特征值,利用已經訓練好的級聯分類器進行人臉檢測并得出結果。

圖2 生成級聯分類器流程圖

圖3 人臉檢測流程圖
3.1 GPU生成圖像金字塔
圖4為GPU優化算法流程圖。原始算法對圖像變換采用先對原始圖像一定比例的放縮,然后用原始掃描窗口進行檢測。改進后,對原始圖像生成圖像金字塔,當進行人臉檢測時,利用固定大小的掃描窗口對金字塔圖像進行掃描,這個過程具有很高的并行性,所以筆者將生成圖像金字塔放在GPU上處理[9,10],首先采用GPU對原始圖像進行顏色空間轉換[11],得到灰度圖像,并保存在Device內,然后利用雙線性差值對灰度圖以放縮因子Us(Us>1.0)進行放縮,得到大小為(Wp,Hp)的金字塔圖像,其中:
(5)
(6)
式中,(w0,h0)為原始圖片大小;(wk,hk)為縮小第k級灰度圖的大小;(xk,yk)為灰度圖縮小到第k級時生成金字塔圖像的坐標;a、b、k分別為縮小的級數。

圖4 GPU優化算法流程圖
3.2 GPU計算積分圖
在GPU平臺上計算積分圖,為了避免數據的相關性[12],引入了先行后列的積分圖算法。利用2個Kernel分別實現行積分和列積分,每一行或一列的積分分別由單獨的一個線程負責。由于CUDA中threads是以warp(32個threads)的形式調度的,計算中某一行積分需要訪問不同列的源圖像數據,由于數據不連續,這將帶來額外的計算,計算積分圖的效率會受到較大的影響。所以引入CUDA中共享存儲器來對積分器進行優化存儲訪問[13],原圖像寬度設為M,一個block內有N個threads。
3.3 GPU級聯分類器人臉檢測
生成積分圖像后,就需要利用訓練好的級聯分類器進行人臉檢測,為了減少不必要的計算,GPU上利用線程的并行特性[14],一個線程對應著一個特征的分類器判斷是否為人臉,極大地減少了級聯分類器檢測人臉的時間,提高了人臉檢測的效率。
評判一個人臉檢測算法的性能,主要是通過檢測率、誤檢率、漏檢率和檢測速度等進行判定的。
檢測率(Rd)是在待測圖像中正確檢測出的人臉數(Nt)與圖像中真實人臉數(N)的比值,即:
(7)
誤檢率(Rfd)是指被錯誤檢測為人臉的數量(Nf)與圖像中真實人臉數(N)的比值, 即:
(8)
漏檢率(Red)是指被錯誤檢測為非人臉數(Ne)與圖像中真實人臉數(N)的比值,即:
(9)
檢測加速比(S)是沒加入GPU并行順序執行的時間TCV與GPU并行執行的時間TGPU的比值,即:
(10)
5.1 人臉檢測算法改進前后結果對比
人臉樣本庫來自于網絡圖片和本實驗室成員人臉圖像,人臉庫是由大小為24×24的500張圖片組成,其中包括正位人臉、側位人臉、傾斜的人臉以及非人臉圖片,用大小為960×1280測試圖片在OpenCV4.8.6和VS2010平臺上分別用傳統Viola-Jones算法和改進的Viola-Jones算法進行測試試驗,如圖5和圖6所示。傳統算法只是對正位人臉和旋轉角度較小的側位人臉檢測效果較好,對旋轉角度相對大的以及傾斜人臉無法檢測;改進算法對正位人臉和側位人臉都有較好的檢測效率,同時對傾斜人臉也能很好地檢測。2種算法人臉檢測測試結果對比如表1所示,傳統Viola-Jones算法的檢測率Rd只有91.8%,誤檢率Rfd達到了9.6%;改進算法不但把檢測率Rd提高到了93.6%,同時把誤檢率Rfd降低至6.2%,大大提高了檢測的效率。

圖5 Viola-Jones算法測試結果人臉檢

圖6 改進算法測試結果

表1 2種算法人臉檢測試驗結果對比
圖7是改進算法后的人臉檢測與識別系統操作界面。

圖7 人臉檢測與識別系統操作界面
5.2 GPU優化前后對比
試驗硬件平臺為Intel(R) Core(TM) i5-6300HQ CPU,2.30GHz,4.00GB內存,NVIDIA GeForce GTX950M GPU,軟件平臺為Windows7 64bit。對于同一分辨率,采用測試50張圖片后求時間的平均值,測試結果如表2所示。由表2數據可以看出,利用GPU平臺并行加速,檢測速度得到了提高,隨著圖像分辨率的增大,由表2可知,GPU對OpenCV的加速比可以達到1.6~3.2倍左右。

表2 優化前后人臉檢測用時對比表
詳細介紹了Viola-Jones人臉檢測技術,就該傳統算法的一些不足之處進行了研究,并提出了合理化的改進方法。同時,利用GPU并行模塊和檢測算法中并行特性進行GPU并行人臉檢測方法的研究,對人臉檢測進行優化。結果表明,該方法有效地提高了人臉檢測的精度和速度,對后續的人臉識別系統識別率的提高起到了較大的作用。
[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].計算機應用,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] 李瑞淇.基于膚色和改進的AdaBoost人臉檢測算法研究[D].西安:西安電子科技大學,2014.
[5] 劉嘉敏,梁瑩,孫洪興,等.融合檢測和跟蹤的實時人臉跟蹤[J].中國圖象圖形學報,2015,20(11):1473~1481.
[6] 劉王勝,馮瑞.一種基于AdaBoost的人臉檢測算法[J].計算機工程與應用,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加速的并行人臉檢測[D].武漢:華中科技大學,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
國家自然科學基金項目(61272147);湖北省教育廳指導性項目(B2015446)。
龔強(1989-),男,碩士生,現主要從事信號處理、圖像與視頻處理方面的研究工作。
謝凱(1974-),男,博士,教授,博士生導師,現主要從事油氣信息處理和三維地質建模方面的教學與研究工作;E-mail:pami2010@163.com。
TP391.4
A
1673-1409(2016)25-0031-05
[引著格式]龔強,謝凱,賀建彪,等.基于GPU的并行人臉檢測方法研究[J].長江大學學報(自科版),2016,13(25):31~35.