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