Siamese Network

 

1、算法整體框架

 

 

 



圖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)神經網絡。框架

 

 

 

2、具體實現

一、損失函數

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

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


其中vv是score map中每一個點真實值,y{+1,1}y∈{+1,−1}是這個點所對應的標籤。 
上面的是score map中每一個點的loss值,而對於score map總體的loss,則採用的是所有點的loss的均值。即: 
atom

 
L(y,v)=1|D|uDl(y[u],v[u])


這裏的uDu∈D表明score map中的位置。 
有了損失函數,那就能夠用SGD對模型進行訓練啦~~
spa

相關文章
相關標籤/搜索