朱明榮,俞憲杰
(中國船舶重工集團公司第七二三研究所,江蘇 揚州 225101)
目標跟蹤是計算機視覺領(lǐng)域的研究熱點之一,特別在導(dǎo)航、定位、人機交互、監(jiān)控等方面[1]應(yīng)用廣泛。但隨著研究的深入,目標環(huán)境的復(fù)雜性、目標運動的不可知性等問題[2]日益顯著,經(jīng)典的跟蹤算法已不能對它們進行準確的跟蹤。而基于機器學習的跟蹤方法通過在線學習有效提高了跟蹤效果,其無需事先獲取目標的特征信息,在圖像序列的第1幀中自行檢測目標,通過在線學習,自動調(diào)整模型,以增強跟蹤目標的適應(yīng)性。文獻[3]提出了基于機器學習的跟蹤學習檢測(TLD)算法,該算法通過檢測、跟蹤、學習這三大模塊很好地解決了長時遮擋、尺度變化等問題,但算法運行效率不高。相關(guān)濾波是衡量目標間相關(guān)性的一種匹配濾波器,其目的是為了找到與跟蹤目標響應(yīng)值最大的項,文獻[4]提出了長時間相關(guān)跟蹤(LCT)算法,通過采用多個相關(guān)濾波器來解決跟蹤過程中尺度變化等問題。文獻[5]提出了多任務(wù)相關(guān)粒子濾波(MCPF)算法,將結(jié)構(gòu)化支持向量機(SVM)與相關(guān)濾波相結(jié)合,通過粒子采樣策略有效地處理了尺度變化,并利用不同特征之間的相互依賴性來共同學習并更新相關(guān)濾波器,提高了跟蹤效果。文獻[1]提出了核檢測跟蹤的循環(huán)結(jié)構(gòu)(CSK)算法,其通過引入循環(huán)矩陣與核技巧提高了運行效率。文獻[6]提出了核相關(guān)濾波(KCF)算法,其加入了多通道特征,通過引入循環(huán)矩陣與快速傅里葉變換增強了魯棒性,并提高了運行速度,但不能處理長時遮擋、尺度變化等問題。
為此,本文對TLD和核相關(guān)濾波算法進行了研究和改進,提出了一種將核相關(guān)濾波與TLD算法相結(jié)合的改進算法。該算法首先將核相關(guān)濾波進行多尺度改進,使其適應(yīng)目標的尺度變化;其次在TLD中引入核相關(guān)濾波算法,既克服了TLD運行效率不高的問題,又解決了核相關(guān)濾波算法對尺度變化、長時遮擋敏感的問題。實驗結(jié)果表明,本文算法不僅提高了系統(tǒng)的跟蹤精度和運行效率,還增強了對目標跟蹤的魯棒性和適應(yīng)性。
TLD是一種單目標長時跟蹤算法,其巧妙地將跟蹤和檢測算法進行了融合,并引入了P-N在線學習機制,很好地解決了傳統(tǒng)跟蹤算法中目標發(fā)生的尺度變化、長時遮擋等問題。TLD的主要思想是:首先在跟蹤模塊中采用中值光流法,其通過特征點的運動軌跡來預(yù)測目標的位置與大小;其次在檢測模塊中通過滑動窗口掃描以定位目標的位置與大小;最后將跟蹤模塊與檢測模塊所獲得的結(jié)果進行融合,將融合結(jié)果作為當前幀的最終目標位置,學習模塊依據(jù)此結(jié)果通過P-N機制進行在線學習,更新各個分類器的模型參數(shù),以適應(yīng)目標的尺度變化和長時遮擋,增強跟蹤的魯棒性。TLD算法的工作流程如圖1所示。

