LTMU
第零部分:前景提要
一般來說,單目標跟蹤任務可以從以下三個角度解讀:
- A matching/correspondence problem.把其視為前後兩幀物體匹配的任務(而不考慮在跟蹤過程中物體外觀的改變,也就是不會因為物體外觀更改而更改模型)。
- An appearance learning problem.外觀學習的任務(需要在測試時fine-tune網路)。例如MDNet
- A prediction problem.一個目標檢測的任務,例如:ROLO = CNN + LSTM。就是使用LSTM來模擬物體在整個視訊中的運動狀態。
LTMU主要關注的是外觀學習的任務中模型更新的機制,即第二個任務。
而對於第二個任務,其模型按照定位目標框的方式通常分為兩類:稀疏取樣和密集取樣。
稀疏取樣——以MDNet為例:
由於第二個會對模型的外觀資訊進行實時更新,因此我們不妨優先來看一下MDNet:
訓練過程:簡單來說,對於K個視訊序列,該網路會設定K個fc_6層,對於每次迭代,會輸入第k個視訊序列,去訓練相應的第k個fc_6層。這樣,一個epoch,就是每個fc_6層被依次訓練一次。訓練實際上是一個分類問題,這也就意味著具有位置資訊的框是訓練前就生成的。對於每一個序列,在訓練前會根據GT,抽取該視訊中的8幀,每一幀會生成4個正框(IoU>0.7)以及12個負框(IoU<0.5),即一個序列生成32個正例和96個負例。每次迭代根據交叉熵損失更新各層。
測試過程:在第一幀的框周圍生成一系列框,通過上面的分類器得到最優的那個框(得到之後可以通過BBox regression調整一下位置),再用一些正例去更新網路,再次進入下一幀。
而測試過程中,後面框更新是由前一幀框的周邊進行隨機取樣,選取得分最高的那個獲得的,也就是稀疏取樣。
密集取樣——以ATOM為例:
ATOM則是採用“分類即定位”(類似RPN網路),通過前後景分類得到物體可能在的一個置信度分佈圖得到最高置信度點。之後在這個點周圍,按照參考幀(上一幀)的框的大小隨機生成一些不同尺度(變化不會特別大)的框,將這些框送入到IoU預測器中,去預測這些框的IoU得分值
IoU預測器:IoUNet的方式是有類別資訊的,比如對於狗這個類,該預測期能夠得到該框覆蓋狗的IoU。而本文的IoU預測器,則是先把模板幀的圖和BBox得到IoU Modulation中,獲取到相應的向量,最後和當前的框獲得相應的IoU。
而LTMU則是針對密集取樣的Online部分模型更新的策略進行改進的一個機制,以使得模型能夠處理long-term tracking的任務。
下面進入論文解析階段:
第一部分:引入
對於long-term跟蹤器,一般需要滿足以下要求:
-
long-term跟蹤器要求具備處理目標頻繁消失和出現的能力,即需要有較強的再檢測能力。因此,需要能夠選擇何時進行線上部分的更新,何時不需要。
- 為了表示跟蹤錯誤或者當前幀沒有目標存在而拒絕更新這一機制,作者提出了一個指標TNR,即所有跟蹤錯誤的幀不進行更新的比例。像上面ATOM有一定的拒絕更新的能力,ATOM能夠根據分類得到置信圖來判斷是否需要更新。
-
跟蹤器由於存在長時間更新的要求,可能會有目標跟的位置、尺度上的偏差,背景的變化從而可能累計誤差,被噪聲樣本汙染模型。因此需要有對抗汙染的機制。
本文做的工作:
- 提出一種元更新器指導如何更新線上部分的模型。
- 提出一套long-term tracking的框架。
第二部分:元更新器MU
如上圖,定義了一些記號。
如上圖所示,第二個小圖中,從人類角度看來,跟的是比較準的,但是其在置信圖中,其峰值比較低。同樣,在第三張圖中出現了雙峰值,但其實也是能跟著目標點,而其最大相應值則處於更低的狀態(以至於完全可以視為更丟了)。而最後一張圖已經更丟了,卻有一個較高的相應值。
即有兩種問題:
- 目標對但是置信值低
- 目標錯但是置信值高
為了解決這兩個問題,作者考慮到希望能夠設計一個網路,去學習到是否要更新,即所謂的元更新器。為此作者考慮了以下的資訊:
-
幾何資訊:
-
判別資訊:
-
得分(峰值):
-
得分圖:![image-20201103224503978]
一般會通過一個CNN層提取到整個圖的特徵,為了應對目標對但置信值低。
-
-
外觀資訊
即當前圖和第一張圖之間的外觀差距(度量距離),用來處理目標錯但是置信值高的現象。 -
時序資訊:利用三級級聯的LSTM,將上面三者得到的vector(同時concat前面一段幀數的特徵)作為輸入,輸出是否要進行更新的值。
總體如此圖:
而其中的一些網路,都是與預訓練好的。然後對於LSTM級聯則是下面這種訓練方式:
- 如何訓練?
- 先用一般的跟蹤器跑一下送入的視訊序列,這樣能夠得到第一遍的每個樣本BBOX。前面已經講了,每次送入到MU中的是[t-ts+1,t]這ts幀的特徵。而該二分類網路的GT則是按照
也就是在第一遍的時候,我們獲得了訓練這個網路的所需內容。於是可以進行第一輪的訓練。 - 之後跑的時候,由於存在了MU可以告知是否應該用該BBOX對跟蹤器進行訓練,因此跟蹤器會得到fine-tune,此時再次進行第一步中的方式:跑一遍視訊序列,得到可能與上次不盡同的label,再次訓練MU。
於是MU就訓練完畢。
由上面的MU就可以得到一個長期更新框架。
第三部分:長期跟蹤框架
現在,我們擁有了一個一個MU用來控制模型的更新,等於解決了要不要更新問題,而對於啥時候跟丟我們直接採用使用另外一個不同的跟蹤器進行確認,因此我們就知道了什麼時候應該重新找目標和什麼時候應該fine-tune我們的tracker。
-
對於什麼時候應該fine-tune我們的tracker:即上圖Local tracking部分,其中local tracker和verifier都是tracker(一般會使用不同的跟蹤器)。視訊序列輸入時,由local tracker控制跟蹤,由verifier驗證跟的位置對不對,由MU控制更新(對兩個跟蹤器都要)。然後就能夠得到置信度。根據置信度去選擇繼續fine-tune還是全域性搜尋,重新尋找目標。
-
對於什麼時候應該重新找目標:即上圖Global search部分。當需要重新尋找目標時,會使用一個檢測器(如faster-rcnn)得到一些候選框,選取每個候選框的周邊區域,然後用SiamRPN利用模板幀和該區域進行搜尋,看看是不是能找得到目標,找不到,就直接跳到下一幀,重複該過程。找到了,就進入Local tracking部分。
個人認為該框架有冗餘,其實存在優化的地方。
第四部分:結果
注:作者使用的是自己魔改過的RTMDNet(即表中的MBMD)作為local tracking。
注:TNR是錯誤幀中不更新的比例,TPR是正確幀更新的比例,MaxGM是前兩者權衡
而對於一般的跟蹤器,在long-term任務上,MU也能夠做到一個比較大的提升: