"NetVLAD"場景識別模型解讀

c論文: NetVLAD: CNN architecture for weakly supervised place recognition

來源:CVPR 2016

應用:NetVLAD是一種場景識別算法,但實際上其不僅僅能應用於場景識別,該網絡結構可以對卷積神經網絡得到的中間特徵進行編碼,並實現了BP,因此可以用於其他任何以卷積神經網絡爲基礎的識別或者檢索場景,並獲得比SIFT等爲基礎的其他特徵編碼算法更強的檢索能力。

導讀:NetVLAD是於2016年提出的一種場景識別算法,該算法改進於VLAD,VLAD算法以SIFT或該類算法爲基礎,對其提取的特徵進行編碼,得到一段較短的特徵串,NetVLAD以卷積神經網絡作爲基礎特徵提取結構,與該網絡連接,實現端到端的訓練。該論文主要有兩點貢獻:1是設計了NetVLAD網絡層,實現了其BP功能,從而可以做到端到端的訓練,2是提出了一種弱監督的Triplet loss,從而可以有效的利用帶有較多噪音的訓練數據。

NetVLAD網絡

首先給出整個網絡的結果,如下圖所示,其包含兩個部分,首部分截取自一個卷積神經網絡最後一個卷積層前,其輸出爲H*W*D(H,W爲圖像高寬,D爲特徵維度)的特徵矩陣,尾部分實際上可以理解其爲池化層,該層的設計基於VLAD,因此其命名爲NetVLAD層。

VLAD在BOF、FV、VLAD算法淺析 這裏有過簡單闡述,它實際上屬於一個特徵編碼器,被廣泛用於實體檢索與圖像分類領域。一般來說,給定長度爲N的D維圖像特徵{xi}作爲輸入,K個聚類中心(視覺詞彙){ck}作爲碼本,VLAD的輸出爲D*K維矩陣,如公式(1)所示,V爲D*K維矩陣,該矩陣會reshape爲一段向量,在normalization後作爲最終輸出。

xi(j) 是第i個descriptor的第j維特徵, ck(j)是第k個聚類中心,ak(xi)表示xi是否屬於第k個聚類中心,如果是則爲1,否則爲0。也就是說,該矩陣其實最後得到的值是各個D維特徵關於某一個聚類中心的累加殘差,然後先對每個視覺詞彙的殘差做歸一化,然後reshape爲一段向量並做整體歸一化。

要想將VLAD融入進神經網絡中實現端到端訓練,必須使其訓練過程能夠BP,也就是所有op和所有參數都可微分,其實VLAD的操作中唯一需要修改的就是其hard assignment參數ak(xi)(該參數表示xi屬於哪一個聚類中心,取值爲0或1),論文將其替換爲soft assignment,如公式(2)所示。

上一個公式通俗來說就是,xi是否屬於某一個聚類中心不再簡單輸出0,1,而是輸出一個介於0到1的概率值,該概率值反映與某一個聚類中心的相近概率,是一個正的常數,是一個衰減係數,當其爲正無窮時,該公式等價於只能取值爲0或1。

通過對公式(2)展開,可以發現項能夠消掉,因此得到公式(3),其中

NetVLAD的最終表達式如公式(4)所示。

對於每一個聚類中心k來說,都是需要訓練的參數,這三個參數相互獨立,相比於VLAD的單一參數Ck,作者認爲這種方式更具靈活性,下圖解釋了將中解耦,使得VLAD更加適應新數據集(該處由論文《“All about VLAD"》證明)。

這裏解釋一下,作者通過這個圖想證明,NetVLAD的聚類中心並不是固定在中心,因此在面對圖中所示的情況時,能夠得到更好的效果,也就是說紅綠雖然很接近,但因爲聚類中心位置的不同,會得到不好的結果,顯然星號位置爲聚類中心更好,此時二者計算得到的相似度更接近,也更符合圖中所反映的情況。

其實返過來看第一張圖,soft-assignment階段,整個過程可以公式化爲,它可以視爲分爲兩個階段,第一步:先用K個1*1的卷積核卷積矩陣,卷積矩陣參數爲,偏置項爲,產生結果第二步:上一步的結果送入求得

一種能夠處理帶噪音數據的Triplet loss(Weakly supervised triplet ranking loss)

之所以提出Weakly supervised triplet ranking loss,是因爲作者採用的訓練數據含有大量噪音,因爲某一相同場景下取到的照片不一定是同一個地方(角度原因等),所以用傳統的triple loss不可行。作者提出的這種triple loss,其實可以這樣理解,對於給定的一系列圖片,要在相鄰位置取一張與其最相似的,那麼這張最相似的只需要和給定的序列圖片最相似且與某一較遠位置的序列圖片最不相似即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章