1. 程式人生 > >[place recognition]NetVLAD: CNN architecture for weakly supervised place recognition 論文翻譯及解析(轉)

[place recognition]NetVLAD: CNN architecture for weakly supervised place recognition 論文翻譯及解析(轉)

https://blog.csdn.net/qq_32417287/article/details/80102466

abstract

本文關注的是大規模的地點識別問題,任務是從一張影象中快速準確地識別位置。
1. 提出一種卷積神經網路結構,可以實現端到端的識別。主要元件是 NetVLAD,這是一個新生成的VLAD層。NetVLAD 可以很容易地運用到任何的CNN結構中,並且可以使用BP優化。
2. 基於一種新的弱監督排序損失(a new weakly supervised ranking loss),提出了一個訓練過程,來學習得到所需要的引數。使用的資料集是Google Street View Time Machine。
3. 結果顯示我們提出的結構得到的特徵比其他非學習的影象表示(non-learnt image representations)以及現有的CNN描述子得到的特徵要好,

introduction

地點識別現在主要應用在自主駕駛,增強學習等
地點識別一個挑戰是,我們如何在一個城市或國家中識別相同的街角,即使有光照等其他因素的影響。關鍵問題是如何找到這樣的一個具有代表性並且具有區分性的地方。

傳統做法是將地點識別問題看作例項檢索任務,使用具有區域性不變性的特徵(SIFT)來表示每一個影象,然後將特徵聚合成一個向量表示,方法有 BOW, VLAD, FV等。近些年,CNNs的出現為多種類級的識別任務提供了更強效能的影象表示。

雖然CNN能夠用在較大的資料集上,但是如果直接遷移使用CNN,那麼它作為一個黑盒進行特徵提取,對於例項識別任務會在效能上有限制。所以本文的任務是探究這種效能上的差距能夠使用CNN特徵減小。主要的問題是:

  • 如何定義一個好的CNN結構,
  • 怎樣得到足夠多的標註資料
  • 怎麼訓練來提升結構效能

第一,基於現有的神經網路架構,本文提出一種一個帶有VLAD層的卷積神經網路結構,NetVLAD,可以被加到任何的CNN結構中,並且可以使用BP演算法優化,然後使用PCA降維得到compact descriptor of the image。

第二,為了訓練網路,使用 the Google Street View Time Machine 收集了大量的不同時間不同角度相同地點的全景圖。通過這些資料進行訓練是弱監督學習:兩幅相似的全景圖是通過他們的GPS特徵近似得到的,但是並不知道影象中的哪個部分決定了這兩幅全景圖是同一個地方。

第三,使用了端到端的模式來學習得到引數。得到的特徵對於視角和光照情況具有魯棒性。

method overview

將地點識別問題看作是影象檢索問題,有未知地點的影象作為查詢影象,檢索一個地理標註的資料集合,然後返回排序較高的影象。

影象特徵提取: offline
待查詢影象特徵: online
goal:找到與待查詢影象最近的影象,歐氏距離 Euclidean distance , 也有其他的距離計算方法,但是本文采用的是歐氏距離。

本文提出以端到端的方式學習影象的特徵表示 ,特徵表示通過 引數化。 ,歐式距離為

Deep architecture for place recognition

本章主要討論

提取影象特徵最好使得這些特徵對一些特性具有魯棒性,對於光照以及視角轉變的魯棒性是由特徵描述子決定,尺度不變性是通過在多個尺度下提取描述子進行保證的。

本文設計的CNN結構模擬的是標準的檢索過程。
第一步、去掉CNN的最後一層,把它作為描述子,輸出是 的向量,可以將其看作一個D維度的描述子,一共由 個。
第二部、設計一個新的池化層 NetVLAD(受VLAD啟發)對提取到的描述子進行池化,使其成為一個固定的影象表示,引數是通關過BP學習得到的。

NetVLAD: A Generalized VLAD layer ()

BoW 統計的是 visual words 的數量,VLAD 統計的是 每個visual word 的殘差和(sum of residuals)(描述子和其相應的聚類中心的差值)

input:
cluster centers(visual words):
output image representation

is 1 if cluster is the closest cluster to descriptor and 0 otherwise

也就是說,VLAD的向量V儲存的是所有的x在其對應的聚類中上的殘差和

找到每個聚類中心中的所有的X,然後以該聚類中心為基礎,計算所有的殘差和:遍歷所有的樣本點,利用a(x) 決定是否屬於該樣本點,然後計算相應的殘差,最後求和,這樣得到了一個聚類中心的殘差和,就是得到了V的一行。

遍歷k個聚類中心,得到 V的k行。

最後對V進行 a vector 處理,然後進行L2歸一化。

要通過BP對引數進行優化,就需要對所有引數以及輸入都是可微分的,所有對 進行修改
這裡寫圖片描述
其中 是一個正數,控制學習速率
將(2)中的平方展開, 會消失,得到
這裡寫圖片描述

新的到的NetVLAD 依賴於三分引數 ,使其靈活性更好。
圖2 將NetVLAD分解成一個CNN層和一個有向五環圖。
這裡寫圖片描述
The output after normalization is a descriptor.
這裡寫圖片描述

