蘇 佳,高麗慧
(河北科技大學 信息科學與工程學院,河北 石家莊 050018)
目標跟蹤技術(shù)是計算機視覺中的一個重要分支。由于光照變化、目標形變、遮擋和長時間跟蹤等復(fù)雜因素,對任意目標進行跟蹤以及跟蹤的高魯棒性和高實時性一直是難以攻克的問題[1-5]。
TLD[6]是Zdenek Kalal等提出的一種單目標長時間跟蹤算法,通過檢測、跟蹤和學習3個模塊相結(jié)合的方式進行在線跟蹤。自從TLD算法提出以來,國內(nèi)外學者提出了很多改進方案來優(yōu)化算法性能。針對檢測模塊計算量大導致檢測速度慢的問題,周鑫和孫春梅等[7,8]采用Kalman濾波器預(yù)測目標區(qū)域;王姣堯等[9]引入光流法來預(yù)測目標位置,以上算法均提高了檢測速度,但由于跟蹤受到光照等因素干擾,精確度有待提高。針對金字塔光流法跟蹤模塊魯棒性差的問題;Neng Fan等[10]提出將Meanshift算法與TLD算法融合,改善跟蹤器性能;Marina A Zanina等[11]采用粒子濾波器代替TLD算法原有的跟蹤器;于蕾和常立博等[12,13]將KCF算法[14]與TLD算法結(jié)合,融合了兩種算法的優(yōu)勢,改進了跟蹤性能。
為了進一步提高跟蹤的魯棒性和實時性,本文提出了改進的FD-CFTLD目標跟蹤算法。首先,采用KCF跟蹤算法改進TLD算法的跟蹤模塊。其次,提出跟蹤模塊的更新策略:用檢測結(jié)果來修正不準確的跟蹤結(jié)果,并將修正后的結(jié)果用于跟蹤模塊濾波器模型的更新過程中,提高跟蹤精度和速度。然后,在檢測模塊中加入幀差法前景檢測,采用由粗到細的檢測策略設(shè)計檢測模塊,提高檢測速度。最后,實驗結(jié)果表明,本文提出的FD-CFTLD算法具有更高的魯棒性和實時性,滿足長時間跟蹤需求。
TLD算法把檢測技術(shù)和跟蹤技術(shù)結(jié)合起來,并加入在線學習過程。若目標移出視野后重現(xiàn),跟蹤失敗的情況下,檢測器檢測到目標后重啟跟蹤器,就能夠繼續(xù)跟蹤目標。
首先,跟蹤器對視頻第一幀中給出的目標進行跟蹤,將跟蹤到的目標位置反饋給分類器,若目標消失或無法辨認,則跟蹤失??;其次,檢測器通過級聯(lián)分類器檢測出目標并反饋到分類器;最后,學習模塊是一個在線更新的過程,監(jiān)督跟蹤器和檢測器的運行結(jié)果,做出正確的反饋,保證長時間跟蹤的準確性。
TLD算法的不足之處主要集中在跟蹤模塊和檢測模塊中:
(1)跟蹤器遇到光照變化和目標形變等不可控狀況時魯棒性低。TLD算法的跟蹤模塊采用金字塔LK光流法[15]跟蹤方法。然而光流法基于的3個假設(shè)在實際中根本無法達到,所以當前TLD算法中的跟蹤器魯棒性不強、跟蹤精度較低。
(2)檢測模塊滑動窗口的數(shù)量龐大導致實時性差。TLD算法的檢測模塊采用滑動窗口法確定每一個子窗口是否包含前景目標。對于一幀640×480的圖像,會產(chǎn)生50 000到200 000的子窗口,僅有10%到25%的子窗口含有前景目標。對數(shù)以萬計的子窗口進行掃描計算,浪費資源,減慢檢測速度。
本文著重研究兩項不足之處,旨在提高算法整體的魯棒性和實時性。
針對TLD算法的不足,本文提出FD-CFTLD跟蹤算法。首先,采用KCF跟蹤器代替經(jīng)典TLD的光流法跟蹤器,在跟蹤器更新的過程中加入檢測器的修正作用。然后,將幀差法前景檢測加入檢測器中,先經(jīng)過前景檢測得到粗略的目標位置后送入級聯(lián)分類器進行精確檢測,最終實現(xiàn)高魯棒性和高實時性的目標跟蹤。FD-CFTLD算法的運行步驟如下:
(1)fori=1,2,…,ndo
(2)ifi=1
(3) 用鼠標框選或從文件讀入目標位置;
(4) 根據(jù)第一幀圖像f1和目標框bb初始化:
(5) 初始化集合分類器和最近鄰分類器正負樣本集;
(6) 計算前景檢測輸出的目標框fbb;
(7) 初始化KCF跟蹤器濾波器模板;
(8)else
(9) 檢測模塊:
(10)if待檢測圖像框B∈fbbthen
(11) 依次通過方差分類器、集合分類器和最近鄰分類器;
(12) 得到檢測結(jié)果Dr,計算Dr保守相似度d_Sc;
(13) 跟蹤模塊:
(14) 根據(jù)當前幀圖像、上一幀目標框和濾波器模板得到KCF跟蹤結(jié)果Tr,計算Tr保守相似度t_Sc;
(15) 融合模塊:
(16)ifTr≠0
(17)ift_Sc>0.5&&d_Sc>t_Scthen
(18)R=Dr;Tr=Dr;
(19)elseR=Tr;
(20)endif
(21)else
(22)R=Dr;Tr=Dr;
(23)endif
(24)endif
(25)endfor
第(2)到第(7)行對檢測器的分類器和跟蹤器的濾波器模板進行初始化;當初始化完成,讀入下一幀圖像,檢測器和跟蹤器并行工作,分別為第(9)到第(12)行和第(13)到第(14)行;檢測器和跟蹤器得到的結(jié)果通過第(15)到第(25)行的綜合模塊進行融合,輸出結(jié)果R。融合的過程也包含了跟蹤器更新的過程,在跟蹤結(jié)果不如檢測結(jié)果精確度高和跟蹤失敗的情況下,使用檢測結(jié)果更新跟蹤結(jié)果,然后繼續(xù)讀入下一幀,直到視頻結(jié)束。
FD-CFTLD算法的跟蹤模塊采用KCF算法進行跟蹤,并在此基礎(chǔ)上增加了跟蹤器更新策略,使用檢測結(jié)果來修正前一幀的跟蹤結(jié)果,然后使用前一幀修正后的結(jié)果以一定的學習率來更新當前幀的濾波器模型,進一步增強跟蹤模塊的魯棒性和精確度。跟蹤模塊流程和更新策略框架如圖1所示。
2.1.1 KCF跟蹤原理
KCF算法采用嶺回歸的方法訓練檢測器。嶺回歸實際上是對最小二乘回歸的一種改良,通過損失無偏性來換取數(shù)值穩(wěn)定性,具有更可靠、符合實際的特點。
假設(shè)訓練樣本集為(xi,yi),i=1,…,n。其中,xi是訓練樣本,yi是對應(yīng)的樣本標簽,yi服從高斯分布。
在線性條件下,回歸函數(shù)為f(xi)=ωTxi,ω是列向量權(quán)重系數(shù),可以由最小二乘法求解
圖1 跟蹤模塊流程
(1)
其中,λ是正則化參數(shù),是嶺回歸對最小二乘回歸補充的體現(xiàn)。訓練分類器的過程就是要找到最優(yōu)的ω,使得回歸函數(shù)的殘差最小。
對式(1)求導,令該導數(shù)等于零求解ω后改寫成頻域形式得到
ω=(XHX+λI)-1XHy
(2)
其中,XH表示X的共軛轉(zhuǎn)置矩陣。
KCF算法中的訓練樣本xi是由目標樣本x循環(huán)移位得到。根據(jù)循環(huán)矩陣和傅里葉變換的性質(zhì),得到最終線性回歸系數(shù)的計算公式
(3)
實際中大多為非線性情況,將非線性問題轉(zhuǎn)換為線性求解方法表示為
(4)
這樣求解非線性回歸系數(shù)ω就變成了求解αi和映射關(guān)系φ(xi)。k為高斯核函數(shù),兩個樣本的核相關(guān)性可表示為
(5)
得到核空間的嶺回歸的解
α=(K+λI)-1y
(6)
(7)
最終得到非線性回歸函數(shù)
(8)
f(z)的最大值,即響應(yīng)的最大值便是預(yù)測的目標的位置。至此,便完成了一次目標預(yù)測過程。
2.1.2 更新策略
當目標被長時間遮擋或移除視野時,KCF跟蹤器會產(chǎn)生跟蹤漂移現(xiàn)象。為了改善這一缺陷并提高跟蹤模塊的精確度,跟蹤模塊采用新的更新策略:
(1)在逐幀進行檢測和跟蹤的過程中,計算跟蹤模塊輸出的上一幀的跟蹤結(jié)果與目標模型的相似度t_Sc和檢測模塊中最近鄰分類器的檢測結(jié)果與目標模型的相似度d_Sc,當兩個相似度都大的閾值,且d_Sc>t_Sc時,用檢測模塊的結(jié)果來更新上一幀的跟蹤結(jié)果;
(2)當目標受到長時間或大范圍遮擋無跟蹤結(jié)果時,直接將檢測器的檢測結(jié)果賦給跟蹤器,使其保持工作狀態(tài);
(3)使用由檢測器修正過的跟蹤結(jié)果以一定的學習率來更新當前幀的核相關(guān)濾波器模型,能夠在目標重現(xiàn)時及時跟蹤目標,并且能夠提高KCF跟蹤器的精確度。
通過實驗對比改進了跟蹤模塊的TLD算法(KCF_TLD)和經(jīng)典TLD算法的性能,如圖2所示。結(jié)果顯示,在視頻mhyang和faceocc2中KCF_TLD算法的跟蹤精度均高于TLD算法。
圖2 改進的跟蹤模塊結(jié)果
FD-CFTLD算法的檢測模塊采用由粗到精的檢測策略,加入前景檢測功能。首先采用滑動窗口法遍歷整個圖像幀,產(chǎn)生的矩形框送入前景檢測模塊中粗略檢測,縮小檢測區(qū)域后,將通過的目標區(qū)域送入級聯(lián)分類器中進行精確篩選。
幀差法具有運算快的特點,能夠加快檢測速度,因此使用幀差法前景檢測改進的檢測器在保證檢測精度的前提下,減少了通過級聯(lián)分類器的待檢測窗口的數(shù)量,降低了檢測模塊整體的計算時間。
幀差法通過對視頻中相鄰兩幀圖像做差分運算來標記運動物體,假設(shè)當前幀和前一幀圖像為fi(x,y)和fi-1(x,y),分別如圖3(b)和圖3(a)所示。差分后的圖像如圖3(c)所示,對圖3(c)進行二值化處理
(9)
其中,thr為幀差法的閾值,本文實驗中設(shè)置為16。當兩幀之差大于thr時,像素值設(shè)為255,圖像顯示為白色,二值化的結(jié)果如圖3(d)所示。
圖3 前景檢測處理過程
在圖3(d)的所有像素值為255的連通區(qū)域中,刪除面積小于初始目標框的連通區(qū)域,結(jié)果如圖3(e)所示。接著采用基于輪廓的圖像標記方法[16]得出當前幀目標最小邊界框,如圖3(f)所示。
通過幀差法前景檢測的矩形框送入級聯(lián)分類器中。級聯(lián)分類器由圖像元方差分類器、集合分類器和最鄰近分類器3個部分組成。矩形框通過3個分類器最終,從滑動窗口中選出一個或幾個與目標相似度最高的矩形框。
在不同的視頻下進行測速實驗,得出加入前景檢測改進的TLD算法(FD_TLD)的檢測速度明顯高于經(jīng)典TLD算法,約為經(jīng)典TLD算法的2倍,結(jié)果見表1。
表1 兩種算法在不同視頻下幀率對比
驗證算法性能的實驗平臺為Visual Studio 2015、OpenCV3.1.0和Matlab2016a,硬件環(huán)境為Intel(R) Core(TM) i5-6500U@3.20 GHz處理器。
為了充分說明算法的有效性,本文選擇目標跟蹤領(lǐng)域比較權(quán)威的測試數(shù)據(jù)集平臺(object tracking benchmark,OTB)[17]中的50組測試視頻來完成實驗。本實驗中的KCF算法和FD-CFTLD算法均采用HOG特征,細胞元cell大小為4,使用高斯核函數(shù),50組視頻參數(shù)設(shè)置與測試環(huán)境完全一致。
可在定性分析中,保持屬性相同,比對6種跟蹤算法(FD-CFTLD、KCF、Struck、SCM、TLD和CT)的性能,選出6組具有代表性的圖片對結(jié)果進行說明,如圖4所示。
(1)光照變化:在發(fā)生光照變化時,目標顏色特征發(fā)生改變,跟蹤器可能會產(chǎn)生漂移。以視頻“car4”為例,在車輛通過隧道光線變暗時,TLD算法和CT算法發(fā)生跟蹤漂移,F(xiàn)D-CFTLD、KCF和SCM算法可以較好地適應(yīng)光照變化。
圖4 算法跟蹤結(jié)果對比
(2)目標形變:目標發(fā)生形變時,當前特征和目標模型中保存的特征差異較大,增加跟蹤難度。在視頻“fleetface”中,人臉產(chǎn)生形變,F(xiàn)D-CFTLD算法跟蹤效果最好,TLD算法在跟蹤失敗后重新跟蹤目標;在視頻“bolt”中,只有FD-CFTLD算法能成功跟蹤目標。
(3)目標遮擋:當目標被大面積或完全遮擋時,極易跟蹤失敗。在視頻“jogging-2”中,目標被完全遮擋,重現(xiàn)后FD-CFTLD算法和TLD算法能夠成功跟蹤目標。在視頻“suv”中,F(xiàn)D-CFTLD、Struck和TLD算法表現(xiàn)較好。
(4)相似背景:在視頻“coke”中,KCF跟蹤器錯將數(shù)個運動員全都標為目標,無法精確分辨出目標,TLD、Struck、CT和SCM算法跟蹤失敗,而FD-CFTLD算法能準確分辨目標,跟蹤性能良好。
綜上,在相同屬性下,F(xiàn)D_CFTLD算法相對于其它5種算法在應(yīng)對光照變化、目標形變、目標遮擋和相似背景的情況時表現(xiàn)最好,魯棒性最高。
實驗中采用兩個衡量目標跟蹤精準度的基本參數(shù)是精確度曲線(Precision Plot)和成功率曲線(Success Plot)。由中心偏移距離(Center Offset Error)和重疊度(Overlap)計算得到。
圖5是在OTB2013上前10名算法的成功率和精確度曲線,F(xiàn)D-CFTLD算法分別達到0.731和0.782,高于平臺上現(xiàn)有的23種算法。并且,F(xiàn)D-CFTLD算法相對于KCF算法的成功率和精確度分別提高了6.8%和6.6%,相對于TLD算法提高了20.4%和17.3%,在所有算法中性能最好。
圖5 FD-CFTLD和其它算法在OTB2013上的成功率和精確度曲線
FD-CFTLD、KCF、Struck、SCM、TLD和CT算法在不同屬性的場景下的成功率和精確度數(shù)據(jù)見表2和表3。11種屬性是:光照變化(IV)、平面外旋轉(zhuǎn)(OPR)、尺度變化(SV)、遮擋(OCC)、目標形變(DEF)、運動模糊(MB)、快速移動(FM)、平面內(nèi)旋轉(zhuǎn)(IPR)、超出視野(OV)、背景擾亂(BC)和低分辨率(LR)。
表2 不同屬性下算法跟蹤成功率
注:最優(yōu)結(jié)果用加粗表示。
表3 不同屬性下算法跟蹤精度
注:最優(yōu)結(jié)果用加粗表示。
由實驗數(shù)據(jù)可知,在運動模糊和低分辨率時,KCF和Struck算法成功率和精度高于FD-CFTLD算法;其它10種情況下,F(xiàn)D-CFTLD算法成功率均最高。
在實時性測試方面,計算了6種算法在50組測試視頻下的平均幀率,見表4。
表4 6種算法幀率
其中,KCF的平均幀率最高,達到了97.9 fps;FD-CFTLD算法次之,為53.9 fps;SCM算法實時性最差。FD-CFTLD算法在TLD算法的基礎(chǔ)上有兩倍以上的提升,相比于KCF算法幀率有所降低,仍能滿足實際應(yīng)用實時性的要求。
針對TLD算法中金字塔LK光流法魯棒性差和檢測模塊實時性差的問題,本文提出了FD-CFTLD算法,采用KCF算法改進TLD算法的跟蹤模塊,提出將檢測器修正的跟蹤結(jié)果融入濾波器模型中的更新策略,并在檢測模塊加入基于幀差法的前景檢測器,增強了算法整體的魯棒性和實時性。在OTB2013平臺上進行實驗,由定性、定量和實時性分析得出:FD-CFTLD算法改善了TLD算法在光照變化時表現(xiàn)差的缺點,對目標形變、遮擋和相似背景等環(huán)境適應(yīng)性更強;FD-CFTLD算法在50組視頻測試中的成功率和精確度為0.731和0.782,高于平臺上的其它算法;FD-CFTLD算法幀率為53.9 fps,能夠滿足實時性需求。綜上,F(xiàn)D-CFTLD算法魯棒性和準確性良好,滿足實時性要求。
在下一步的工作中,將著重研究目標的特征描述方法,進一步提高跟蹤精度,并考慮將本算法應(yīng)用到多目標跟蹤,增強算法的適用性。