向世濤,文 暢,謝 凱,賀建飚,劉從浩
(1.長江大學 電子信息學院,湖北 荊州 434023;2.長江大學 計算機科學學院,湖北 荊州 434023;3.中南大學 信息科學與工程學院,湖南 長沙 410083)
由David Lowe提出的SIFT(scale-invariant feature transform)模型[1,2]成為目前人臉特征匹配技術應用最廣泛的模型之一。雖然SIFT模型對于人臉匹配魯棒性較高,但還存在許多需要改進的地方,相關問題引起國內外學者關注。Seba Susan等[3]提出將模糊匹配系數應用到SIFT模型中,形成高效的模糊篩選描述符;Sohee Park等[4]采用Gabor-LBP直0方圖和SIFT-based特征點結合的方法;Gautam Narang等[5]提出基于SIFT和LMBP神經網絡分類的面部識別方法。
上述學者都有效地優化了SIFT模型在人識別中的應用,但傳統的SIFT模型仍存在當圖像有多個相似區域時,容易造成誤匹配的情況。為此,提出一種RISIFTTF模型下的快速人臉特征匹配方法,將具有旋轉紋理不變性的RITF特征向量與SIFT特征向量融合,形成特征有RISIFTTF描述向量,從而有效地提高了特征匹配的效率。而且利用GPU強大的并行計算能力,優化了方法的計算時間,使其更加高效精確。
傳統的SIFT模型是一種提取圖像局部特征的模型,它在匹配過程中,僅使用圖像的局部特征描述符進行匹配,難免會由于缺少紋理、目標過小等原因而造成誤匹配。即使能夠消除部分的誤匹配點對,但由于局部特征的相似性,而導致剔除這些誤匹配點對的能力有限[6,7]。當人臉圖像中存在多個相似的紋理信息區域時,只有關鍵點周圍圖像區域的旋轉不變性紋理特征等其它特征才能達到良好的效果。因此,本文提出了具有良好旋轉紋理特征不變性的RISIFTTF模型。它分為4個步驟[8-11]:尺度空間極值檢測、關鍵點定位、方向確定以及構建RISIFTTF描述符。流程如圖1所示。

圖1 RISIFTTF模型流程
建立高斯金字塔以及高斯差分金字塔(DoG),并檢測空間極值點。在高斯金字塔構建過程中,先將圖像擴大一倍,在此基礎上,對該尺寸下圖像進行高斯模糊,幾幅模糊之后的圖像集合構成了一個八度。然后對該八度下的最模糊圖像進行下采樣操作,長和寬分別縮短一倍,圖像面積變為原來1/4。該圖像就是下一個八度的初始圖像,在此基礎上完成屬于這個八度的高斯模糊處理,并以此類推完成的所有八度構建,從而形成高斯金字塔。再對同一個八度的兩幅相鄰圖像相減得到差值圖像,所有八度的這些差值圖像的集合,就構成了高斯差分金字塔
D(x,y,σ)=[G(x,y,kσ)-G(x,y,σ)]?I(x,y)
=L(x,y,kσ)-L(x,y,σ)
(1)
式中:k——不同高斯核尺度,k的初值為1,尺度以k倍遞增。
高斯差分金字塔的建立如圖2所示。

