圖像檢索之Large-Scale Image Retrieval with Attentive Deep Local Features

寫在前面:

  1. 文章僅是個人學習筆記,如有不當,評論儘管砸來;
  2. 文章較長,建議先碼後看。

Abstract

本文提出一種用於大規模圖像檢索的注意力局部特徵表達,稱之為DELF(DEep Local Feature)。這種新型特徵是從訓練好的卷積神經網路中提取出來的,該卷積網路是在一個地標數據上使用圖像級的標註完成訓練的。為了能夠獲得具有語義信息的、對圖像檢索有利的局部特徵,本文還提出一種用於關鍵點提取的注意力機制,該機制和特徵表達共享大部分的網路層。本文的方法可以取代圖像檢索中其他的關鍵點檢測和表達方法,獲得更為準確的特徵匹配和幾何驗證。本文的系統通過生成可信的置信得分來減少假陽率,這在當資料庫中沒有和查詢圖像相匹配的結果時具有較好的魯棒性。我們使用一種新的大規模數據集,即Google Landmarks來評估我們提出的方法,該數據集的查詢圖像和資料庫圖像可能有背景複雜、部分遮擋、多目標、多尺度目標等問題,因此挑戰性更強。通過實驗發現,本文提出的方法在大規模數據集上的性能超過目前的全局和局部表達。代碼和數據集見tensorflow/models

1. Introduction

大規模的圖像檢索是計算機視覺中的一項基本任務,因為它和很多實際應用,諸如目標檢測、視覺位置識別、產品識別等都直接相關。近幾年圖像檢索系統發生了巨大的變化,從最初的手工特徵和索引演算法[22,33,27,16],到最近的從卷積神經網路(CNNs)建立圖像全局表達[2,29,11]。

儘管最近的圖像檢索使用基於CNN的全局表達已經在中小規模的數據上有了不錯的結果,但當數據集是大規模並且有背景複雜、 occlusion、視角和光照變化等因素影響時,其性能就受到了限制。全局表達不能很好的完成圖像間塊(patch-level)的匹配,這就使得在有閉塞(occlusion)和背景複雜時,很難完成部分匹配的圖像檢索。最近,[12,42,40]通過CNN提取局部特徵實現塊級的匹配。然而,這些方法都不是專門針對圖像檢索任務而設計的,因此它們在檢測具有語義信息的特徵方面其性能就受限,在實際應用中得到的準確率也不高。

大部分的圖像檢索演算法是在中小規模的數據上進行評估的,這些數據集可能只有55個[27,28]或500個[16]查詢圖像,而且這些數據集中圖像在地標建築位置和類型的多樣性也不夠。因此,我們相信,如果增加更廣泛、更具有挑戰性的圖像,可以改進演算法性能和評估方法,得到更有統計意義的結果。

本文的主要目的是使用一種全新的基於CNN的特徵表達來構建大規模圖像檢索系統。為此,我們先介紹了一種新的大規模數據集, Google-Landmarks,它是由近13K種地標組成的超過1M張地標圖像。該數據集涵蓋世界上的很多地區,因此它比現存的數據集在多樣性和廣泛性方面更強。查詢集是由另外的100K張圖像組成,我們還增加了與資料庫圖像沒有匹配的圖像,來增加我們數據集的挑戰性,這就對圖像檢索系統的魯棒性要求更高。

之後,我們提出一種基於CNN的注意力局部特徵表達,該CNN網路是使用圖像級的類別標籤進行訓練的,而沒有使用目標級和塊級的標註信息。我們稱這種新的特徵表達為DELF(DEep Local Feature),特徵提取與圖像檢索過程如圖1所示。

在我們的方法中,注意力模型與提出的表達緊密結合,它重新利用相同的CNN結構,使用很少的計算生成特徵得分(受目標檢測[30]的啟發)。這樣就可以在一次前向傳播完成局部表達和關鍵點的提取。和現存的全局和局部表達相比,我們提出的基於DELF的圖像檢索系統獲得了更好的表現性能。

2. Related Work