Max pooling (fmax)

在實驗中對 個D維的特徵使用了最大池化,產生一個D維度的輸出,然後使用

Learning from Time Machine data

本章主要是怎樣通過端到端的學習得到涉及到的引數。

  • 怎樣得到足夠多的帶有標記的資料
    通過 the Google Street View Time Machine 得到大量的弱監督影象。這些影象僅僅有地理位置的標記,表示他們是相近的位置,但是沒有影象本身上的近似,所以是弱監督問題。
    兩個地理位置相近的影象能相互替代(two geographically close perspective images do not necessarily depict the same objects since they could be facing different directions or occlusions could take place)。
    對於一個給定的訓練圖片,GPS資訊的作用:潛在的正確項 (距離較近),絕對的錯誤項 (距離很遠)

  • 怎樣的損失 loss 是合適的
    設計了一個弱監督三元組損失 ( a new weakly supervised triplet ranking loss) 來解決資料的不完整以及噪聲
    給定一個影象,目的是找出與其最為近似的影象,也就是說找到歐氏距離最小的影象與其匹配。
    將其轉化為一個三元組

從Google Street View Time Machine中得到訓練集
至少有一個與查詢影象匹配的正確項。
這裡寫圖片描述

得到損失函式
這裡寫圖片描述

if the margin between the distance to the negative image and to the best matching positive is violated, the loss is proportional to the amount of violation.
通過隨機梯度下降的方法訓練得到

Experiments

Datasets and evaluation methodology

datasets:

  • Pittsburgh (Pitts250k)
  • Tokyo 24/7
  • Evaluation metric

Implementation details:

  • two base architectures: AlexNet and VGG-16
  • both are cropped at the last convolutional layer (conv5), before ReLU
  • K = 64 resulting in 16k and 32k-D image representations for the two base architectures, respectively

Results and discussion

  • Baselines and state-of-the-art.
  • Dimensionality reduction. PCA and whitening followed by L2-normalization
  • Benefits of end-to-end training for place recognition: first, our approach can learn rich yet compact image representations for place recognition. second, the popular idea of using pretrained networks “off-the-shelf” is sub-optimal as the networks trained for object or scene classification are not necessary suitable for the end-task of place recognition. 在分類任務上預訓練的網路對於影象檢索任務不是最好的
  • Comparison with state-of-the-art.
  • VLAD versus Max.
  • Which layers should be trained?
  • Importance of Time Machine training

Qualitative evaluation

Image retrieval

Conclusions

提出了一種端到端的學習方式進行地點識別,使用的是卷積神經網路,資料集(Street View Time Machine data)是弱監督的。
兩個重要的元件:

  • the NetVLAD pooling layer
  • weakly supervised ranking loss

NetVLAD可以容易地用於其他的CNN結構中。
The weakly supervised ranking loss 作用很大 opens up the possibility of end-to-end learning for other ranking tasks where large amounts of weakly labelled data are available, for example, images described with natural language


paper: NetVLAD: CNN architecture for weakly supervised place recognition

文章來源:https://blog.csdn.net/zshluckydogs/article/details/82415393


關鍵詞:NetVLAD Pooling layer                  triplet-loss                     fmax function                   weakly-supervised-learning

摘要:

針對大規模的位置識別問題(place recognition),本文設計了一種NetVLAD結構,在保留經典VLAD演算法優點的同時又可以利用神經網路可以反饋學習引數的優點,從而生成即優於VLAD影象描述子又優於神經網路的原始feature-map層特徵向量的影象描述子。在Oxford 5k Paris 6k  Holidays 上的mAP分別是63.5%,73.5%,79.9%,其中對Oxford 5k的提升達到了20%,可以說是一種很優秀的演算法了。

補充兩點:一、關於vlad可以參考我的部落格https://blog.csdn.net/zshluckydogs/article/details/81003966

                   二、MAP(Mean Average Precision)盜一張圖

寫在前面:

本文的主要工作由兩部分組成:

1、NetVLAD的結構

2、triplet-loss函式

論文作者轉化問題的思想和構造數學模型的能力值得我們學習借鑑。作者沒有直接訓練識別位置的網路,而是把位置識別問題轉化成了基於內容的影象實體檢索。雖然這種方法不是作者原創,只是藉此說明我們在解決一個很抽象很不熟悉的問題時儘量把它轉化為我們熟悉的問題,這樣會大大提高解決問題的效率。如果你遇到了一個無法轉化從未見過的問題,如果你解決了,那你可以發論文了。。23333

還有就是作者獨立思考的能力,VLAD很成熟很多人知道,CNN也是耳熟能詳,但是能夠把兩者結合起來又用來解決實際問題的人就很少了。

上面兩段讀者可以自行忽略。。。。。。。。。。

進入正題:

第一個問題:為什麼是弱監督學習?