圖2 高斯差分金字塔的建立
接下來便是在三維空間(圖像二維,尺度一維)中,遍歷檢測極值點。具體過程是比較當前特征點的灰度值和其它26個點(當前尺度下該點相鄰的8個點以及前后尺度下與該點最近的9個點)的灰度值大小。
由于圖像是一個離散的空間,特征點的位置坐標都是整數,但在尺度空間中檢測出來的關鍵點的坐標并不一定是整數。為了精確定位關鍵點的坐標,采用三元二次函數的泰勒公式,通過5次迭代確定極值點的位置
(2)
該公式是用已知的A點去估計附近B點的值。其中x=(x,y,σ)T是B點相對于A點的偏移。求上式極值,再對其求導,并令其導數為0,得
(3)
其中,若x0中有一維大于0.5,表明該點更接近另一點C,此時將其更新為C點,并且繼續迭代過程;否則迭代結束,將x0追加到當前整數坐標,從而得到特征點的精確坐標。將上式求出來的x0代入原式,得
(4)
式中:當D(x0)≤0.03[2]時,判定該點為對比度較低的特征點。由于低對比度的點易受到噪聲影響而變得不穩定,故去除這些低對比度特征點。
在精確定位后的特征點中還有一些邊緣點,由于其對一些噪聲不穩定,因此也需要在此去除。其特征是在垂直邊緣的方向上的主曲率較大,在與邊緣相切的方向上其主曲率較小,根據這些特征便可去除邊緣點。主曲率通過2階Hessian矩陣獲得
(5)
其中,Dxx、Dxy、Dyy都可以通過當前的像素點與周圍像素點相減得到。
由于某點的Hessian矩陣的特征值與該點的主曲率成比例的,因此可通過計算Hessian矩陣的特征值來確定該點的主曲率。設矩陣特征值分別為α和β(假設α>β),則有
Tr(H)=Dxx+Dxy=α+β
(6)
Det(H)=DxxDyy-(Dxy)2=αβ
(7)
其中,Det(H)為矩陣的行列式,Tr(H)為矩陣的跡。通過計算α/β來比較特征點的主曲率,將α/β≥10[2]的點剔除。
對于在高斯差分金字塔中檢測出來的關鍵點,采集其所在金字塔中領域窗口內像素的梯度和方向分布
l(x,y)={[F(x+1,y)-F(x-1,y)]2+
[F(x,y+1)-F(x,y-1)]2}1/2
(8)
(9)
其中,l(x,y)和ρ(x,y)分別為高斯差分金字塔中(x,y)處梯度的模值和方向。
傳統的SIFT模型是先根據特征點的尺度選擇金字塔中的圖像,然后計算其領域范圍內各點的梯度方向和幅值。每個特征點都是由4×4共16個子點組成,其中每個子點有8個方向的向量數據,由此生成4×4×8共128維的特征向量模型。最后為了避免光照影響,對特征向量的長度做歸一化處理。
接著是RITF模型的構建,以特征點為中心,圖像最長對角線D為直徑建立一個圓形區域,以此作為特征點的領域。將該領域等分為若干個同心圓領域,在省去高斯模糊和領域角度歸零操作的情況下,依然保持良好的旋轉不變性,同時還避免了圖像旋轉的運算代價。

(10)


(11)
其中,(xi,yi)和(xc,yc)分別為像素點Ii(x,y)和中心點Ic(x,y)在待描述區域的坐標,β為常數。接著把計算得到的所有加權RITF特征值組成一個一維特征向量,記為Ri,則有
Ri=[λ1*ritf1λ2*ritf2…λ64*ritf64]
(12)

現定義RISIFTTF模型如下

(13)
其中,S為128維的SIFT模型,R為64維的RITF模型,T為192維的RISIFTTF模型,α為相對權重因子,根據圖像像素大小與類型而定,其中α≤1。
2007年NVIDIA公司發布用于GPU編程的官方開發平臺CUDA[12](compute unified device architecture),其核心思想是3個重要的抽象概念:共享存儲器、線程組層次結構和屏蔽同步。
GPU可用于解決數據并行計算的問題——使許多數據元素在其上可被并行執行,具有較高的計算密度[13]。CUDA編程模型公開了GPU的并行能力,正是憑借于GPU獨特的硬件架構設計,使其具有強大的并行數據運算能力(其大量的晶體管都是用于算術邏輯運算)。由于大量的數據元素在線程上獨立運行,且具有較高的計算密度,因此并不需要較大的數據緩存。
本文將從以下幾個方面來介紹RISIFTTF模型的優化與加速,其流程如圖3所示,虛線左邊表示程序在CPU端運行,右邊表示在CPU端運行。

