1、R-MAC
參考博客:https://blog.csdn.net/m0_37717568/article/details/72778863
參考文獻:Tolias G, Sicre R, Jégou H. Particular object retrieval with integral max-pooling of CNN activations[J]. arXiv preprint arXiv:1511.05879, 2015.
步驟:
1. 產生regions
regions產生在feature maps上,而不是原圖上。
在L個不同的尺度上產生正方形regions。在最大的尺度$l=1$上,region的尺寸最大。如圖所示,依次為l=1,2,3。
- 在某一個尺度$l$上,類似於滑動窗口,只需保證連續的兩個region之間的重疊率接近於40%即可。
- 采樣時,regions的寬高為$2\frac{min(W,H)}{l+1}$,共采樣$l\times (l+1)$個regions。具體每個尺度上采樣多少個跟圖像的寬高比是有關的。
- 假設卷積網絡結構中,提取特征的layer產生的feature map大小為$W\times H\times K$。以產生的region R為例,其中的每一層$d (1\leqslant d\leqslant K)$均會產生一個大小位置與R相同的regions。
- 提取每個region的feature vector,依次進行L2-normalize,PCA-whitening,L2-normalize。
2. 特征表示
以產生的region R為例,從每個$K$層的region中找到其最大的激活值$f(R,d)$,以該最大值代表這個region。
所以R的feature vector可以表示為$f_{R}=[f_{R,1}...f_{R,d}...f_{R,K}]^{^{T}}$,是一個$1\times K$的向量。再次進行L2-normalize。
整張圖像的描述記為:
$f=\sum_{i=1}^{N}f_{R_{i}}$
2、論文閱讀
文獻:Gordo A, Almazán J, Revaud J, et al. Deep image retrieval: Learning global representations for image search[C]//European conference on computer vision. Springer, Cham, 2016: 241-257.
這篇文章提出了一種Three-stream Siamese network。假設我在R-Clean上訓練網絡參數,在Oxford 5k上測試,也就是我不斷用R-Clean中的三張圖像(query、relevant、non-relevant)作為Three-stream Siamese network的輸入,去訓練該網絡,使損失最小,這里我們其實是訓練了一個網絡來提取圖像特征,用來在測試的時候提取圖像特征與圖像特征庫的數據作比對。
以上這句話是在寫完整篇博客后我認為它是這么運行的,不對的話請留言。
2.1 Introduction
- 基於深度學習的方法在很多領域取得成功,但是在圖像檢索領域效果並不顯著,圖像檢索最優技術仍是局部描述符匹配及基於空間關系的重排序。
- 本文認為,導致圖像檢索方法發展滯后的主要原因之一是缺乏對具體實例級圖像檢索任務的監督學習。
- 以前:ImageNet;現在: Landmarks dataset。我們還提出了一種數據清洗的方法。
- 基於R-MAC:它將多個圖像區域聚集成一個固定長度的特征向量,從而對尺度和平移具有較強的魯棒性。(權重可微,所以可以進行端到端的訓練?)
2.2 Related work
- 傳統的方法和CNN-based方法
- CNN用於分類任務
- R-MAC
- 網絡的微調
- 關鍵區域的提取
- 孿生網絡
2.3 Method
Contributions:
1. 提出 Three-stream Siamese network,用shift+fully網絡代替PCA降維,損失函數是triplet loss。
網絡的three stream共享權重。這里可以采用AlexNet,VGGNet,Resnet提取圖像特征,對於VGGNet(如VGG16),摘掉全連接層,取而代之的是RPN + RoI Pooling +shift + fc + L2等。
損失函數如下:
m是一個控制損失函數大小的標量。網絡的三個輸入是query圖像,一個與query相關的圖像和一個不相關的圖像,用以上損失函數來調整網絡權重,使$q-d^{+}$盡可能小,$q-d^{-}$盡可能大,三個網絡共享權重。
2. 用RPN代替R-MAC來提取關鍵區域,怎么訓練RPN參考Faster R-CNN。
R-MAC提取局部區域的方法覆蓋了很多背景區域,這將會對檢索結果產生負面影響,因為匹配過程可以看做是多對多的局部區域匹配。用RPN代替該方法產生關鍵區域,網絡其他部分不變。原則上來說,提取關鍵區域和檢索排序是可以獨立訓練的。
首先,RPN有一個損失函數,用這個損失函數訓練的網絡來提取query的關鍵區域,然后用這些關鍵區域去提取特征向量並排序,所以是可以獨立進行的。
我們提出的網絡的特點:
① 網絡在一次向前傳遞中就可以提取整幅圖像的特征向量。
② 可以用點積的方式去比較兩個特征向量。
③ very efficient at test time.
2.4 Leveraging large-scale noisy data
Landmarks dataset 包含214000張672類景點。
移除存在於Oxford and Paris dataset的圖像以及圖像太少的類,構建Landmarks-full:192000張圖像,586個類。
因數據集中有太多的無關圖像、類內可變性,我們首先在每一個類中選擇一個圖像匹配基准。對每一個類中的圖像進行特征提取然后和基准匹配,將和基准圖像匹配分數過低的圖像剪枝,構建Landmarks-clean:49000張圖像,586個類。(說是每個圖像為一個節點,兩個圖像的匹配分數是邊的權重,剪枝分數過低的邊,取剩余圖像的最大連通圖,我感覺原理就是把匹配分數最低的圖刪掉。)
2.5 Experiments
本節向大家描述了實驗使用的數據集;評估了本文提出的網絡與RPN網絡;最后將本文提出的方法與目前效果最好的方法作對比。
1. Datasets
- Training:Landmarks dataset
- Test:Oxford and Paris dataset
在不使用RPN的情況下,在Landmarks-full和Landmarks-clean數據集上用不同的模型訓練,在Oxford and Paris dataset測試結果。PCA部分,(這個是說整個網絡的參數在哪個數據集上訓練的吧)假設在Oxford dataset上測試,則在Paris dataset上訓練;在Paris dataset上測試,則在Oxford dataset上訓練。
結果說明在C-Full、C-Clean和R-Clean上訓練出的權重帶來的效果一個比一個好。
- C:Classification Network
- R:Ranking(trained with triplets)
2. mAP--Number of iterations;Recall--Number of proposals
迭代次數增加,mAP值越高,C-Full上訓練,R-Clean上測試想過最好;建議區域越多,召回率越大,在RPN提取建議區域的非極大值抑制過程中IoU的值越小,召回率越大,但是這里不能盲目降低IoU值,還要考慮precision的值。
綠色框代表ground truth,橙色部分應該就是預測的關鍵區域,可以看出本文提出的方法起了一定的作用。
3. Evaluation of the proposal network
我們的方法與state of art的比較。
加上query expansion后:
如果有什么理解不對的地方請指正。筆者玻璃心,請輕噴。