王 帥,蒼 巖
(哈爾濱工程大學,黑龍江 哈爾濱 150000)
視頻監控技術是現代社會中一種有效的安防手段,目前的視頻監控系統主要以人工監控為主,需要很大的時間和人力成本,而且其中的一些人為因素可能導致丟失重要目標。如何智能且高效率地處理監控視頻成為一個熱門的研究問題。一個完整的智能視頻監控系統中最關鍵、設計最困難的部分是目標檢測和目標跟蹤兩個部分。
大多數目標跟蹤算法以檢測為基礎,根據檢測的結果進行數據關聯,數據關聯算法分兩大類,傳統算法和深度學習算法,常見的傳統方法有光流法、均值漂移法和粒子濾波法。近年來,深度學習技術迅速發展,多數算法偏向于使用深度學習。比如經典的POI[1]和DeepSORT[2],在2019年之前出現的算法都是檢測和關聯兩個部分相互分離的,多數算法使用數據集提供的公版檢測結果,只研究數據關聯部分。2019年JDE[3]算法提出,率先將檢測和數據關聯合二為一,之后便出現了一些類似的算法。2020年騰訊提出了一種鏈式跟蹤算法CTracker[4],其設計的網絡每次輸出一對節點,形成一條鏈。該算法強調的是簡潔性,處理遮擋問題時使用常速運動模型,而且沒有使用外觀特征進行關聯,因此沒有復雜的計算,跟蹤速度較快。
本文設計了一種特征提取算法,并以FoveaBox[5]檢測算法為基礎,使用mmdetection框架搭建了一個目標檢測和數據關聯結合的多目標跟蹤網絡,使用端到端的訓練方式。在數據關聯部分,除關聯分支提取出的外觀特征外,本文還使用卡爾曼濾波算法[9]融合了目標的位置及運動特征來匹配軌跡與目標。對二者均未匹配上的部分,使用IoU重疊度匹配,以最大限度地保證跟蹤性能。
本文的實驗選取了MOT16[7]數據集進行訓練與測試,使用FPN[6]作為主干網絡得到特征金字塔,后為金字塔中各特征圖限定了負責的尺度范圍,再根據目標的尺度,為其匹配相應的特征圖,以提高檢測精度。為應對擁擠場景下小目標的漏檢問題,在訓練階段,首先使用專注于密集行人場景的數據集CrowdHuman[8]進行預訓練,再在其他數據集上對網絡進行調整。本文還對比了關聯分支的三元組損失和交叉熵損失,以及軌跡匹配中的外觀特征匹配、卡爾曼濾波和IoU匹配3種策略。
本文的網絡結構可以分為檢測和關聯(ReID)兩大部分,兩個部分聯合學習,使用端到端的方式來訓練。在目標檢測子任務中,多數算法使用基于anchor的方式,但其有一些缺陷,anchor要根據實際情況來設計,比如檢測常規物體,anchor的寬高比一般要設置三種比例,而到檢測行人的具體問題就僅需要一種比例,這就缺少了泛化能力;根據anchor和真值的IoU確定anchor的正負也會給網絡增加一些超參數。本文的檢測部分使用的是FoveaBox,這是一種受人體視覺系統啟發的anchorfree檢測方式,不需要放置anchor,本文還使用FPN進行多尺度預測,同一目標可以在多個特征圖上預測。
網絡結構也可以分為4個部分:主干網絡、分類分支、邊界框回歸分支和關聯(ReID)分支。整體網絡結構如圖1所示。其中灰色的部分是關聯分支,其具體結構如2.4節圖2所示。
網絡的輸入為單張圖片,以及其中行人目標對應的邊界框、邊界框的中心點,圖片首先要經過的是主干網絡,主干網絡的選擇對于后續的分類匹配等有極其重要的影響,一個好的網絡能夠提取到目標的各種特征,本文采用FPN作為主干網絡,不同于一般的卷積網絡在最后一層提取特征,該網絡使用具有橫向連接的自上而下的結構來構建特征金字塔,融合了高層豐富的語義特征和低層豐富的位置特征,從而使得后續的目標檢測結果更加精確。
利用FPN進行目標檢測時,先生成特征金字塔,其中的每一層用來檢測特定尺度的目標。將不同的層使用橫向連接結合,提取到了不同層次的特征后,將各層特征圖送入3個分支:目標分類分支、邊界框回歸分支和關聯(ReID)分支。目標分類分支預測每對邊界框的得分,該分支僅區別前景(行人)和背景,輸出的分數表示前景置信度。邊界框回歸分支用于得到每個目標的邊界框。關聯分支用來提取目標的外觀特征,以在跟蹤時進行匹配。
假設一張圖片中的一個目標邊界框的真值為(x1,y1,x2,y2),則其對應在特征金字塔的第Pl層,對應的坐標為:

