張京娟,黃海于
(西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,四川 成都 611756)
摘要:結(jié)合人臉檢測算法和跟蹤學(xué)習(xí)檢測算法(Tracking Learning Detection, TLD)完成多個人臉的檢測跟蹤,用來實現(xiàn)對汽車4S店顧客的實時進店檢測。由于采集圖像序列幀率低,導(dǎo)致幀間人臉姿態(tài)變化大,容易出現(xiàn)目標(biāo)丟失現(xiàn)象。本文采用Kalman濾波和最鄰近數(shù)據(jù)關(guān)聯(lián)方法,提出一種改進的基于TLD的顧客進店實時檢測算法,有效改善了目標(biāo)短暫丟失現(xiàn)象,增強了算法的魯棒性。實驗證明,該算法具有抵抗光線變化、小范圍形變和短暫遮擋的優(yōu)點,能夠解決復(fù)雜環(huán)境中的實際問題。
關(guān)鍵詞:跟蹤學(xué)習(xí)檢測;人臉檢測;多目標(biāo)跟蹤;Kalman;數(shù)據(jù)關(guān)聯(lián)
0引言
本文主要是結(jié)合人臉檢測算法和跟蹤學(xué)習(xí)檢測算法完成多個人臉的檢測跟蹤,實現(xiàn)對汽車4S店顧客的實時進店檢測。
1跟蹤學(xué)習(xí)檢測算法簡介
跟蹤學(xué)習(xí)檢測算法(TrackingLearningDetection, TLD)[1]是英國薩里大學(xué)的KALAL Z提出的一種新的跟蹤框架。該算法與傳統(tǒng)跟蹤算法的顯著區(qū)別在于將傳統(tǒng)的跟蹤算法和傳統(tǒng)的檢測算法相結(jié)合來解決被跟蹤目標(biāo)在被跟蹤過程中發(fā)生的形變、部分遮擋等問題。同時,通過一種改進的在線學(xué)習(xí)機制不斷更新跟蹤模塊的“顯著特征點”和檢測模塊的目標(biāo)模型及相關(guān)參數(shù),從而使得跟蹤效果更加穩(wěn)定、魯棒、可靠。
TLD算法對單目標(biāo)的長時間跟蹤由三部分組成:跟蹤、學(xué)習(xí)、檢測[2]。跟蹤器采用LucasKanade金字塔光流法在每幀圖像中跟蹤目標(biāo);檢測器確定所有出現(xiàn)目標(biāo)的位置,并在必要的時候修正跟蹤器,其主要工作原理是隨機森林原理;學(xué)習(xí)過程采用PN學(xué)習(xí)法估計檢測器的錯誤并更新檢測器以避免相同的錯誤再次發(fā)生。TLD的整體框架結(jié)構(gòu)圖[3]如圖1所示。
2顧客進店實時檢測系統(tǒng)中的視覺跟蹤問題
汽車4S店的監(jiān)控環(huán)境比較復(fù)雜:覆蓋面積大、背景復(fù)雜、光線變化大、客流量大,這些都給視頻監(jiān)控分析帶來了許多困難[4],主要包括以下幾個方面:
?。?)光照影響:在現(xiàn)實環(huán)境中,由于汽車4S店四周采用的都是玻璃墻,隨著天氣的變化展廳內(nèi)部的光線明暗變化特別大,容易導(dǎo)致背景改變和目標(biāo)外觀變化而造成虛假檢測和錯誤跟蹤。
?。?)遮擋問題:汽車4S店的客流量相對較大,常常會出現(xiàn)大量人群聚集的情況,造成人與人之間的相互遮擋比較嚴(yán)重,同時人臉快速移動時會難以獲得清晰的人臉圖像。
?。?)實時性與魯棒性 :既要減少算法的計算量以保證實時性,又要增強算法對復(fù)雜情況的適應(yīng)性,增強魯棒性,兩者是相互矛盾的。
3顧客進店實時檢測系統(tǒng)中的視覺跟蹤問題
3.1基本思想
首先利用人臉檢測算法在規(guī)定區(qū)域檢測到所有人臉,將其作為候選目標(biāo)保存,然后利用TLD算法分別預(yù)測每個人臉在下一幀中出現(xiàn)的位置,對于跟蹤失敗的目標(biāo),通過對下一幀預(yù)測位置周圍區(qū)域的檢測,確定該范圍內(nèi)人臉的個數(shù),如果僅存在一個人臉,則該人臉?biāo)诘奈恢眉礊閷?yīng)人臉下一幀的位置,更新該目標(biāo)的位置信息;如果該范圍內(nèi)的人臉多于一個,則分別計算人臉位置與Kalman預(yù)測位置中心坐標(biāo)的距離d,取距離最小的人臉記為該跟蹤對象。最后對每個目標(biāo)分別進行進店判斷,若判定目標(biāo)進店,則對目標(biāo)停止跟蹤,清除跟蹤信息。算法的流程圖見圖2。
3.2初始目標(biāo)的檢測
由于原始圖像尺寸較大,在全圖中檢測人臉不僅耗費時間,而且是不必要的。因為檢測到的人臉只有一部分是顧客進店時捕捉到的人臉,只有這一部分是系統(tǒng)需要的,因此,為了區(qū)分目標(biāo)人臉和非目標(biāo)人臉,需要在原始圖像中劃分出店門區(qū)域作為人臉檢測區(qū)域,用于檢測顧客進店時刻的人臉作為人臉跟蹤的初始人臉。
3.3基于卡爾曼濾波器的目標(biāo)估計
Kalman濾波器是一個對動態(tài)系統(tǒng)的狀態(tài)序列進行線性最小方差估計的算法[5],根據(jù)人臉運動的特點和Kalman濾波的原理,建立了人臉運動的Kalman運動模型。
首先定義狀態(tài)矢量:
X(k)={x(k),y{k},dx{k},dy{k}}T
觀測向量:
Z(k)={x(k),y(k)}T
其中x(k)、y(k)表示人臉矩形中心坐標(biāo),dx(k)、dy(k)分別表示矩形在X軸和Y軸方向上的速度。
狀態(tài)方程和觀測方程如下:
X(k)=φ(k,k-1)×(k-1)(1)
Z(k)=H(k)×X(k)+V(k)(2)
其中φ(k+1,k)是狀態(tài)轉(zhuǎn)移矩陣,H(k)是觀測矩陣,V(k)是觀測過程中的噪聲向量。
由于跟蹤過程中人臉的運動具有一定規(guī)律,且受人臉姿態(tài)變化和遮擋的影響較小,本文通過Kalman濾波預(yù)測目標(biāo)在下一幀的位置(x(k),y(k)),結(jié)合TLD算法進行碰撞裁決,在下一幀的待選區(qū)域中尋找與其具有最大相似度的位置來作為此幀的目標(biāo)位置,對跟蹤結(jié)果做進一步的預(yù)測,以避免和糾正人臉交叉所帶來的跟蹤錯誤。
3.4目標(biāo)更新
為了實現(xiàn)對目標(biāo)的自動初始化,需要定時啟動人臉檢測算法檢測進店顧客。由于原始圖像的采集幀率比較大,同時人臉檢測算法不僅耗時且占用CPU,如果對毎幀都進行人臉檢測則會導(dǎo)致計算機處理速度跟不上采集速度,耗時較多,無法達到實時性效果。因此,需要進行人臉跳幀檢測,既要保證檢測到所有的新目標(biāo),也要保證實時處理。具體方法是計算出顧客在店門區(qū)域內(nèi),必然能檢測到人臉的幀數(shù),每隔若干幀啟動人臉檢測算法。對于檢測到的人臉,可能包含處在跟蹤狀態(tài)的目標(biāo)和未跟蹤的目標(biāo),通過計算檢測到的目標(biāo)與所有跟蹤狀態(tài)的目標(biāo)的重疊度濾除已經(jīng)在跟蹤隊列的目標(biāo),將新目標(biāo)加入跟蹤隊列。
3.5進店判斷
若目標(biāo)從圖像邊緣消失則立刻將該目標(biāo)的所有信息刪除并退出跟蹤;若目標(biāo)由于受到遮擋或干擾暫時消失使跟蹤器無法正確跟蹤,則將此目標(biāo)的跟蹤狀態(tài)設(shè)置為LOST,如果在接下來的一定時間內(nèi)仍然沒有出現(xiàn)就把該目標(biāo)的所有信息刪除,并認(rèn)為該目標(biāo)已經(jīng)退出場景。為了保證跟蹤算法的實時性,避免某些目標(biāo)長期停留在跟蹤區(qū)域占用計算機資源,當(dāng)跟蹤過程的幀數(shù)達到了N幀時,停止對這一個人跟蹤,將目標(biāo)最后所處位置作為判斷目標(biāo)是否進店的依據(jù)。
3.6算法描述
本文所提出的算法包括4個主要過程:初始目標(biāo)檢測、TLD算法、Kalman濾波和目標(biāo)更新。算法主要步驟如下:
(1)初始化跟蹤目標(biāo)數(shù)、檢測隊列、跟蹤目標(biāo)隊列和跟蹤狀態(tài)隊列。
?。?)讀取一幀圖像,若目標(biāo)數(shù)為零則轉(zhuǎn)步驟(1)進行目標(biāo)更新。
(3)啟動TLD算法,找到該目標(biāo)把跟蹤結(jié)果存入目標(biāo)隊列。
?。?)從跟蹤隊列中取出一個目標(biāo),若該目標(biāo)的狀態(tài)為LOST,則依據(jù)該目標(biāo)矩形區(qū)域的左上頂點和右下頂點的坐標(biāo)(Xface1, Yface1)和(Xface2, Yface2)設(shè)置跟蹤檢測區(qū)域,設(shè)跟蹤檢測區(qū)域的左上頂點和右下頂點的坐標(biāo)為(Xzone1, Yzone1), (Xzone2, Yzone2),中心坐標(biāo)為(Xcenter, Ycenter),則:
Widthzone=(Xface2-Xface1)×Rw
Heightzone=(Yface2-Yface1)×Rh
Xzone1=Xcenter-(Widthzone/2)
Xzone2=Xcenter+(Widthzone/2)
Yzone1=Y center-(Heightzone/2)
Yzone2=Ycenter+(Heightzone/2)
其中Rw和Rh為縮放因子。
在上面的跟蹤檢測區(qū)域中進行人臉檢測,若沒有檢測到人臉則轉(zhuǎn)步驟(4);若檢測到一張人臉則更新目標(biāo)位置轉(zhuǎn)步驟(4);若檢測到多張人臉,采用Kalman濾波器利用目標(biāo)在上一幀的位置X(k-1)預(yù)測在下一幀中的位置為(k),采用最鄰數(shù)據(jù)關(guān)聯(lián)方法[6]匹配臨時目標(biāo)隊列中與(k)距離最近的目標(biāo),此目標(biāo)作為持續(xù)跟蹤的目標(biāo),并且更新濾波器狀態(tài),將結(jié)果放入跟蹤隊列轉(zhuǎn)步驟(4)。最后轉(zhuǎn)步驟(5)。
?。?)重復(fù)直到所有目標(biāo)組均處理完畢。
?。?)若此幀標(biāo)號是7的倍數(shù)則轉(zhuǎn)步驟(7)否則轉(zhuǎn)步驟(2)。
?。?)啟動人臉檢測,將檢測到的所有人臉位置信息存入檢測隊列。利用表決制把檢測隊列中的目標(biāo)與跟蹤隊列中的目標(biāo)進行匹配并更新跟蹤信息,若無匹配目標(biāo),則把該目標(biāo)作為新目標(biāo)添加到跟蹤隊列中并初始化跟蹤信息。重復(fù)上述操作直至檢測隊列中所有的目標(biāo)處理完畢。清空檢測隊列并轉(zhuǎn)步驟(2)。
4實驗與分析
本實驗采用的工業(yè)相機像素為500萬,幀率為14 f/s,采集包含多個人臉的BMP圖像序列,原始圖像尺寸為2 592×1 944,實驗平臺為Intel I74790 3.60 GHz、內(nèi)存8 GB、固態(tài)硬盤512 GB的工作站,以Visual Studio 2010和 OpenCV2.4.9為開發(fā)平臺,編程實現(xiàn)了上述算法。
4.1進店檢測
利用本文改進的TLD算法對一段在汽車4S店采集的圖像序列中的人臉進行跟蹤。 圖3是跟蹤結(jié)果, 圖3(a)為第2幀中檢測到1號目標(biāo),圖3(b)為第49幀中檢測到2號目標(biāo),圖3(c)為第63幀中目標(biāo)姿態(tài)發(fā)生變化后正常跟蹤,圖3(d)為第70幀中1號目標(biāo)走出場景后結(jié)束跟蹤,圖3(e)為第82幀中2號目標(biāo)走出場景后結(jié)束跟蹤。實驗測試表明,該顧客進店實時檢測算法對進店顧客的統(tǒng)計準(zhǔn)確率可達90%以上,能夠抵抗一定程度人臉姿態(tài)變化,且處理延時平均在20 s以內(nèi),基本滿足了實時性的要求。
4.2目標(biāo)丟失后的跟蹤
利用原始TLD算法、CT(Compressive Tracking)算法以及本文改進的TLD算法對一段在汽車4S店采集的圖像序列中的人臉進行跟蹤。 圖4是對圖像序列2采用TLD算法的跟蹤結(jié)果,圖5是采用CT算法的跟蹤結(jié)果,圖6是采用本文改進的TLD算法的跟蹤結(jié)果。
對比圖4和圖5可以看出,相對于CT算法TLD算法沒有出現(xiàn)模板漂移的現(xiàn)象;對比圖4和圖6可以看出,采用原始TLD算法,當(dāng)其中一個目標(biāo)丟失后,在接下來的幀中一直處在丟失狀態(tài),而采用本文算法能夠重新找回丟失的目標(biāo)繼續(xù)跟蹤,在一定程度上增強了算法的魯棒性,提高了算法的準(zhǔn)確性。
5結(jié)論
本文提出一種基于TLD改進的顧客進店實時檢測算法,首先對目標(biāo)人臉進行檢測,利用TLD對目標(biāo)人臉進行跟蹤,預(yù)測其在下一幀中的位置,在TLD的檢測器中引入基于Kalman的濾波器,對當(dāng)前幀目標(biāo)所在區(qū)域進行預(yù)估,縮小了檢測器的檢測范圍,提高了檢測器處理速度。對于跟蹤失敗的目標(biāo),在其附近區(qū)域檢測人臉;對于檢測到的人臉根據(jù)最鄰近數(shù)據(jù)關(guān)聯(lián)方法和Kalman濾波來確定最可能的位置。對于諸如交叉和部分遮擋等較為復(fù)雜的環(huán)境,本文算法仍然能夠較準(zhǔn)確地同時對多個人臉進行跟蹤。
參考文獻
[1] KALAL Z,MIKOLAJCZYK K,MATAS J.Trackinglearningdetection [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence,2010,6(1),114.
[2] KALAL Z, MIKOLAJCZYK K, MATAS J. FACETLD:trackinglearningdetection applied to faces[C]. IEEE International Conference on Image Processing(ICIP),2010:37893792.
?。?] 周鑫,錢秋朦,葉永強,等.改進后的TLD 視頻目標(biāo)跟蹤方法[J].中國圖象圖形學(xué)報,2013,18(9):11151123.
[4] 郭暉, 陳光. 基于OpenCV的視頻圖像處理應(yīng)用研究[J]. 微型機與應(yīng)用, 2010, 29(21):1416.
?。?] 梁娟, 項俊, 侯建華. 基于Camshift和Kalman濾波的自動跟蹤算法[J]. 微型機與應(yīng)用, 2011, 30(24):2831.
?。?] 閆輝,許廷發(fā),吳青青,等. 多特征融合匹配的多目標(biāo)跟蹤[J].中國光學(xué),2013,6(2):163170.