圖3 RISIFTTF模型并行計算流程
2.2.1 高斯差分金字塔的建立及極值檢測
在建立高斯金字塔時,由于每一層圖像都需要進行高斯濾波運算,耗時太多,故采用二維卷積來計算。根據其可分性,分成行和列兩個維度分別使用一維卷積核函數并行計算
I列(x,y)=I(x,y)*gx(t)
(14)
I行(x,y)=I列(x,y)*gy(t)=I(x,y)*gx,y(t)
(15)
由于列卷積與行卷積相似,故下面以列卷積運算為例對高斯金字塔的并行建立進行詳細介紹。將block設置為二維,thread為一維。每次計算block讀取部分圖像數據并存放到shared memory,這樣線程之間的數據通信能加快程序的并行計算。完成高斯金字塔的建立后,直接將相鄰尺度的圖像上的像素點相減便得到了高斯差分金字塔。由于相減時,不相鄰的圖像不受計算的影響,因此可以放在GPU上并行處理。同理,也可以對高斯差分金字塔中每層圖像的像素點并行檢測極值點,找到潛在關鍵點。接著通過二值位圖標記關鍵點的位置和尺度,插入到序列中并傳到Host端。
2.2.2 直方圖統計
本文以半徑為15個像素點的圓形領域作為關鍵點描述符的領域信息。為彌補因沒有仿射不變性而產生的特征點不穩定問題,本文先用高斯平滑對整個圓形領域的梯度幅值做加權處理,再對該領域進行區域劃分,將2π做36等均分,每個區域對應于一個block。統計每個block中像素梯度的梯度信息就能獲得該特征點的直方圖,查找出直方圖中最大組距(bin)的值就是該特征點的主方向。為了更進一步的優化計算,本文將數據導入到RGBA紋理存儲器中,利用高級圖形卡上的多目標渲染算法進行加速處理。最后,將計算的結果壓縮到一維數組,并從Device端傳回到Host端,在CPU上接著更新梯度方向并建立SIFT描述符。
2.2.3 RITF模型構建
由于一幅圖像一般會有上百個特征點,且每個特征點的RITF特征計算都比較耗時,故本文將該步驟放在GPU上運行。先將特征點位置以及圖像等數據從Host端復制到Device端,并保存到Global memory,再為每一個block分配一個特征點的RITF特征值計算。由于一個grid中最多可以允許65535×65535個block,其數量遠大于特征點數,所以不用擔心數據溢出的問題。由式(10)~式(12)可以知道,RITF特征值計算與加權系數計算之間互不影響,故設計不同的kernel函數分別在兩個stream中并行調用,并將RITF特征值和加權系數保存在不同的數組中。為了保證兩者的值相互對應,RITF特征值的計算順序應與加權系數的計算順序保持一致。最后,在構建RITF模型之前,要確保所有的計算都已執行完成。為此,在這些kernel函數中,除了返回計算結果外,還應返回計算狀態信息。
2.2.4 RISIFTTF特征匹配
RISIFTTF模型是由128維的SIFT模型和64維的RITF模型組合構建而成的,包含了兩種不同的圖像信息,應采用不同的匹配策略。對于SIFT局部特征向量S仍采用歐氏距離作為其匹配策略
(16)
式中:Si,m、Sj,m——SIFT局部特征第i個特征點的第m維特征向量和第j個特征點的第m維特征向量(m≤128)。
對于RITF局部特征向量R采用χ2統計量作為匹配策略
(17)
式中:Ru,m、Rv,m——RITF局部特征第u個特征點的第m維特征向量和第v個特征點的第m維特征向量(m≤64)。
在進行特征匹配時,將人臉圖像數據從Host端傳到Device端,利用GPU并行計算。將每個特征點的RISIFTTF特征向量放入一個block的shared memory中,給每個block分配192個thread,前128個thread計算歐氏距離,后64個thread計算χ2統計量,這樣讓一個thread去處理一維的匹配信息。最后,通過調用__syncthreads()函數實現線程同步,只有192個thread計算完后,才能去執行后面的流程。
硬件平臺:CPU為英特爾的Core i5-4258U處理器,主頻2.40 GHz,內存8 GB。GPU為GeForce GTX 960M,640顆CUDA核,顯存帶寬80.16 GB/s,核心頻率1097 MHz。
軟件平臺:操作系統為Microsoft Windows 10,編譯器平臺為Visual Studio 2010,CUDA Toolkit 7.5,OpenCV 2.4.8。
3.2.1 實驗測量參數
記匹配正確的人臉數為Nr,匹配錯誤的人臉數為Nw,沒有匹配出來的人臉數為Nf(通常在進行特征匹配實驗時,會以m個匹配點對作為閾值,來判斷是否匹配成功),CPU順序執行的時間為TCPU,GPU并行執行的時間為TGPU,加速比為S,配準率為Rm,查全率為Rr,則有
(18)
(19)
(20)
3.2.2 人臉匹配方法改進前后對比
本文實驗所用的人臉樣本庫來自于FERET[14]提供的人臉庫(每張人臉圖片大小80×80)以及自采集人臉數據庫(每張人臉圖片大小180×250),其中包括正位人臉,側位人臉,傾斜的人臉圖像等。傳統SIFT模型下的人臉匹配方法只是對正位人臉、旋轉(傾斜)角度較小的人臉匹配效果好,而對旋轉(傾斜)角度相對較大的人臉圖匹配效果不佳;本文提出的改進方法是將具有旋轉紋理特征不變性的RITF模型與SIFT模型融合,在保持原有匹配效果的基礎上,對旋轉(傾斜)角度較大的人臉都有較好的匹配效果。本次實驗,針對相同的人臉庫,將改進的RISIFTTF模型下的人臉特征匹配方法與傳統SIFT模型下匹配方法進行比較。實驗數據均為進行10次實驗后的平均值。
對于FERET人臉庫而言,如圖4和圖5所示,SIFT模型有3個匹配對點,但實際上只有兩個匹配點是正確的;改進后的RISIFTTF模型可以匹配10對特征點,并且有8個匹配對點是正確的。

