夏斯維,陳 迅
(江蘇科技大學(xué) 電子信息學(xué)院,江蘇 鎮(zhèn)江 212003)
目前,主流的目標(biāo)跟蹤算法[1]主要是判別式算法,隨著深度學(xué)習(xí)的火熱發(fā)展主要可以分為兩種,分別為基于傳統(tǒng)方法的算法和基于深度學(xué)習(xí)的算法。傳統(tǒng)算法重要分支就是以相關(guān)濾波器算法為基礎(chǔ)的各類跟蹤算法,最先Bolme等[2]提出使用相關(guān)濾波器(MOSSE)處理跟蹤問題,后續(xù)針對跟蹤過程中的各類問題,CSK[3]、KCF[4]、CN[5]、DSST[6]、SAMF[7]以及CF+AT[8]等算法均被提出;深度學(xué)習(xí)算法主要分為兩類,一類是利用深度神經(jīng)網(wǎng)絡(luò)在ROI(感興趣的區(qū)域)中提取相對較魯棒的深度特征來代替圖像灰度特征、HOG等手工特征[9],再利用傳統(tǒng)的支持向量機(jī)(SVM[10])或相關(guān)濾波等方法進(jìn)行目標(biāo)的位置判別;另一類是構(gòu)建適用于目標(biāo)跟蹤的深度網(wǎng)絡(luò),提供端到端的解決方案,該方法對跟蹤精度有明顯提高,但網(wǎng)絡(luò)結(jié)構(gòu)相對復(fù)雜,訓(xùn)練運(yùn)算代價相對較高。
引入目標(biāo)跟蹤失敗判別機(jī)制是本文實(shí)現(xiàn)目標(biāo)跟蹤的重要環(huán)節(jié),針對跟蹤環(huán)境復(fù)雜性,對跟蹤結(jié)果進(jìn)行判別,根據(jù)判別結(jié)果,改善后續(xù)的跟蹤過程以提高跟蹤準(zhǔn)確性?;谏鲜瞿康?,本文主要完成了以下兩個任務(wù):引入一種基于光流的跟蹤失敗判別機(jī)制,用于判斷跟蹤過程中的目標(biāo)漂移或者目標(biāo)丟失;在判斷出跟蹤失敗時,本文通過分塊訓(xùn)練思想,改進(jìn)模型更新機(jī)制以修正目標(biāo)后續(xù)的跟蹤過程。
有效的判別機(jī)制,對于視頻目標(biāo)跟蹤是非常必要的。在缺乏判別機(jī)制的情況下,一旦跟蹤過程出現(xiàn)誤差,這個誤差就會積累的越來越大,直至目標(biāo)消失。所以本文在原有的相關(guān)濾波器算法的基礎(chǔ)上加以改進(jìn),增加了基于光流法的跟蹤失敗判別機(jī)制。
以往大部分的跟蹤算法僅僅關(guān)注外觀特征來區(qū)分目標(biāo),而忽略了視頻幀與幀之間的時序性信息,本文通過計算前后幀之間的光流信息作為時序性信息,提高算法的跟蹤精度。
常規(guī)相關(guān)濾波器(CF)的主要原理就是通過最小化輸入樣本與真實(shí)值之間的誤差,訓(xùn)練濾波器問題被轉(zhuǎn)換為下面的損失函數(shù)優(yōu)化問題,如式(1)所示
(1)
其中,yn=[y1,y2,…,yn]∈Rk×1表示高斯形狀響應(yīng),xn∈Rk×1是第n個輸入向量通道,λ是正則項(xiàng)系數(shù),w是需要求解的濾波器模板參數(shù)。計算上述公式的最優(yōu)解w*是整個問題的關(guān)鍵。利用循環(huán)結(jié)構(gòu)的特殊性質(zhì)和核函數(shù),能夠在傅里葉域中快速找到合適的封閉解析解。
光流法使用的關(guān)鍵在于光流場[11],光流場是指圖像灰度模式下的表觀運(yùn)動,它是一種像素級運(yùn)動。在光流場中可以通過計算每個像素的速度矢量,從而實(shí)現(xiàn)對圖像的運(yùn)動狀態(tài)的掌握和分析。其基本原理是,如果圖像中存在移動物體,則目標(biāo)和背景之間就是相對運(yùn)動,此時,可以通過對比移動物體和背景形成的運(yùn)動矢量,發(fā)現(xiàn)目標(biāo)位置變化。
具體的光流計算就是假設(shè)t時刻的像素(x,y)的灰度值是I(x,y,t)。 在t+td時刻,像素移動到一個新位置。相應(yīng)的灰度值為I(x+dx,y+dy,t+dt)。 如果圖像的灰度 (x,y) 變化緩慢,則當(dāng)前灰度的泰勒級數(shù)擴(kuò)展如式(2)所示
(2)
進(jìn)一步有
(3)
其中,Ix,Iy是參考點(diǎn)的灰度值變化率;u和v是x和y方向的速度矢量。式(3)是所有基于梯度的光流計算方法的基礎(chǔ)。
本文基于光流法提出跟蹤判別機(jī)制,值得注意的是,在傳統(tǒng)的應(yīng)用中,基于光流法的目標(biāo)跟蹤算法直接依賴光流矢量來確定目標(biāo)位置,這種方法可靠度低且計算量大。而本文對傳統(tǒng)光流法做出了必要的裁剪和簡化,僅用于判別目標(biāo)跟蹤是否失敗,一定程度上減少了計算量。
本文使用的梯度算法是Horn-Schunck光流算法。Horn-Schunck算法是一種全局約束方法,該算法提出了光流平滑約束的概念,即圖像上任何點(diǎn)處的光流不是獨(dú)立的,并且光流在整個圖像范圍內(nèi)平滑地變化。
考慮到光流計算誤差,Horn-Schunck算法將光流解決方案轉(zhuǎn)換為式(4)中的極值求解問題
(4)
式中:Ix,Iy是參考點(diǎn)的灰度值變化率;u和v是x和y方向的速度矢量;λ是控制平滑度;并且是u和v的平均值。求式(4)對于u和v的導(dǎo)數(shù),當(dāng)導(dǎo)數(shù)為零時,該式取極值,本文采用松弛迭代方程對極值進(jìn)行求解,如式(5)和式(6)所示
(5)
(6)
即前后兩幀的一階差分結(jié)果的平均值來近似灰度對的時間和空間微分,以此求得視頻幀中像素點(diǎn)的光流值。
該機(jī)制具體流程如圖1所示。
圖1 失敗判別機(jī)制流程
首先計算當(dāng)前幀圖像的平均光流量作為閾值;接著計算當(dāng)前幀的目標(biāo)預(yù)測框中每個像素的光流值;將目標(biāo)預(yù)測框中的像素光流值與閾值進(jìn)行比較,當(dāng)一定比例的像素光流值超過閾值時,預(yù)測幀被認(rèn)為是正確的,否則認(rèn)為目標(biāo)預(yù)測框是不準(zhǔn)確的并且判定當(dāng)前幀目標(biāo)跟蹤是失敗的。
在算法實(shí)現(xiàn)中,為了減少計算量,壓縮圖像后計算光流值。
在引入光流法判別機(jī)制后,需要對模板更新機(jī)制進(jìn)行改進(jìn),完成整個算法的改進(jìn)。
這里分塊訓(xùn)練是在發(fā)現(xiàn)目標(biāo)跟蹤失敗時引入的新的模板更新策略。簡而言之,將當(dāng)前視頻幀分解為m個塊,然后分別為m個子塊訓(xùn)練對應(yīng)的子濾波器模板,然后根據(jù)權(quán)重αi加權(quán)得到最終的濾波器模板,用于后續(xù)視頻幀的跟蹤,其中權(quán)重是通過計算各個子塊的中心偏移量來獲得的,具體流程如圖2所示。
圖2 分塊訓(xùn)練流程
由于相位相關(guān)的計算也是在頻域中進(jìn)行的,這不會給實(shí)時跟蹤的要求帶來過多的計算負(fù)擔(dān)。故本文選用相位相關(guān)的方法來獲取中心偏移量。相位相關(guān)算法主要是指圖像之間的轉(zhuǎn)換。圖像f2(x,y) 是通過對圖像f1(x,y) 傅里葉變換 (x0,y0) 得到的圖像。對應(yīng)于f1(x,y) 和f2(x,y) 的傅里葉變換為F1(x,y) 和F2(x,y), 其時移屬性如式(7)所示
F2(x,y)=exp(-j*2*pi(x*x0+y*y0))*F1(x,y)
(7)
計算頻域交叉功率譜如式(8)所示
(8)
最后,可以將交叉功率譜通過逆傅里葉變換來獲得沖擊函數(shù)。該函數(shù)僅在 (x0,y0) 處具有最大值,并且在其它位置幾乎為零。
根據(jù)前一節(jié),獲得的偏移量用于計算每個子模塊的權(quán)重。本文中,權(quán)重通過每個子塊的偏移量進(jìn)行歸一化,如式(9)、式(10)所示。xi,yi是每個子塊的水平和垂直方向的偏移,Xi是每個子塊的偏移,αi是為每個子塊h*訓(xùn)練的模板的權(quán)重
(9)
(10)
最后,新模板H*按權(quán)重αi加權(quán),如式(11)所示
(11)
因?yàn)镺TB100數(shù)據(jù)集包含的視頻種類較多,故本文主要在OTB100數(shù)據(jù)集上對本文算法進(jìn)行了性能測試,具體實(shí)驗(yàn)是在Intel 4.0 GHZ CPU上使用MATLAB2016b實(shí)現(xiàn)的。實(shí)驗(yàn)采用一次通過標(biāo)準(zhǔn)(OPE),具體結(jié)果主要表現(xiàn)為在不同的標(biāo)準(zhǔn)誤差閾值下的精確度,這里的標(biāo)準(zhǔn)誤差閾值范圍設(shè)定為0-50像素,同時將本文算法與經(jīng)典的幾個相關(guān)濾波器算法(KCF、DSST、CSK)進(jìn)行了性能對比實(shí)驗(yàn)。
首先為了驗(yàn)證算法的有效性,給出了OTB100數(shù)據(jù)集中g(shù)irl、Girl2、Bird1以及couple這樣幾個視頻序列在不同的跟蹤算法下的跟蹤結(jié)果,如圖3所示。視頻每幀上都標(biāo)注了對應(yīng)的幀數(shù),在girl的視頻序列中當(dāng)?shù)?58出現(xiàn)遮擋問題時,KCF算法、DSST算法以及CSK算法都直接丟失了目標(biāo),而本文算法能夠較好的跟蹤目標(biāo),表明本文算法能更好地處理遮擋問題;在Girl2視頻序列中,在第411幀左右,目標(biāo)發(fā)生遮擋問題后,KCF算法和CSK算法丟失目標(biāo),DSST算法則跟錯了目標(biāo),而本文算法在丟失目標(biāo)后能夠找回目標(biāo)并繼續(xù)能跟蹤,表明本文算法對于遮擋和目標(biāo)形變問題有一定的改善效果;在Bird1視頻序列中,第116幀到第119幀,目標(biāo)快速移動的情況下,KCF以及CSK算法丟失目標(biāo),DSST跟錯目標(biāo),本文算法相比幾種經(jīng)典算法,能更好處理目標(biāo)速移動問題;在Couple視頻序列中,在第41幀出現(xiàn)平面內(nèi)旋轉(zhuǎn)和目標(biāo)快速移動問題時,3種經(jīng)典算法都丟失了目標(biāo),而本文算法依舊能確定目標(biāo)位置,從而體現(xiàn)本文算法對于平面內(nèi)旋轉(zhuǎn)和目標(biāo)快速移動問題具有一定的魯棒性。
為了驗(yàn)證上述跟蹤結(jié)果比較中,本文算法對于目標(biāo)遮擋、目標(biāo)快速移動以及平面內(nèi)旋轉(zhuǎn)3個問題的跟蹤魯棒性,在OTB100的視頻數(shù)據(jù)集進(jìn)行算法性能測試,并與KCF算法、DSST算法以及CSK算法進(jìn)行了比較,本文也展示了部分視頻序列的跟蹤精確度數(shù)據(jù),這里的數(shù)據(jù)都是在標(biāo)準(zhǔn)誤差閾值為20像素的條件下獲得,見表1。
圖3 跟蹤結(jié)果比較
表1 各算法精確度對比
從表1可以看出本文算法面對目標(biāo)被遮擋、目標(biāo)快速移動以及目標(biāo)平面內(nèi)旋轉(zhuǎn)的問題,跟蹤精度都有一定的提高。
為了進(jìn)一步驗(yàn)證本文算法對目標(biāo)遮擋、目標(biāo)快速移動以及目標(biāo)平面內(nèi)旋轉(zhuǎn)的問題性能,分別針對具有目標(biāo)遮擋、目標(biāo)快速移動或者目標(biāo)平面內(nèi)旋轉(zhuǎn)問題的視頻集進(jìn)行性能測試,仍然與KCF算法、DSST算法以及CSK算法進(jìn)行比較,比較結(jié)果如圖4(a)~圖4(c)所示,視頻集均來自O(shè)TB100數(shù)據(jù)集。
圖4 性能比較結(jié)果
由圖4(a)~圖4(c)可知,本文算法對目標(biāo)跟蹤、目標(biāo)平面內(nèi)旋轉(zhuǎn)以及目標(biāo)快速移動問題有一定的效果,跟蹤精度有3.8%-2.5%的增長。有這樣的提高關(guān)鍵在于本文在跟蹤過程中設(shè)置了基于光流法的跟蹤失敗判別機(jī)制,在出現(xiàn)目標(biāo)形變、遮擋、快速移動以及平面內(nèi)旋轉(zhuǎn)時,通過光流的變化協(xié)助跟蹤器確定目標(biāo)位置,從而提升跟蹤精確度。
不同的標(biāo)準(zhǔn)誤差閾值下各算法在OTB100數(shù)據(jù)集下總的性能對比如圖5所示,可以看到本文算法的整體性能相對于其它算法來說,跟蹤精確度也有所提升。
圖5 總體性能比較結(jié)果
針對傳統(tǒng)目標(biāo)跟蹤算法無法處理目標(biāo)被遮擋、目標(biāo)快速運(yùn)動以及平面內(nèi)旋轉(zhuǎn)的問題。首先,本文提出了基于光流法的失敗判別機(jī)制提高跟蹤精度的新思路;其次,本文在得到判別機(jī)制的跟蹤失敗結(jié)果時,采用分塊訓(xùn)練思想修正濾波器模板更新的策略,在判斷出目標(biāo)跟蹤失敗時,修正跟蹤結(jié)果以提高跟蹤精度。
實(shí)驗(yàn)結(jié)果表明,本文算法在目標(biāo)被遮擋、目標(biāo)快速運(yùn)動以及平面內(nèi)旋轉(zhuǎn)3種復(fù)雜跟蹤情況下相比于其它幾個主流的相關(guān)濾波器算法,能夠較為魯棒的實(shí)現(xiàn)目標(biāo)跟蹤;同時在OTB100整個數(shù)據(jù)集上跟蹤效果也有所改進(jìn)。