圖1 TLD算法的工作流程
TLD算法主要由跟蹤、檢測和學習這3個模塊組成,其中跟蹤模塊采用的是中值光流法,主要負責跟蹤相鄰幀的目標,其首先在目標區(qū)域中選擇特征點,然后確定所選特征點的位置與移動軌跡,最后通過中值光流法來預(yù)測目標在下一幀的位置與大小。檢測模塊的作用是定位目標的位置,首先利用多尺度窗口對當前幀的圖像進行掃描,將掃描得到的每個圖像塊作為一個目標候選樣本;掃描結(jié)束后,將所有的目標候選樣本輸入到檢測模塊,通過級聯(lián)分類器對目標候選樣本進行分類,包含目標的則為正樣本,反之則為負樣本,檢測模塊的最終結(jié)果為通過篩選的正樣本。學習模塊采用的是P-N學習機制,首先通過監(jiān)督學習將已標簽的數(shù)據(jù)進行訓(xùn)練,以得到一個分類器,再利用剩下的無標簽數(shù)據(jù)優(yōu)化該分類器,進而更新分類器及相關(guān)濾波參數(shù),以提高模型的魯棒性。
TLD算法雖然很好地解決了目標跟蹤過程中長時遮擋、尺度變化等問題,但是運行時間長、所需存儲空間大以致運行效率較低。
核相關(guān)濾波是一種基于機器學習的短時目標跟蹤算法,其本質(zhì)是在訓(xùn)練階段通過學習的方式尋找一個“目標模型參數(shù)w”,并在之后的檢測階段中使用該模型參數(shù),通過核相關(guān)計算檢測搜索區(qū)域中的目標。其訓(xùn)練階段的問題可以抽象為一個嶺回歸問題,即w最小化目標函數(shù):
(1)
式中:X為由訓(xùn)練樣本組成的矩陣;y為其對應(yīng)的標簽向量;λ為正則化系數(shù)。
式(1)是一個線性回歸模型的無約束最優(yōu)化問題,令其導(dǎo)數(shù)為零,則可求得模型參數(shù)w。為了將低維空間中線性不可分的點變成高維空間中線性可分的點,核相關(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ù)為零,就求得目標模型的解w對應(yīng)的向量α的離散傅里葉變換快速解:
(4)


(5)

最后根據(jù)相關(guān)響應(yīng)圖f(z)中最大值的位置,可檢測到目標的位置。其中核相關(guān)濾波跟蹤算法中使用的是高斯核函數(shù),其向量x和z之間的核相關(guān)性可由下式計算:
(6)



圖2 核相關(guān)濾波算法的工作流程
下面將從初始化、檢測、跟蹤、模型更新這4個方面對核相關(guān)濾波的工作流程進行描述:
(1) 初始化
在初始幀中框出目標的位置和大小,通過目標在圖像中的位置來確定目標的搜索區(qū)域,使其盡量包含背景,否則在循環(huán)移位時會產(chǎn)生嚴重的邊緣效應(yīng);初始化相關(guān)濾波參數(shù)。
(2) 檢測
對搜索區(qū)域提取方向梯度直方圖(HOG)特征,并對此特征通過離散傅里葉變換獲得該區(qū)域在變換域中的模型,然后利用高斯核函數(shù)計算搜索區(qū)域與目標模型之間的核相關(guān)性,再通過傅里葉變換對其進行對角化,以獲得目標在候選區(qū)域的響應(yīng)值,即目標的位置與大小,目標的最終位置為其對應(yīng)的響應(yīng)峰值。
(3) 訓(xùn)練
以當前幀的目標位置為中心,并選定其鄰域為搜索區(qū)域,即包含該目標的圖像塊,通過離散傅里葉變換以確定該圖像的目標模型,然后根據(jù)高斯核函數(shù)得到該模型的核自相關(guān)結(jié)果,最后對其進行對角化以求得該模型所對應(yīng)的相關(guān)濾波參數(shù)。
(4) 更新
通過對訓(xùn)練得到的相關(guān)濾波參數(shù)與目標模型、目前使用的相關(guān)濾波參數(shù)與目標模型進行加權(quán)求和,以得到更新后的目標模型與相關(guān)濾波參數(shù)。
核相關(guān)濾波算法不僅速度快,而且跟蹤精度高,但當目標在跟蹤過程中出現(xiàn)長時遮擋、尺度變化等問題時,跟蹤效果不太理想,魯棒性降低。
為了提高跟蹤精度,以解決TLD運行效率低、核相關(guān)濾波不能處理目標形變、長時遮擋等問題,通過將核相關(guān)濾波與TLD算法相結(jié)合,研究并改進了一種長時跟蹤算法,即基于核相關(guān)濾波的TLD跟蹤算法。
由于核相關(guān)濾波在目標跟蹤過程中所使用的搜索區(qū)域與目標框的大小是固定的,當目標出現(xiàn)尺度變化時,該算法不能適應(yīng)此變化。針對該問題,本文對核相關(guān)濾波算法進行多尺度改進。為了適應(yīng)目標的縮放,本文選取了3個目標尺度:原目標區(qū)域尺度、比目標區(qū)域略小尺度、比目標區(qū)域略大尺度。這樣就可獲得原尺度、較小尺度、較大尺度這3個搜索區(qū)域,然后利用這3個尺度對目標進行相關(guān)濾波跟蹤,以選擇最佳的目標響應(yīng)值,即目標的位置與大小,這樣可有效克服目標形變的問題。
為了比較原始核相關(guān)濾波(O-KCF)與改進后的多尺度核相關(guān)濾波(I-KCF)的跟蹤效果,本文采用OTB-100中的Car1序列進行實驗仿真。采用的實驗平臺為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(以下試驗均同)。由于試驗跟蹤幀數(shù)太多,選擇具有代表性的4幀試驗結(jié)果圖像,如圖3所示。