這個跟資料集有關。作者訓練用的是Google Street View Time Machine,這個資料集中的影象都有一個GPS標籤標記影象的地理位置,但是由於精度等問題,這只是地圖上的一個較為接近的位置,可能跟實際位置有誤差。用過高德、百度地圖等導航軟體的小夥伴應該有所體會,GPS總是會有些許誤差。但是查詢影象是通過camera phone得到的,有較為準確的位置資訊,所以它可以用來識別距離較近的全景圖,但是無法給出部分場景之間的對應關係。(which can be used to identify close-by panoramas but does not provide correspondences between parts of the depicted scenes.)原文在括號內,博主是這樣理解的,有不同理解的可以跟博主討論。因此,在地理位置上接近的兩張影象,由於拍攝角度和遮擋問題,影象的內容可以不同,但只要有相同的GPS位置標記即可。這區別於傳統的影象檢索演算法要求影象內容必須是相同的,所以GPS標記的樣本資料只能做弱監督的學習,提供潛在的正樣本(和查詢影象在地理位置上接近的樣本)和確定的負樣本(和查詢影象在地理位置上相距甚遠的樣本)。

第二個問題:VLAD有什麼引數是可以學習的?

 

神經網路的學習過程也即是卷積層引數的自我更新過程。損失函式是對問題模型的數學表示,用來評估一個網路模型的好壞並且控制權值的更新方向(梯度)。最好的模型即是問題的最優解是在損失函式取得最優解時得到的(此時網路收斂)。

對於VLAD當我們通過K-means訓練出碼書時已經完成了相應的最優化問題,此時得到的K-centroids是一個最優解。如果要把VLAD加入到CNN網路中,那麼VLAD必須寫成可微的函式,並且要設計新的損失函式用來評估模型和引數學習。對於VLAD演算法來說,向量 V 如果和第k個聚類中心的距離最近,他就會被分配到k,這是一個0或1的硬分配,不可微。為了解決這個問題作者提出了一種soft-assignment的演算法。

公式如下:

\bar{a_{k}}\left ( xi \right )=\frac{e^{-\alpha \left \| x_{i} -c_{k}\right \|^{2}}}{\sum _{k^{'}}e^{-\alpha \left \| x_{i}-c_{k^{i}} \right \|^{2}}}     (1)                               

如果你對softMax函式有所瞭解的話,這個公式是很容易理解的。雖然xi仍然是分配到了它最有可能屬於的聚類中心,但是這個用來判斷屬於關係的數值變成了一個連續可微的值,滿足CNN反饋學習的要求。

我們對公式(1)展開令W_{k}=2\alpha c_{k}b_{k}=-\alpha \left \| c_{k} \right \|^{2},公式(1)可以寫成如下公式(2)

\bar{a_{k}}\left ( xi \right )=\frac{e^{ W_{k}^{T}x_{i}+b_{k}}}{\sum _{k^{'}}e^{ W_{k^{'}}^{T}x_{i}+b_{k^{'}}}}            (2)

 

VLAD就可以寫成下面公式(3)的形式

 

V\left ( j,k \right )=\sum _{i=1}^{N}\frac{e^{ W_{k}^{T}x_{i}+b_{k}}}{\sum _{k^{'}}e^{ W_{k^{'}}^{T}x_{i}+b_{k^{'}}}}\left ( x_{i} (j)-c_{k}(j)\right )    (3)

引數\left \{ W_{k} \right \},\left \{ b_{k} \right \},\left \{ c_{k} \right \},可以通過網路訓練學習得到,然後之後的處理步驟與VLAD類似。然後公式(3)可以看作一個卷積層加一個softMax層。

上圖是NetVLAD的框架圖,左邊是一個傳統的卷積神經網路,但是沒有分類層,在卷積層後接NetVLAD layer,來自CNN的featureMap x 輸入到NetVLAD layer中,做一次卷積和soft-max得到x的最可能屬於的聚類中心,然後在VLAD core中按照VLAD的方式對x進行處理。最後做兩次歸一化得到最終的VLAD特徵向量。

Conclude: NetVLAD層的W和b可以通過網路學習得到。W和b又跟聚類中心有關,所以網路最終是通過調整聚類中心的值完成引數的學習調整。相當於在原來做完K-means的基礎上進一步的優化調整。

 

第三個問題:loss-function

 

確切的損失函式可以進行引數的調整,以及模型的調優。類似face Net的三元組損失函式,作者提出了triplet-loss-function,查詢影象和潛在正樣本的距離小於和確定的負樣本的距離。用公式(5)描述如下:

p_{i_{*}}^{q}=argmin. d_{\theta }\left ( q,p_{i}^{q} \right )          (4)

d_{\theta }\left ( q,p_{i_{*}}^{q} \right )<d_{\theta }\left ( q,n_{j}^{q} \right ),\forall j      (5)

L_{\theta }=\sum _{j}l\left ( min_{i} d_{\theta }^{2}(q,p_{i}^{q})+m-d_{\theta }^{2}(q,n_{j}^{q})\right )    (6)

因為潛在的正樣本有很多,為了避免衝突和麻煩,我們選取和查詢影象距離最近的正樣本,損失函式可以寫成公式(6)的形式,l\left ( x \right )=max(x,0),m 是一個常數,之後通過優化L_{\theta }訓練網路學習引數。

 

 

至此,整個網路的訓練過程就完整了。

 

博主實現後會寫具體的實施部署過程。