楊勇,張軼
(1.四川大學計算機學院,成都610065;2.四川大學視覺合成圖形圖像技術國家重點實驗室,成都610065)
行人目標跟蹤在無人駕駛、智能監控、智能交通等方面都有重要意義的研究課題,在智能監控,可以通過對行人軌跡實時分析,得到行人相關事件;在智能交通中,可以通過行人軌跡對行人運行方向進行預判,有效地預防交通事故;在人流統計方面,可以通過對行人軌跡分析,實施人流監控等。總之,對任何行人相關分析都離不開對行人軌跡的分析,即要在保證跟蹤效果的前提下,提高系統跟蹤速度。本文在解決行人跟蹤速度的同時提高了系統行人跟蹤效果。
在傳統算法中,行人檢測效果主要取決于特征描述子,如何提取更優的行人特征描述子成為眾多學者研究的重點。其中最為突出的當是Dalal 等提出行人HOG 特征描述子是目前廣泛使用的行人檢測特征描述子,其對光照變化和小量的偏移并不敏感,能有效地刻畫出人體的邊緣特征[1]。然后訓練SVM 分類器或者使用AdaBoost 算法構建級聯分類器進行行人檢測[2]。在此后也提出了很多基于行人檢測的特征描述子,例如Edgelet、邊緣模板、LBP 等,都取得了比較好的效果。但是在2012 年ImageNet 圖像識別比賽,CNN 網絡AlexNet 一舉奪得冠軍[3],開啟了深度學習目標檢測的歷史新篇章,不斷刷新目標識別的檢測率,甚至超過人類肉眼的識別水平。相比于傳統方法,基于深度學習的目標檢測算法能夠學習到更好的目標特征,對目標具有更豐富的表達能力,隨著深度學習在行人檢測方面的應用,也極大地提高了行人檢測效果。
TLD 算法為長時間跟蹤算法的經典代表,該算法在當保證效果的前提下基本上能夠達到實時,并且是為數不多的長時間跟蹤算法,提出了Tracking-By-Detect 方案,在線更新模板,使得算法能夠自適應的跟蹤目標[4]。陳東岳等人在Mean-shift 算法框架下提出一種基于多特征在線模板更新策略的魯棒目標跟蹤算法,其具有較強的魯棒性和較高的準確性[5]。相關濾波器相關算法仍是目前傳統跟蹤算法研究熱點,其中最具有代表性的為KCF 算法。KCF 使用目標周圍區域的循環矩陣采集正負樣本,利用脊回歸訓練目標檢測器,并成功的利用循環矩陣在傅里葉空間可對角化的性質將矩陣的運算轉化為向量元素的點乘,大大降低了運算量,使算法滿足實時性要求[6]。目前傳統跟蹤算法中效果較好且跟蹤速度能夠達到實時的算法為ECO+,其跟蹤效果能達到使用深度學習網絡跟蹤的效果[7]。
隨著深度學習的在目標檢測的運用,相繼探索深度學習在目標跟蹤中的運用,DLT 作為第一個將深度網絡運用于單目標跟蹤的跟蹤算法,提出了離線預訓練+在線微調的思路,很大程度的解決了跟蹤中訓練樣本不足的問題[8]。FCNT 分析了CNN 不同層的特征特點,得到深度網絡高層特征擅長區分不同類別的物體,對目標的形變和遮擋具有較好的魯棒性,但是對類內物體的區分能力非常差[9]。低層特征更關注目標的局部細節,可以用來區分背景中相似的干擾項,但是對目標的劇烈形變不具備較好的魯棒性。2016 年Luca Bertinetto 等學者提出SiamFC 網絡,一個新穎的全卷積孿生網絡,并使用ILSVRC15 數據集進行端到端訓練。該算法達到了實時性要求,盡管它非常簡單,但在多個benchmark 上達到最優的性能,將深度學習在目標跟蹤領域推向一個新的里程碑。此后諸多學者在此網絡進行改進,例如Siamese-RPN 將SiamFC 和RPN網絡相結合[10],SiamRPN++使用了深層網絡,且使用了多層網絡特征進行融合[11],均達到不錯的跟蹤效果。但是其并沒有實時更新匹配模板,由于行人不具備剛性條件,或者由于光照等原因,容易導致系統跟蹤失敗,從而導致算法不容易使用于實際項目中。
目前工程中使用行人單目標跟蹤方案基本上可以分為兩種:方案一是使用行人識別算法對視頻幀進行逐幀檢測,然后將行人目標框連接,成為目標軌跡,此方案能夠實現目標的長時間跟蹤;方案二是使用跟蹤算法,在第一幀手動框出行人目標,或者是使用識別算法檢測出行人目標,利用跟蹤算法對行人進行跟蹤,此方案能夠實現短時間跟蹤目標。
在方案一中檢測網絡的效果和檢測時間成反比,檢測算法越復雜,系統能夠更好地提取圖像特征,則系統檢測效果更好,但由于網絡比較深,系統參數較多,導致系統檢測時間增加,無法進行實時行人目標跟蹤。反之,網絡的表達能力越弱,則其相應的檢測精度就隨之下降,則算法容易導致系統行人跟丟。都不容易將算法運用于實際場景。所以要使此方案運用于實際場景,只能增加提高系統的運算能力,增加系統配置。此方案的優點在于能夠提取行人目標的深度語義特征,識別能力比較強。但此方案缺點在于逐幀檢測,并未利用視頻上下文信息,所以不能提高系統檢測幀率,且在實時視頻目標檢測時,使用Faster R-CNN 在使用NVIDIA 1080Ti 顯卡平臺下,該算法的速度只能達到13fps。且視頻圖片存在運動模糊等情況,會導致現局部跟蹤失敗的情況,降低系統的跟蹤效率。如圖1所示,前兩幀圖像系統能夠正確檢測,但是視頻中行人存在運動模糊,導致后兩幀系統無法檢測行人,導致局部跟蹤失敗。