有很多標準的數據集可以對圖像檢索的性能進行評估。Oxford5k[27]是5,062張Oxford的建築圖像,有55張查詢圖像。Paris6k[28]是由6,412張Paris建築組成,也有55張查詢圖像。Oxford105k 和 Paris106k是使用從Flickr100k[27]數據集擴充的100K張圖像。此外,Holidays數據集[16]是從個人假期相冊中獲取的有500張查詢圖像的1,491張圖像。這三種數據集的量都很小,特別是查詢圖像,這就很難保證在這些數據集上的測試性能。儘管Pitts250k[35]數據量更大,但它是針對特定的視覺場景,對普遍的圖像檢索任務來說可能不是很合適。

信息檢索是近十年來的一個熱門研究問題。可以從[43]的最近調查中發現。早期的檢索系統主要依靠人工提取的局部特徵[22,5,8],再利用近似最近鄰搜索演算法,如KD樹和辭彙樹[6,25]。儘管在今天,當檢索系統需要更高的準確率時,也會使用這種基於特徵的方法和幾何重排來獲得更好的性能。

最近,很多研究開始關注將局部特徵進行聚合,如VLAD[18]和Fisher Vector (FV) [19]。這種全局表達的主要優點是可以利用緊湊的索引實現高性能的圖像檢索。

近幾年,也有提出利用預訓練的[4,34]或者學習之後的[2,29,11]CNN網路來提取全局表達。這些全局表達通常是使用triplet loss來完成訓練,這樣可以實現相關與不相關圖像的排序。有一些檢索演算法是利用從CNN獲得的深度局部特徵來代替手工特徵,如VLAD 或 FV[24,36]。也有一些其他的工作,利用這種深度局部特徵來重新評估並且提取不同的特徵聚合[3,21]。

CNNs也可以被用來對局部圖像特徵進行檢測、表達和比較。Verdie等人[37]學習一種用於可重複的關鍵點檢測回歸法。 Yi等人[41]提出一種基於CNN的通用技術,用於估計局部特徵的規範方向,並且已經成功的運用到不同的表達中。 MatchNet[12]和DeepCompare [42]提出聯合學習塊表達和相關的指標。最近,LIFT [40]提出端到端的結構來檢測關鍵點、估計方向和計算表達。與我們的研究不同的是,這些方法都不是專門為圖像檢索的應用而設計的,因此它們都沒有學習具有語義信息的特徵。

很多視覺識別任務使用基於深度神經網路的視覺注意力,包括目標檢測[45]、語義分割[14]、圖像說明[38]、視覺問答[39]等。然而,還沒有應用視覺注意力來學慣用於圖像檢索的視覺特徵。

3. Google-Landmarks Dataset

我們是按照[44]介紹的演算法來構建我們的數據集。和現存的圖像檢索數據集[27,28,16]相比,這份新的數據集量更大、包含更豐富的地標、也有一些挑戰。該數據集有12,894個地標的1,060,709張圖像,111,036張額外的查詢圖像。數據集中的圖像是從世界各地獲得的,每張圖像都有一個相對應的GPS。圖像及其對應的地理分布如圖2、圖3所示。

現存的數據集中大部分圖像的地標位於圖像中心(提取全局表達會有較好的結果),而我們數據集中的圖像更符合實際場景,圖像有前景/背景複雜、閉塞(occlusion)、目標部分遮擋等挑戰。特別地,因為我們的查詢圖像是從個人相冊中收集來的,導致部分查詢圖像有可能沒有地標,因此查詢時這些圖像不應該從資料庫中檢索到圖像。我們稱這些查詢圖像為distractors,這些圖像可以用來評估演算法對不相關或雜訊查詢的魯棒性。

我們用視覺特徵和它對應的GPS來構建groundtruth。資料庫中的所有圖像都使用兩種信息來聚類,對每個聚類的結果我們都有一個地標判別器。如果查詢圖像與檢索到的圖像有關的聚類中心的位置的物理距離小於設定的閾值,我們就判斷這兩張圖像屬於同一個地標。注意,groundtruth的標註挑戰性很強,特別是有時候很難預判這個地標是什麼,並且一張圖像中可能有多個目標。顯然,由於GPS的誤差,使用這種方法構建的groundtruth可能有些雜訊。此外,一些圖像可能是從很遠的地方拍攝到的(如Eiffel Tower,Golden Gate Bridge),因此圖像中地標的位置可能和實際中的位置相差較大。然而,我們從隨機挑選的一部分數據集中發現,如果設置閾值為25km的話,不正確的標註就會很少。儘管存在一些小的誤差,但實際上也不會構成問題,特別是在實際的評估中,因為演算法不可能對兩張相差很大的地標圖像做出誤判。

