A Simple Baseline for Multi-Object Tracking(FairMOT)——原理及代碼測試

A Simple Baseline for Multi-Object Tracking(FairMOT)

Paper:https://arxiv.org/abs/2004.01888
Github:https://github.com/ifzhang/FairMOT

        這個模型最近在mot上很火,在MOT的多個數據集上取得了很好的成績,這篇文章想總結自己在閱讀和測試代碼的時候一下看法。

        近年來,作爲多目標跟蹤的核心組件的目標檢測和重新識別取得了顯着進展。 但是,很少有人關注在單個網絡中完成兩項任務以提高推理速度。沿此路徑進行的初始嘗試最終導致結果降級,這主要是因爲未正確學習重新標識分支。 在這項工作中,這篇文章的作者研究了故障背後的根本原因,並因此提出瞭解決問題的簡單基準。 它以30 fps播放速度明顯優於公共數據集上的最新技術。

一、文中在簡介中提到的問題

1、現狀
        最先進的方法通常通過兩個獨立的模型解決該問題:檢測模型首先通過對圖像中的框進行邊界界定來定位感興趣的對象,然後,關聯模型爲每個邊界框提取重新標識(Re-ID)特徵,並根據在特徵上定義的某些度量將其鏈接到現有軌道之一。近年來,分別在對象檢測和Re-ID 上取得了顯着進步,這反過來又提高了跟蹤性能。但是,這些方法無法以視頻速率執行推理,因爲兩個網絡不共享功能。
        隨着多任務學習的成熟,聯合檢測物體並學習Re-ID特徵的單步方法已開始引起更多關注。由於兩個模型共享大多數特徵,因此它們具有顯着減少推理時間的潛力。然而,與兩步法相比,單步法的準確性通常會顯着下降。特別是,ID開關的數量增加了很多,如實驗部分所示。結果表明,將這兩項任務結合起來並非易事,應謹慎對待。

2、錨點的對齊不行,無錨點更容易對齊中心
圖1:(a)黃色和紅色的錨點造成了估計相同的ID(穿藍色襯衫的人),儘管圖像塊非常不同。此外,基於錨的方法通常在粗網格上運行。因此,很有可能在錨點(紅色或黃色星形)提取的特徵未與對象中心對齊。 (b)免錨的做法受歧義的影響較小。
圖1:(a)黃色和紅色的錨點造成了估計相同的ID(穿藍色襯衫的人),儘管圖像塊非常不同。此外,基於錨的方法通常在粗網格上運行。因此,很有可能在錨點(紅色或黃色星形)提取的特徵未與對象中心對齊。 (b)免錨的做法受歧義的影響較小。

作者對影響跟蹤器準確性的關鍵性因素做了以下的分析:
(1)、基於錨點的方法不適合Re-ID
        當前的單步法跟蹤器都是基於錨的,因爲它們是從對象檢測器修改而來的。但是,有兩個原因造成了錨點不適合學習Re-ID功能。首先,對應於不同圖像補丁的多個錨點可能負責估計同一對象的身份。這導致網絡的嚴重歧義。有關說明,請參見圖1。此外,通常會將特徵圖降級採樣8次以平衡精度和速度。這對於檢測是可以接受的,但對於ReID來說太粗糙了,因爲對象中心可能與在粗略錨點位置提取的用於預測對象身份的特徵不對齊。文章中提出解決該問題的方法,是通過將MOT問題處理爲位於高分辨率特徵圖頂部的像素級關鍵點(對象中心)估計和身份分類問題。
(2)、多層特徵聚合
        這對於MOT尤爲重要,因爲Re-ID功能需要利用高維和低維的特徵來處理所有大的和小的的物體。在實驗中觀察到,由於提高了處理尺寸變化的能力,這有助於減少單步法的身份切換。請注意,對於兩步方法而言,改進並不那麼重要,因爲在裁剪和調整大小操作之後,對象將具有相似的比例。
(3)、ReID特徵的維數
        以前的ReID方法通常學習高維特徵,並在其基準上取得了可喜的結果。但是,我們發現低維特徵實際上對MOT更好,因爲它的訓練圖像比ReID少(我們不能使用ReID數據集,因爲它們僅提供裁剪後的人物圖像)。學習低維特徵有助於減少過擬合小數據的風險,並提高跟蹤的穩健性。