圖1 檢測跟蹤算法檢測成功和失敗圖
方案二選擇跟蹤算法實現行人目標,此方案的優點在于跟蹤算法結構簡單,能夠達到實時,但是其缺點為在跟蹤過程中,行人目標容易發生形變、被遮擋、或者光照變化等原因,容易導致目標跟丟的情況,并且跟蹤失效后無法重新找回目標,從而導致算法失效。如圖2 所示,跟蹤算法在剛開始能夠準的跟蹤目標,但是由于行人走至樹下,表現為系統光照變化,導致行人目標跟蹤失敗。且后續模板無法更新,導致系統無法找回目標,跟蹤失敗。

圖2 跟蹤算法跟蹤失敗序列
針對現有行人目標跟蹤方案一和方案二的優缺點,利用檢測算法在關鍵幀初始化跟蹤網絡,降低跟蹤網絡誤差,避免由于視頻模糊、光照等使跟蹤網絡模板失效,導致跟蹤失敗,利用跟蹤網絡提取行人目標淺層輪廓特征進行跟蹤,提高系統跟蹤效率。
行人檢測算法使用Faster R-CNN 網絡為twostage 目標檢測網絡,該網絡在R-CNN、Fast R-CNN 網絡上逐步改進而提出,在R-CNN 和Fast R-CNN 網絡中,網絡的大部分時間花銷在提取預選框上[12],Faster R-CNN 提出使用網絡直接提取預選框的方法。通過引入區域生成網絡(RPN)算法提取預選框,減少系統提取預選框的時間,RPN 從一組預先確定的錨點通過網絡的分類和回歸生成預選框。然后將預選框通過ROI Pooling 得到固定的特征圖,通過分類網絡將候選框進行分類和回歸,得到最終的目標和回歸更加精準的目標框。這不僅使檢測器更加準確,并且預選框通過RPN 與檢測網絡的聯合訓練,可實現端到端訓練。即圖像一次性即可檢測出目標。Faster R-CNN 的網絡結構如下,由特征提取網絡VGG16[13]、RPN 網絡、ROI Pooling 網絡[14]和全連接層分類網絡構成。

圖3 Faster R-CNN網絡結構圖
特征提取:本文引用VGG16 作為特征提取網絡,輸入圖像縮放到(600×800)通過13 個conv 層,13 個relu 層,和4 個pooling 層,得到系統的高維特征圖為輸入圖像寬和高的1/16,即(38×50)。
RPN 網絡:由VGG16 得到的特征層,映射到原圖得到候選區域,本文特征尺寸為(38×50),原論文中在選區錨點時使用參數為ratios=[0.5,1,2],scales=[8,16,32]。每個點通過映射得到9 個錨點。在本論文中,由于檢測特定行人目標,出于行人形狀考慮,本文將ratios 設置為[0.5,0.8,1],使之更加符合行人形狀。得到38×50×9=17100 個錨點,通過RPN 網絡分類和回歸得到前景目標框。其分類損失函數為:

