RelationTrack解读
MOT領域的一個新的SOTA方法,在FairMOT的基礎上提出了特征圖解耦和全局信息下的ReID Embedding的學習,前者和CSTrack思路類似,后者則采用了Deformable DETR里的deformable attention配合Transformer Encoder來捕獲和目標相關的全圖信息增強ReID的表示能力。
簡介
現有的多目標跟蹤方法為了速度通常會將檢測和ReID任務統一為一個網絡來完成,然而這兩個任務需要的是不同的特征,這也是之前很多方法提到的任務沖突問題。為了緩解這個問題,論文作者設計了Global Context Disentangling(GCD)模塊來對骨干網絡提取到的特征解耦為任務指定的特征。此外,作者還發現,此前的方法在使用ReID特征為主的關聯中,只考慮了檢測框的局部信息而忽視了全局語義相關性的考慮。對此,作者設計了Guided Transformer Encoder(GTE)模塊來學習更好的全局感知的ReID特征,這個模塊不是密集相關性的而是捕獲query節點和少量的自適應關鍵樣本位置之間的相關性信息。因此非常高效。實驗表明,由GCD和GTE構成的跟蹤框架RelationTrack在MOT16和MOT17上均達到SOTA表現,在MOT20上更是超過此前的所有方法。
-
論文標題
RelationTrack: Relation-aware Multiple Object Tracking with Decoupled Representation
-
論文地址
http://arxiv.org/abs/2105.04322
-
論文源碼
暫未開源
介紹
目前主流的多目標跟蹤方法主要包含兩個子模型,即用于目標定位的檢測模型和用于軌跡連接的ReID模型。分開訓練檢測和ReID兩個模型可以在精度上獲得較好的表現,然而推理速度較慢,很難達到實時跟蹤的效果。一個較好的解決方案就是JDE首先提出的在一個網絡中聯合訓練檢測和ReID的思路。
遺憾的是,直接將這兩個任務放到一個網絡中聯合優化造成了精度大幅度的下降,這是因為這兩個任務存在嚴重的優化矛盾。對檢測分支而言,它期望同類目標之間的相似度盡量高,也就是網絡能夠最大化不同類目標之間的距離;但是,對ReID分支而言,它則希望最大化不同實例之間的距離(對行人跟蹤而言這些不同實例是同類別的)。它們不一致的優化目標阻礙了當前的MOT框架向更高效的形式發展。
為了緩解這個矛盾,作者設計了一個特征解耦模塊稱為Global Context Disentangling (GCD),它將特征圖解耦為檢測任務指定和ReID任務指定的特征表示,如上圖所示。這個模塊的設計下文再闡述,不過經過實驗驗證,這個模塊帶來了1-2個點的收益,可見它對解決任務沖突是很有效的。
此外,作者發現,此前的方法通常利用局部信息來跟蹤目標,然而,實際上,目標和周圍目標以及背景之間的關系對于跟蹤任務是非常重要的。為了捕獲這種長程依賴,使用全局注意力是一個解決方案,但是全局注意力需要逐像素之間計算相關性以構成注意力圖,這在計算上是代價極為昂貴的,也嚴重阻礙了實時MOT任務的進行。作者又發現,其實并不是所有的像素都對query node(查詢節點)有影響的,因此只需要考慮和少數關鍵樣本之間的關系可能是更好的選擇,基于這個假設,作者使用deformable attention(源于Defomable DETR)來捕獲上下文關系。相比于全局注意力,deformable attention是非常輕量的,計算復雜度從O(n2)O\left(n^{2}\right)O(n2)降低到了O(n)O\left(n\right)O(n)。而且,相比于基于圖的受限鄰域信息收集,deformable attention可以自適應選擇整個圖像上合適的關鍵樣本來計算相關性。
接著,考慮到Transformer強大的建模能力,作者將deformable attention和Transformer Encoder進行了組合形成了Guided Transformer Encoder (GTE)模塊,它使得MOT任務可以在全局感受野范圍內捕獲逐像素的相關性。
為了證明RelationTrack的效果,作者在MOT多個benchmark數據集上進行了實驗,在IDF1上超越了此前的SOTA方法FairMOT3個點(MOT16)和2.4個點(MOT17)。
RelationTrack
問題描述
RelationTrack旨在完成目標檢測和基于ReID的軌跡關聯任務,由三個部分組成,分別是檢測器?(?)\phi(\cdot)?(?)、ReID特征提取器ψ(?)\psi(\cdot)ψ(?)以及關聯器φ(?)\varphi(\cdot)φ(?),它們分別負責目標的定位、目標的特征提取以及軌跡的生成。
形式上,輸入圖像It∈RH×W×CI_{t} \in \mathbb{R}^{H \times W \times C}It?∈RH×W×C,不妨記?(It)\phi\left(I_{t}\right)?(It?)和ψ(It)\psi\left(I_{t}\right)ψ(It?)為btb_{t}bt?和 ete_{t}et?,顯然可以知道bt∈Rk×4b_{t} \in \mathbb{R}^{k \times 4}bt?∈Rk×4且et∈Rk×De_{t} \in \mathbb{R}^{k \times D}et?∈Rk×D。上面的HHH、WWW和CCC分別表示輸入圖像的高、寬和通道數,kkk、ttt和DDD則表示檢測到的目標數、圖像的幀索引以及ReID embedding向量的維度。btb_tbt?和ete_tet?分別指的是目標的邊框坐標和相應的ReID特征向量。在完成檢測和特征向量的提取之后,φ(?)\varphi(\cdot)φ(?)基于ete_tet?對不同幀的btb_tbt?進行關聯從而生成軌跡,目前的主流思路是只要檢測和ReID足夠準,使用一個簡單的關聯器即可,如匈牙利算法。
整體框架
下面的這個圖就是RelationTrack的整體框架,總的來看分為五部分,分別是特征提取、特征解耦、ReID表示學習以及最后的數據關聯,整個框架都是針對單幀進行處理的。首先,圖像送入backbone中得到特征圖,隨后GCD模塊將這個特征圖解耦為兩個特征圖,分別為檢測信息和ReID信息,檢測分支通過檢測信息進行類似于CenterNet的目標定位而GTE模塊則負責生成判別性的目標特征表示。最后,有了目標框和對應的特征表示,就可以通過匈牙利算法進行關聯從而得到最終的跟蹤軌跡了。
GCD
在上面的整體框架了解后,我們來看看GCD(Global Context Disentangling)模塊具體是如何實現特征圖解耦的。實際上,GCD分為兩個階段進行,首先是全局上下文向量的生成然后利用這個向量去解耦輸入特征圖,它的流程其實就是上圖的中間部分。
記x={xi}i=1Npx=\left\{x_{i}\right\}_{i=1}^{N_{p}}x={xi?}i=1Np??為輸入的特征圖(就是backbone得到的,一般是64通道的),這里的NpN_pNp?表示像素數目即H′×W′H^{\prime} \times W^{\prime}H′×W′,H′H^{\prime}H′和W′W^{\prime}W′分別表示特征圖的高和寬。首先,第一個階段先是計算全局上下文特征向量,可以用下面的式子表示,這里的WkW_kWk?表示的是一個可學習的線性變換,文中采用1x1卷積實現。這個過程其實是一個空間注意力圖的形成。
z=∑j=1Npexp?(Wkxj)∑m=1Npexp?(Wkxm)xjz=\sum_{j=1}^{N_{p}} \frac{\exp \left(W_{k} x_{j}\right)}{\sum_{m=1}^{N_{p}} \exp \left(W_{k} x_{m}\right)} x_{j} z=j=1∑Np??∑m=1Np??exp(Wk?xm?)exp(Wk?xj?)?xj?
不過,作者這里似乎沒有刻意提及利用這個注意力圖更新原始輸入在進行通道注意力得到一個特征向量,這個向量才是后續兩個轉換層的輸入。(個人理解)
接著,進入第二個階段,兩個轉換層(對應上圖中間部分的上下對稱的兩個結構,由卷積、LayerNorm、ReLU和卷積構成),它將上一個階段的輸出zzz結構成兩個任務指定的特征向量,將這個向量和原始的特征圖broadcast之后相加則可以獲得檢測任務特定的embedding d={di}i=1Npd=\left\{d_{i}\right\}_{i=1}^{N_{p}}d={di?}i=1Np??和ReID任務指定的r={ri}i=1Npr=\left\{r_{i}\right\}_{i=1}^{N_{p}}r={ri?}i=1Np??。這個過程可以通過下面的式子描述,其中的Wd1,Wd2,We1W_{d 1}, W_{d 2}, W_{e 1}Wd1?,Wd2?,We1? and We2W_{e 2}We2?均表示可學習的參數矩陣,ReL?U(?)\operatorname{ReL} U(\cdot)ReLU(?)和Ψln?(?)\Psi_{\ln }(\cdot)Ψln?(?)表示線性修正單元和層標準化操作。
di=xi+Wd2ReLU(Ψln(Wd1z))ri=xi+Wr2ReLU(Ψln(Wr1z))\begin{array}{l} d_{i}=x_{i}+W_{d 2} R e L U\left(\Psi_{l n}\left(W_{d 1} z\right)\right) \\ r_{i}=x_{i}+W_{r 2} R e L U\left(\Psi_{l n}\left(W_{r 1} z\right)\right) \end{array} di?=xi?+Wd2?ReLU(Ψln?(Wd1?z))ri?=xi?+Wr2?ReLU(Ψln?(Wr1?z))?
如果考慮批量輸入III,它的shape為(B′,H′,W′,C′)\left(B^{\prime}, H^{\prime}, W^{\prime}, C^{\prime}\right)(B′,H′,W′,C′),則Ψln(?)\Psi_{l n}(\cdot)Ψln?(?)這個標準化可以使用下面的式子定義,其中的IbhwcI_{b h w c}Ibhwc?和I~bhwc\tilde{I}_{b h w c}I~bhwc?是輸入和輸出在(b,h,w,c)(b,h,w,c)(b,h,w,c)處的元素。
μb=1H′W′C′∑1H′∑1W′∑1C′Ibhwcσb2=1H′W′C′∑1H′∑1W′∑1C′(Ibhwc?μb)2I~bhwc=Ibhwc?μbσb2+?\begin{array}{l} \mu_=\frac{1}{H^{\prime} W^{\prime} C^{\prime}} \sum_{1}^{H^{\prime}} \sum_{1}^{W^{\prime}} \sum_{1}^{C^{\prime}} I_{b h w c} \\ \sigma_^{2}=\frac{1}{H^{\prime} W^{\prime} C^{\prime}} \sum_{1}^{H^{\prime}} \sum_{1}^{W^{\prime}} \sum_{1}^{C^{\prime}}\left(I_{b h w c}-\mu_\right)^{2} \\ \tilde{I}_{b h w c}=\frac{I_{b h w c}-\mu_}{\sqrt{\sigma_^{2}+\epsilon}} \end{array} μb?=H′W′C′1?∑1H′?∑1W′?∑1C′?Ibhwc?σb2?=H′W′C′1?∑1H′?∑1W′?∑1C′?(Ibhwc??μb?)2I~bhwc?=σb2?+??Ibhwc??μb???
從上面第一個式子可以看到,zzz的計算與iii的選擇是無關的,ddd和rrr的所有元素都可以通過同一個zzz計算得到。由此,其實GCD的復雜度只有O(C2)O\left(C^{2}\right)O(C2),相比于此前那些O(HWC2)O\left(H W C^{2}\right)O(HWC2)復雜度的全局注意力方法,GCD是非常高效的,后面的實驗也證明了其有效性。
GTE
下面來看看GTE(Guided Transformer Encoder)模塊是如何實現的。事實上,注意力作為學習判別性特征的有效手段已經被廣泛使用,但是此前的方法都使用固定感受野的卷積操作來獲得注意力圖,這其實忽視了不同目標和背景區域之間的全局相關性。為了彌補這一點,每個像素之間的全局注意力是作者考慮采用的手段,但是常規的全局注意力太龐大了,對分辨率較高的特征圖難以進行。
為此,作者采用deformable attention來捕獲上下文的結構化信息,它只需要在query nodes和自適應選擇的關鍵樣本之間計算相似性而不需要使用所有特征圖上的樣本點,這個操作可以將復雜度從O(H2W2C)O\left(H^{2} W^{2} C\right)O(H2W2C) 降到O(HWC)O(H W C)O(HWC)。
進一步,作者結合deformable attention和Transformer Encoder的優勢,形成了GTE模塊,如下圖所示。結合Transformer出色的推理能力和可變形注意力的自適應全局感受野,GTE產生了非常有效的embedding。
下面,對著上面的圖我們來闡述一下Transformer encoder和deformable
attention的細節。
如上圖所示,這里采用Transformer的encoder結構來進行特征的,它的結構和原始的Transformer的Encoder非常類似,我這里不多贅述,不過原始的Self-Attention操作計算量過大,作者這里采用Deformble Attention替換它。
deformable attention的思想如下圖,對于下圖a感興趣區域的每個query node,deformable attention自適應在整個圖上選擇有價值的key樣本點,如下圖b所示,然后query和key進行交互即可得到下圖c所示的注意力圖。deformable attention的具體工作流程如上圖的下半部分所示,給定輸入特征圖III,三個獨立的encoder Φa(?),Φb(?)\Phi_{a}(\cdot), \Phi_(\cdot)Φa?(?),Φb?(?)和Φc(?)\Phi_{c}(\cdot)Φc?(?)分別編碼生成offset map FaF_aFa?、key map FbF_bFb?以及query map FcF_cFc?。若每個query選擇NkN_kNk?個key樣本,那么FaF_aFa?將包含2Nk2N_k2Nk?個通道,分別表示NkN_kNk?個key相對于query的橫向和縱向的偏移。因此,對每個query節點q∈Iq \in Iq∈I而言,它的坐標ZqZ_qZq?以及key相對于ZqZ_qZq?的FaF_aFa?上的偏移△Zk={△Zki}i=1Nk\triangle Z_{k}=\left\{\triangle Z_{k}^{i}\right\}_{i=1}^{N_{k}}△Zk?={△Zki?}i=1Nk??是可以知道的。
接著,根據key的坐標Zk={Zki}i=1NkZ_{k}=\left\{Z_{k}^{i}\right\}_{i=1}^{N_{k}}Zk?={Zki?}i=1Nk??以及key map FbF_bFb?,可以獲得key 樣本向量Vk={Vki}i=1NkV_{k}=\left\{V_{k}^{i}\right\}_{i=1}^{N_{k}}Vk?={Vki?}i=1Nk??,它進一步被Φd(?)\Phi_ze8trgl8bvbq(\cdot)Φd?(?)轉換。根據ZkZ_kZk?也可以對來自FcF_cFc?的query attention map Vq={Vqi}i=1NkV_{q}=\left\{V_{q}^{i}\right\}_{i=1}^{N_{k}}Vq?={Vqi?}i=1Nk??進行裁剪。最終得到的特征圖FoF_oFo?可以通過下面的式子計算得到,這里的WmW_mWm?是可學習參數,?\bullet?則是hadamard積。
Fo=Wm∑i=1NkVqi?FciF_{o}=W_{m} \sum_{i=1}^{N_{k}} V_{q}^{i} \bullet F_{c}^{i} Fo?=Wm?i=1∑Nk??Vqi??Fci?
Detection and Association
檢測分支思路和CenterNet是一致的,跟蹤方面也是和FairMOT一樣的匈牙利算法,不過這里采用了MAT的軌跡填充策略來平衡正負樣本。
Optimization objectives
兩個分支共同優化,損失函數加權求和,和FairMOT的優化方式幾乎一樣,如下所示,不詳細展開了。
實驗
實驗數據集是MOT16、MOT17和MOT20,額外數據集和FairMOT一致,包括了CrowdHuman,預訓練策略也和之前一樣。
各個模塊的消融實驗如下。
解耦前后特征圖可視化如下,解耦效果還是很明顯的。
下面這個可視化則證明了RelationTrack的魯棒性很強。
總結
針對目前JDE范式下MOT方法的主流問題,即分支矛盾采用了特征圖結構的策略進行緩解,利用Deformable DETR的思路進行reid的全局信息捕獲,工作量還是挺大的,在MOT領域是值得關注的工作。本文也只是我本人從自身出發對這篇文章進行的解讀,想要更詳細理解的強烈推薦閱讀原論文。最后,如果我的文章對你有所幫助,歡迎一鍵三連,你的支持是我不懈創作的動力。
總結
以上是生活随笔為你收集整理的RelationTrack解读的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EANet解读
- 下一篇: 0003-Longest Substri