標註:針對於第三點實際存在疑問,一開始公佈的Fairmot版本用的reid分支是128維度的,但是後來作者團隊在MOT20上刷出了MOTA58.7的指標,也更新了github上的Fairmot模型,這時候用的reid維度已經改爲512維度,與通用的reid模型接近。但是在實驗中發現reid上效果仍然在人員交集處容易跑其他人身上,應該是沒有充分訓練。

二、實現結構

在這裏插入圖片描述
圖2:我們的一步法MOT跟蹤器概述。首先將輸入圖像饋送到編碼器-解碼器網絡,以提取高分辨率特徵圖(步幅= 4)。然後,我們添加兩個簡單的並行頭,分別用於預測邊界框和Re-ID特徵。預測對象中心的特徵被提取出來以進行時間邊界框鏈接。

        方法的概述如圖2所示。首先採用無錨對象檢測方法來估計高分辨率特徵圖上的對象中心。消除錨點減輕了歧義性問題,並且高分辨率特徵圖的使用使Re-ID特徵能夠更好地與對象中心對齊。然後,網路中添加了一個並行分支,用於估算用於預測對象身份的逐像素Re-ID特徵。特別是,通過學習了低維Re-ID特徵,這些特徵不僅減少了計算時間,而且提高了特徵匹配的穩健性。此外,爲骨幹網絡配備了“深層聚合”運算符,以融合來自多個層的要素,以便處理不同規模的對象。

1、骨幹網絡(Backbone Network)
        文中採用ResNet-34作爲骨幹網絡,爲了在精度和速度之間取得良好的平衡。 爲了適應不同尺度的對象,將深層聚合(DLA)的變體應用於主幹,如圖2所示。 與最初的DLA不同,它在低級和高級特徵之間有更多的跳過連接,類似於特徵金字塔網絡(FPN)。 此外,上採樣模塊中的所有卷積層都被變形卷積層所取代,這樣它們就可以根據對象尺度和姿勢動態地適應接收域。這些修改也有助於緩解對齊問題。得到的模型命名爲DLA-34。將輸入圖像的大小表示爲Himage×Wimage,則輸出特徵映射的形狀爲C×H×W,其中H=Himage/4和W=Wimage/4。

2、物體檢測分支(Object Detection Branch)
        在骨幹網絡之後,將對象檢測視爲基於中心的高分辨率特徵映射上的邊界框迴歸任務。 特別是將三個並行迴歸頭附加到骨幹網絡中,分別估計熱圖、對象中心偏移和框的大小。通過將3×3卷積(有256個通道)應用於骨幹網絡的輸出特徵映射來實現每個頭,然後是一個1×1卷積層,生成最終目標。

熱圖頭(Heatmap Head)
這個負責估計對象中心的位置。這裏採用了基於熱圖的表示,這是地標點估計任務上的標準。尤其是,熱圖的維數爲1×H×W。 如果熱圖中某個位置的響應與GT中心重疊,則該響應將是一個。響應隨着熱圖中位置與對象中心之間的距離呈指數衰減。

中心偏移頭(Center Offset Head)
這個頭負責更精確地定位對象。回想一下,特徵映射的步長是四個,這將引入不可忽略的量化誤差。這可能在檢測中提高很低,但它對於跟蹤至關重要,因爲Re-ID特徵應該根據精確的對象中心提取。 在實驗中發現,ReID特徵與對象中心的仔細對齊對於性能至關重要。

框大小頭(Box Size Head)
這個頭負責估計目標包圍盒在每個錨位置的高度和寬度。該頭與Re-ID特徵沒有直接關係,但定位精度會影響目標檢測性能的評價。

3、身份嵌入分支(Identity Embedding Branch)
        身份嵌入分支的目標是生成能夠區分不同對象的特徵。理想情況下,不同對象之間的距離應該大於同一對象之間的距離。爲了實現這一目標,這部分應用了一個卷積層,在骨幹特徵的頂部有128個核,爲每個位置提取身份嵌入特徵,得到的特徵圖爲E∈R^(128×W×H), 從特徵映射中提取對象在(x,y)處的Re-ID特徵Ex,y∈R^(128)。