4. Image Retrieval with DELF

我們提出的大規模圖像檢索系統由四部分組成:

  1. dense localized feature extraction
  2. keypoint selection
  3. dimensionality reduction
  4. indexing and retrieval

本章主要介紹DELF特徵提取和學習演算法,之後詳細介紹索引和檢索過程。

4.1. Dense Localized Feature Extraction

我們從全卷積網路(FCN)中提取圖像的稠密特徵,使用從ResNet50 [13]獲得的FCN,用殘差網路conv4_x的輸出。為了可以解決尺寸變化的問題,我們構建圖像金字塔,對每級分別應用FCN。獲得的特徵圖可以看成是局部表達的一種稠密網格。根據感受野可以對特徵進行定位,根據卷積層和池化層的參數可以計算特徵圖大小。我們使用感受野中心的像素作為特徵的位置。圖像感受野的原始尺寸是291 × 291。使用圖像金字塔之後,我們可以獲得描述不同尺寸的圖像區域的特徵。

我們以在ImageNet上預訓練的ResNet50模型為基礎,通過微調來提升局部表達的判別能力。考慮到我們是在做地標識別的應用,我們使用帶標註的地標圖像數據集,以及圖像分類中標準的交叉熵損失函數來訓練網路,如圖4(a)所示。

輸入圖像先經過中心裁剪來獲得正方形圖像,然後rescaled到250×250,之後隨機裁剪成224 × 224用於訓練。訓練完成之後,就可以學習到與地標檢索任務有關的局部特徵表達。這樣的話,就不再需要目標級和塊級的標籤就可以獲得較好的局部表達。

4.2. Attention-based Keypoint Selection

不是將提取的特徵直接用於圖像檢索,我們設計了一種可以有效提取特徵子集的方法。因為直接提取的特徵有相當一部分對我們的識別任務是沒有用的,會給檢索帶來不好的結果,因此關鍵點檢測對檢索系統來說就顯得尤為重要。

4.2.1 Learning with Weak Supervision

我們使用attention對地標分類器進行訓練,以此來獲得局部特徵表達的相關得分。為了能夠訓練該函數,首先使用加權的求和池化對特徵進行降維,該權重是attention網路的預測值。訓練同4.1節描述過程相似(包括損失函數和數據集),如圖4(b)所示,其中attention網路用黃色標註。該方法先對整張輸入圖像生成嵌入(embedding),之後訓練softmax地標分類器。

準確地說,訓練過程如下所述。假設 f_{n}epsilon R^{d},n = 1,...N 表示和attention模型共同學習的d維特徵。我們的目的是為每一個特徵都學習一個得分函數 alpha(f_{n};	heta) ,其中 	heta 表示 alpha( cdot) 的參數。網路的輸出就是由加了權的求和特徵得到,如下式

其中 Wepsilon R^{M	imes d} 表示與分類層相連的全連接層的權重。

訓練時,我們使用交叉熵損失函數,如下

其中, y^{ast} 是one-hot之後的groundtruth, 1 是一個向量。 alpha( cdot) 中參數是通過反向傳播進行計算,梯度計算方法如下

其中輸出得分 alpha_{n} equiv alpha(f_{n};	heta) 的反向傳播同標準的多層感知機。

為了防止網路學到負的權重,我們將 alpha( cdot) 限制為非負值。得分函數是使用softplus激活函數的兩層CNN。為了簡化計算,我們設卷積層的濾波器尺寸為1×1。attention模型一旦訓練完成,就可以從中提取相關特徵。

4.2.2 Training Attention