sl表示Pl層的下采樣因子,訓練過程上述坐標包圍的區域被標注為正值,其他區域都標注為負值,分類分支輸出的特征圖中,表示有目標的區域Rpos為:


特征圖的大小為H×W×C,C為通道數,表示目標的種類,本文只需要檢測行人這一種目標,所以輸出的特征圖為一維,圖上每個點的值表示該處存在目標的可能性。
若需要對多種類別的對象進行區分,其損失函數最好選用Focal Loss,但本文中只對行人目標感興趣,因此分類分支使用交叉熵損失。

圖1 整體網絡結構
本文檢測部分參照FoveaBox,使用anchor-free的方式,不需要放置anchor,直接根據語義特征圖計算某個點存在對象的可能性,再對可能存在目標的點進行邊界框回歸,提高了檢測精度,從而在跟蹤過程中能更精確地提取目標特征。
為了解決目標尺度的變化問題和適應各種不同尺度的目標,邊界框回歸分支根據特征金字塔中不同的層次來預測不同尺度的目標,每個層有一個基準尺度rl該層負責的尺度范圍為(rl/η,rl×η),實驗中η設置為2,FPN金字塔的P3~P7層的基準尺度分別為(16,32,64,128,256)。若一個目標的邊界框映射到某一個金字塔層中時,其尺度沒有在該層的尺度范圍中,那么就會被這一層所忽略。也有可能一個目標被映射到了多個層,這樣就可以更好地對該目標進行預測,因為相鄰的特征層具有相似的語義特征,這個目標也可以在不同的特征圖中被預測。傳統的FPN網絡只會根據目標的尺度,將其映射到一個特征層。
Rpos區域的每一個點{x,y}都對應一組邊界框的偏移量,偏移量的計算方法如下:


對于其中一個特征金字塔層,邊界框回歸分支輸出的特征圖大小為w×h×4,其中w和h為特征圖寬度高度,通道數4對應其4個坐標偏移量,偏移量的真值計算方法是:Rpos區域對應的每一個點的4個值按照式(4)~式(7)來計算,其他位置的值為0。邊界框回歸損失函數選擇

分類分支和邊界框回歸分支負責行人檢測,并稱為檢測分支。為了減少密度高場景中的漏檢現象,本文使用專注于密集行人檢測的數據集CrowdHuman對檢測分支進行了預訓練。
數據關聯的主要任務是識別不同幀中的同一個目標,需要提取每個目標特征,且提取的特征要具有表現力。特征提取方法可以是anchor中心提取、RoI Pooling、目標中心提取,使用在目標的中心提取的方式。
若一幀中包含M個目標,FPN輸出的5個特征圖均為256維,取特征圖的第一層,送入關聯分支,為了提取更多的目標的特征,關聯分支中共有4個卷積層,每經過一層卷積提取一次,4個分支中輸出的特征維度分別為80、60、40、20,將這些特征拼接,則每個目標可以提取的特征維度為200。該分支輸出的維度為M×200。將這些特征送入一個線性分類器,每個特征的輸出維度為當前所使用的訓練數據集中所有目標的ID總數。將線性分類后的特征與目標ID的真值計算損失。其原理圖如圖2所示。

圖2 關聯分支結構


式中,[x]+表示最大值函數max(0,x)。
交叉熵損失是分類問題中常用的一類損失函數,假設一個目標x的真實概率分布和預測概率分布分別為p(x),q(x),則交叉熵損失可以表示為:




α是先前特征所占的權重,本實驗設置為0.9。
算法的整體流程如圖3所示。

