儲開斌, 朱 磊, 張 繼
(1.常州大學 微電子與控制工程學院, 江蘇 常州 213164; 2.常州大學 阿里云大數(shù)據(jù)學院, 江蘇 常州 213164)
目標跟蹤技術(shù)是計算機視覺領(lǐng)域的研究熱點,其在無人駕駛、軍事偵察等領(lǐng)域具有重要作用。但由于在跟蹤過程中目標可能出現(xiàn)遮擋、尺度變化、光照強度變化等問題,從而導致跟蹤失敗,使其應用受到一定的限制,這些弊端引發(fā)了眾多學者開展相關(guān)研究并取得一定的成果。
2002年,COMANICIU等[1]將均值漂移(MeanShift)算法運用到了目標跟蹤領(lǐng)域,該算法快速準確,但在背景復雜場景下跟蹤效果差。2010年,BOLME等[2]提出了MOSSE(Minimum Output Sum of Squared Error)濾波算法,該算法通過傅里葉變換將濾波器的運算轉(zhuǎn)換到頻域,加快了運算速度,但MOSSE濾波算法采用的特征為簡單的灰度像素,從而造成跟蹤結(jié)果不夠準確。2014年,HENRIQUES等[3]提出了KCF算法,通過核回歸運算大大降低了運算量,具有較快的跟蹤速度,但當目標出現(xiàn)尺度變化時,算法魯棒性較差,一旦目標丟失,很難繼續(xù)跟蹤到目標,不具備長時間跟蹤能力。近年來,隨著深度學習的發(fā)展,許多學者提出了基于深度學習的目標跟蹤算法,這些算法雖然結(jié)果較為準確,但需要大量訓練樣本和長時間的訓練,在實際應用時存在一定的困難[4-5]。
TLD算法是KALAL等[6]在2011年提出的,該算法可以長時間準確地跟蹤目標,在目標發(fā)生形變、部分遮擋等問題時也能有良好的魯棒性。但是這種經(jīng)典TLD算法跟蹤速度慢,當目標從遮擋中恢復時,重新檢測到目標所需時間較長,不具備實時跟蹤性。該算法對于光照強度變化也很敏感,一旦光照強度發(fā)生變化,往往容易導致跟蹤失敗。目前,針對TLD算法的改進有很多。2019年,郭巳秋等[7]用顏色特征粒子群跟蹤算法更新了TLD算法,提高了算法的魯棒性,但跟蹤速度較慢。同年,胡欣等[8]將ViBe模型加入TLD算法,提高了算法的運行速度,但該算法穩(wěn)定性較差。
針對TLD算法存在的跟蹤速度慢、對光照強度敏感的問題,本文在TLD算法的跟蹤模塊中,用KCF算法替代原有的中值流跟蹤算法,提高了TLD算法的跟蹤速度;通過在檢測模塊中加入HOG[9]特征,對圖像局部進行歸一化,從而使該算法不受光照強度影響,解決了光照變化魯棒性差的問題。
TLD算法是KALAL等在2012年提出的一種單目標長時間跟蹤算法,主要由跟蹤模塊[10]、檢測模塊[11]、學習模塊[12]3個部分組成。TLD算法將視頻幀圖像送入跟蹤、檢測、學習3個模塊,將跟蹤和檢測的結(jié)果輸入學習模塊,學習模塊通過學習判斷跟蹤和檢測模塊是否出現(xiàn)錯誤,若出現(xiàn)錯誤則更新檢測器和跟蹤器,否則就將跟蹤和檢測模塊的結(jié)果進行綜合并輸出,得到目標位置。TLD算法的框架如圖1所示。
圖1 TLD算法框架Fig.1 TLD algorithm framework
檢測模塊根據(jù)跟蹤目標模型判斷下一幀中是否存在目標,若存在則定位出可能出現(xiàn)的位置。TLD算法檢測模塊由方差檢測器、隨機森林檢測器[13]和最近鄰分類器3部分級聯(lián)組成[14]。當檢測開始時,一幅視頻幀會被分成許多大小不一的圖像塊,這些圖像塊首先經(jīng)過方差檢測器計算方差,方差大于閾值的圖像塊進入隨機森林檢測器,在隨機森林檢測器中對圖像塊進行特征提取,計算后驗概率,后驗概率大于閾值的圖像塊進入最近鄰分類器,在最近鄰分類器計算圖像塊與樣本的相關(guān)相似度,大于閾值的圖像塊就是最終的目標。
學習模塊采用半監(jiān)督學習方法中的P-N學習,通過P和N兩個專家系統(tǒng)對正負樣本進行約束,消除檢測器誤將正樣本認為是負樣本、負樣本認為是正樣本的情況,使得分類所得到的結(jié)果更加準確。最后,跟蹤和檢測兩個模塊進行綜合,將兩個模塊輸出的目標區(qū)域與檢測器中的樣本進行相似度對比,相似度最大的區(qū)域即為最終的跟蹤目標。
但TLD算法的跟蹤模塊采用的是中值流跟蹤算法,該算法以光流法為基礎(chǔ),加入了前向后向跟蹤機制和正則化系數(shù),這樣導致算法的跟蹤模塊計算量巨大,降低了跟蹤速度。另外,光流法對于跟蹤目標的要求也比較高,若跟蹤目標特征較少或者目標與背景接近時,跟蹤結(jié)果也會產(chǎn)生偏差。
同時,由于TLD算法檢測模塊中的隨機森林檢測器采用的是灰度特征,該特征由對比圖像中的像素點對獲得,對光照變化敏感,一旦光照發(fā)生變化,隨機森林檢測器就會出現(xiàn)誤判,甚至導致跟蹤失敗。
針對TLD算法存在的不足,在TLD算法的基礎(chǔ)上,對跟蹤模塊及檢測模塊進行改進。在跟蹤模塊中用KCF算法代替中值流跟蹤算法,提高了算法的跟蹤速度。在檢測模塊的隨機森林檢測器中,將灰度特征替換為圖像的HOG特征,提高了算法對光照強度變化的魯棒性。
改進TLD目標跟蹤算法流程如圖2所示。該算法首先讀取視頻的第一幀圖像,并從第一幀圖像中選擇跟蹤目標,用不同尺度的掃描窗將第一幀圖像分成大小不一的多個圖像塊。然后對每個圖像塊進行HOG特征提取,將所得特征用于TLD的各個模塊,完成初始化。接著將讀取的下一幀圖像送入檢測模塊和跟蹤模塊,跟蹤模塊采用KCF跟蹤算法對圖像中的目標進行跟蹤;檢測模塊用不同尺度的掃描窗對圖像進行分塊,再將圖像塊送入方差檢測器,當圖像塊經(jīng)過隨機森林檢測器時會進行HOG特征提取,用HOG特征代替原算法的灰度特征,最后再進入最近鄰分類器進行檢測。最后再將跟蹤和檢測模塊所得結(jié)果輸入P-N學習模塊,P-N學習糾正跟蹤器和檢測器出現(xiàn)的誤判,得到該幀圖像中目標位置,完成本幀圖像的跟蹤。
圖2 改進的TLD目標跟蹤算法流程圖Fig.2 Improved TLD target tracking algorithmflowchart
本文的改進算法將KCF算法作為TLD算法的跟蹤模塊,提高了TLD算法的跟蹤速度。
KCF算法是一種相關(guān)濾波算法,該算法的核心是求得一個響應值最大的目標模板。原始問題可以表示為
(1)
式中:xi為訓練樣本;yi為xi經(jīng)過高斯函數(shù)后的結(jié)果;f(xi)為xi與目標模板ω在頻域內(nèi)的點積;λ為正則項系數(shù),防止目標模板過擬合。
將樣本xi的整體用X來表示,yi的整體用y來表示,則式(1)可以寫成
(2)
對ω求偏導可得
ω=(XTX+λI)-1XTy
(3)
式中:X為循環(huán)矩陣;I為單位陣。
通過離散傅里葉變換進行對角化,計算式為
(4)
根據(jù)循環(huán)矩陣的性質(zhì)可得
(5)
將式(5)進行離散傅里葉逆變換就得到了目標模板。
由于KCF目標模板計算跟蹤目標是通過循環(huán)矩陣進行的,循環(huán)矩陣可以將時域計算轉(zhuǎn)換到頻域,將卷積轉(zhuǎn)換為乘積,大大降低了計算量,提高了跟蹤速度。
在TLD算法中隨機森林檢測器共有3棵決策樹,每棵決策樹對圖像塊的檢測是通過對比13對不同位置的像素點對的值來進行的,對比結(jié)果用0和1表示,得到一串二進制的結(jié)果作為圖像塊的特征值,所得特征值就是灰度特征。根據(jù)灰度特征和訓練集求得圖像塊為目標的概率,將3棵決策樹所求得的概率取平均,得到該圖像塊為目標的最終概率。最終概率大于閾值的圖像塊被保留,進入最近鄰檢測器。在上述過程中,決策樹對比圖像塊中像素點是假設(shè)光照強度恒定不變的,當光照強度發(fā)生變化時所得特征值誤差較大,影響檢測結(jié)果,甚至會導致跟蹤失敗。針對該不足,本文在隨機森林檢測器用目標的HOG特征替換灰度特征來解決光照強度影響檢測結(jié)果的問題。HOG通過計算梯度來描述物體的輪廓和形狀信息,并且會對圖像進行歸一化,歸一化后的檢測器對光照變化不敏感,從而解決了光照強度變化影響檢測結(jié)果的問題。
在HOG運行過程中,1幀圖像會被分成若干個block,而1個block會被分成若干個cell,cell由像素點組成,如圖3所示。
圖3 圖像組成示意圖Fig.3 Schematic diagram of image composition
像素梯度的計算是HOG特征的核心,其大小G(x,y)和方向α用公式表示為:
(6)
(7)
得到像素點梯度后建立block方向梯度直方圖,流程如圖4所示。將1個block進行均勻分割,得到4個cell,對每個cell建立直方圖,直方圖的橫坐標為梯度方向,范圍從0°~180°,每個直方條的間隔為20°,每1個直方條稱為1個bin;縱坐標是權(quán)值,權(quán)值是梯度的大小。將像素點的梯度方向?qū)絙in中,像素點的梯度大小累加到該組bin中對應為權(quán)值,這樣就得到該cell的方向梯度直方圖,最后將4個cell的直方圖進行組合,就得到了該block的方向梯度直方圖。
圖4 基于block的方向梯度直方圖Fig.4 Histogram based on the directional gradient of the block
通過對比不同bin中像素的梯度值,得到block的特征值,對比公式見式(8),為
f(x;u,θ)=F(H(x;u,b)>H(x;u,b'))
(8)
式中:F(a)為布爾值,a為真,F(xiàn)(a)=1,反之,F(xiàn)(a)=0;H(x;u,b)為第b個bin所對應的梯度值,u為block的中心點。
(a) 整體精確度圖
(a) 光照變化下的精確度圖
隨機森林檢測器采用的特征值是13位的二進制串,將式(8)運行13次,得到13位的二進制串,該二進制串就是block的特征值,見式(9),為
f(x;u,θ)=[f(x;u,θ1),…,f(x;u,θ13)]
(9)
通過對block的梯度歸一化能夠減少光照強度對檢測器的影響,公式為
(10)
式中ε為一個很小的常數(shù),避免分母為0。
由于HOG特征提取的是圖像的梯度信息而非灰度信息,對光照變化不敏感,將其加入隨機森林檢測器,代替灰度特征,可以有效解決光照變化造成隨機森林檢測器檢測失敗的問題。
為驗證該算法的效果,將TLD算法、KCF算法和本文算法(標記為Ours)進行對比。實驗數(shù)據(jù)集選用WU等[15]的OTB2013中的50組視頻序列進行測試,視頻序列共包含光照變化、尺度變化、遮擋、形變、運動模糊、旋轉(zhuǎn)、離開視野、相似的背景、低分辨率等9種屬性。采用WU提出的一次通過評估(One-Pass Evaluation, OPE)來評估算法精確度和成功率,其中精確度表示算法預測的中心位置誤差小于給定閾值幀數(shù)的百分比,閾值設(shè)置為20,精確度圖按照算法結(jié)果的百分比由大到小排序。成功率表示跟蹤區(qū)域和人工標注區(qū)域的重疊率大于閾值的幀數(shù)百分比,成功率圖按照算法的曲線下面積由大到小排序。本實驗在Windows10,Visual Studio 2013,Matlab 2019a,Opencv2.4.11環(huán)境下運行,測試硬件環(huán)境為Intel Core i5 2.6GHz。實驗數(shù)據(jù)包含OTB2013所有視頻序列。
將本文算法、TLD算法和KCF算法加入OTB2013測試平臺進行對比,結(jié)果如圖5所示。由圖5可以看出:本文算法的精度變化曲線和成功率曲線都處于第1名的位置,分別達到了78.7%和74.1%,分別高出了TLD算法19.2%和23.5%。
在光照強度發(fā)生變化時3種算法在OTB2013測試平臺下的精度圖和成功率圖如圖6所示。在光照變化的情況下,本文算法的精度和成功率都要高于TLD算法,說明本文算法在光照變化下的魯棒性要好于TLD算法;本文算法的精度曲線與KCF算法幾乎相同但成功率高于KCF算法。
為了更直觀地對算法進行分析,本文選取了3個最具代表性的視頻序列進行分析,這3個視頻序列均包含光照強度變化,另外還有旋轉(zhuǎn)、背景相似等挑戰(zhàn),見表1。
表1 所選視頻序列目標包含的挑戰(zhàn)
圖7~圖9為3種方法在3個視頻序列中的跟蹤結(jié)果的對比。圖7中,在49幀,當光照變強,TLD算法未能跟蹤到目標;在第109幀,目標出現(xiàn)旋轉(zhuǎn),本文算法和KCF算法均跟蹤到了目標,TLD算法跟蹤失敗;在第277幀,視頻序列快要結(jié)束,目標從遮擋中出現(xiàn),此時KCF算法未能及時更新目標尺度,跟蹤失敗,本文算法和TLD算法均跟蹤到目標。圖8中,在210幀和258幀中,當目標光照強度出現(xiàn)變化,TLD算法出現(xiàn)了目標框漂移現(xiàn)象,KCF算法目標框尺度過大,本文改進算法能夠準確跟蹤到目標;在620幀,視頻序列即將運行結(jié)束時,TLD算法通過學習模塊重新跟蹤到了目標,KCF算法的目標框依舊存在尺度過大的情況。圖9中,光照強度由低到高的情況下,TLD算法完全失效,本文算法和KCF算法均能跟蹤到目標;在408幀,目標出現(xiàn)快速移動時,本文算法和KCF算法均跟蹤到目標,但KCF算法目標框出現(xiàn)輕微尺度變化。
圖7 Car4序列跟蹤結(jié)果Fig.7 Car4 sequence tracking results
圖8 Coke序列跟蹤結(jié)果Fig.8 Coke sequence tracking results
圖9 Trellis序列跟蹤結(jié)果Fig.9 Trellis sequence tracking results
本文還對3種算法的運行速度進行對比驗證,表2是本文算法、KCF算法和TLD算法在3個視頻序列中的平均幀率。KCF算法的幀率最高,跟蹤速度最快,但不具備長時間跟蹤的能力。本文算法結(jié)合了KCF算法的優(yōu)勢,平均幀率相較于TLD算法提升了2倍,可滿足實時性的需求。由于本文算法是在TLD算法基礎(chǔ)上進行改進,雖然將跟蹤模塊替換成KCF算法,但檢測和學習模塊也較為耗時,所以跟蹤速度相較于KCF算法還有一定差距。
表2 平均幀率對比
TLD算法是一種優(yōu)異的目標跟蹤算法,它能對目標進行學習,實現(xiàn)目標的長時間跟蹤。本文算法對TLD算法進行改進,用KCF算法替換跟蹤模塊的中值流跟蹤法,提升了算法的速度;對檢測模塊中的隨機森林檢測器進行改進,在隨機森林檢測器中加入了目標HOG特征,彌補了TLD算法在光照強度發(fā)生變化時跟蹤結(jié)果差的不足。實驗表明,本文算法的魯棒性和跟蹤速度均優(yōu)于TLD算法。