Fully-Convolutional Siamese Network for Object Tracking
Updated on 2018-11-19 10:17:29
Paper: http://www.robots.ox.ac.uk/~vedaldi/assets/pubs/bertinetto16fully.pdf
Code-1: https://github.com/rafellerc/Pytorch-SiamFC (PyTorch Implementation)
Code-2: https://github.com/StrangerZhang/SiamFC-PyTorch (Train and Testing)
Code-3: https://github.com/got-10k/siamfc (Training and Testing PyTorch code from GOT-10K tracking benchmark)
Project Page: https://www.robots.ox.ac.uk/~luca/siamese-fc.html
摘要:任意目標的跟蹤問題通常是根據一個物體的外觀來構建表觀模型.雖然也取得了不錯的效果,但是他們這些 online-only approach 限制了模型可以學到的模型的豐富性.最近,已經有幾個嘗試開始探索深度卷積網絡的強大的表達能力(express power).但是,當跟蹤目標提前未知時,需要在線的執行 SGD 來適應網絡的權重,嚴重的影響了系統的速度.本文中,我們提出一種基本的跟蹤算法,端到端的進行全卷積孿生網絡的訓練,在 ILSVRC15 video object detection dataset 上進行訓練.我們的 tracker 速度超過了實時,盡管看起來很簡單,但是仍然在 VOT2015 bechmark 上取得了頂尖的效果.
引言:傳統的跟蹤算法都是在線的方式學習一個表觀模型 (appearance model), 但是,這只是相對簡單的學習到了簡單的模型.另外一個問題就是,在計算機視覺當中,深度學習的方法已經被廣泛的采用,但是由於監督學習的數據和實時要求的約束,基於深度學習的應用並不廣泛.幾個最近的工作目標在於意圖用預先訓練的深度卷積網絡來客服這個缺陷.這些方法要么采用 shallow methods(如:correlation filters)利用網絡的中間表示作為 feature;或者執行 SGD 算法來微調多層網絡結構.但是,利用 shallow 的方法並不能充分的發揮 end-to-end 訓練的優勢,采用 SGD 的方法來微調卻無法達到實時的要求.
本文提出一種方法,利用預先 offline 學習的方法,訓練一個神經網絡來解決 general 相似性學習的問題,這個函數在跟蹤的過程中簡單的進行評價.本文的核心貢獻點就是:這種方法在達到相當結果的同時,速度方面達到實時.特別的,我們利用孿生網絡,在一個較大的搜索圖像內,來定位 exemplar image.進一步的貢獻是:該網絡是 fully-convolutional:稠密且有效的 sliding-window evaluation 的方法來計算兩個輸入的 cross-correlation.
相似性學習的方法已經相對被遺忘,由於跟蹤領域並不需要涉及到大量有標簽數據集.直至現在,現有的數據集相對而言,僅僅只有幾百個標注的 videos.然而,我們相信 ILSVRC dataset 的出現對於物體檢測而來使得訓練這樣一個模型成為可能.而且從 ImageNet 領域轉移到 跟蹤的benchmark是不同 domain 之間的轉換,對於在 ImageNet 上訓練,然后在 benchmark 上進行測試,並不存在所謂的不公平。
Deep Similarity learning for tracking .
學習去跟蹤任意的物體,我們通過相似性學習的方法來解決。我們利用卷積神經網絡來解決相似性函數的學習問題。並且通常用 Siamese architecture 來充當深度卷積網絡。
Fully-convolutional Siamese Architecture :
本文提出一種全卷積的孿生網絡結構, 我們說一個網絡結構是 fully-convolutional,如果與 translation 有關。為了給出更加精確的定義,我們引入 $L_{\tau}$ 來表示轉移操作 $(L_{\tau}x)[u] = x[u-\tau]$。
此處引入全卷積的優勢在於:候選圖像的尺寸不一定非得大小相同。
2.2 Training with large search images
我們才用一種判別的方法,在正負樣本對上采用最大似然估計進行訓練網絡:
$l(y, v) = log(1+exp(-yv))$
其中 v 是單個樣本候選對的 real-valued score, $y \in {+1, -1}$ 是其 gt label。我們采用一個樣本圖像和一個較大的搜索圖像 來訓練我們的全卷積網絡。這將會產生一個得分響應(a map of scores v),可以有效的產生許多 examples。我們定義一個 score map 的損失函數為每一個損失的均值:
在 score map 上,對於每一個位置 u ,需要一個 真正的label $y[u] \in {+1, -1}$。網絡的參數需要通過 SGD 的方法進行訓練,解決如下問題:
像圖2中所展示的那樣,從標注的 video 數據集上,通過提取 exemplar 和 search images 得到的 Pairs,是在 target 中心的。從一個 video 的兩幀上得到的 images 包括物體,最多相隔 T 幀。在訓練的過程中,不考慮物體的類別。物體的尺寸處理,本文的方法可謂比較合理,像圖中所示的那樣,對圖像進行填充,而不會損失物體尺寸上的信息。
如果 score map 的元素滿足如下的條件,則認為該物體屬於 positive examples:
在 Score map 上得到的正負樣本的損失進行加權以消除類別不平衡的問題。
2.3 ImageNet Video for tracking.
Dataset curation:
本文利用 ImageNet video 進行 offline 的訓練。這個數據集有 80多G 標注好的 video。
實際上要先對這些數據進行處理,主要包括:
1. 扔掉一些類別: snake,train,whale,lizard 等,因為這些物體經常僅僅出現身體的某一部分,且常在圖像邊緣出現;
2. 排除太大 或者 太小的物體;
3. 排除離邊界很近的物體。
實驗結果:
================