鄒 鵬 范都耀
(南京理工大學計算機科學與工程學院 南京 210094)
隨著視頻行為分析、自動駕駛、人機交互等技術的廣泛應用和發(fā)展,視覺目標跟蹤技術引起了人們的重視。近年來學者們對其進行了大量的研究,尤其是深度學習技術的興起,使視覺目標跟蹤算法發(fā)展出了許多分支。但是由于視覺目標跟蹤的場景中存在的光照變化、變形、旋轉(zhuǎn)、背景雜亂、存在相似干擾物體、相機運動不均勻等干擾因素[1~2],視覺目標跟蹤在實踐中仍然是一項十分具有挑戰(zhàn)性的任務。
一般跟蹤算法的核心是進行目標圖像與輸入幀的匹配。對于理想的跟蹤匹配算法,即使在視頻中的目標被遮擋、發(fā)生尺度變化、旋轉(zhuǎn)、光照不均勻等干擾因素下,也應需要提供魯棒的匹配。之前很長一段時間研究者們的解決方法是,通過引入仿射變換[3]、概率匹配[4]、特征圖像[5]、光照不變量[6]、遮擋檢測[7]等操作,在匹配中顯式地對這些畸變進行建模。但是這種方法存在的缺陷是,不可能建立一個模型可以良好地應對各種干擾因素,一種建模后的匹配機制也許可以很好地解決一種干擾,但是它很可能會產(chǎn)生另一種干擾。在本文中,我們學習一種匹配機制,而不是對特定的干擾因素進行顯式的建模匹配。我們從包含各種干擾因素的訓練視頻中學習不變量,當訓練視頻集足夠大時,可以先驗地學習一個通用的匹配函數(shù),這個匹配函數(shù)可以處理視頻中發(fā)生的常見干擾因素,比如目標外觀變化。
本文在Siamese-fc[8]目標跟蹤方法基礎上,提出基于Triplet network[9]的目標跟蹤方法TriTer(Triplet Network Based Tracker)。首先,使用三個并行的卷積神經(jīng)網(wǎng)絡對輸入的第一幀目標、上一幀目標和當前幀搜索區(qū)域進行特征提取,得到三個區(qū)域的高層語義信息。然后,分別將第一幀目標特征和上一幀目標特征與當前搜索區(qū)域特征進行對應卷積,然后得到搜索區(qū)域中各個位置與第一目標和上一幀目標的相似度,從而生成兩個相似度分數(shù)圖。最后,對兩個分辨率較小的分數(shù)圖進行插值放大處理,并使用分數(shù)圖的APCE[10]值作為融合的加權系數(shù)參考,將兩個分數(shù)圖進行融合,得到最終的目標位置分數(shù)圖。網(wǎng)絡模型都是通過離線預訓練得到,跟蹤過程不需要根據(jù)當前跟蹤結果對模型進行更新,因此幀率能夠滿足實時跟蹤的要求。實驗表明,本方法在魯棒性上超過了原有算法,實時性略有下降,但是仍然可以滿足大多數(shù)場景下實時跟蹤的需求。
孿生神經(jīng)網(wǎng)絡[11](Siamese neural network,Sia?mese-net)的結構如圖1所示,它具有兩個或多個相同子結構的神經(jīng)網(wǎng)絡。各子網(wǎng)絡結構相同,共享參數(shù)及權重。孿生網(wǎng)絡的思路是讓兩路輸入分別經(jīng)過兩個子網(wǎng)絡,然后進行特征提取,得到兩個輸入的特征向量。然后通過構造距離度量函數(shù),比如余弦距離、歐式距離等,可以用來計算兩路輸入的匹配程度。在訓練時根據(jù)結果來學習一個相似度匹配函數(shù),用于之后的匹配。
圖1 典型孿生網(wǎng)絡結構
孿生神經(jīng)網(wǎng)絡從網(wǎng)絡結構上可以分為以下兩個部分。
1)特征提取網(wǎng)絡
孿生網(wǎng)絡的主要部分,用于對兩路輸入分別進行特征提取,得到可以有效描述輸入的特征信息。通常用卷積神經(jīng)網(wǎng)絡(Convolutional Neural Net?works,CNN)來實現(xiàn)。CNN通常包含卷積層、池化層、全連接層、非線性激活函數(shù)等部分,可以提取到輸入圖像的高維語義信息,相比于HOG特征[12]、LBP特征[13]、CN顏色特征[14]等,CNN特征在復雜背景變化、目標外觀變化等影響下具有更好的魯棒性。
2)決策網(wǎng)絡
在提取到兩路輸入的特征后,需根據(jù)匹配函數(shù)來確定它們的相似程度,在訓練時,結合網(wǎng)絡輸出和真實輸出不斷調(diào)整模型參數(shù),以習得一個性能良好的決策函數(shù)。在不同的任務中,決策網(wǎng)絡有不同的形式,有的直接用損失函數(shù)、度量函數(shù)來度量,有的是繼續(xù)使用神經(jīng)網(wǎng)絡來驗證結果的置信度,提高決策可靠性。
基于孿生網(wǎng)絡的目標跟蹤算法中,輸入為目標圖像z和候選圖像x,通過模板特征和相關性匹配,得到一個基于候選圖像x的相關性響應圖,然后通過最大響應來確定跟蹤目標的位置。即將目標跟蹤問題轉(zhuǎn)化成一個學習相似度函數(shù)的問題。
全連接孿生網(wǎng)絡的相似度函數(shù)定義如下:
其中φ為CNN特征提取函數(shù),*表示卷積操作,可以計算二者的相關性,b為偏差值,f(z,x)代表z和x的相似度分數(shù)。參考目標z和候選圖像x越相似,則函數(shù)返回分數(shù)值越高,反之則越低。在待檢測幀中,通過一定的策略選出若干個候選圖像,分別計算相似度得分后可以得到一張分數(shù)響應度,響應圖中分數(shù)最高的位置即為算法預測的該幀中跟蹤對象目標位置。
在跟蹤階段,在當前幀中以上一幀檢測到的目標中心為中心獲取一個較大的搜索區(qū)域x,可以通過對上一幀的bounding box進行padding操作得到。然后用特征提取函數(shù)φ分別提取該區(qū)域和第一幀中參考目標x的特征φ(z)和φ(x),然后通過卷積操作得到φ(z)和φ(x)的相似度分數(shù)向量f(z,x),從而得到相似度分數(shù)圖,其中分數(shù)最大的位置即對應該幀中目標的位置。
以Siamese-fc算法為例,在其模型的訓練和跟蹤過程中,網(wǎng)絡輸入分別是第一幀真實的標記框和當前幀的搜索區(qū)域。兩個輸入圖像大小分別是127×127和255×255,最終網(wǎng)絡輸出的分數(shù)圖大小為17×17。分數(shù)圖中每個位置代表著一個候選區(qū)域為目標區(qū)域的置信值。后續(xù)再采用合適的處理方法可以得到更精確的目標中心位置。
原始的基于孿生網(wǎng)絡的目標跟蹤算法一般都采取的是淺層網(wǎng)絡,比如LeNet[15],AlexNet網(wǎng)絡[16]。AlexNet網(wǎng)絡是一個包含5層卷積層和3層全連接層的只有8層的網(wǎng)絡。淺層網(wǎng)絡在信息表征能力上要較深層網(wǎng)絡遜色,所提取的特征難以應對較復雜的場景。其次,孿生網(wǎng)絡的參考目標只在第一幀時給出,如果第一幀給出的目標區(qū)域?qū)φ鎸嵞繕说拿枋霾痪哂蟹浅8叩钠毡樾裕敲磳^大影響后續(xù)跟蹤的準確度。當跟蹤場景較為復雜的時候,尤其是出現(xiàn)與跟蹤目標相似的物體的干擾時,基于孿生網(wǎng)絡的跟蹤很容易失敗。因為其無法較好地辨別類間區(qū)別。因此,本文針對Siamese network這一不足提出了一種基于Triplet network的網(wǎng)絡結構的改進方案TriTer,將原來Siamese-fc算法中子網(wǎng)絡由AlexNet改為更深層的VGGNet[17],且同時結合第一幀真實值和上一幀的輸出值,綜合比較得到當前幀的輸出值,從而提升在復雜場景下跟蹤的魯棒性。
Triplet network的結構如圖2所示,它與Sia?mese network非常類似,是一種特殊的孿生網(wǎng)絡。Triplet network由三個具有相同結構的子網(wǎng)絡組成,且它們共享參數(shù)和權重。跟孿生網(wǎng)絡一樣,從網(wǎng)絡結構上可以將Triplet network分為特征提取網(wǎng)絡和決策網(wǎng)絡兩個部分。
圖2 Triplet network網(wǎng)絡結構
本文提出的TriTer跟蹤算法的架構如圖3所示。算法將第一幀真實目標區(qū)域、待檢測幀、上一幀算法輸出的目標區(qū)域作為輸入,通過相同的三路特征提取網(wǎng)絡提取特征,然后計算第一幀目標和上一幀目標與當前幀搜索區(qū)域的相似度,最后將兩個相似度分數(shù)圖(score map)進行融合,通過融合分數(shù)圖中分數(shù)最高的位置來確定最終的目標區(qū)域。下面對網(wǎng)絡的具體細節(jié)進行說明。
圖3 TriTer目標跟蹤算法結構
對于輸入的第一幀目標區(qū)域z、上一幀目標區(qū)域z'和當前幀搜索區(qū)域x,使用三個相同的全卷積神經(jīng)網(wǎng)絡(Fully Convolutional Networks,F(xiàn)CN)對其進行特征提取,輸出的特征記為φ(z)、φ(z')和φ(x)。
FCN的好處是可以接受大小不同的輸入的優(yōu)點,這使得我們不需先用檢測窗口在當前幀中取出大小與第一幀目標框大小相同的窗口再進行輸入。且可以在一次特征提取后計算當前幀所有候選區(qū)域與參考目標區(qū)域的相似性,進而得到分數(shù)圖。在實際操作中,可以通過將一般CNN中的全連接層的權重重塑成卷積層的卷積核,將全連接層轉(zhuǎn)化為卷積層,進而實現(xiàn)全卷積網(wǎng)絡。
本文算法中特征提取網(wǎng)絡參考Simonyan等在文獻[17]中提出的VGG-16網(wǎng)絡結構以及文獻[18]中的網(wǎng)絡結構,并對其結構加以改進以適合TriTer算法的需求。特征提取網(wǎng)絡結構如表1所示。
表1 TriTer中特征提取網(wǎng)絡結構
本文特征提取網(wǎng)絡包含11個卷積層和3個池化層。所有卷積層均采用3*3的卷積核,所有池化層均采用2*2的卷積核。采用多層小卷積核,可以獲取更加豐富的語義信息。此外,在Conv2、Conv4和Conv7后都添加了一個2*2的pooling層,采用最大池化,步長為2,可以進一步降低特征的維度,同時保持特征的旋轉(zhuǎn)不變性。每一層的網(wǎng)絡的輸出都采用ReLU激活函數(shù)進行處理。每層網(wǎng)絡的輸入都不采取padding操作。
TriTer算法中網(wǎng)絡的損失函數(shù)使用logistic loss,形式為
其中,ν代表網(wǎng)絡輸出的相應候選區(qū)域的置信分數(shù)值,y?{+1,-1}表示其真實的標簽,兩個值分別對應是跟蹤目標和不是跟蹤目標。在模型訓練時,以處理第一幀目標對象與輸入圖像為例,通過特征提取網(wǎng)絡后,輸入圖像中的多個候選框會得到多個置信分數(shù),然后以分數(shù)圖ν:D→R的形式輸出,最終采用每個候選框的logistic loss的平均值作為總體損失函數(shù),形式如下:
其中y[u]、ν[u]分別表示輸入圖像中位置u處的真實標簽和網(wǎng)絡計算的置信值。
在訓練過程中,采用隨機梯度下降法進行網(wǎng)絡參數(shù)的優(yōu)化。
TriTer的三路輸入,即第一幀目標區(qū)域(117*117*3)、上一幀目標區(qū)域(117*117*3)以及當前幀搜索區(qū)域(225*225*3),在通過特征提取網(wǎng)絡后可以得到大小分別為6*6*128的特征φ(z)、6*6*128的特征φ(z')和22*22*128的特征φ(x)。
特征之間的匹配原理如圖4所示。以大小為6*6*128的特征φ(z)和大小為22*22*128的特征φ(x)之間的匹配為例,首先在φ(x)中取一個大小與φ(z)相等的立體滑動窗口,然后讓取的滑動窗口與φ(z)做三維卷積操作,然后得到一個匹配分數(shù)值,填入對應的分數(shù)圖中。滑動窗口的移動步長為1,這樣得到的分數(shù)圖大小就為17*17。
圖4 特征匹配并生成分數(shù)圖原理
基于圖4所示原理,求得φ(x)基于φ(z)的匹配分數(shù)圖m1和φ(x)基于φ(z')的匹配分數(shù)圖m2。兩個分數(shù)圖的大小均為17*17。
大小為17*17的分數(shù)圖由于分辨率相對于原圖過小,因此不利于對目標的精確定位。對于這個問題的解決辦法是:使用插值算法將分數(shù)圖放大。例如本文采用常用的雙三次插值算法,可以將17*17的分數(shù)圖放大到272*272,然后得到放大后的分數(shù)圖M1和M2。最后再對兩個放大后的分數(shù)圖進行融合,得到最終的分數(shù)圖M:
其中λ代表分數(shù)圖的權重。融合分數(shù)圖M的波峰位置即TriTer算法計算得到的目標位置。
本文中λ的取值參考文獻[10],通過計算分數(shù)圖的APCE值來確定兩個響應圖各自的置信圖,即在融合分數(shù)圖中的加權系數(shù)。
為驗證本文提出的跟蹤算法TriTer的有效性,在目標跟蹤數(shù)據(jù)集OTB100[2]上進行相關實驗,共測試94個視頻序列。同時進行與當前主流且效果較好的算法的對比實驗,得出更具有說服力的結論。實驗環(huán)境為Ubuntu16.04系統(tǒng),Intel Core i7 7800X處理器(頻率為3.5GHz),48GB內(nèi)存,NVID?IA GeForce GTX 1080Ti顯卡,使用TensorFlow1.4深度學習框架,算法語言為Python。實驗中判斷是否屬于成功跟蹤的重疊率閾值設為0.5。
OTB100數(shù)據(jù)集根據(jù)視覺目標跟蹤中的挑戰(zhàn)性因素對視頻序列進行了歸類,如表2所示。
表2 基于視覺的目標跟蹤中的挑戰(zhàn)性因素
本文采取以下兩種指標來衡量實驗效果:距離精度(Distance precision,DP)和重疊精度(Overlap precision,OP)。DP定義如下:在一個視頻序列中,輸出的跟蹤目標位置中心與真實目標中心(標注值)的平均歐式距離小于設定閾值的幀數(shù)占該視頻序列總幀數(shù)的比例。本實驗中,該閾值設為20個像素。OP定義如下:
即反映算法輸出的跟蹤對象位置與其真實位置的重疊度。式(5)中,Ag表示跟蹤對象在畫面中的真實位置,Ap表示算法輸出的跟蹤跟蹤對象位置,以矩形框面積參與計算,score值反映重疊度,值越大則跟蹤精度越高。
為驗證TriTer跟蹤算法的魯棒性,測試與分析了包含所有目標跟蹤中的挑戰(zhàn)性因素的數(shù)據(jù)集。在Girl2、Basketball、Walking2、Soccer視頻序列中,不僅目標外觀發(fā)生了畸變,視頻中還出現(xiàn)了與跟蹤目標非常相似的干擾對象。圖5、圖6、圖7分別列出 了TriTer、Siamese-fc分 別 在Girl2、Basketball、Walking2這三個視頻序列中的跟蹤效果對比。
圖5 TriTer與Siamese-fc在Girl2視頻序列中的跟蹤表現(xiàn)對比。
圖6 TriTer與Siamese-fc在Basketball視頻序列中的跟蹤表現(xiàn)對比
圖7 TriTer與Siamese-fc在Walking2視頻序列中的跟蹤表現(xiàn)對比
在Girl2視頻序列中,當被跟蹤的小女孩從右至左穿過右邊的大人時,圖像中產(chǎn)生了相似類型跟蹤對象的干擾,但是由于小女孩并沒有被遮擋,此時Siamese-fc與TriTer均能進行有效的跟蹤,在第100幀左右時,小女孩被路過的行人遮擋住了,此后,Siamese-fc對跟蹤對象產(chǎn)生了誤判,但是此時TriTer仍然能夠進行有效的跟蹤;在Basketball視頻序列中,在第471幀中,兩個外觀相似的籃球運動員位置產(chǎn)生了部分重疊然后又錯開,此時Sia?mese-fc算法則發(fā)生了誤判,將另一個運動員當做了跟蹤對象,對比之下,TriTer并沒有發(fā)生誤判,仍能對原跟蹤對象進行有效跟蹤;在Walking2視頻序列中,發(fā)生了與在Basketball視頻序列中類似的情況,當圖像中出現(xiàn)了與被跟蹤女子相似的男子時,TriTer仍能有效跟蹤目標,但是Siamese-fc算法則發(fā)生了誤判。此外,在沒有發(fā)生跟蹤對象丟失或者誤判的情況的幀中,也可以發(fā)現(xiàn)TriTer相對于Sia?mese-fc的跟蹤重疊精度明顯更高。
由于TriTer算法的輸入不僅包含視頻第一幀中跟蹤目標的信息,還包含了上一幀中網(wǎng)絡輸出的跟蹤目標信息。一方面,當前幀中目標相對于上一幀目標的畸變會小于當前幀目標相對于第一幀目標的畸變,另一方面,有了上一幀目標的位置,即使在背景中出現(xiàn)了多個與目標類似的干擾對象,算法也不容易發(fā)生誤判,因此,理論上TriTer具有比Sia?mese-fc更加魯棒的跟蹤性能,實驗驗證了這一點。
為了較為全面地評估TriTer算法的性能,在OTB100數(shù)據(jù)集上進行了OPE(one-pass evaluation)測試,在所有100個視頻均參與測試的情況下,得出算法的DP和OP值,并與Siamese-fc算法及其他主流的實時目標跟蹤算法,包括LCT[19]、Staple[20]、KCF[21]、Struck[22]算法進行了對比實驗。實驗選取了具有代表性的8個視頻序列,比較了各個算法的具體表現(xiàn),實驗結果如表3和表4所示。
表3 TriTer和其他一些主流實時跟蹤算法在OTB100數(shù)據(jù)集中的中心點誤差DP(單位:像素)
表4 TriTer和其他一些主流實時跟蹤算法在OTB100數(shù)據(jù)集中的重疊率OP(單位:%)
表3和表4中,CarScale、Couple、Tiger2代表著較為簡單環(huán)境下的目標跟蹤,雖然目標外觀發(fā)生了較大變化,但是背景中出現(xiàn)的如類似跟蹤對象物體的干擾較少,TriTer算法表現(xiàn)與Siamese-fc算法性能接近,在大多數(shù)視頻序列中有微弱領先,在大多數(shù)情況下比其他的非孿生網(wǎng)絡方法有性能優(yōu)勢。在Soccer、Bird1為代表的具有復雜背景的視頻序列中,跟蹤算法收到了來自于跟蹤對象外觀相似的物體、不斷變化的背景、跟蹤對象本身形變較大變化較快等干擾,此時TriTer算法表現(xiàn)出了較大的優(yōu)勢,在中心點誤差和重疊率方面相對于Siamese-fc和其他算法都表現(xiàn)出了較大的優(yōu)勢。
在跟蹤速度上,在本文實驗條件下,TriTer、Sia?mese-fc跟蹤的平均幀率如表5所示。
表5 算法運行速度對比
從表5可以看出,TriTer算法的跟蹤速度要比Siamese-fc略慢,但是仍然可以滿足大部分場景下目標跟蹤的需求,可以進行實時跟蹤。從網(wǎng)絡結構上分析,在特征提取階段,TriTer比Siamese-fc多了一半左右的計算量,所以在跟蹤速度要慢于Sia?mese-fc。
針對復雜環(huán)境下的視覺目標跟蹤問題,本文提出了一個高魯棒性的目標跟蹤算法TriTer。TriTer在Siamese-fc算法的基礎上,算法的輸入增加了上一幀算法輸出的跟蹤目標信息,采用三個并行的卷積神經(jīng)網(wǎng)絡進行特征提取,相當于兩路并行的Sia?mese-fc,然后對輸出的兩個分數(shù)圖進行融合,從而確定當前幀中跟蹤對象的位置。在OTB100數(shù)據(jù)集上進行的有關實驗表明,TriTer算法在光照變化、跟蹤對象外觀變化、遮擋等復雜背景下依然能執(zhí)行非常魯棒的跟蹤,對比之下,沒有上一幀作為輸入的Siamese-fc算法在復雜背景下的跟蹤過程中則非常容易發(fā)生誤判跟蹤對象的問題,且TriTer在跟蹤過程中,計算出的目標位置的中心點誤差在總體上也要好于Siamese-fc。由于TriTer增加了一路輸入,因此跟蹤的速度要慢于Siamese-fc,但是實驗表明,在一般的跟蹤場景下,TriTer仍然可以滿足實時跟蹤的需求。