介紹:算法
Siamese網絡是一種類似性度量方法,當類別數多,但每一個類別的樣本數量少的狀況下可用於類別的識別、分類等。傳統的用於區分的分類方法是須要確切的知道每一個樣本屬於哪一個類,須要針對每一個樣本有確切的標籤。並且相對來講標籤的數量是不會太多的。當類別數量過多,每一個類別的樣本數量又相對較少的狀況下,這些方法就不那麼適用了。其實也很好理解,對於整個數據集來講,咱們的數據量是有的,可是對於每一個類別來講,能夠只有幾個樣本,那麼用分類算法去作的話,因爲每一個類別的樣本太少,咱們根本訓練不出什麼好的結果,因此只能去找個新的方法來對這種數據集進行訓練,從而提出了siamese網絡。siamese網絡從數據中去學習一個類似性度量,用這個學習出來的度量去比較和匹配新的未知類別的樣本。這個方法能被應用於那些類別數多或者整個訓練樣本沒法用於以前方法訓練的分類問題。網絡
原理:函數
主要思想是經過一個函數將輸入映射到目標空間,在目標空間使用簡單的距離(歐式距離等)進行對比類似度。在訓練階段去最小化來自相同類別的一對樣本的損失函數值,最大化來自不一樣類別的一堆樣本的損失函數值學習
給定一組映射函數,其中參數爲W,咱們的目的就是去找一組參數W。使得當和屬於同一個類別的時候,類似性度量是一個較小的值,當和屬於不一樣的類別的時候,類似性度量較大。這個系統是用訓練集中的成對樣本進行訓練。當和來自相同類別的時候,最小化損失函數,當和來自不一樣類別的時候,最大化spa
最終思想:設計
其實講了這麼多,主要思想就是三點:
一、輸入再也不是單個樣本,而是一對樣本,再也不給單個的樣本確切的標籤,並且給定一對樣本是否來自同一個類的標籤,是就是0,不是就是1
二、設計了兩個如出一轍的網絡,網絡共享權值W,對輸出進行了距離度量,能夠說l一、l2等。
三、針對輸入的樣本對是否來自同一個類別設計了損失函數,損失函數形式有點相似交叉熵損失: blog
最後使用得到的損失函數,使用梯度反傳去更新兩個網絡共享的權值W。圖片
在我我的理解,Siamese就是一個類似度比較(模板匹配也能夠,就是這類東西)算法,比較目標幀中和模板圖片的類似程度,給出類似度最大的位置,就是目標幀中目標所在的位置。it
用做者的話說就是離線訓練一個通用的類似學習問題,可以用在在線跟蹤上面。模板