式(1)中Lreg表示的是L1損失函數,其預測的是相對于錨點的偏量:

其中xpredict, ypredict, wpredict, hpredict為網絡預測目標框;xanchor,yanchor,wanchor,hanchor為錨點目標框;xtrue,ytrue,wtrue,htrue為真實行人目標框;
式(1)中Lcls為Softmax 損失函數:

其中y 為樣本標簽,zi為RPN 網絡預測類別值;
ROI Pooling 網絡:將RPN 得到的候選框在特征層上劃分為7×7 的區域,每個區域提取最大值,得到7×7的特征。
全連接層分類:將候選框得到的前景框的前300個目標框進行分類和回歸,得到最終的目標框。
本文由于將Faster R-CNN 用于視頻目標檢測,由于行人目標跟蹤視頻圖像存在模糊情況,檢測網絡的效果直接決定跟蹤的效果,本文在訓練行人目標檢測網絡時,為提高行人檢測效果,在訓練行人檢測目標模型時,使用在城市環境中正常行駛的車輛拍攝的Caltech 數據集,同時也加入了目標跟蹤OTB 數據集和視頻目標檢測數據集VID2015 中的模糊行人數據集,提高了模型的檢測能力。
SiamFC 網絡為2016 年基于孿生網絡上改進的用于目標跟蹤領域的網絡[16],該跟蹤器在速度達到實時性要求,雖然網絡比較簡單,但是在多個benchmark 上達到最優的性能。SiamFC 網絡就是初始離線階段把深度卷積網絡看成一個更通用的相似性學習問題,然后在跟蹤時對目標進行在線的簡單估計。由于網絡非常簡單,僅僅是學習目標之間的相似性,所以該算法能夠達到實時,該網絡結構如圖4[17]。

圖4 SiamFC網絡結構
該算法提出學習一個函數f( x,z )來比較樣本圖像z 和搜索圖像x 的相似性,分別通過相同網絡提取模板圖像和搜索圖像的特征圖,用公式φ 表示,如果兩個圖像特征相似性非常高的圖像,則返回較高分,否則返回低分。公式如下:

其中:函數φ 是一個特征提取函數;
函數*為特征的相關性,即為兩個圖像卷積;
其損失函數為:

其中:l 為邏輯回歸損失函數;
D 為網絡得到的得分Map,u 為得Map 中的點;
將匹配圖片縮放到不同尺度,得到不同尺度下的特征匹配圖片Di;

本文為提高系統跟蹤速度和質量,提出將目標檢測網絡和目標跟蹤網絡自適應融合,利用Faster R-CNN 檢測網絡在視頻關鍵幀時提取系統深度語義特征,對行人進行檢測跟蹤。在非關鍵幀時利用視頻前后幀行人目標具有高度相似性,使用SiamFC 提取目標淺層輪廓特征,在當前幀中找到與模板具有高度相似的目標,對行人進行跟蹤。由于在對行人進行跟蹤時,行人目標形狀或者光照等變化,導致跟蹤網絡SiamFC 模板失效,所以在關鍵幀使用Faster R-CNN 檢測結果對跟蹤網絡SiamFC 模板進行更新,提高跟蹤網絡質量。由于跟蹤系統輸出結果應具有連續性,當在系統判定為跟蹤失敗時,啟動檢測和跟蹤算法對系統輸出結果進行約束,并根據結果及時更新跟蹤系統模板。
系統正常跟蹤時在關鍵幀使用Faster R-CNN 檢測跟蹤,在跟蹤失敗時才同時啟動檢測和跟蹤網絡對跟蹤系統進行約束跟蹤,Faster R-CNN 由VGG16、PRN以及分類網絡構成,SiamFC 網絡由5 層簡單網絡構成,降低了系統的計算量,因此融合方案可將跟蹤速度提高至方案一(逐幀使用Faster R-CNN 檢測跟蹤)的3倍左右。在關鍵幀或者系統判定為跟蹤失敗時都會利用Faster R-CNN 檢測的行人目標時時更新跟蹤網絡模板,因此相比于方案二(跟蹤網絡未更新模板)提高了系統跟蹤質量。
算法首先由檢測網絡檢測出行人目標框,并初始化跟蹤網絡模板,然后使用跟蹤網絡對目標進行跟蹤。以下為視頻幀拆開序列算法邏輯圖如圖5。

圖5 行人檢測和跟蹤算法邏輯圖

跟蹤算法的結果應該具有結構性即每一幀圖像內行人最多只出現在一個位置,相鄰幀間行人目標運動是連續的,連續幀的位置行人的軌跡可以構成一條較平滑的軌跡。且相鄰幀間行人目標框大小變化也具備連續性,不應產生突變,即當前幀中心點到上一幀中心點l2-norm距離以及當前幀和上一幀的IOU(面積重疊度)應該保持在一定范圍,超過此范圍則視為當前跟蹤偏離了行人軌跡,需要使用檢測和跟蹤算法融合,本文通過目標中心點l2-norm距離以及目標框重疊度對系統檢測或者跟蹤結果進行約束,保證系統目標的連續性[18]。如果不滿足要求則啟動檢測網絡,并將檢測和跟蹤結果自適應融合。其融合算法:
行人目標框中心點自適應融合算法和公式:

其中:Dis 為前幀行人目標框中心點和當前跟蹤行人目標框中心點l2-norm距離;Plast為前幀行人目矩形框中心點;Pdetect為檢測行人框中心點;Ptrack為跟蹤行人框中心點;DisRatiodetect為檢測行人框中心點權重;文中Dis=30 為實驗值。
行人目標框寬和高自適應融合算法和公式:

其中:IOU 為前后兩幀人框重疊度;Wr為融合后行人框寬度,Wd為跟蹤行人框寬度,Wt為檢測行人框寬度;Hr為融合后行人框高度,Hd為跟蹤行人框高度,Ht為檢測行人框高度;IOURatiodetect檢測行人框寬、高權重;注:文中參數IOU=0.3 為實驗值;
檢測和跟蹤算法融合流程圖如圖6 所示。

圖6 檢測和跟蹤算法融合流程圖
如圖7 所示僅使用檢測算法時,由于視頻序列存在模糊情況,使算法無法檢測到行人目標,導致目標跟蹤局部視頻序列跟蹤失敗,視頻序列中第35 幀檢測出行人,但是第36 幀,第37 幀并未檢測出行人,出現局部跟蹤失敗情況。如圖8 所示使用檢測與跟蹤算法融合時,當檢測失敗,啟動跟蹤算法,跟蹤算法利用幀間行人目標相似度,對目標進行跟蹤,由于跟蹤算法只是提取系統淺層輪廓特征,所以使得行人目標能夠很好地進行跟蹤,并且在系統判定為跟蹤失敗時,使用檢測和跟蹤算法融合,表現出良好的跟蹤質量。圖9 為視頻跟蹤結果和標定結果的中心點和重疊度曲線圖,藍色為只使用檢測算法系統跟蹤質量曲線,紅色為使用檢測與跟蹤算法融合系統跟蹤質量曲線,圖9a 中為系統跟蹤結果的行人目標框中心點與標定行人真實框中點l2-norm距離,其中大于100 以上的均為系統漏檢導致,紅色為檢測跟蹤融合算法行人目標框中心點與標定行人真實框中心點l2-norm距離。由實驗所得,只使用檢測算法進行跟蹤時,系統平均l2-norm平均為26,而使用檢測和跟蹤算法融合時,系統平均l2-norm距離降低為11。圖9b 為系統跟蹤結果行人目標框和標定行人真實目標框重疊度曲線,其中藍色重疊度小于0.4 的為使用檢測算法時漏檢導致跟蹤失效,其平均重疊度為0.86,而紅色曲線為檢測跟蹤融合算法重疊度,其平均重疊度為0.92,根據實驗證明檢測和跟蹤算法融合跟蹤質量更高,系統跟蹤更加穩定。

圖7 檢測算法結果

圖8 跟蹤和檢測融合算法結果