圖4 SIFT模型

圖5 RISIFTTF模型
兩種方法對FERET庫的人臉匹配效果見表1,改進后的人臉匹配方法將配準率提高了9.78%-13.96%,查全率提高了7.23%-8.70%(由于FERET人臉庫中特征點較少,這里設置的匹配點對閾值m=3)。

表1 FERET人臉庫實驗結果對比
對于自采集人臉庫,如圖6和圖7所示,SIFT方法雖然有19個匹配對點,但實際上只有9個匹配點是正確的;改進后的RISIFTTF方法可以匹配31對特征點,并且有23個匹配對點是正確的。

圖6 SIFT模型

圖7 RISIFTTF模型
兩種方法對自采集庫的人臉匹配效果見表2,改進后的人臉匹配方法將配準率提高了10.53%-13.21%,查全率提高了6.95%-7.98%(匹配點對閾值m=16)。

表2 自采集人臉庫實驗結果對比
圖8為基于RISIFTTF模型的人臉檢測與識別系統操作界面(為了較少軟件的運行時間,這里使用灰度圖進行匹配)。

圖8 人臉檢測與識別系統的操作界面
3.2.3 GPU優化前后對比
為了進行多組數據的對比實驗,將FERET人臉庫與自采集人臉庫均根據圖片數量的不同安排了5組實驗。每組實驗都是針對RISIFTTF模型將CPU串行計算與GPU并行計算進行對比,且每組實驗測試的時間均是10次實驗的平均值。
由表3可知,針對FERET人臉庫,GPU并行計算對RISIFTTF模型的加速比可以達到5倍-6倍左右。

表3 CPU與GPU運算時間比較(FERET庫)
由表4可知,針對自采集人臉庫,GPU并行計算對RISIFTTF模型的加速比可以達到4倍-5倍左右。

