论文阅读:Deep Image Retrieval: Learning global representations for image search


 

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后:

  如果有什么理解不对的地方请指正。笔者玻璃心,请轻喷。