【模型解读】深度学习网络之Siamese Network网络
文章首發于微信公眾號《有三AI》
【模型解讀】深度學習網絡只能有一個輸入嗎
繼續我們之前的專欄《模型解讀》,今天說多輸入網絡,很久沒寫了因為實在是有更重要的事情。
平常我們所見的深度學習模型,都是輸入一個圖像或者視頻序列,輸出分類,分割,目標檢測等結果,但是還有一種模型需要輸入兩張,或者多張圖片,這就是多輸入網絡結構。
作者?|?言有三
編輯?|?言有三
?
01?多輸入網絡的應用背景
首先我們說說在什么情況下,需要多個輸入,只以純圖像應用為例。
1.1?圖像驗證與匹對
早在上個世紀90年代的時候,LeCun等研究人員就開始利用神經網絡陸續進行一些研究,比如我們熟知的大名鼎鼎的LeNet5,但這絕不是唯一,今天我們來說他們的另一種網絡結構,Siamese?Network,網絡細節我們后面這些,這里先說應用背景。
簽名驗證:
無獨有偶,還是從手寫字開始,同樣是用于銀行,用于驗證簽名是否一致。兩個網絡都是同樣規格的圖像輸入,最后輸出一個相似度。
看到這里,你應該能夠想起來如今它的更加廣泛的應用,沒錯,就是人臉驗證,或者說人臉識別了。
其實用的時候都不需要兩個輸入,因為可以建立一個離線數據集專門用于檢索匹配。
而且,你可以在此基礎上拓展出非常多的玩法,什么夫妻臉之類的。
1.2?目標跟蹤
目標跟蹤是一個什么過程?就是在時序幀中搜索目標的過程,本質上就是檢索。
不管是傳統的目標跟蹤中的生成模型和判別模型,還是用深度學習來做目標跟蹤,本質上都是來求取目標區域與搜索區域的相似度,這就是典型的多輸入。
用深度學習來做,就是一個小圖像和一個大圖像分別輸入網絡,輸出相似度。
1.3?排序
還有一類問題,可以用多輸入網絡來做,那就是排序。有的時候,我們很難估計一個人的實際年齡或者顏值,但是估計相對年齡和顏值就簡單多了。
而且,在此之上,做些什么誰更可愛,誰更成熟之類的,可以想出無數花樣,解釋的通就行了。
?
02?多輸入網絡
在這里,給大家介紹兩個常見的網絡,一個是siamese網絡,一個是triplet網絡。
2.1?siamese?network????????????????????????
Siamese本意是“暹羅”人或“泰國”人,后在英語中指“孿生”、“連體”,這是一個外來詞,來源于十九世紀泰國出生的一對連體嬰兒,具體的故事我們就不說了,挺有看頭,大家可以自己去了解。
顧名思義,有兩個輸入,兩個網絡,根據這兩個網絡是否共享權重,可以分為真孿生網絡siamese?network和偽孿生網絡pseudo-siamese?network。
真孿生網絡siamese?network的結構示意圖如下:
偽孿生網絡pseudo-siamese?network的結構示意圖如下:
可以看出差別就在于是否共享權重,loss的選擇就多了,相似度計算方法就多少,它的計算方法就有多少,交叉熵,歐式距離,余弦距離等都很常用。
那么是否需要共享權重呢?這就看研究的問題而定了,很明顯不共享權重有更大的發揮空間,這個問題本文不展開講。
2.2?triplet?network
如果將上面的二輸入拓展為三輸入怎么樣?做人臉識別的同學想必不陌生。
沒錯,就是triplet?network。
大家都知道,訓練人臉識別網絡的時候需要輸入圖像對來判斷是不是同一個人,loss是兩個樣本之間的相似度。不過,光是相似度是不夠的。
我們以前有一篇文章,專門講述了人臉識別中的softmax損失的變種,可以回顧。
【技術綜述】一文道盡softmax loss及其變種
大家在研究的是同一個問題,如果想得到更優良的性能,不僅要將正負樣本區分開,還要讓類內更加緊湊(方差小),類間更加疏遠(方差大)。
triplet?network將輸入改成三個,訓練的時候使用一個正例+兩個負例,或者一個負例+兩個正例。
訓練的目標就是上面的:同類別間的距離盡可能的小,不同類別間的距離盡可能的大。
基準樣本x和負樣本x-之間的距離定義如下:
基準樣本x和正樣本x+之間的距離定義如下:
然后優化目標就等于:
我們假如網絡訓練的特別好,令margin=1,此時
那么上面的距離:
損失也就趨向于0,當然這種要求是不可能達到的,也不合理,因為有的正樣本的確不那么相似,有的負樣本的確很相似,強行學習過擬合風險就增加了。
所以實際用的時候,這個margin應該取一個合理的值,而且樣本的選擇也很有技巧,所以triplet?network沒有看起來那么好訓練。Anyway,這還是很優雅的思想的。
今天就這么多,更多的并行的輸入也是有的,就作為大家的延伸閱讀吧。
?
總結
好像文章越寫越簡單了,不過這是好事。
咱們這個系列未完待續,盡情期待,不要忘了領取我們的卡片噢。
?
深度學習模型
?
轉載文章請后臺聯系
侵權必究
本系列的完整目錄:
【模型解讀】從LeNet到VGG,看卷積+池化串聯的網絡結構
【模型解讀】network in network中的1*1卷積,你懂了嗎
【模型解讀】GoogLeNet中的inception結構,你看懂了嗎
【模型解讀】說說移動端基準模型MobileNets
【模型解讀】pooling去哪兒了?
【模型解讀】resnet中的殘差連接,你確定真的看懂了?
【模型解讀】“不正經”的卷積神經網絡
【模型解讀】“全連接”的卷積網絡,有什么好?
【模型解讀】從“局部連接”回到“全連接”的神經網絡
【模型解讀】深度學習網絡只能有一個輸入嗎
【模型解讀】從2D卷積到3D卷積,都有什么不一樣
【模型解讀】淺析RNN到LSTM
感謝各位看官的耐心閱讀,不足之處希望多多指教。后續內容將會不定期奉上,歡迎大家關注有三公眾號 有三AI!
?
總結
以上是生活随笔為你收集整理的【模型解读】深度学习网络之Siamese Network网络的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【AI白身境】深度学习中的数据可视化
- 下一篇: 【完结】听完这12次分享,你应该完成了A