表4 CPU與GPU運算時間比較(自采集庫)
3.3.1 匹配性能分析
由上述實驗可知,本文提出的RISIFTTF模型下的特征人臉匹配方法相較于傳統方法具有很大的提升。對于FERET人臉庫,人臉圖片尺寸較小,均為灰度圖像,雖然匹配點數較少,但優化效果還是比較好的,配準率依然可以提高到97.03%。對于自采集人臉庫,人臉圖片尺寸較大,均為彩色圖像,因此匹配點對數較多,優化效果也更好,配準率高達97.51%。另外,改進后的方法明顯地提高了匹配點對數,使得兩個人臉庫的查全率都能達到99%左右。
3.3.2 運算速度分析
由上述實驗可知,利用GPU并行計算能有效的提高程序的運行速度,減少執行時間。相比于自采集人臉庫,FERET人臉庫中的人臉圖片尺寸較小,且均為灰度圖像,因此每幅圖像的特征提取的計算時間較少,加速比較大,優化效果較明顯。當圖片數量不多時,并沒有全面的利用到GPU上線程的資源,加速程度較小,加速比不是很高;但當圖片數量逐漸增多后,GPU上所有線程都被調用起來,兩個人臉庫的加速比都逐漸提高。因此,GPU并行計算確實能夠解決圖片數量大的情況。
本文詳細的介紹了一種RISIFTTF模型下的快速人臉匹配方法,并利用編程加以實現。該方法在保持原SIFT模型的優勢的同時,結合RITF模型,提高了傳統SIFT模型的旋轉不變性,很好地改善了傳統SIFT模型在圖像存在多個相似區域時易造成誤匹配的問題。并且本文利用GPU實現方法的并行加速,既保證了匹配精度,又能夠有效提高運行效率,減少了運行時間。
但本方法的特征描述符的維數有192維,維數較多,不利于方法計算性能的進一步優化。下一步研究將會重點解決這方面的問題。另外,現如今云平臺正逐漸成為熱門領域,其帶來的云計算相比單機的GPU并行計算更加的方便、高效。在解決維數問題的同時,進一步的研究將會嘗試把優化方法放到云平臺上,利用云計算去更有效地提高運行速度。
[1]Nilkanta Sahu,Arijit Sur.SIFT based video watermarking resistant to temporal scaling[J].Journal of Visual Communication and Image Representation,2017,45(5):77-86.
[2]Zhang Guixuan,Zeng Zhi,Zhang Shuwu.SIFT matching with CNN evidences for particular object retrieval[J].Neurocomputing,2017,238(5):399-409.
[3]Susan S,Jain A,Sharma A.Fuzzy match index for scale-invariant feature transform (SIFT) features with application to face recognition with weak supervision[J].IET Image Processing,2015,9(11):951-958.
[4]Park S,Yoo J H.Real-time face recognition with SIFT-based local feature points for mobile devices[C]//1st International Conference on Artificial Intelligence.New York:IEEE,2013:304-308.
[5]Narang G,Singh S,Narang A.Robust face recognition method based on SIFT features using Levenberg-Marquardt back propagation neural networks[C]//6th International Congress on Image and Signal Processing.New York:IEEE,2013:1000-1005.
[6]Jeahoon Choi,Seong Joon Yoo,Sung Wook Baik.Rotation invariant multiple face-detection architecture for smart TV[J].IERI Procedia,2014,6(4):33-38.
[7]Osós GC,Khoshgoftaar TM,Wald R.Rotation invariant face recognition survey[C]//Proceedings of the IEEE 15th International Conference on Information Reuse and Integration,2014:835-840.
[8]Bai Junfeng,Ma Yong,Li Jing.Good match exploration for thermal infrared face recognition based on YWF-SIFT with multi-scale fusion[J].Infrared Physics & Technology,2014,67(6):91-97.
[9]Vinay A,Dixit Hebbar,Vinay S Shekhar.Two novel detector-descriptor based approaches for face recognition using SIFT and SURF[J].Procedia Computer Science,2015,70(11):185-197.
[10]Vinay A,Ganesh Kathiresan,Durga Akhil Mundroy.Face recognition using filtered Eoh-sift[J].Procedia Computer Science,2016,79(4):543-552.
[11]CHANG Xujian,HAN Xie,XIONG Fengguang.Feature detection based on FAST detection and SIFT description[J].Computer Engineering & Design,2015,36(10):2749-2753(in Chinese).[常旭劍,韓燮,熊風光.基于FAST檢測及SIFT描述的特征檢測算法[J].計算機工程與設計,2015,36(10):2749-2753.]
[12]Devani U,Nikam V B,Meshram B B.Super-fast parallel Eigen face implementation on GPU for face recognition[C]//International Conference on Parallel.New York:IEEE,2014:130-136.
[13]CHEN Bin,CHEN Heping,LI Xiaohui.Efficient covariance matrix algorithm and realization for images on GPU[J].Computer Engineering & Design,2014,35(12):4238-4242(in Chinese).[陳彬,陳和平,李曉卉.基于GPU的高效圖像協方差矩陣算法與實現[J].計算機工程與設計,2014,35(12):4238-4242.]
[14]Ladislav Lenc,Pavel Král.Automatic face recognition system based on the SIFT features[J].Computers & Electrical Engineering,2015,46(2):256-272.