牛 穎,李麗宏
(太原理工大學(xué) 電氣與動力工程學(xué)院,太原 030024)
人臉檢測與跟蹤是計算機視覺和圖像處理領(lǐng)域的一個重要分支,在安防監(jiān)控系統(tǒng)[1]、門禁系統(tǒng)[2]和機器人[3]等系統(tǒng)中應(yīng)用非常廣泛,已引起越來越多研究人員的關(guān)注.Turk等提出了特征臉,通過比較面部特征與已知個體的特征來識別目標(biāo)人物,其性能容易受到光照和姿態(tài)變化的影響[4].簡毅等提出基于遺傳優(yōu)化 GRNN神經(jīng)網(wǎng)絡(luò)的人臉識別算法將人臉識別的準(zhǔn)確率提高到88%,但平滑因子選取不當(dāng)則達(dá)不到預(yù)期效果[5].張濤等提出一種融合了卡爾曼濾波器的Mean Shift算法,實現(xiàn)了實時多人臉跟蹤,但背景光線變化對跟蹤的準(zhǔn)確性影響較大[6].王健基于傳統(tǒng)的Gentle AdaBoost算法在弱分類器訓(xùn)練中引入代價因子,通過更新其權(quán)值,提高了人臉檢測率,但檢測速度慢,無法滿足實時性要求[7].DU等使用幀差法提取運動區(qū)域,通過融合卡爾曼濾波器的CamShift算法識別人臉,提高了系統(tǒng)的魯棒性,但因計算量大導(dǎo)致運行速度慢[8].Nhat等提出基于特征自適應(yīng)模型,實現(xiàn)了準(zhǔn)確且快速的人臉追蹤,但此法僅能檢測一張人臉[9].Zhang等人將KCF算法和CamShift算法相結(jié)合,能有效地抵抗干擾,實現(xiàn)對目標(biāo)人臉的穩(wěn)定跟蹤,但實時性較差[10].席志紅等提出背景差分法改進(jìn)TLD算法的檢測模塊,提高了跟蹤速度,但此法不能很好處理目標(biāo)被遮擋的情況[11].
本文使用融合CamShift的TLD算法,改進(jìn)了跟蹤模塊,利用直方圖反向投影得到目標(biāo)圖像像素的概率分布,自適應(yīng)調(diào)整目標(biāo)窗口大小并自動跟蹤目標(biāo),提高了人臉追蹤效率和準(zhǔn)確率.
TLD算法分為跟蹤模塊、檢測模塊和學(xué)習(xí)模塊三個部分[12].跟蹤模塊在連續(xù)的視頻序列中對目標(biāo)進(jìn)行追蹤,檢測模塊通過對視頻序列的每一幀圖像進(jìn)行獨立的檢測,獲取目標(biāo)物體的最新外觀特征來定位每一幀圖像中目標(biāo)物體的位置,追蹤模塊追蹤目標(biāo)失敗后幫助系統(tǒng)重新定位并追蹤目標(biāo)物體,使得系統(tǒng)重新穩(wěn)定運行.跟蹤模塊與檢測模塊是獨立工作的.學(xué)習(xí)模塊根據(jù)跟蹤模塊結(jié)果和檢測模塊結(jié)果的對比評估錯誤和誤差,通過迭代訓(xùn)練樣本,更新檢測模塊的目標(biāo)模型,實現(xiàn)自我學(xué)習(xí),避免以后出現(xiàn)類似錯誤,從而使跟蹤更加穩(wěn)定和可靠[13].TLD算法整體結(jié)構(gòu)如圖1所示.
圖1 TLD算法整體結(jié)構(gòu)Fig.1 TLD algorithm overall structure
TLD算法中跟蹤器采用的是L-K光流法,該方法在視頻處理過程中需要從圖像金字塔最高層開始計算光流,向塔底迭代計算,復(fù)雜度較高,導(dǎo)致跟蹤實時性很差.
本文將CamShift算法作為TLD算法框架中的跟蹤模塊,通過計算目標(biāo)圖像在HSV顏色空間下的顏色分量直方圖,利用直方圖反向投影得到目標(biāo)圖像像素的概率分布,自動定位并跟蹤目標(biāo)并自適應(yīng)調(diào)整目標(biāo)窗口大小.該算法計算量小且易于實現(xiàn).在前一幀圖像中進(jìn)行Haar人臉特征提取,并使用分類器檢測出人臉,然后使用CamShift算法對目標(biāo)人臉進(jìn)行跟蹤,步驟如下:
1)將包含目標(biāo)人臉的待檢圖像的色度分為m個等級,記第i個像素坐標(biāo)為(xi,yi),其色度特征值為b(xi,yi),待檢圖像的特征色調(diào)值為u,則可構(gòu)建色度特征直方圖模型為q={qu},u=1,2,…,m.
(1)
2)根據(jù)步驟1)構(gòu)建的色度特征直方圖模型進(jìn)行反向投影,預(yù)測其灰度值,形成概率投影圖.設(shè)像素(x,y)對應(yīng)的特征色調(diào)值為u,則該像素點的概率投影圖的灰度值I(x,y)為:
(2)
其中,?·」為向下取整符號.
3)計算待檢圖像中定位窗口的零階矩和一階矩:
(3)
4)計算定位窗口的質(zhì)心(xw,yw):
(4)
5)對定位窗口的大小進(jìn)行自適應(yīng)調(diào)整:
(5)
設(shè)定定位窗口的中心與質(zhì)心的距離閾值,若該距離大于設(shè)定閾值,重復(fù)步驟3)到步驟5),直到該距離達(dá)到預(yù)定要求,小于設(shè)定閾值.
6)計算定位窗口的二階矩:
(6)
(7)
(8)
則橢圓形定位窗口的大小和方向為:
(9)
7)獲取下一幀圖像,返回步驟1),重新構(gòu)建色度特征直方圖模型,計算新的目標(biāo)圖像的像素點,直至完成目標(biāo)跟蹤.
跟蹤模塊使用CamShift算法,可以跟蹤目標(biāo)圖像并自適應(yīng)地調(diào)整定位窗口大小,獲取目標(biāo)人臉的大概位置,從而提高跟蹤模塊的運行速度.
TLD算法的檢測模塊對圖像進(jìn)行滑動窗法掃描搜索,即對用一個個小窗口對輸入圖像進(jìn)行掃描,掃描窗口尺度縮放系數(shù)為1.2,窗口水平方向步長是圖像寬度的10%,窗口豎直方向步長是圖像高度的10%,如圖2所示.以大小為320×240的圖片為例,滑動窗法掃描次數(shù)高達(dá)5萬次,計算量非常龐大.因此需要有效的分類器,檢測模塊中分類器是由三個子分類器級聯(lián)而成,對從目標(biāo)邊界框獲得的樣本進(jìn)行分類.子分類器包括圖像方差分類器、集成分類器和最近鄰分類器.
圖2 掃描框示意圖Fig.2 Schematic diagram of the scan box
一般情況下,跟蹤器可以追蹤出人臉大致位置,而檢測器需要對人臉位置進(jìn)行更精準(zhǔn)的檢測.以本文所采集的1920×1080分辨率圖片為例,人臉距離圖像采集設(shè)備距離在0.5m~2m的情況下,圖像中人臉?biāo)即笮〖s在250×200像素到400×500像素之間.設(shè)圖像視野寬度為W,高度為h,目標(biāo)人臉?biāo)即翱谧畲蟪叽绲膶挾葹閣max,高度為hmax,人臉?biāo)即翱谧钚〕叽绲膶挾葁min,高度為hmin,若掃描框的變換階數(shù)設(shè)為k,那么單次掃描框?qū)挾燃案叨茸兓隽勘硎緸椋?/p>
ΔW=(Wmax-Wmin)/k
Δh=(hmax-hmin)/k
(10)
若當(dāng)前幀的目標(biāo)矩形框最初尺寸寬度為ws,高度為hs,則第i種掃描矩形框的寬度計算公式為:
Wi=Ws-ΔW·i,i∈Z[0,il]
Wi=Ws+ΔW·i,i∈Z[0,ir]
(11)
其中:il=(ws-wmin)/Δw,ir=(wmax-ws)/Δw
同理第i種掃描矩形框的高度計算公式為:
hi=hs-Δh·i,i∈Z[0,il]
hi=hs+Δh·i,i∈Z[0,ir]
(12)
其中,il=(hs-hmin)/Δh,ir=(hmax-hs)/Δh
求出當(dāng)前幀中矩形框的中心點即臉部中心(xc,yc),在左上角坐標(biāo)(xc-ws,yc-ws),右下角坐標(biāo)(xc+ws,yc+ws)的矩形范圍內(nèi)進(jìn)行矩形框滑動檢測,滑動時的行步長計算公式為:
sr=λΔw,sc=λΔh
(13)
λ取值為[0,1]的實數(shù).
將所有種掃描框中的圖像區(qū)域提取出來,作為一個集合對其進(jìn)行分類器檢測.
1)方差分類器
積分圖像在圖像計算處理過程中具有重要作用,積分圖像定義為:圖像上任意位置(x,y)處值ii(x,y)為該點左上角所有像素的和,如公式(14)所示:
(14)
其中i(r,c)表示初始圖像(r,c)位置的像素值.通過積分圖像計算圖像某一區(qū)域像素方差時可大大縮短計算時間.如圖3所示,P1,P2,P3,P4圍成的區(qū)域A.
圖3 通過積分圖計算像素方差Fig.3 Calculate pixel variance by integral graph
由積分圖像的定義可知,該區(qū)域圖像的像素和為sum(A)=P4-P2-P3+P1.該區(qū)域圖像的期望為:E(A)=sum(A)/(hi·wi),對于第i個矩形框區(qū)域集合,其灰度值方差σ12計算如下:
(15)
將該矩形區(qū)域中圖像的像素灰度值方差σ22與目標(biāo)圖像的方差σ22相比較,若σ12≤0.5σ22,則從集合中排除該矩形區(qū)域圖像,否則認(rèn)為當(dāng)前掃描窗口包含目標(biāo)圖像.
2)集成分類器
集成分類器實際是隨機蕨分類器,每層節(jié)點判斷準(zhǔn)則相同,是線性結(jié)構(gòu)的分類器.集成分類器根據(jù)樣本特征值進(jìn)行判斷,例如,在圖像中任意選取兩點A和B,對兩點亮度值進(jìn)行比較,若A的亮度大于B,則特征值為1,否則為0.蕨的每個節(jié)點就是通過比較每一對像素點.每選取一對新像素點,就是一個新的特征值.同一類的多個樣本經(jīng)過同一個蕨,得到該類結(jié)果的分布直方圖,計算見公式(16).用很多個蕨對同一樣本分類,投票數(shù)最大的類作為新樣本的分類,這樣可以很大程度提高分類器的準(zhǔn)確度.
(16)
其中,p(F|Ck)代表類的先驗概率,F(xiàn)代表蕨的結(jié)果.
3)最近鄰分類器
通過最近鄰分類器對掃描框圖像集合進(jìn)一步篩選,最近鄰分類器通過計算圖片間對應(yīng)點像素值間的距離作為評定準(zhǔn)則,如兩個圖像像素向量間的曼哈頓距離.假定第i個矩形框區(qū)域的像素分布如圖4所示,將其作為輸入圖像,目標(biāo)矩形框作為參考像素框,相減后各像素和作為圖像距離的評定標(biāo)準(zhǔn),數(shù)值越小則表示距離越近.篩選出距離最近的k個掃描框圖像作為最終結(jié)果.
圖4 圖像像素點求距離示意圖Fig.4 Image pixel point distance map
在TLD算法框架中,跟蹤模塊與檢測模塊是并行獨立工作的.學(xué)習(xí)模塊根據(jù)跟蹤模塊結(jié)果和檢測模塊結(jié)果的對比評估錯誤和誤差,通過迭代訓(xùn)練樣本,更新檢測模塊的目標(biāo)模型,實現(xiàn)自我學(xué)習(xí),被稱為P-N學(xué)習(xí)器.P-N學(xué)習(xí)器流程框圖如圖5所示.
圖5 學(xué)習(xí)模塊流程圖Fig.5 Learning module flow chart
首先根據(jù)標(biāo)記樣本數(shù)據(jù),經(jīng)過訓(xùn)練得到初始分類器.P-N專家負(fù)責(zé)找出錯誤分類樣本,并對訓(xùn)練樣本集做出修正.由于目標(biāo)與背景在圖像中是共存的,并不相互獨立.在檢測模塊中,P專家負(fù)責(zé)找出被標(biāo)為背景的目標(biāo)圖像,也就是錯誤的負(fù)圖像;而N專家負(fù)責(zé)找出標(biāo)記為目標(biāo)的背景圖像,也就是錯誤的正圖像.
本文將改進(jìn)的TLD算法與TLD算法和CamShift算法進(jìn)行對比試驗.本文試驗設(shè)置改進(jìn)的TLD算法中CamShift算法迭代次數(shù)為10,檢測模塊中檢測到的目標(biāo)人臉和真實人臉的定位窗口重疊50%及以上,則認(rèn)為跟蹤正確,以此作為標(biāo)準(zhǔn)對算法的效果進(jìn)行對比.
本試驗分別在人與相機距離0.5m,1m,2m時,使用改進(jìn)的TLD算法和TLD算法實現(xiàn)人臉跟蹤,實時跟蹤效果良好,其效果圖見圖6.分圖左圖均為原始TLD算法效果圖,分圖右圖均為改進(jìn)的TLD算法效果圖.
圖6 改進(jìn)的TLD算法和TLD算法實現(xiàn)人臉跟蹤Fig.6 Improved TLD algorithm and TLD algorithm for face tracking
通過圖6可知,在人與相機距離不同時,TLD算法和改進(jìn)的TLD算法均成功實現(xiàn)人臉跟蹤,這兩種算法跟蹤準(zhǔn)確率和實時性見表1.
表1 改進(jìn)的TLD算法和TLD算法跟蹤實時性比較
Table 1 Comparison of improved TLD algorithm and
TLD algorithm tracking real-time
算 法人與相機距離/m總幀數(shù)跟蹤準(zhǔn)確率所用時間/s幀率TLD算法0.550390%4311.7149889%4211.8250189%4311.7改進(jìn)的TLD算法0.550392%3116.2149891%3016.1250191%3116.1
根據(jù)表1的測試數(shù)據(jù)可知,對500幀圖像進(jìn)行跟蹤,原始TLD算法所用時間約為42s,跟蹤準(zhǔn)確率約為89%.改進(jìn)的TLD算法所用時間約為31s,跟蹤準(zhǔn)確率約為91%.改進(jìn)的TLD算法跟蹤準(zhǔn)確率提高了2%,所用時間減少11s.
有無遮擋物時,改進(jìn)的TLD算法和CamShift算法實現(xiàn)人臉跟蹤如圖7所示.分圖左圖均為原始CamShift算法效果圖,分圖右圖均為改進(jìn)的TLD算法效果圖.
通過圖7可知,臉部存在遮擋物時,CamShift算法將無法準(zhǔn)確實現(xiàn)人臉跟蹤,甚至出現(xiàn)跟蹤失敗.但使用改進(jìn)的TLD算法,可以成功跟蹤人臉,這兩種算法的跟蹤準(zhǔn)確率和實時性見表2.
圖7 改進(jìn)的TLD算法和CamShift算法實現(xiàn)人臉跟蹤Fig.7 CamShift algorithm and improved TLD algorithm for face tracking
根據(jù)表2的測試數(shù)據(jù)可知,沒有遮擋物時對500幀圖像進(jìn)行跟蹤,原始CamShift算法所用時間約為35s,跟蹤準(zhǔn)確率約為92%;改進(jìn)的TLD算法所用時間約為27s,跟蹤準(zhǔn)確率約為92%,改進(jìn)的TLD算法跟蹤所用時間減少8s.有遮擋物時對500幀圖像進(jìn)行跟蹤,原始CamShift算法所用時間約為36s,跟蹤準(zhǔn)確率約為87%,改進(jìn)的TLD算法所用時間約為28s,跟蹤準(zhǔn)確率約為91%.改進(jìn)的TLD算法跟蹤準(zhǔn)確率提高了4%,所用時間減少8s.
表2 改進(jìn)的TLD算法和CamShift算法跟蹤實時性比較
Table 2 Improved TLD algorithm and CamShift algorithm for
tracking real-time comparison
算 法總幀數(shù)是否遮擋跟蹤準(zhǔn)確率所用時間/s幀率CamShift算法496否92%3514.1500是87%3613.8改進(jìn)的TLD算法496否92%2718.3500是91%2817.8
綜合上述數(shù)據(jù)分析可知,使用改進(jìn)的TLD算法,跟蹤準(zhǔn)確率和幀率均高于原始兩種算法,且在有遮擋物的情況下也能成功跟蹤人臉.
針對TLD算法跟蹤人臉實時性差的問題,本文提出了改進(jìn)的TLD算法,該方法使用CamShift算法作為跟蹤模塊,對跟蹤性能進(jìn)行優(yōu)化.通過對比試驗可知,改進(jìn)的TLD算法相比于TLD算法和CamShift算法,人臉跟蹤效率和準(zhǔn)確率均得到提高,滿足試驗要求.
在Visual Studio 2015平臺上創(chuàng)建應(yīng)用程序進(jìn)行測試,結(jié)果表明,本方法思路合理,有效地實現(xiàn)了實時人臉跟蹤.