按照我們提出的方法,表達和attention模型都是用圖像級的標籤學習到的。不幸的是,這也給學習過程帶來了一些問題。儘管特徵表達和得分函數可以在反向傳播中共同訓練,我們發現這在實踐中得到的模型卻不是很好。因此,我們採用兩步的訓練策略。首先,我們使用4.1節介紹的微調方法來學習表達,然後根據給定的表達來學習得分函數。

我們模型所做的另一個改動是在attention訓練階段將圖像尺寸進行隨機改變。增加這一操作是因為attention模型需要對不同尺寸的特徵計算有效的得分。這樣的話,先將輸入圖像進行中心裁剪成正方形,然後rescale到 900 × 900,之後隨機裁剪成720 × 720,最後使用 gamma leq 1 的因子進行隨機scale。

4.2.3 Characteristics

不同於傳統方法的是,我們的關鍵點挑選是在表達提取之後,這和當前的先進行關鍵點檢測再進行表達的方法有所不同(SIFT [ 22 ] 和 LIFT [ 40 ])。傳統的特徵點檢測主要是根據低級特徵,在成像條件下進行重複性的關鍵點檢測。然而對於高級識別任務如圖像檢索來說,挑選出可以判斷不同目標的關鍵點也很重要。本文提出的方法實現了兩個目的,第一是訓練了一個在特徵圖中編碼更高級語義信息的模型,第二是學習挑選適用於分類任務的判別特徵。這和最近提出的根據SIFT 匹配收集訓練數據的關鍵點檢測方法LIFT[40]有所不同。儘管我們沒有刻意讓模型去學習位置和視角的變化,但它卻自己主動完成了,這點和基於CNN的圖像分類方法很相似。

4.3. Dimensionality Reduction

如文獻[15]所述,我們對選定的特徵進行降維,以此來獲得較好的檢索準確率。首先,對選定的特徵進行 l_{2} 正則化,然後運用PCA將維度降到40,40是對緊湊性和判別性的一個很好的平衡,最後對特徵再使用一次 l_{2} 正則化。

4.4. Image Retrieval System

我們根據每張圖像的最高的attention得分,對查詢圖像和資料庫圖像提取預先確定數量的局部特徵。我們的圖像檢索系統是基於最近鄰搜索方法,該方法是在 KD-tree [ 7 ] 和 Product Quantization (PQ) [ 17 ]基礎上改進的。我們使用PQ將每個表達編碼成50位code,其中每40D特徵表達被分成10個具有相同維度的向量子集,之後我們使用k-means聚類對每個向量子集生成 2^{5} 個中心,得到了50位的encoding。我們對沒有編碼的查詢表達進行非對稱的距離計算,以此來提升最近鄰檢索的準確率。為了加速完成最近鄰搜索,我們使用8K的碼本為表達構建了倒排索引。為了減少編碼誤差,使用KD-tree對每個 Voronoi cell進行分區,對每個少於30K特徵的子樹運用 Locally Optimized Product Quantizer [ 20 ]。

給定一張查詢圖像,我們先對從查詢圖像中提取的每個局部特徵進行近似最近鄰搜索。之後對於從索引中檢索出的前top K個局部特徵,我們對資料庫中的每張圖像的所有匹配進行了聚合。最後,我們使用RANSAC [ 10 ]進行幾何驗證,用局內點的數量代表檢索圖像的得分。通過幾何驗證可以避免很多錯誤查詢,因為錯誤選擇的特徵可能不會和地標圖像的特徵始終匹配。

本文提出的方法需要少於8GB的內存來為1百萬個表達建立索引。我們實驗建立的最緊鄰查詢只有不超過2s的延遲,在這期間我們為每個查詢圖像分配了5個中心,並且在每個反向索引樹中完成超過10K個葉節點的查詢。

5. Experiments

本章將DELF與現存的全局和局部特徵提取器在我們的數據集上的性能進行了比較。此外,我們還將DELF運用到了現存的其他數據集上,也獲得了不錯的結果。

5.1. Implementation Details

Multi-scale descriptor extraction 我們使用 sqrt{2} 作為劃分因子的尺寸來構建圖像金字塔。使用7個在0.25和0.7之間的尺寸。感受野的尺寸也相應的發生變化,例如對於2.0的尺寸,感受野大小是 146 × 146。

