論文閱讀:SiameseFC

mini猿要成長QAQ發表於2018-04-09

Fully-Convolutional Siamese Networks for Object Tracking

這是ECCVw 2016的一篇論文,和staple同出於牛津組。提出一種基於全卷積孿生網路的基本追蹤演算法模型,能夠超實時的幀率達到很高的精度。


專案網頁 http://www.robots.ox.ac.uk/~luca/siamese-fc.html

開原始碼: https://github.com/bertinetto/siamese-fc


出發點

針對tracking問題,傳統方法僅通過線上學習目標外觀模型來解決,如TLD,Struck,KCF等演算法。但這類 online-only approach 只從跟蹤視訊本身進行學習,限制了可以學到的模型的豐富性,得到的模型相對簡單。

而目前基於深度學習的方法,要不就是採用 shallow methods(如:correlation filters)利用網路的中間表示作為 feature;要不就是執行 SGD 演算法來微調多層網路結構。但是,利用 shallow 的方法並不能充分發揮 end-to-end 訓練的優勢,採用 SGD 的方法來微調也無法達到實時的要求。

將DL用於tracking中,有兩點制約其發展:

1、訓練資料的稀缺。由於跟蹤目標事先未知,只能通過最初的框選定,無法預先準備大量訓練資料。

2、實時的約束。對於跟蹤問題來說,基於DL的做法雖然能有效提升模型的豐富度,能夠很好的提升跟蹤的效果,但是在時效性這一方面卻做的很差,因為DL複雜的模型往往需要很大的計算量,尤其是當使用的DL模型在跟蹤的時候需要對模型進行更新的話,需要線上SGD調整網路引數,限制了速度,可能使用GPU都沒法達到實時。

SiameseFC分別針對這兩點,利用ILSVRC15 資料庫中用於目標檢測的視訊來訓練模型(離線訓練),在跟蹤時,不更新模型(也就沒有fine-tuning),保證速度夠快。成為了使用了CNN進行跟蹤,同時又具有很高的效率的跟蹤演算法。並因其速度很快,效果很好,成為之後很多演算法(例如CFNet、DCFNet)的baseline。


簡要介紹

本文將一個全卷積 Siamese 網路嵌入到一個簡單的跟蹤演算法中,使其跟蹤效果很好,速度很快(58fps)。該 Siamese 網路使用的訓練資料是 ILSVRC15 資料庫中用於目標檢測的視訊。

針對任意目標跟蹤問題,一般使用線上學習策略來學習合適的跟蹤模型,但在使用了CNN模型後,由於需要Stochastic Gradient Descent 線上更新網路權重引數,導致速度很慢。本文提出的CNN演算法是離線學習的。

演算法原理

學習任意物體的跟蹤可以通過相似性學習來解決,在深度學習中,我們一般使用 Siamese 網路來學習深度相似性函式。

圖中z代表的是模板影象,演算法中使用的是第一幀的groundtruth;x代表的是search region,代表在後面的待跟蹤幀中的候選框搜尋區域;ϕ代表的是一種特徵對映操作,將原始影象對映到特定的特徵空間,文中採用的是CNN中的卷積層和pooling層;6*6*128代表z經過ϕ後得到的特徵,是一個128通道6*6大小feature,同理,22*22*128是x經過ϕ後的特徵;後面的*代表卷積操作,讓22*22*128的feature被6*6*128的卷積核卷積,得到一個17*17的score map,代表著search region中各個位置與模板相似度值。

總體來說,卷積網路將search image作為整體輸入,直接計算兩個輸入影象的feature map的相似度匹配,節省了計算。計算得到相似度最高的位置,並反向計算出目標在原圖中的位置。

演算法本身是比較搜尋區域與目標模板的相似度,最後得到搜尋區域的score map。其實從原理上來說,這種方法和相關性濾波的方法很相似。其在搜尋區域中逐個的對目標模板進行匹配,將這種逐個平移匹配計算相似度的方法看成是一種卷積,然後在卷積結果中找到相似度值最大的點,作為新的目標的中心。

上圖所畫的ϕ其實是CNN中的一部分,並且兩個ϕ的網路結構是一樣的,這是一種典型的孿生神經網路,並且在整個模型中只有conv層和pooling層,因此這也是一種典型的全卷積(fully-convolutional)神經網路。

具體實現

損失函式

在訓練模型的時肯定需要損失函式,並通過最小化損失函式來獲取最優模型。本文演算法為了構造有效的損失函式,對搜尋區域的位置點進行了正負樣本的區分,即目標一定範圍內的點作為正樣本,這個範圍外的點作為負樣本,例如圖1中最右側生成的score map中,紅色點即正樣本,藍色點為負樣本,他們都對應於search region中的紅色矩形區域和藍色矩形區域。文章採用的是logistic loss,具體的損失函式形式如下:

對於score map中每個點的損失:

其中v是score map中每個點真實值,y∈{+1,−1}是這個點所對應的標籤。

如上圖網路結構中所示,6*6和22*22的feature map“卷積”得到17*17的score map。對於每個score map,計算其loss為每個卷積得到的6*6小圖的loss的均值。即:

這裡的uD代表score map中的位置。 卷積網路的引數由SGD方法最小化上圖損失函式得到。

訓練所用資料庫

與以前的演算法不一樣的是,訓練所用的資料庫並不是傳統的VOT,ALOV,OTB這三個跟蹤benchmark,而是ILSVRC(ImageNet Large Scale Visual Recognition Challenge)中用於視訊目標檢測中的視訊,這個資料集一共有4500個videos,視訊的每一幀都有標記的groundtruth。而VOT,ALOV,OTB這三個資料集加起來也就不到500個視訊。

實際上要先對這些資料進行處理,主要包括:

1. 扔掉一些類別: snake,train,whale,lizard 等,因為這些物體經常僅僅出現身體的某一部分,且常在影象邊緣出現;

2. 排除太大 或者 太小的物體;

3. 排除離邊界很近的物體。

網路結構

用模板的CNN特徵與搜尋影象的特徵進行卷積,得到整個影象的相似圖。網路結構如下:(有的部落格中說整個網路結構類似與AlexNet,但是沒有最後的全連線層,只有前面的卷積層和pooling層。 )

整個網路結構入上表,其中pooling層採用的是max-pooling,每個卷積層後面都有一個ReLU非線性啟用層,但是第五層沒有。另外,在訓練的時候,每個ReLU層前都使用了batch normalization,用於降低過擬合的風險。

image情況

訓練中,從標註視訊資料庫中提取exemplar和search image對,均以目標為中心。從兩幀相隔T幀以上的影象中選取(exemplar和search image從不同幀中挑出)。每個image中目標的scale被無損縱橫比地歸一化。如果結果在以目標為中心的半徑為R的圓內則記為positive。

tips:像圖中所示的那樣,對影象進行填充,而不會損失物體尺寸上的資訊。

一些實現細節

  • 訓練採用的框架是MatConvNet
  • 訓練採用的優化演算法就是batch SGD,batch大小是8
  • 跟蹤時直接對score map進行線性插值,將17*17的score map擴大為272*272,這樣原來score map中響應值最大的點對映回272*272目標位置。


評測結果

OTB2013資料庫上測試對比


VOT14資料庫上測試對比


VOT15資料庫上測試對比





相關文章