圖9 檢測和跟蹤融合算法和檢測算法l2-norm距離和重疊度結果
如圖10 所示,在僅僅使用跟蹤算法時,系統由于只使用初始幀作為模板,而由于行人不具備剛性性質,在跟蹤過程中容易發生形變,所以出現跟蹤丟得情況,如圖所示行人目標在第134 幀以后跟丟,并且在后續過程中并未找回目標,跟蹤失敗。圖11 所示為使用檢測跟蹤算法融合,系統根據跟蹤算法結果自適應更新跟蹤模板,在系統跟蹤失敗以后,使用檢測網絡檢測重新初始化跟蹤網絡模板。圖12 為僅使用跟蹤網絡和使用檢測和跟蹤網絡融合系統跟蹤l2-norm距離和重疊度結果比較圖,其中藍色為僅使用跟蹤網絡結果曲線,紅色為檢測和跟蹤網絡融合結果曲線。其中圖12a 為算法結果行人目標框和真實行人目標框l2-norm距離,藍色曲線為跟蹤算法結果,藍色曲線突然上升是因為僅僅使用跟蹤網絡,系統無法更新匹配模板,由于遮擋導致跟蹤失敗,其平均l2-norm距離為36,而紅色曲線為檢測和跟蹤算法融合結果曲線,其平均l2-norm距離為3,圖12b 為算法結果行人目標框和真實行人目標框重疊度曲線圖,其中藍色重疊度突然下降,為系統由于遮擋導致跟蹤失敗,其平均重疊度為0.35,而紅色為檢測和跟蹤算法重疊度,其平均重疊度為0.65,根據實驗證明檢測跟蹤算法融合跟蹤質量更高,其跟蹤效果更加穩定。

圖10 跟蹤算法結果

圖11 檢測和跟蹤算法融合結果

圖12 檢測和跟蹤算法融合和跟蹤算法l2-norm距離和重疊度
表1 為使用相關算法對行人目標進行跟蹤得到的重疊度、中心點歐氏距離以及跟蹤幀率比較(16 個視頻平均數)。

表1 算法跟蹤指標
在表1 中,其中Faster R-CNN 算法為對視頻逐幀進行檢測跟蹤,并將檢測結果應用于跟蹤,該方法優點為除了由于視頻模糊等原因導致系統漏檢,其余大部分幀能夠獲得很好的結果,由表中數據可知其l2-norm比較小且重疊度比較高,但是該方案由于使用深度網絡提取圖片語義特征,算法較為復雜導致系統幀率比較低。其中SSD 和Faster R-CNN 算法思想相同,其幀率比較高但漏檢率很高,導致系統跟蹤效果不理想。DCFNet 跟蹤算法雖然能夠時時跟蹤模板,但是其模板都是與前幀跟蹤結果相關,因為行人不具備剛性,所以容易導致系統跟蹤失敗。SiamFC 為簡單的跟蹤算法,其優點是跟蹤速度快,但是系統并不能時時更新模板,更新導致系統不能長時間的進行跟蹤。在跟蹤一段時間以后容易跟丟,導致系統的l2-norm距離比較高,重疊度比較低。DFF(視頻目標跟蹤)在關鍵幀使用檢測算法,在非關鍵幀使用光流進行輔助跟蹤,由于需要計算光流圖,導致系統的跟蹤速度比較慢。實驗證明檢測和跟蹤算法融合提高系統的跟蹤質量且提高了系統跟蹤速度,達到實時跟蹤效果,其幀率平均為37fps。
如圖13 所示藍色曲線為真實的行人軌跡,紅色曲線為融合算法跟蹤軌跡,實驗表明檢測和跟蹤融合算法能夠準確的對行人目標進行跟蹤。

圖13 算法跟蹤軌跡圖示意圖
本文充分利用視頻序列幀間信息關系,使用檢測網絡提取視頻幀語義特征,在關鍵幀更新系統跟蹤網絡模板,由于目標不會突變,在相鄰目標保持一致性,使用SiamFC 網絡對行人目標進行跟蹤,提高系統算法速度。本文在NVIDIA 1080TI 顯卡配置下,視頻能夠達到37fps。同時綜合跟蹤和檢測網絡的優點,對兩個網絡進行融合,提高了系統跟蹤質量,但是使用的為1080TI 顯卡,后續可以通過改進檢測網絡,降低檢測網絡的復雜度,縮短檢測時間,從而讓系統在更低硬件配置下能夠達到實時行人目標跟蹤。同時本文并未實現端到端訓練,后續可考慮將兩個網絡融合為一個網絡,實現端到端訓練。