Conditional Similarity Networks 閱讀筆記
論文:Conditional Similarity Networks
作者:Andreas Veit, Serge Belongie, and Theofanis Karaletsos
單位:Department of Computer Science & Cornell Tech, Cornell University, Uber AI Labs, and Computational Biology, Sloan Kettering Institute
鏈接:https://arxiv.org/pdf/1603.07810
本文作者:黃瑾
前言:這篇文章提出了一個新奇的想法,在考慮圖片之間的相似度時,不能單一地使用一種相似度的評分方法,考慮給定不同思考角度,圖片之間會顯示出不同的相似性。近些年來,這種多視角任務比較熱門,它一定程度上對深度學習做出了解釋。我仔細研讀了這篇論文,總結如下,希望能和大家多多交流。
一、寫作動機
在計算機視覺方面,理解圖片之間的視覺相似度是一個很關鍵的任務。通常情況下,可使用卷積神經網路將圖片映射為特定維度的特徵向量,然後通過三元組的方式學習網路結構用以判斷圖片之間的相似度。然而,事物是有多種屬性的,在不同屬性上,事物之間的相似性也是不同的。例如,紅色的T恤衫和紅色的高跟鞋顏色相似度高,而高跟鞋與板鞋在種類方面更相似。
二、構建條件相似網路1、構建條件相似三元組
定義給定條件C的情況下,所有的三元組集合為:
這個三元組集合是由多個 {參照圖片,更不相關圖片,更相關圖} 組成的。2、學習模型參數
模型中使用的圖像的特徵空間是由函數得到的,本文使用的函數是卷積神經網路。根據三元組的定義可以得到三元組的損失函數為:
表示兩個圖像i,j的隱含表示的歐幾里得距離,標量h 防止產生平凡解。
上面的公式只是定義了相似模型,為了定義條件相似模型,需要引入多任務參數m,m的每一列都是一種條件的隱含表示,這種關係是通過模型訓練學習得到的。因此在考慮條件的情況下,兩個圖像的距離函數定義為:
可以理解為圖像和條件的相似度,如果和、和的相似度都很大,則和在條件c下的相似度很大,即更接近0。因此最終的三元組的損失函數為:還可以進一步考慮參數的正則化問題。三、實驗
1、數據集
作者使用了兩個數據集:由Bernhardsson整理的字體數據集 和 Zappos50K shoe數據集。在訓練和評估三元組網路時,作者需要從數據集中抽取三元組集合(前文定義的三元組集合)。對於字體數據集,有兩種條件:顏色和字體,那麼三元組中有兩個是相同顏色或字體的圖片,剩下一個則不同。同理可以得到Zappos數據集在鞋子三個屬性上的三元組。
作者將數據集中的圖片按照7:1:2的比例切分訓練集、驗證集和測試集,然後在三個集合上按上述方法構建三元組集合。
2、對比模型和模型的變形
- 標準三元組:不考慮不同條件的情況,即損失函數為本文第二個公式。
- 任務明確的三元組網路集合:對於每一種條件,訓練一個單獨的網路結構。
- 模型變形一,CSN參數訓練固定且不交叉:先通過卷積神經網路學習得到圖片的隱含表示,固定這些表示,然後訓練得到條件相似網路的參數。
- 模型變形二,CSN參數交叉學習,同時訓練學習得到圖片隱含表示的參數和條件相似網路的參數。
3、實驗結果
四、總結
本文的主要貢獻有:
- 定義了條件相似網路結構,能在學習非線性隱含表示(使用卷積神經網路)的同時,使用一套特徵向量聯合訓練學習多種條件下的圖片相似性。
- 在兩個公開數據集上完成了模型測試,並取得了不錯的結果。
- 作者認為它的方法一定程度上使得圖片隱含表示具有可解釋性。
推薦閱讀:
※cnn分類時圖片較大物體較圖片較小,大約1/16,要怎麼做?
※Krizhevsky等人是怎麼想到在CNN里用Dropout和ReLu的?
※請問各位大大現在的放療計劃系統在做自動化計劃時用的是神經網路嗎?
※請問CNN 中的 maxpool 到底是什麼原理,為什麼要取最大值,取最大值的原理是什麼?謝謝。
※如何用FPGA加速卷積神經網路(CNN)?