Training 我們使用地標數據集[4]來微調錶達和訓練關鍵點挑選。該數據集有兩個版本,分別是稱為 LF的「full」版(有586種地標的140,372張圖像),以及成為LC的「clean」版(有586種地標的35,382張圖像)。我們使用LF訓練attention模型,使用LC微調圖像檢索網路。

Parameters 在一次查詢中,我們對每個特徵使用前top K(= 60)個最近鄰,對每張圖像提取超過1000個局部特徵(每個特徵是40維)。

5.2. Compared Algorithms

本節將DELF與一些全局和局部提取器進行了比較。儘管圖像檢索有很多演算法,但我們僅選取了一些和我們演算法有關的或者檢索性能好的演算法進行比較。

Deep Image Retrieval (DIR) [11] 該方法是一種在一些數據集上表現很好的全局表達。DIR是具有2048維的,以及多解析度的表達。我們也和使用擴展查詢(QE)的情況一起進行了比較,QE在很多數據集上的使用都可以提高準確率。我們使用根據ResNet101 [ 13 ]完善的版本來進行實驗。對於檢索來說,可以通過並行執行蠻力搜索來避免近似近鄰搜索帶來的誤差。

siaMAC [29] 該方法是最近提出的一種全局表達方法,它在現存的數據集上都獲得了很高的檢索得分。使用從VGG16 [ 32 ]中提取的512維全局特徵,此外我們還進行了擴展查詢(QE)的實驗。

CONGAS [8, 23] CONGAS是一種40D的手工局部特徵,目前已經被廣泛應用在實例級的圖像匹配和檢索中[1,44]。這種特徵提取器通過在檢測的關鍵點尺度和方向上採集Gabor小波響應來完成特徵提取,和一些基於梯度的局部特徵提取器,如ISFT,的性能和特點相似。使用一種Laplacian-of-Gaussian的關鍵點檢測器。

LIFT LIFT[ 40 ]是最近才提出的一種特徵匹配方法,該方法還可以實現關鍵點檢測、角度計算和關鍵點表達。特徵維度是128維。

5.3. Evaluation

圖像檢索系統典型的評價指標是mAP,該值是通過對每個查詢圖像根據相關性進行降序排列,然後對每個查詢的AP進行平均得到。然而,對有錯誤選擇查詢的數據集來說,這種評價方法卻不具有代表性,因為判斷資料庫中每張圖像是否和查詢圖像相關很重要。而我們使用絕對檢索得分來計算每張圖像的相關性。對於性能評估,我們使用同時考慮所有查詢圖像的精確率和召回率,如下

其中, R_{q} 表示給定閾值的查詢q的一組查詢圖像, R_{q}^{TP}(subseteq R_{q}) 表示真陽率。這和文獻[26]介紹的 micro-AP指標很相似。注意,在我們的實驗中每種地標只有得分靠前的圖像才有可能作為最後的得分。我們更喜歡用未歸一化的召回率的值,因為該值可以表示檢索到真陽率的圖像數量。為了觀察到不同檢索閾值對結果的影響,我們繪製了precision-recall曲線,而不是將所有的值相加成一個值。

5.4. Quantitative Results

DELF(DELF+FT+ATT)與其他方法的比較曲線如圖5所示。

圖5沒有LIFT的實驗結果,這是因為特徵提取的速度太慢,在大規模數據集上進行實驗,可行性不高。如圖5所示,DELF 的結果遠勝其他所有方法。全局特徵提取器,如DIR,在我們的數據集上表現並不好。特別的,因為查詢集中有很多錯誤選擇,DIR+QE的準確率很低。CONGAS的結果很好,但仍比DELF的結果差。

