這篇paper主要是利用Siamese網絡做人臉相似度判別,可以用於人臉識別哦,因為我覺得這篇文獻的網絡結構圖畫的比較漂亮,比較容易看懂,所以就用這一篇文章,簡單講解Siamese網絡的思想。其網絡如下圖所示,有兩個分支分別輸入圖片x1、x2(須知:這兩個分支其實是相同的,同一個cnn模型,同樣的參數,文獻只是為了方便閱讀,所以才畫成兩個分支,因為他們采用的是權重共享),包含卷積、池化等相關運算。雙分支有點難理解,我們還是用單分支來理解吧,說的簡單一點把,siamese 網絡分成前半部分、后半部分。前半部分用於特征提取,我們可以讓兩張圖片,分別輸入我們這個網絡的前半部分,然后分別得到一個輸出特征向量Gw(x1)、Gw(x2),接着我們構造兩個特征向量距離度量,作為兩張圖片的相似度計算函數(如公式1所示)。
Siamese網絡
如上圖所示,我們要判斷圖片X1和X2是否相似,於是我們構建了一個網絡映射函數Gw(x),然后把x1、x2分別作為參數自變量,我們可以得到Gw(x1)、Gw(x2),也就是得到用於評價X1、X2是否相似的特征向量。然后我們的目的就是要使得函數:
然后利用這個損失函數,對網絡進行訓練,就可以判別兩張人臉的相似度了。上面過程中網絡的兩個分支所用的是同一個函數,也就是權值、網絡結構是同一個,我們完全可以把Gw(x)看成是一個特征提取器,因此siamese network網絡其實就是一個提取一直圖片的特征算子的過程,然后再網絡的最后一層,是用於定義了特征向量間相似度的損失函數