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