張 晶,王 旭,范洪博
(昆明理工大學(xué)信息工程與自動化學(xué)院,云南 昆明 650500)
目標(biāo)跟蹤在計算機(jī)視覺領(lǐng)域是一個熱門話題,通過信息融合技術(shù)將不同種傳感器獲取的目標(biāo)特征信息進(jìn)行融合來實現(xiàn)場景中的目標(biāo)跟蹤將越來越引起人們關(guān)注。目標(biāo)跟蹤過程會受多種因素干擾,其中包括遮擋、環(huán)境光照變化、目標(biāo)連續(xù)變化而導(dǎo)致的顏色、邊緣的相應(yīng)變化。這些常見問題是目標(biāo)跟蹤亟需解決的。近年來研究者針對這些問題提出了很多優(yōu)秀的跟蹤算法,比如:多示例學(xué)習(xí)MIL(Multiple Instance Learning)算法[1]對當(dāng)前跟蹤結(jié)果小鄰域采樣構(gòu)成正包,在其大鄰域圓環(huán)內(nèi)采樣構(gòu)成負(fù)包進(jìn)行多示例學(xué)習(xí),從而獲得分類器進(jìn)行目標(biāo)判斷;改進(jìn)的多示例學(xué)習(xí)IMIL(Improved Multiple Instance Learning)算法[2]根據(jù)壓縮感知理論設(shè)計隨機(jī)測量矩陣,然后利用多示例學(xué)習(xí),后面的處理與MIL算法一致;快速壓縮跟蹤FCT(Fast Compressive Tracking)算法[3]是一種基于數(shù)據(jù)獨(dú)立的多尺度圖像特征空間的特征模型,稀疏的測量矩陣壓縮了前景目標(biāo)和背景圖像,并不斷更新,最后通過貝葉斯分類器進(jìn)行目標(biāo)判斷;增量視覺跟蹤器IVT(Incremental learning for robust Visual Tracking)[4]在獲得當(dāng)前幀之前若干幀跟蹤結(jié)果所構(gòu)成的圖像空間條件下,對所得圖像空間進(jìn)行主成分分析PCA(Principal Component Analysis)處理,獲得歷史跟蹤結(jié)果的均值和特征向量,構(gòu)成特征子空間,每5幀更新一次,并將粒子濾波確定的候選模型送入特征空間,計算其與特征子空間中心的距離,輸出距離最優(yōu)者;視覺跟蹤分解VTD(Visual Tracking Decomposition)算法[5]將基本的觀測模型和基本的運(yùn)動模型聯(lián)系起來,設(shè)計多個基本跟蹤器,然后將所有的基本追蹤器都集成到一個復(fù)合跟蹤器中,在這個框架中,基本跟蹤器在并行運(yùn)行的同時進(jìn)行交互。通過與其它跟蹤器交換信息,每一個跟蹤器進(jìn)一步提高性能,從而提高了跟蹤的整體性能;基于盒粒子濾波的群目標(biāo)跟蹤Box-PF(group targets tracking algorithm based on Box Particle Filter)算法[6]是一種基于廣義似然加權(quán)方法改進(jìn)的粒子濾波算法,利用廣義似然函數(shù)的定積分來計算區(qū)間測量中粒子的權(quán)重,提出了一種基于方框粒子濾波的群跟蹤算法;TLD(Tracking-Learning-Detection)[7]將傳統(tǒng)跟蹤算法和傳統(tǒng)檢測算法相結(jié)合,同時,通過一種改進(jìn)的在線學(xué)習(xí)機(jī)制不斷更新跟蹤模塊的“顯著特征點(diǎn)”和檢測模塊的目標(biāo)模型及相關(guān)參數(shù),從而使得跟蹤效果更加穩(wěn)定、魯棒、可靠。但是,為了達(dá)到跟蹤的魯棒性,近年來研究者引入了時空上下文的思想,將時間上下文環(huán)境與空間上下文信息結(jié)合進(jìn)行跟蹤,提出了時空上下文STC(Spatio-Temporal Context)算法[8]。
許多學(xué)者對時空上下文算法進(jìn)行了研究并提出了很多改進(jìn),文獻(xiàn)[9]提出了干擾項和有貢獻(xiàn)區(qū)域的定義,在此基礎(chǔ)上進(jìn)一步細(xì)化上下文結(jié)構(gòu)。文獻(xiàn)[10]根據(jù)上下文不同區(qū)域與目標(biāo)區(qū)域運(yùn)動的相似性,對目標(biāo)周圍的灰度信息賦予不同的權(quán)值,增加算法的抗干擾能力。文獻(xiàn)[11]利用在線結(jié)構(gòu)化支持向量機(jī)建立物體間的空間約束信息模型來提高跟蹤的準(zhǔn)確性。文獻(xiàn)[12]提出了抗遮擋機(jī)制,將上下文區(qū)域分塊并基于顏色的相似度來判定目標(biāo)是否被遮擋,遮擋后采取分塊匹配來定位目標(biāo)的位置。文獻(xiàn)[13,14]提出將核粒子濾波KCF(Kernerlized Correlation Filters)算法輸出框進(jìn)行保守相似度計算,對相似度低的輸出框進(jìn)行檢測器檢測,檢測到單一聚類框再輸出。
文獻(xiàn)[9,10]提出的算法不具有抗遮擋機(jī)制,而文獻(xiàn)[12]提出的算法采取了顏色直方圖相似度進(jìn)行遮擋判斷,準(zhǔn)確率不高,文獻(xiàn)[13,14]在一些復(fù)雜情景中,對于檢測器檢測到的多個候選目標(biāo),卻不做輸出,降低了算法的跟蹤成功率。以上算法都存在目標(biāo)跟蹤過程中輸出窗口長期不變的問題,因此為了適應(yīng)目標(biāo)大小變化,解決STC算法跟蹤失敗問題,本文結(jié)合TLD框架思想提出一種自適應(yīng)目標(biāo)變化的時空上下文抗遮擋跟蹤算法STC-ALD(Anti-occlusion and adaptive target change visual tracking algorithm based on Spatio-Temporal Context)。初始化跟蹤點(diǎn)并進(jìn)行中值流跟蹤算法,預(yù)測下一幀跟蹤點(diǎn)位置,同時計算STC算法得到的目標(biāo)框的保守相似度,超過設(shè)定閾值即認(rèn)為跟蹤有效,然后將跟蹤點(diǎn)與STC前后輸出框的中心像素進(jìn)行運(yùn)動相似度計算[10],對運(yùn)動相似度高的跟蹤點(diǎn)進(jìn)行窗口調(diào)整后輸出。相反地,跟蹤判定為無效就利用檢測器進(jìn)行檢測,對檢測到的單一聚類框直接輸出結(jié)果,直接輸出,而對多個聚類結(jié)果,目標(biāo)很有可能是其中的一個,本文算法將逐個計算其時空上下文模型并利用當(dāng)前空間模型計算置信度,最終將置信值最大的聚類框作為目標(biāo)輸出。
STC算法基于貝葉斯框架,在當(dāng)前幀確定上下文集合:Xc={c(z)=(I(z),z)|z∈Ωc(x*)},其中x*是目標(biāo)區(qū)域中心,I(z)是目標(biāo)區(qū)域像素z的灰度值,Ωc(x*)是由目標(biāo)矩形確定的局部上下文區(qū)域的圖像灰度與位置的統(tǒng)計建模。通過一些基本的概率公式,計算置信度找到似然概率最大的位置,即為跟蹤結(jié)果。
置信度公式為:
(1)
其中,x和z表示像素坐標(biāo),P(x|c(z),o)是目標(biāo)o與局部上下文區(qū)域空間關(guān)系的條件概率,P(c(z)|o)是局部上下文各個點(diǎn)x的上下文先驗概率。
P(c(z)|o)上下文先驗?zāi)P驮赟TC算法進(jìn)行以下計算:
P(c(z)|o)=I(z)ωσ(z-x*)
(2)
(3)
其中,ω′是歸一化參數(shù),取值為[0,1],σ是一個尺度參數(shù),σ2是高斯函數(shù)方差,ωσ(z-x*)是區(qū)域中心加權(quán)的高斯函數(shù),區(qū)域中心像素貢獻(xiàn)大,區(qū)域邊緣像素貢獻(xiàn)小。
在STC算法中將P(x|c(z),o)稱為空間上下文模型,定義為:
P(x|c(z),o)=hsc(x-z)
(4)
公式(1)中置信函數(shù)c(x)在STC算法中計算如下:
(5)
其中,b是歸一化參數(shù),a是尺度參數(shù),β是目標(biāo)形狀參數(shù)。將公式(2)和公式(5)代入公式(1)得:
(6)
而為了加快STC算法的運(yùn)行速度,將公式(6)兩邊進(jìn)行快速傅里葉變換,得空間上下文模型為:
(7)
空間上下文模型更新成時空上下文模型為:
(8)
其中,ρ為模型更新的學(xué)習(xí)率。
公式(1)~公式(7)均來自文獻(xiàn)[8]。
具體STC算法跟蹤過程概括如下:
(1)在t幀,將選定的目標(biāo)計算其置信度,以及計算得到上下文先驗?zāi)P汀?/p>
(2)計算當(dāng)前幀空間上下文模型。
(4)利用t幀的Ωc(x*)區(qū)域在t+1幀計算上下文先驗?zāi)P汀?/p>
(5)根據(jù)公式(1)、公式(6),已知t+1幀的上下文先驗?zāi)P鸵约翱臻g上下文模型,利用公式(6)計算其置信度。
(6)將t+1幀得到的置信度最大點(diǎn),做為目標(biāo)在t+1幀的位置,隨后返回第一步繼續(xù)計算下一幀。將每一幀的置信度的極值點(diǎn)作為目標(biāo)位置輸出。
傳統(tǒng)的TLD算法采取中值流跟蹤算法,對跟蹤點(diǎn)進(jìn)行F-B(Forward-Backward)誤差消除,此算法在文獻(xiàn)[15]已經(jīng)詳細(xì)介紹,本文就不再闡述。但是,實驗發(fā)現(xiàn)直接利用F-B誤差消除錯誤跟蹤點(diǎn),利用剩下的跟蹤點(diǎn)集進(jìn)行目標(biāo)尺度變化分析是不準(zhǔn)確的。如圖1所示,左側(cè)白色點(diǎn)表示經(jīng)過F-B誤差消除后的剩余跟蹤點(diǎn),黑色線條表示跟蹤點(diǎn)位移向量。從圖中可以觀察到,在目標(biāo)框中的跟蹤點(diǎn)有些處于遮擋物上,利用這些跟蹤點(diǎn)對目標(biāo)尺度變化分析將帶來誤差。于是本文引入了跟蹤點(diǎn)與STC前后輸出框的中心像素運(yùn)動相似度計算方法,一旦相似度值大于閾值,即為可靠跟蹤點(diǎn),利用這些跟蹤點(diǎn)進(jìn)行目標(biāo)尺度分析具有很高的準(zhǔn)確性。
Figure 1 Tracking point once removed and that compared to the two erasure圖1 跟蹤點(diǎn)一次消除與兩次消除的效果對比圖
(9)
(10)
最后,將每個跟蹤點(diǎn)與目標(biāo)中心像素的距離轉(zhuǎn)換成一種權(quán)值,即相似度,公式如下[10]:
(11)
(12)
s1=λ*(MS-μ)*wt-1,
s2=λ*(MS-μ)*ht-1,
wt=wt-1*MS,
ht=ht-1*MS,
xt=xt-1+MDx-s1,
yt=yt-1+MDy-s2
(13)
其中,λ,μ為尺度參數(shù),wt-1,wt,ht-1,ht為第t-1、第t幀目標(biāo)的矩形框的長、寬,(xt-1,yt-1),(xt,yt)為第t-1、第t幀的目標(biāo)矩形左上角坐標(biāo)。
即經(jīng)過兩次消除錯誤跟蹤點(diǎn)后,利用可靠跟蹤點(diǎn)分析目標(biāo)尺度變化,并輸出具體目標(biāo)矩形{(xt,yt),wt,ht}。
(14)
Figure 2 STC-ALD algorithm learning process of the spatial context model for target scale expansion圖2 STC-ALD算法對目標(biāo)尺度擴(kuò)展的空間模型學(xué)習(xí)圖
綜上所述,自適應(yīng)目標(biāo)變化的時空上下文抗遮擋跟蹤算法具體流程如下:
(1)初始化跟蹤框。
(2)檢測器的學(xué)習(xí)。
(3)采取TLD中值流算法初始化跟蹤點(diǎn)以及利用目標(biāo)與局部區(qū)域的時空關(guān)系學(xué)習(xí)時空上下文模型,與上下文先驗?zāi)P陀嬎阒眯哦?,得到STC算法在下一幀的目標(biāo)框,同時對初始跟蹤點(diǎn)采取金字塔光流法來預(yù)測下一幀的跟蹤點(diǎn)位置。并采取3.1節(jié)的方法進(jìn)行相似度計算,同時計算STC的目標(biāo)框的保守相似度。
(4)若步驟(3)的保守相似度值大于0.5,則將跟蹤點(diǎn)進(jìn)行窗口調(diào)整并輸出。小于0.5就根據(jù)檢測器的檢測結(jié)果,對檢測到的單一聚類框直接輸出。而對多個聚類結(jié)果,目標(biāo)很有可能是其中的一個,利用當(dāng)前空間模型逐個計算其置信度,將置信度值最大的聚類框作為目標(biāo)輸出。
(5)學(xué)習(xí)與更新:本文算法對檢測器參數(shù)在線學(xué)習(xí)和更新與TLD算法一致,而對于STC算法的時空模型更新采取的是3.3節(jié)的方法。
(6)跟蹤下一幀,返回步驟(3)。
算法框圖如圖3所示。
Figure 3 Tracking flow chart of the STC-ALD algorithm 圖3 STC-ALD算法跟蹤流程圖
為驗證STC-ALD算法的魯棒性,本文對STC、STC-ALD進(jìn)行實驗對比驗證,除了原始的STC算法外,還挑選了上文提到的TLD算法,這些算法均有公開的C++代碼。而實驗的視頻資源來自吳毅老師發(fā)表的目標(biāo)跟蹤評測文獻(xiàn)[16]提到的評測視頻庫,保證了實驗的可信度。
本文算法是在STC公開的多尺度C++代碼上改寫的,主要增加了目標(biāo)尺度變化分析以及目標(biāo)檢測過程。因STC算法計算速度快,而本文在此基礎(chǔ)上增加了基于金字塔稀疏光流算法以及位移向量相似度判斷,以及跟蹤判定失效利用檢測器檢測,對多個聚類框進(jìn)行逐個置信度計算,故STC-ALD算法的實時性不會很低,具體算法運(yùn)行速度將在4.2節(jié)給出。本文的實驗環(huán)境為:Intel(R) i5-4590 3.30 GHz處理器、8 GB內(nèi)存,軟件環(huán)境為:Windows 7+VS2013+OpenCV。本文實驗對CarScale,David,Boy,FaceOcc2,Sylvester視頻序列直接采用評測文獻(xiàn)[16]中提供的 Ground truth 以及初始框的位置與大小,實驗序列包括目標(biāo)旋轉(zhuǎn)、遮擋、形變,快速運(yùn)動等挑戰(zhàn)條件來驗證本文算法的魯棒性,實驗視頻序列描述如表1所示。
Table 1 Video sequence description of the experiment表1 實驗視頻序列描述
在實驗過程中,STC-ALD算法提到的參數(shù)設(shè)置如下:公式(5)參數(shù)α=2.25,β=1,公式(8)參數(shù)ρ=0.075,與原STC算法是一致的,而本文提出的公式,如公式(11)的參數(shù)γ=4,與文獻(xiàn)[10]中的一致,公式(13)的參數(shù)λ=0.5,μ=1,與TLD算法公開源碼中的參數(shù)一致。
本文采取了跟蹤重疊率這一評判標(biāo)準(zhǔn)進(jìn)行評測,跟蹤重疊率定義為R=Area(Os∩Og)/Area(Os∪Og),其中Os是跟蹤器輸出的目標(biāo)框,Og是目標(biāo)真實大小框。∩、∪表示兩種框之間的交集與并集,Area(·)表示面積大小。5個測試視頻序列的跟蹤重疊率如圖4所示。圖5~圖8給出了具有代表性的跟蹤結(jié)果截圖。本文也給出了平均跟蹤精度,即平均中心位置誤差CLE(Center Location Error)以及跟蹤成功率,跟蹤重疊閾值取0.5。
Figure 4 Overlapping rate of the video sequence to be tested圖4 測試視頻序列的跟蹤重疊度圖
Figure 5 Tracking of scale changes圖5 尺度變化的跟蹤情景
Figure 6 Occlution圖6 遮擋情景
Figure 7 Scale variation 圖7 旋轉(zhuǎn)情景
Figure 8 Fast-moving (Test sequence of Boy)圖8 快速移動(測試序列Boy)
具體結(jié)果如表2和表3所示。而表4給出了在5個測試視頻中的平均幀率。
Table 2 Average center location error表2 平均中心位置誤差 像素
Table 3 Success rate of tracking表3 跟蹤成功率 %
Table 4 Average frame rate表4 算法平均幀率 (f/s)
4.2.1 目標(biāo)尺度變化
從圖4的David視頻跟蹤重疊率結(jié)果圖可以看出,初始階段本文算法與TLD算法出入不大,因目標(biāo)尺度變化不明顯,顯著跟蹤點(diǎn)兩次消除與TLD算法的一次消除后的跟蹤點(diǎn)基本一致。但是,在中期階段,即視頻序列#201~#488的時間段,目標(biāo)發(fā)生靠近鏡頭、自身轉(zhuǎn)動等尺度變化,很明顯傳統(tǒng)STC窗口不變的結(jié)果不是最優(yōu)的。同時,因為TLD算法將目標(biāo)框內(nèi)背景上的跟蹤點(diǎn)也進(jìn)行尺度變化計算,就導(dǎo)致了窗口調(diào)整過度。如圖5的David測試序列#454,明顯看出白色虛線窗口縮小過度了,而采取本文的兩次消除方法,只對運(yùn)動相似度高的跟蹤點(diǎn)進(jìn)行尺度變化,計算準(zhǔn)確很多,如淺黑色框所示。而從表2也可看出,本文算法較STC算法的平均中心位置誤差有所提高,與TLD算法差距也不大。從表3中可看出,本文算法的跟蹤成功率總體優(yōu)于STC算法,與TLD算法差距不大。當(dāng)目標(biāo)發(fā)生尺度變化時窗口不自適應(yīng)調(diào)整,不對具體目標(biāo)上下文區(qū)域進(jìn)行空間模型的學(xué)習(xí)將導(dǎo)致模型的學(xué)習(xí)不準(zhǔn)確,比如目標(biāo)縮小時,仍然一如既往采取同樣的上下文區(qū)域進(jìn)行學(xué)習(xí),這將導(dǎo)致學(xué)習(xí)了過多的非目標(biāo)的灰度信息,從而導(dǎo)致追蹤失敗,如圖5的Sylvester測試視頻的#604。而從表2也可看出,Sylvester測試視頻中STC-ALD算法的平均中心位置誤差比STC算法的降低了接近70個像素,表示跟蹤準(zhǔn)確性得到很大提高。同樣從表3也可看出,本文算法的成功率也有所提高。
4.2.2 目標(biāo)遮擋
圖6的CarScale、FaceOcc2視頻序列出現(xiàn)了傳統(tǒng)STC算法發(fā)生跟蹤漂移現(xiàn)象,加入本文算法后的改進(jìn),在CarScale視頻序列,因目標(biāo)一直處于靠近鏡頭的尺寸變化,而傳統(tǒng)STC算法跟蹤窗口不隨著目標(biāo)變大而進(jìn)行擴(kuò)大化的調(diào)整,那么在空間模型學(xué)習(xí)過程中,就降低了超出上下文區(qū)域的目標(biāo)灰度信息學(xué)習(xí)率,那么在這個變大的過程中,目標(biāo)一旦受到遮擋干擾就很容易發(fā)生跟蹤漂移甚至跟蹤失敗現(xiàn)象,如圖6的CarScale視頻序列#168,而本文算法就能很好地解決這樣的問題,如圖6的CarScale視頻序列#191。再結(jié)合表2和表3中CarScale序列的結(jié)果,本文算法因抗遮擋成功,跟蹤的中心位置誤差優(yōu)于STC算法,降低了接近80個像素,比TLD算法降低了接近90個像素,其成功率也是最優(yōu)的;而在FaceOcc2視頻序列中,目標(biāo)并未發(fā)生靠近或者遠(yuǎn)離鏡頭的尺度變化,那么傳統(tǒng)STC跟蹤算法在目標(biāo)未完全遮擋期間段,跟蹤效果很好,而本文算法是采取兩次消除錯誤跟蹤點(diǎn),跟蹤效果與傳統(tǒng)STC算法出入不大,故中心位置誤差以及跟蹤成功率差距不大;而只采取一次消除錯誤跟蹤點(diǎn)的TLD算法,就存在目標(biāo)遮擋時的錯誤調(diào)整,即受到遮擋物上跟蹤點(diǎn)的影響,錯誤地進(jìn)行目標(biāo)窗口調(diào)整,如圖6的視頻#141,#255,#493。在最終的遮擋過度情景,STC算法就發(fā)生了跟蹤漂移現(xiàn)象,但是,本文采取TLD檢測機(jī)制,在遮擋物與在線目標(biāo)模型的保守相似度小于0.5后,利用上下文時空模型對檢測到的多個目標(biāo)計算其置信度,輸出最大值,所以具有跟蹤恢復(fù)機(jī)制,如圖7第2行的視頻#812。
4.2.3 目標(biāo)旋轉(zhuǎn)以及快速移動
Sylvester以及FaceOcc2視頻序列存在目標(biāo)旋轉(zhuǎn)情況,而從圖7中Sylvester視頻序列的部分實驗截圖可以看出,STC-ALD算法在目標(biāo)旋轉(zhuǎn)時仍然可以準(zhǔn)確跟蹤,最終在視頻結(jié)束時的跟蹤情況也是最優(yōu)的,如圖7第1行的視頻#1344。從表3可看出,其中心位置誤差比TLD算法還降低了幾個像素,即目標(biāo)旋轉(zhuǎn)對本文算法影響不大。而對于快速移動的目標(biāo),如圖8中Boy測試視頻部分截圖,在視頻#510之后,STC跟蹤發(fā)生漂移現(xiàn)象,而本文算法具有跟蹤恢復(fù)機(jī)制,故可以持續(xù)跟蹤。從圖4的視頻序列跟蹤重疊率來看,本文算法也是最優(yōu)的,同時結(jié)合表2的中心位置誤差來看,本文算法的成功率也較STC算法有所提高。
傳統(tǒng)時空上下文目標(biāo)跟蹤算法存在兩個主要不足點(diǎn):(1)目標(biāo)發(fā)生尺度變化時跟蹤窗口長期固定;(2)目標(biāo)丟失缺少跟蹤恢復(fù)機(jī)制。故本文提出一種自適應(yīng)目標(biāo)變化的時空上下文抗遮擋跟蹤算法(STC-ALD),該算法采取TLD算法框架思想,利用中值流算法初始化跟蹤點(diǎn),其次預(yù)測下一幀跟蹤點(diǎn)位置并利用F-B誤差算法消除錯誤跟蹤點(diǎn),并采取STC算法確定輸出框,計算其保守相似度,當(dāng)保守相似度超過設(shè)定閾值即表示跟蹤有效,將跟蹤點(diǎn)與STC前后輸出框的中心像素進(jìn)行運(yùn)動相似度計算;然后利用運(yùn)動相似度高的跟蹤點(diǎn)進(jìn)行窗口調(diào)整并輸出,從而提高跟蹤的準(zhǔn)確性。同時,當(dāng)STC算法跟蹤失效時,就利用TLD檢測器進(jìn)行檢測,對單一聚類框直接輸出,而對多個檢測聚類框逐個計算其置信度,輸出置信度值最大的聚類框。這樣的跟蹤恢復(fù)機(jī)制大大提高了跟蹤的持續(xù)性。最后,進(jìn)行在線學(xué)習(xí)更新分類器的相關(guān)參數(shù),提高檢測精度。大量實驗結(jié)果表明,本文的STC-ALD算法性能超過了STC和TLD算法,大大提高了跟蹤成功率和魯棒性。然而,本文算法只提取目標(biāo)簡單的灰度信息進(jìn)行學(xué)習(xí)和跟蹤,忽略了目標(biāo)具有的顏色特征以及形狀特征,為了提高跟蹤的準(zhǔn)確性,故接下來的研究重點(diǎn)是如何融合目標(biāo)多種信息進(jìn)行學(xué)習(xí)和跟蹤。