基於全連接孿生網絡的目標跟蹤(siamese-fc)

Fully-Convolutional Siamese Networks for Object Tracking

這兩年可以說deeplearning已經佔領了visual object tracking這個領域,但是對於跟蹤問題來說,這些基於DL的做法雖然能夠很好的提升跟蹤的效果,但是在時效性這一方面卻做的很差,這是因爲DL複雜的模型往往需要很大的計算量,尤其是當使用的DL模型在跟蹤的時候對模型進行更新的話,可能使用GPU都沒法達到實時。今年出現了一些使用CNN進行跟蹤,同時又具有很高的效率的跟蹤算法,比如今年ECCV的GOTURN(我的這篇博客裏進行了介紹,http://blog.csdn.net/autocyz/article/details/52648776),以及我將要介紹的這篇《Fully-Convolutional Siamese Networks for Object Tracking》。



文章題目叫:《Fully-Convolutional Siamese Networks for Object Tracking》
算法主頁:http://www.robots.ox.ac.uk/~luca/siamese-fc.html
code:https://github.com/bertinetto/siamese-fc

一、算法總體框架



圖1 算法總體框架

圖中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中各個位置與模板相似度值。

從圖一和文章題目我們可以很容易理解算法的框架,算法本身是比較搜索區域與目標模板的相似度,最後得到搜索去區域的score map。其實從原理上來說,這種方法和相關性濾波的方法很相似。其在搜索區域中逐點的目標模板進行匹配,將這種逐點平移匹配計算相似度的方法看成是一種卷積,然後在卷積結果中找到相似度值最大的點,作爲新的目標的中心。

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

二、具體實現

1、損失函數

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

l(y,v)=log(1+exp(yv))

其中v 是score map中每個點真實值,y{+1,1} 是這個點所對應的標籤。
上面的是score map中每個點的loss值,而對於score map整體的loss,則採用的是全部點的loss的均值。即:
L(y,v)=1|D|uDl(y[u],v[u])

這裏的uD 代表score map中的位置。
有了損失函數,那就可以用SGD對模型進行訓練啦~~

2、訓練所用數據庫

與以前的算法不一樣的是,起訓練的數據庫並不是傳統的VOT,ALOV,OTB這三個跟蹤benchmark,而是ILSVRC(ImageNet Large Scale Visual Recognition Challenge)中用於視頻目標檢測中的視頻,這個數據集一共有4500個videos,4500個,4500….視頻的每一幀都有標記的groundtruth,4500是什麼概念呢,VOT,ALOV,OTB這三個數據集加起來也就不到500個視頻,500個,500…..

3、網絡結構

整個網絡結構類似與AlexNet,但是沒有最後的全連接層,只有前面的卷積層和pooling層。



圖2 網絡結構

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

4、一些實現細節

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

5、算法測評結果



圖3 OTB13



圖3 VOT14

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