圖3 I-KCF與O-KCF在Car1序列的跟蹤結(jié)果
從圖3可看出,當目標尺寸與原始尺寸變化不大時,2個算法的跟蹤效果差不多;但在第818幀,此時目標尺寸大約是初始尺寸的1/4左右,O-KCF算法將背景作為目標進行跟蹤,導(dǎo)致了后續(xù)的跟蹤錯誤,原因是該算法無法對目標尺寸進行準確的估計,積累了目標在跟蹤過程中的誤差;當目標與相機之間距離增大時,I-KCF通過自適應(yīng)尺度捕捉到了正確的目標,因此I-KCF的跟蹤效果優(yōu)于O-KCF。
在TLD的檢測模塊中,若目標發(fā)生丟失,則會立即啟動檢測器重新進行檢測。若目標丟失太多,則會頻繁激活檢測器,以致TLD的計算量增大,耗時增加。鑒于此,本文在TLD的跟蹤模塊引入I-KCF,將I-KCF作為跟蹤器,其能減少目標丟失的次數(shù),即減少了檢測器的激活次數(shù),極大地提高了運行效率。
為了降低TLD跟蹤過程中的誤差積累,在學習模塊中引入自適應(yīng)學習參數(shù),若跟蹤準確,則選擇較大的學習參數(shù),若跟蹤不準確,則選擇較小的學習參數(shù)或不進行學習,以避免不準確的跟蹤結(jié)果破壞算法的跟蹤模型,進而更新I-KCF的目標模型和相關(guān)濾波參數(shù),以減少I-KCF跟蹤中的誤差積累。
本文將基于核相關(guān)濾波的TLD跟蹤算法分為2個階段,分別為初始階段與跟蹤階段,下面以這2個階段為依據(jù),詳細描述改進后的TLD跟蹤算法。
(1) 初始階段
讀取圖像的第1幀,標注目標的位置與大小,并將其鄰域作為搜索區(qū)域,然后對該區(qū)域提取定向梯度直方圖(FHOG)特征,則將此特征作為目標的外觀模型,并訓(xùn)練跟蹤模塊中的相關(guān)濾波器。同時在圖像區(qū)域內(nèi)提取正負樣本,正樣本是目標區(qū)域及經(jīng)過輕微仿射變換后的圖像塊,負樣本則是在離目標較遠的背景區(qū)域提取的圖像塊。獲得正負樣本后,對檢測模塊中的集合分類器和最近鄰分類器進行初始化訓(xùn)練,以完成跟蹤模塊與檢測模塊的初始化。
(2) 跟蹤階段
步驟1:若在上一幀中成功跟蹤到目標,則轉(zhuǎn)步驟2,否則,轉(zhuǎn)步驟3。
步驟2:根據(jù)上一幀得到的目標狀態(tài),選擇搜索區(qū)域,利用I-KCF算法進行跟蹤,求取最佳的目標位置和尺寸,若預(yù)設(shè)的閾值小于目標對應(yīng)的響應(yīng)值,則跟蹤成功,轉(zhuǎn)步驟5,否則轉(zhuǎn)步驟3。
步驟3:啟動檢測模塊,利用不同的尺度對圖像進行全局搜索,通過級聯(lián)分類器對得到的目標候選區(qū)域進行篩選,通過分類器的則將其作為檢測結(jié)果并保留,轉(zhuǎn)步驟4。
步驟4:將檢測結(jié)果中重疊度高的目標框融合在一起,并對該結(jié)果進行分析。若檢測結(jié)果數(shù)量為0,則轉(zhuǎn)步驟6;若檢測結(jié)果數(shù)量為1,則檢測到的圖像為目標,轉(zhuǎn)步驟5;若檢測結(jié)果數(shù)量為多個,則檢測失敗,轉(zhuǎn)步驟6。
步驟5:根據(jù)得到的目標位置,利用目標的相對相似度計算跟蹤模塊的自適應(yīng)學習參數(shù),提取搜索區(qū)域特征,更新相關(guān)濾波器的參數(shù)和外觀模型;同時提取正負樣本,訓(xùn)練檢測模塊中的分類器;標記當前幀為成功跟蹤到目標,轉(zhuǎn)步驟7。
步驟6:標記當前幀為跟蹤失敗,轉(zhuǎn)步驟7。
步驟7:若該序列達到最后一幀,則退出跟蹤,算法結(jié)束,否則轉(zhuǎn)步驟1。
為了測試改進后算法的跟蹤效果,本文選取OTB-100中BlurOwl和Lemming序列進行試驗,并將基于核相關(guān)濾波的TLD跟蹤算法(簡記為:I-TLD)與核相關(guān)濾波算法(簡記為:KCF)、TLD跟蹤算法進行對比。
實驗1:采用BlurOwl序列進行試驗,該視頻序列目標具有快速運動的屬性。I-TLD算法、KCF算法、TLD算法的各自跟蹤結(jié)果如圖4所示。由于試驗跟蹤幀數(shù)太多,圖4只選擇了具有代表性的4幀跟蹤結(jié)果圖像。

圖4 3種算法在BlurOwl序列的跟蹤結(jié)果
從圖4可看出,相機做不規(guī)則的快速抖動時目標出現(xiàn)運動模糊的情況,以致很多幀圖像的成像質(zhì)量較差。當相機晃動幅度不大時,3種算法均能準確跟蹤,如圖像中第37、45幀均可說明。當相機晃動幅度很大時,如圖像中第49、94幀時,I-TLD跟蹤比較準確,原因是I-TLD通過重檢測機制,重新捕捉到了目標;而TLD算法跟蹤失敗,原因是目標外觀變化比較劇烈,歷史信息與當下信息差距太大,以致預(yù)測不準確,即跟蹤錯誤;KCF算法也跟蹤失敗,原因是目標劇烈運動,使得搜索區(qū)域內(nèi)不包含該目標,即檢測不到目標,以致跟蹤錯誤。
實驗2:采用Lemming序列進行試驗,該視頻序列目標具有遮擋的屬性,I-TLD算法、KCF算法、TLD算法的各自跟蹤結(jié)果如圖5所示。由于跟蹤幀數(shù)太多,圖5只選擇了具有代表性的4幀跟蹤結(jié)果圖像。

圖5 3種算法在目標遮擋時的跟蹤結(jié)果
在Lemming序列中,圖像背景比較雜亂,即物體很多。從圖5可看出,在第365幀,目標被遮擋,經(jīng)過20幀后,即第385幀,目標重新出現(xiàn),KCF跟蹤錯誤,原因是其學到了遮擋物;而TLD與I-TLD算法跟蹤準確,原因是其具有重檢測能力,目標一旦出現(xiàn),及時檢測并進行跟蹤,說明TLD及I-TLD的重檢測機制可以較好地處理目標遮擋問題。
實驗3:采用Lemming序列進行試驗,該視頻序列目標具有形變屬性,I-TLD算法、KCF算法、TLD算法的各自跟蹤結(jié)果如圖6所示。由于試驗跟蹤幀數(shù)太多,圖6只選擇了具有代表性的4幀跟蹤結(jié)果圖像。
從圖6可看出,第172幀,3種算法都能跟蹤到物體,但TLD跟蹤不精確,跟蹤到物體的局部,原因是在TLD的跟蹤模塊中,當目標移動較快或背景雜亂時,通常會出現(xiàn)中值流點數(shù)較少的情況,以致錯誤估計了目標尺寸,跟蹤不精確。在第717、981、1 020幀,KCF都跟蹤失敗,原因是KCF利用跟蹤結(jié)果對模型參數(shù)進行更新,而且僅在搜索區(qū)域內(nèi)對圖像進行處理,當目標快速移動,以致跟蹤錯誤。而KCF又利用錯誤的跟蹤結(jié)果對模型進行訓(xùn)練與更新,以致后續(xù)的連續(xù)跟蹤失敗。I-TLD跟蹤比較準確,原因是其具有重檢測能力,當目標出現(xiàn)后,及時檢測并進行跟蹤。
從上述圖4至圖6可看出,雖然TLD對目標遮擋有很強的適應(yīng)性,但TLD的跟蹤模塊依賴于中值光流法,當背景雜亂或目標快速移動時,會出現(xiàn)跟蹤失敗的情況。而I-TLD克服了KCF與TLD的缺點,當目標被遮擋或消失時,其啟動檢測模塊進行重檢測;當目標出現(xiàn)時,捕獲并進行跟蹤;當目標較清晰時,使用改進后的多尺度核相關(guān)濾波進行跟蹤,其能準確地判斷目標的大小和位置,盡可能跟蹤完整的目標,以提高樣本質(zhì)量,從而保證學習模塊和檢測模塊分類器的性能,因此I-TLD算法優(yōu)于KCF與TLD算法。
針對TLD運行效率低且核相關(guān)濾波不能處理長時遮擋與目標形變等問題,本文提出了一種基于核相關(guān)濾波的TLD跟蹤算法。其優(yōu)點是:通過對核相關(guān)濾波進行多尺度改進,有效提高了其處理尺度變化的能力;在TLD的跟蹤模塊中引入了改進后的多尺度核相關(guān)濾波器,使得TLD跟蹤結(jié)果更穩(wěn)定;在學習模塊中引入了自適應(yīng)學習參數(shù),減少了檢測器的激活次數(shù),極大地提高了運行效率與跟蹤的準確性。實驗結(jié)果表明,基于核相關(guān)濾波的TLD跟蹤算法能夠獲得較好的跟蹤結(jié)果,尤其在處理目標形變、長時遮擋等問題時,其跟蹤效果明顯優(yōu)于核相關(guān)濾波和TLD算法。