圖3 整體算法流程
本文使用MOT16數據集進行訓練和測試,該數據集采集自不同的場景,比如廣場、街道、商場等,場景中存在光照、背景變化等多種不確定的因素,為了增強魯棒性,在送入網絡之前,圖片首先經過了一系列的預處理,包括光度失真、歸一化、水平翻轉和隨機通道轉換。
MOT16數據集沒有單獨提供驗證集,本文將訓練集劃分為兩部分,每個場景的一半為訓練集,一半為驗證集。
在訓練關聯分支時,本文選用了三元組損失和交叉熵損失分別訓練了網絡,網絡整體的損失函數用3個分支的損失函數加權和表示如下:

式中,i={cls,bbox,reid}。
二者對比實驗結果如表1所示,每項指標后標注↑的表示值越高,性能越好,標注↓的表示值越低,性能越好。
根據對比結果,可以看出雖然二者各占3項優勢,但MOTP和IDF1兩指標基本持平。而對于MOTA和IDSW兩指標,使用交叉熵損失訓練出的模型要優于三元組損失。因此,在測試集上運行時,選用交叉熵損失訓練的模型進行測試。
本節做了3組實驗,對比了不同的關聯方法之間的性能。第1組實驗中僅使用外觀特征匹配,第2組實驗使用外觀特征配合卡爾曼濾波,第3組實驗則同時使用外觀特征、卡爾曼濾波以及IoU匹配。
第2組實驗中,外觀特征與卡爾曼濾波結合的方法是:首先使用提取到的一幀中所有目標的外觀特征,計算其與當前所有軌跡特征的余弦距離,組成親和力矩陣Mdist再根據卡爾曼濾波計算所有軌跡狀態之間的馬氏距離,得到另一矩陣Mmaha,計算兩矩陣之間的加權和:

實驗中的λ根據經驗取0.98。對于未匹配上的軌跡Tu與邊界框Du,第3組實驗中,再使用IoU匹配,計算Tu的最后一個邊界框與Du的重疊度。得到一個矩陣Moverlap,根據該矩陣匹配上一步中匹配失敗的軌跡與邊界框。3組實驗的結果如表2所示。

表1 交叉熵損失和三元組損失對比

表2 不同匹配方式實驗結果
根據3組實驗的結果可以得出,使用多特征融合的方式進行跟蹤性能要優于使用單一特征的性能,因此最后在測試集上運行時本文同時使用了3種特征。
本節中的實驗使用 MOT16 的測試集評估跟蹤結果的性能,其測試結果如表3所示。在測試時,一般將未匹配到的軌跡保留20幀,若還未匹配上,則認為該條軌跡已經消失。如果這個值設置得太大,可能會將新生的目標誤識別成已消失目標,還會造成內存壓力。MOT16-12場景中出現一個特殊情況,440幀左右時發生嚴重遮擋,一個從攝像機后方出現的行人幾乎完全擋住了攝像機的視線,持續了20幀后才減輕,如圖4所示,若保留的最大幀數為20,就會發生嚴重錯誤,因此這段視頻中軌跡最大保留30幀。
本文算法與其他算法的對比結果如表4所示。

表3 MOT16測試集運行結果

表4 不同算法比較結果

圖4 MOT16-12測試結果
通過對比實驗發現,本文提出的算法在 MOTA與MT兩項指標上超過了其他算法。MOTA是多目標跟蹤評價指標中最重要的一個,衡量的是算法的準確度,MT指標表示的是最大丟失,即一個目標在整個軌跡中超過80%沒有被覆蓋。本文的MT指標是最低的,說明算法穩定性較好,不易丟失目標。
本文使用深度學習方法,以FoveaBox檢測器為基礎,使用目前流行的深度學習框架mmdetection設計了一種特征提取方法,用于提取出具有較強表現力的特征,進而構建了一個目標檢測與數據關聯相結合的多目標跟蹤網絡,實現了一步跟蹤。在跟蹤過程中,除提取出的特征外,本文還結合了卡爾曼濾波器以及IoU匹配方式對軌跡與目標進行匹配,以最大限度地保證跟蹤性能。本文使用的是公共數據集,后續可以根據實際場景自行構建數據集,以對算法進行應用。對數據集中出現的干擾,如行人倒影、海報人物等可以專門采集相應的數據集進行訓練,增強魯棒性。還可以使用模型蒸餾對模型進行壓縮,從而提高運行速度。