朱明榮,俞憲杰
(中國船舶重工集團(tuán)公司第七二三研究所,江蘇 揚(yáng)州 225101)
目標(biāo)跟蹤是計算機(jī)視覺領(lǐng)域的研究熱點(diǎn)之一,特別在導(dǎo)航、定位、人機(jī)交互、監(jiān)控等方面[1]應(yīng)用廣泛。但隨著研究的深入,目標(biāo)環(huán)境的復(fù)雜性、目標(biāo)運(yùn)動的不可知性等問題[2]日益顯著,經(jīng)典的跟蹤算法已不能對它們進(jìn)行準(zhǔn)確的跟蹤。而基于機(jī)器學(xué)習(xí)的跟蹤方法通過在線學(xué)習(xí)有效提高了跟蹤效果,其無需事先獲取目標(biāo)的特征信息,在圖像序列的第1幀中自行檢測目標(biāo),通過在線學(xué)習(xí),自動調(diào)整模型,以增強(qiáng)跟蹤目標(biāo)的適應(yīng)性。文獻(xiàn)[3]提出了基于機(jī)器學(xué)習(xí)的跟蹤學(xué)習(xí)檢測(TLD)算法,該算法通過檢測、跟蹤、學(xué)習(xí)這三大模塊很好地解決了長時遮擋、尺度變化等問題,但算法運(yùn)行效率不高。相關(guān)濾波是衡量目標(biāo)間相關(guān)性的一種匹配濾波器,其目的是為了找到與跟蹤目標(biāo)響應(yīng)值最大的項,文獻(xiàn)[4]提出了長時間相關(guān)跟蹤(LCT)算法,通過采用多個相關(guān)濾波器來解決跟蹤過程中尺度變化等問題。文獻(xiàn)[5]提出了多任務(wù)相關(guān)粒子濾波(MCPF)算法,將結(jié)構(gòu)化支持向量機(jī)(SVM)與相關(guān)濾波相結(jié)合,通過粒子采樣策略有效地處理了尺度變化,并利用不同特征之間的相互依賴性來共同學(xué)習(xí)并更新相關(guān)濾波器,提高了跟蹤效果。文獻(xiàn)[1]提出了核檢測跟蹤的循環(huán)結(jié)構(gòu)(CSK)算法,其通過引入循環(huán)矩陣與核技巧提高了運(yùn)行效率。文獻(xiàn)[6]提出了核相關(guān)濾波(KCF)算法,其加入了多通道特征,通過引入循環(huán)矩陣與快速傅里葉變換增強(qiáng)了魯棒性,并提高了運(yùn)行速度,但不能處理長時遮擋、尺度變化等問題。
為此,本文對TLD和核相關(guān)濾波算法進(jìn)行了研究和改進(jìn),提出了一種將核相關(guān)濾波與TLD算法相結(jié)合的改進(jìn)算法。該算法首先將核相關(guān)濾波進(jìn)行多尺度改進(jìn),使其適應(yīng)目標(biāo)的尺度變化;其次在TLD中引入核相關(guān)濾波算法,既克服了TLD運(yùn)行效率不高的問題,又解決了核相關(guān)濾波算法對尺度變化、長時遮擋敏感的問題。實(shí)驗(yàn)結(jié)果表明,本文算法不僅提高了系統(tǒng)的跟蹤精度和運(yùn)行效率,還增強(qiáng)了對目標(biāo)跟蹤的魯棒性和適應(yīng)性。
TLD是一種單目標(biāo)長時跟蹤算法,其巧妙地將跟蹤和檢測算法進(jìn)行了融合,并引入了P-N在線學(xué)習(xí)機(jī)制,很好地解決了傳統(tǒng)跟蹤算法中目標(biāo)發(fā)生的尺度變化、長時遮擋等問題。TLD的主要思想是:首先在跟蹤模塊中采用中值光流法,其通過特征點(diǎn)的運(yùn)動軌跡來預(yù)測目標(biāo)的位置與大??;其次在檢測模塊中通過滑動窗口掃描以定位目標(biāo)的位置與大?。蛔詈髮⒏櫮K與檢測模塊所獲得的結(jié)果進(jìn)行融合,將融合結(jié)果作為當(dāng)前幀的最終目標(biāo)位置,學(xué)習(xí)模塊依據(jù)此結(jié)果通過P-N機(jī)制進(jìn)行在線學(xué)習(xí),更新各個分類器的模型參數(shù),以適應(yīng)目標(biāo)的尺度變化和長時遮擋,增強(qiáng)跟蹤的魯棒性。TLD算法的工作流程如圖1所示。
圖1 TLD算法的工作流程
TLD算法主要由跟蹤、檢測和學(xué)習(xí)這3個模塊組成,其中跟蹤模塊采用的是中值光流法,主要負(fù)責(zé)跟蹤相鄰幀的目標(biāo),其首先在目標(biāo)區(qū)域中選擇特征點(diǎn),然后確定所選特征點(diǎn)的位置與移動軌跡,最后通過中值光流法來預(yù)測目標(biāo)在下一幀的位置與大小。檢測模塊的作用是定位目標(biāo)的位置,首先利用多尺度窗口對當(dāng)前幀的圖像進(jìn)行掃描,將掃描得到的每個圖像塊作為一個目標(biāo)候選樣本;掃描結(jié)束后,將所有的目標(biāo)候選樣本輸入到檢測模塊,通過級聯(lián)分類器對目標(biāo)候選樣本進(jìn)行分類,包含目標(biāo)的則為正樣本,反之則為負(fù)樣本,檢測模塊的最終結(jié)果為通過篩選的正樣本。學(xué)習(xí)模塊采用的是P-N學(xué)習(xí)機(jī)制,首先通過監(jiān)督學(xué)習(xí)將已標(biāo)簽的數(shù)據(jù)進(jìn)行訓(xùn)練,以得到一個分類器,再利用剩下的無標(biāo)簽數(shù)據(jù)優(yōu)化該分類器,進(jìn)而更新分類器及相關(guān)濾波參數(shù),以提高模型的魯棒性。
TLD算法雖然很好地解決了目標(biāo)跟蹤過程中長時遮擋、尺度變化等問題,但是運(yùn)行時間長、所需存儲空間大以致運(yùn)行效率較低。
核相關(guān)濾波是一種基于機(jī)器學(xué)習(xí)的短時目標(biāo)跟蹤算法,其本質(zhì)是在訓(xùn)練階段通過學(xué)習(xí)的方式尋找一個“目標(biāo)模型參數(shù)w”,并在之后的檢測階段中使用該模型參數(shù),通過核相關(guān)計算檢測搜索區(qū)域中的目標(biāo)。其訓(xùn)練階段的問題可以抽象為一個嶺回歸問題,即w最小化目標(biāo)函數(shù):
(1)
式中:X為由訓(xùn)練樣本組成的矩陣;y為其對應(yīng)的標(biāo)簽向量;λ為正則化系數(shù)。
式(1)是一個線性回歸模型的無約束最優(yōu)化問題,令其導(dǎo)數(shù)為零,則可求得模型參數(shù)w。為了將低維空間中線性不可分的點(diǎn)變成高維空間中線性可分的點(diǎn),核相關(guān)濾波引入了非線性映射函數(shù)φ(·),將輸入X映射到非線性的特征空間中,則式(1)變?yōu)楣?2)的嶺回歸:
(2)
根據(jù)對偶空間理論,w可表示為輸入樣本非線性映射的加權(quán)和:
(3)
式中:xi表示輸入樣本的第i幀圖像。
所以式(2)中的解由向量w變成了對偶空間的向量α=(α1,α2,…,αn),根據(jù)映射函數(shù)的內(nèi)積可由核函數(shù)表示以及循環(huán)矩陣可被離散傅里葉變換矩陣對角化的性質(zhì),將式(3)代入式(2),令其導(dǎo)數(shù)為零,就求得目標(biāo)模型的解w對應(yīng)的向量α的離散傅里葉變換快速解:
(4)
(5)
最后根據(jù)相關(guān)響應(yīng)圖f(z)中最大值的位置,可檢測到目標(biāo)的位置。其中核相關(guān)濾波跟蹤算法中使用的是高斯核函數(shù),其向量x和z之間的核相關(guān)性可由下式計算:
(6)
圖2 核相關(guān)濾波算法的工作流程
下面將從初始化、檢測、跟蹤、模型更新這4個方面對核相關(guān)濾波的工作流程進(jìn)行描述:
(1) 初始化
在初始幀中框出目標(biāo)的位置和大小,通過目標(biāo)在圖像中的位置來確定目標(biāo)的搜索區(qū)域,使其盡量包含背景,否則在循環(huán)移位時會產(chǎn)生嚴(yán)重的邊緣效應(yīng);初始化相關(guān)濾波參數(shù)。
(2) 檢測
對搜索區(qū)域提取方向梯度直方圖(HOG)特征,并對此特征通過離散傅里葉變換獲得該區(qū)域在變換域中的模型,然后利用高斯核函數(shù)計算搜索區(qū)域與目標(biāo)模型之間的核相關(guān)性,再通過傅里葉變換對其進(jìn)行對角化,以獲得目標(biāo)在候選區(qū)域的響應(yīng)值,即目標(biāo)的位置與大小,目標(biāo)的最終位置為其對應(yīng)的響應(yīng)峰值。
(3) 訓(xùn)練
以當(dāng)前幀的目標(biāo)位置為中心,并選定其鄰域?yàn)樗阉鲄^(qū)域,即包含該目標(biāo)的圖像塊,通過離散傅里葉變換以確定該圖像的目標(biāo)模型,然后根據(jù)高斯核函數(shù)得到該模型的核自相關(guān)結(jié)果,最后對其進(jìn)行對角化以求得該模型所對應(yīng)的相關(guān)濾波參數(shù)。
(4) 更新
通過對訓(xùn)練得到的相關(guān)濾波參數(shù)與目標(biāo)模型、目前使用的相關(guān)濾波參數(shù)與目標(biāo)模型進(jìn)行加權(quán)求和,以得到更新后的目標(biāo)模型與相關(guān)濾波參數(shù)。
核相關(guān)濾波算法不僅速度快,而且跟蹤精度高,但當(dāng)目標(biāo)在跟蹤過程中出現(xiàn)長時遮擋、尺度變化等問題時,跟蹤效果不太理想,魯棒性降低。
為了提高跟蹤精度,以解決TLD運(yùn)行效率低、核相關(guān)濾波不能處理目標(biāo)形變、長時遮擋等問題,通過將核相關(guān)濾波與TLD算法相結(jié)合,研究并改進(jìn)了一種長時跟蹤算法,即基于核相關(guān)濾波的TLD跟蹤算法。
由于核相關(guān)濾波在目標(biāo)跟蹤過程中所使用的搜索區(qū)域與目標(biāo)框的大小是固定的,當(dāng)目標(biāo)出現(xiàn)尺度變化時,該算法不能適應(yīng)此變化。針對該問題,本文對核相關(guān)濾波算法進(jìn)行多尺度改進(jìn)。為了適應(yīng)目標(biāo)的縮放,本文選取了3個目標(biāo)尺度:原目標(biāo)區(qū)域尺度、比目標(biāo)區(qū)域略小尺度、比目標(biāo)區(qū)域略大尺度。這樣就可獲得原尺度、較小尺度、較大尺度這3個搜索區(qū)域,然后利用這3個尺度對目標(biāo)進(jìn)行相關(guān)濾波跟蹤,以選擇最佳的目標(biāo)響應(yīng)值,即目標(biāo)的位置與大小,這樣可有效克服目標(biāo)形變的問題。
為了比較原始核相關(guān)濾波(O-KCF)與改進(jìn)后的多尺度核相關(guān)濾波(I-KCF)的跟蹤效果,本文采用OTB-100中的Car1序列進(jìn)行實(shí)驗(yàn)仿真。采用的實(shí)驗(yàn)平臺為64位win7系統(tǒng),CPU為i5-3470,內(nèi)存大小8 GB。MATLAB代碼采用的編程環(huán)境為MATLAB R2016a,C++代碼的編程環(huán)境為Visual Studio 2015與OpenCV 3.2.0(以下試驗(yàn)均同)。由于試驗(yàn)跟蹤幀數(shù)太多,選擇具有代表性的4幀試驗(yàn)結(jié)果圖像,如圖3所示。
圖3 I-KCF與O-KCF在Car1序列的跟蹤結(jié)果
從圖3可看出,當(dāng)目標(biāo)尺寸與原始尺寸變化不大時,2個算法的跟蹤效果差不多;但在第818幀,此時目標(biāo)尺寸大約是初始尺寸的1/4左右,O-KCF算法將背景作為目標(biāo)進(jìn)行跟蹤,導(dǎo)致了后續(xù)的跟蹤錯誤,原因是該算法無法對目標(biāo)尺寸進(jìn)行準(zhǔn)確的估計,積累了目標(biāo)在跟蹤過程中的誤差;當(dāng)目標(biāo)與相機(jī)之間距離增大時,I-KCF通過自適應(yīng)尺度捕捉到了正確的目標(biāo),因此I-KCF的跟蹤效果優(yōu)于O-KCF。
在TLD的檢測模塊中,若目標(biāo)發(fā)生丟失,則會立即啟動檢測器重新進(jìn)行檢測。若目標(biāo)丟失太多,則會頻繁激活檢測器,以致TLD的計算量增大,耗時增加。鑒于此,本文在TLD的跟蹤模塊引入I-KCF,將I-KCF作為跟蹤器,其能減少目標(biāo)丟失的次數(shù),即減少了檢測器的激活次數(shù),極大地提高了運(yùn)行效率。
為了降低TLD跟蹤過程中的誤差積累,在學(xué)習(xí)模塊中引入自適應(yīng)學(xué)習(xí)參數(shù),若跟蹤準(zhǔn)確,則選擇較大的學(xué)習(xí)參數(shù),若跟蹤不準(zhǔn)確,則選擇較小的學(xué)習(xí)參數(shù)或不進(jìn)行學(xué)習(xí),以避免不準(zhǔn)確的跟蹤結(jié)果破壞算法的跟蹤模型,進(jìn)而更新I-KCF的目標(biāo)模型和相關(guān)濾波參數(shù),以減少I-KCF跟蹤中的誤差積累。
本文將基于核相關(guān)濾波的TLD跟蹤算法分為2個階段,分別為初始階段與跟蹤階段,下面以這2個階段為依據(jù),詳細(xì)描述改進(jìn)后的TLD跟蹤算法。
(1) 初始階段
讀取圖像的第1幀,標(biāo)注目標(biāo)的位置與大小,并將其鄰域作為搜索區(qū)域,然后對該區(qū)域提取定向梯度直方圖(FHOG)特征,則將此特征作為目標(biāo)的外觀模型,并訓(xùn)練跟蹤模塊中的相關(guān)濾波器。同時在圖像區(qū)域內(nèi)提取正負(fù)樣本,正樣本是目標(biāo)區(qū)域及經(jīng)過輕微仿射變換后的圖像塊,負(fù)樣本則是在離目標(biāo)較遠(yuǎn)的背景區(qū)域提取的圖像塊。獲得正負(fù)樣本后,對檢測模塊中的集合分類器和最近鄰分類器進(jìn)行初始化訓(xùn)練,以完成跟蹤模塊與檢測模塊的初始化。
(2) 跟蹤階段
步驟1:若在上一幀中成功跟蹤到目標(biāo),則轉(zhuǎn)步驟2,否則,轉(zhuǎn)步驟3。
步驟2:根據(jù)上一幀得到的目標(biāo)狀態(tài),選擇搜索區(qū)域,利用I-KCF算法進(jìn)行跟蹤,求取最佳的目標(biāo)位置和尺寸,若預(yù)設(shè)的閾值小于目標(biāo)對應(yīng)的響應(yīng)值,則跟蹤成功,轉(zhuǎn)步驟5,否則轉(zhuǎn)步驟3。
步驟3:啟動檢測模塊,利用不同的尺度對圖像進(jìn)行全局搜索,通過級聯(lián)分類器對得到的目標(biāo)候選區(qū)域進(jìn)行篩選,通過分類器的則將其作為檢測結(jié)果并保留,轉(zhuǎn)步驟4。
步驟4:將檢測結(jié)果中重疊度高的目標(biāo)框融合在一起,并對該結(jié)果進(jìn)行分析。若檢測結(jié)果數(shù)量為0,則轉(zhuǎn)步驟6;若檢測結(jié)果數(shù)量為1,則檢測到的圖像為目標(biāo),轉(zhuǎn)步驟5;若檢測結(jié)果數(shù)量為多個,則檢測失敗,轉(zhuǎn)步驟6。
步驟5:根據(jù)得到的目標(biāo)位置,利用目標(biāo)的相對相似度計算跟蹤模塊的自適應(yīng)學(xué)習(xí)參數(shù),提取搜索區(qū)域特征,更新相關(guān)濾波器的參數(shù)和外觀模型;同時提取正負(fù)樣本,訓(xùn)練檢測模塊中的分類器;標(biāo)記當(dāng)前幀為成功跟蹤到目標(biāo),轉(zhuǎn)步驟7。
步驟6:標(biāo)記當(dāng)前幀為跟蹤失敗,轉(zhuǎn)步驟7。
步驟7:若該序列達(dá)到最后一幀,則退出跟蹤,算法結(jié)束,否則轉(zhuǎn)步驟1。
為了測試改進(jìn)后算法的跟蹤效果,本文選取OTB-100中BlurOwl和Lemming序列進(jìn)行試驗(yàn),并將基于核相關(guān)濾波的TLD跟蹤算法(簡記為:I-TLD)與核相關(guān)濾波算法(簡記為:KCF)、TLD跟蹤算法進(jìn)行對比。
實(shí)驗(yàn)1:采用BlurOwl序列進(jìn)行試驗(yàn),該視頻序列目標(biāo)具有快速運(yùn)動的屬性。I-TLD算法、KCF算法、TLD算法的各自跟蹤結(jié)果如圖4所示。由于試驗(yàn)跟蹤幀數(shù)太多,圖4只選擇了具有代表性的4幀跟蹤結(jié)果圖像。
圖4 3種算法在BlurOwl序列的跟蹤結(jié)果
從圖4可看出,相機(jī)做不規(guī)則的快速抖動時目標(biāo)出現(xiàn)運(yùn)動模糊的情況,以致很多幀圖像的成像質(zhì)量較差。當(dāng)相機(jī)晃動幅度不大時,3種算法均能準(zhǔn)確跟蹤,如圖像中第37、45幀均可說明。當(dāng)相機(jī)晃動幅度很大時,如圖像中第49、94幀時,I-TLD跟蹤比較準(zhǔn)確,原因是I-TLD通過重檢測機(jī)制,重新捕捉到了目標(biāo);而TLD算法跟蹤失敗,原因是目標(biāo)外觀變化比較劇烈,歷史信息與當(dāng)下信息差距太大,以致預(yù)測不準(zhǔn)確,即跟蹤錯誤;KCF算法也跟蹤失敗,原因是目標(biāo)劇烈運(yùn)動,使得搜索區(qū)域內(nèi)不包含該目標(biāo),即檢測不到目標(biāo),以致跟蹤錯誤。
實(shí)驗(yàn)2:采用Lemming序列進(jìn)行試驗(yàn),該視頻序列目標(biāo)具有遮擋的屬性,I-TLD算法、KCF算法、TLD算法的各自跟蹤結(jié)果如圖5所示。由于跟蹤幀數(shù)太多,圖5只選擇了具有代表性的4幀跟蹤結(jié)果圖像。
圖5 3種算法在目標(biāo)遮擋時的跟蹤結(jié)果
在Lemming序列中,圖像背景比較雜亂,即物體很多。從圖5可看出,在第365幀,目標(biāo)被遮擋,經(jīng)過20幀后,即第385幀,目標(biāo)重新出現(xiàn),KCF跟蹤錯誤,原因是其學(xué)到了遮擋物;而TLD與I-TLD算法跟蹤準(zhǔn)確,原因是其具有重檢測能力,目標(biāo)一旦出現(xiàn),及時檢測并進(jìn)行跟蹤,說明TLD及I-TLD的重檢測機(jī)制可以較好地處理目標(biāo)遮擋問題。
實(shí)驗(yàn)3:采用Lemming序列進(jìn)行試驗(yàn),該視頻序列目標(biāo)具有形變屬性,I-TLD算法、KCF算法、TLD算法的各自跟蹤結(jié)果如圖6所示。由于試驗(yàn)跟蹤幀數(shù)太多,圖6只選擇了具有代表性的4幀跟蹤結(jié)果圖像。
從圖6可看出,第172幀,3種算法都能跟蹤到物體,但TLD跟蹤不精確,跟蹤到物體的局部,原因是在TLD的跟蹤模塊中,當(dāng)目標(biāo)移動較快或背景雜亂時,通常會出現(xiàn)中值流點(diǎn)數(shù)較少的情況,以致錯誤估計了目標(biāo)尺寸,跟蹤不精確。在第717、981、1 020幀,KCF都跟蹤失敗,原因是KCF利用跟蹤結(jié)果對模型參數(shù)進(jìn)行更新,而且僅在搜索區(qū)域內(nèi)對圖像進(jìn)行處理,當(dāng)目標(biāo)快速移動,以致跟蹤錯誤。而KCF又利用錯誤的跟蹤結(jié)果對模型進(jìn)行訓(xùn)練與更新,以致后續(xù)的連續(xù)跟蹤失敗。I-TLD跟蹤比較準(zhǔn)確,原因是其具有重檢測能力,當(dāng)目標(biāo)出現(xiàn)后,及時檢測并進(jìn)行跟蹤。
從上述圖4至圖6可看出,雖然TLD對目標(biāo)遮擋有很強(qiáng)的適應(yīng)性,但TLD的跟蹤模塊依賴于中值光流法,當(dāng)背景雜亂或目標(biāo)快速移動時,會出現(xiàn)跟蹤失敗的情況。而I-TLD克服了KCF與TLD的缺點(diǎn),當(dāng)目標(biāo)被遮擋或消失時,其啟動檢測模塊進(jìn)行重檢測;當(dāng)目標(biāo)出現(xiàn)時,捕獲并進(jìn)行跟蹤;當(dāng)目標(biāo)較清晰時,使用改進(jìn)后的多尺度核相關(guān)濾波進(jìn)行跟蹤,其能準(zhǔn)確地判斷目標(biāo)的大小和位置,盡可能跟蹤完整的目標(biāo),以提高樣本質(zhì)量,從而保證學(xué)習(xí)模塊和檢測模塊分類器的性能,因此I-TLD算法優(yōu)于KCF與TLD算法。
針對TLD運(yùn)行效率低且核相關(guān)濾波不能處理長時遮擋與目標(biāo)形變等問題,本文提出了一種基于核相關(guān)濾波的TLD跟蹤算法。其優(yōu)點(diǎn)是:通過對核相關(guān)濾波進(jìn)行多尺度改進(jìn),有效提高了其處理尺度變化的能力;在TLD的跟蹤模塊中引入了改進(jìn)后的多尺度核相關(guān)濾波器,使得TLD跟蹤結(jié)果更穩(wěn)定;在學(xué)習(xí)模塊中引入了自適應(yīng)學(xué)習(xí)參數(shù),減少了檢測器的激活次數(shù),極大地提高了運(yùn)行效率與跟蹤的準(zhǔn)確性。實(shí)驗(yàn)結(jié)果表明,基于核相關(guān)濾波的TLD跟蹤算法能夠獲得較好的跟蹤結(jié)果,尤其在處理目標(biāo)形變、長時遮擋等問題時,其跟蹤效果明顯優(yōu)于核相關(guān)濾波和TLD算法。