為了能夠分析微調和attention對圖像檢索的影響,我們將整個模型(DELF+FT+ATT)與它的變形版本,DELF-noFT、DELF+FT 和 DELF-noFT+ATT,進行了比較。DELF-noFT表示提取的特徵是基於在ImageNet上預訓練的CNN網路,而沒有使用微調和attention學習;DELF+FT表示使用微調但沒有使用attention模型,而DELF-noFT+ATT表示使用attention但沒有使用微調。如圖5所示,微調和attention模型都有助於性能的提升。特別值得注意的是,使用attention得到的提升比微調得到的多。這表明,從attention層提取的特徵,儘管是在ImageNet上預訓練的,但仍然可以挑選出對檢索任務來說最具有判別能力的特徵。

就內存需求而言, DELF, CONGAS 和DIR幾乎是同樣多。 DELF 和 CONGAS對每張圖像使用相同的特徵維度以及最大數量的特徵,它們要求大約8GB的內存。DIR對每張圖像需要約8KB,算下來也需要大約8GB來對整個數據集進行索引建立。

5.5. Qualitative Results

我們將DELF與DIR 和 CONGAS的比較分別進行了定性分析。此外,我們還通過可視化的方式對我們基於attention的關鍵點檢測演算法進行了分析。

DELF vs. DIR 檢索結果如圖6所示。

如圖6所示,DELF的結果優於DIR。DELF可以獲得圖像中特定局部區域的匹配,這有助於在不同的成像條件下找到相同的目標。圖像中包含相似的目標或場景,如方尖碑、山、港口等,是造成DIR發生錯誤的主要原因。DIR在大部分的情況下不能判斷出這些特定的目標或場景,儘管該方法可以找到語義相似的圖像,但卻不能和感興趣的實例相對應。DIR和其他全局表達方法的另外一個不足是它們很難識別出感興趣的小目標。DIR結果優於DELF的情況如圖7所示。

如圖7所示,DELF儘管可以對不同圖像間的局部部件進行匹配,但當不同地標的地板磚或者植被相似時就會發生錯誤。

DELF vs. CONGAS DELF和CONGAS相比,其主要優點是它的召回率,它可以檢索出比CONGAS相關性更高的地標,這就說明DELF特徵提取器的判別能力更強。我們沒有發現CONGAS優於DELF的例子。使用DELF正確匹配查詢圖像與資料庫的例子如圖8所示。

如圖8所示,由於感受野太大,導致有些特徵定位到了錯誤的判別區域,如海洋和天空。然而這些情況下的特徵會考慮周圍更具有判別能力的區域。

Analysis of keypoint detection methods 三種關鍵點檢測的變形版本的可視化結果如圖9所示。

如圖9所示,我們提出的attention模型的優點是可以清晰地進行定性說明,而對微調得到的特徵進行 l_{2} 正則化得到的結果和沒有使用微調的結果只有略微的差別。

5.6. Results in Existing Datasets

我們將DELF的方法在現存的數據集,如 Oxf5k, Par6k以及它們的擴展Oxf105k和 Par106k上。在該實驗中,我們只使用本文的方法對每張圖像都獲得了一個得分,並且通過計算兩個歸一化分數的加權平均值,與DIR的分數進行了融合,其中DELF的權重設為0.25。實驗結果如表1所示。

我們發現論文中給出的結果與我們根據開源代碼進行重新計算得到的結果相近。單獨使用DELF沒有得到最好的結果,但和DIR共同使用的話就可以在所有數據集上得到最好的結果。這說明DELF可以對全局特徵提取器進行信息補充。

6. Conclusion

本文提出的DELF是一種全新的局部特徵提取方法,該方法是專門用在大規模的圖像檢索任務上。DELF是利用圖像級的標籤進行弱監督學習得到的,同時還有用於語義特徵提取的attention機制。在本文提出的基於CNN的模型中,一次前向傳播就可以完成關鍵點檢測和特徵表達。我們引入Google-Landmarks數據集來充分評估大規模圖像檢索演算法的性能,該數據集包含1M張資料庫圖像、13K種不同的地標以及100K張查詢圖像。通過在這樣一個大規模數據集上的實驗發現DELF的性能遠勝現存的其他方法。我們還在現存的其他數據集上進行了實驗,發現和全局表達結合的話DELF會得到很不錯的結果。


原文地址:arxiv.org/pdf/1612.0632

推薦閱讀:

TAG:計算機視覺 | 圖像檢索 | 深度學習DeepLearning |