4、損失函數
1)Heatmap Loss

考慮到正負樣本不均衡問題,作者採用了focal loss的形式。
在這裏插入圖片描述
其中M(x,y)表示的是heatmap在(x,y)處存在目標的概率。

2)Offset and Size Loss
採用L1 loss
在這裏插入圖片描述
3)Identity Embedding Loss
從熱圖上的對象中心(Ecix,Eciy)。 我們在該位置提取一個身份特徵向量Exi,yi,並學習將其映射到類分佈向量p(K)。作者採用了identification式的分類框架,這裏面的L^i(k)就是GT中不同的ID的one-hot表示,損失爲:
在這裏插入圖片描述
5、在線跟蹤
這部分解釋了模型的推斷,以及如何使用檢測結果和身份嵌入來執行框跟蹤。
1)模型推斷
        網絡以大小爲1088×608的圖像作爲輸入,這與以前的工作JDE相同。 在預測的熱圖之上,我們根據熱圖分數執行非最大抑制(NMS)來提取峯值關鍵點。我們保留熱圖分數大於閾值的關鍵點的位置。然後,根據估計的偏移量和框大小計算相應的包圍框。 我們還在估計的對象中心提取標識嵌入。
2)在線框連接
        我們使用標準的在線跟蹤算法來實現框鏈接。我們根據第一幀中的估計框初始化了許多跟蹤。在隨後的幀中,我們根據Re-ID特性和IoU的測量距離將這些框鏈接到現有的軌跡。我們還使用卡爾曼濾波器來預測當前幀中軌跡的位置。 如果它離鏈接檢測太遠,我們將相應的成本設置爲無窮大,從而有效地防止了檢測與大運動的鏈接。我們在每個時間步驟中更新跟蹤器的外觀特性,以處理外觀變化,如KCF。

三、實驗

1、訓練數據集
        我們將來自六個公共數據集的訓練圖像結合起來,組成一個大型的訓練數據集,用於人類檢測和搜索。特別是ETH和CityPerson數據集只提供邊界框註釋,因此我們只對它們進行檢測分支的訓練。CalTech, MOT17, CUHK-SYSU和PRW數據集提供了邊界框和身份註釋,我們在這些註釋上訓練了檢測和身份嵌入分支。

2、實現細節
        用了12的batch size,用Adam訓練了30個epochs,前面用10-4學習率,20~27用10-5和10^-6學習率,在兩張RTX2080上跑了30小時。

3、對比實驗
1)Anchor-based vs. Anchor-free
在這裏插入圖片描述
2)不同多尺度融合框架對於Reid的影響
在這裏插入圖片描述
在這裏插入圖片描述
3)Reid的維度的影響
在這裏插入圖片描述
作者公佈的在各個MOT數據集上的指標。
在這裏插入圖片描述

四、測試

配置了Github上的開源代碼,下載作者開源的模型在其他的數據集測試了下,效果見下圖。
在這裏插入圖片描述
在這裏插入圖片描述
檢測效果很好,但是仍然存在id switch的問題,尤其是在人羣密集的地方,hrnet和dla34的效果差不多,我同時也測試了mot20上訓練的dla34模型發現效果並沒有達到想象。
在這裏插入圖片描述
雜亂的檢測結果實在太多了,這也可能和這個模型在密集場景沒有充分訓練過擬合了mot20有關。

總結下代碼測試後的看法
1、這個模型reid沒有充分訓練,所以id的切換會比較頻繁,即使外觀有很大差異,理論上reid訓練好的對此應該不存在這個問題。文中把reid 的維數降低了,因爲它是一個one-shot的結構,沒法用裁剪的reid數據集訓練,所以只能減少reid的影響,在新版本提高了。
2、DLA-34在中小型對象上主要優於HR NetV2,在MOT20上行人目標密集,作者也是基於DLA34進行訓練。

參考文獻:
【1】paper and github(開頭已經給出)
【2】https://zhuanlan.zhihu.com/p/127738264
【3】https://zhuanlan.zhihu.com/p/126558285

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章