天天看点

End-to-End Learning of Deep Visual Representations for Image Retrieval

目录

代码:https://github.com/almazan/deep-image-retrieval

1、主要贡献:

2、Leveraging Large-Scale Noisy Data

4、 Learning to Rank: An End-to-End Approach

5、 Improving the R-MAC Representation

6、Evaluation of the Complete Approach

1、主要贡献:

1、利用一个大规模并且嘈杂的地标数据集,然后开发一种自动清理方法,产生一个适合深度检索的训练集;

2、我们建立在最近的R-MAC区域最大激活描述符(这个是在MAC的基础上提出的局部区域方法)描述符的基础上,说明它可以被解释为一个深度和可微的体系结构,并提出了改进来增强它;

3、我们用Simaese体系结构来训练这个网络,然后用一个triplet loss整合三个流;

R-MAC区域最大激活描述符:该方法计算了不同尺度下的多个图像区域的基于CNN的描述子,这些描述子被汇总成一个固定长度的紧凑特征向量,因此具有一定的尺度和平移鲁棒性。这种方法的一个优点是可以在高分辨率下对图像进行编码,并且不会扭曲图像的纵横比。

Simaese网络:参考引用博客,各位请移步->:https://blog.csdn.net/ybdesire/article/details/84072339

End-to-End Learning of Deep Visual Representations for Image Retrieval

图中两个模型都是由CNN构成,并且两个模型的参数值完全相同。不同于传统CNN的地方,是Siamese网络并不直接输出类别,而是输出一个向量(比如上图中是128个数值组成的一维向量):

若输入的图像X1和X2为同一个人,则上下两个模型输出的一维向量欧氏距离较小

若输入的图像X1和X2不是同一个人,则上下两个模型输出的一维向量欧氏距离较大

所以通过对上下两个模型输出的向量做欧氏距离计算,就能得到输入两幅图像的相似度。

Ranking loss:预测输入样本之间的相对距离。这个任务经常也被称之为度量学习(metric learning)。详细的学习请参考:https://blog.csdn.net/LoseInVain/article/details/103995962/

2、Leveraging Large-Scale Noisy Data

使用的是Landmarks数据集:大概214K张图像,672个类别;文章中是在此基础上与oxford5k、paris6k和hoildays数据集进行对比,删除了一些重复的图像,最终获得大概:192000张图像,586个类别;然后再对获得的数据集进行划分:

168882张 用于实际的微调训练
剩下的20668张 用于验证集

附上这个数据集的链接:https://hyper.ai/datasets/7512    数据集太大了....

Cleaning the Landmarks Dataset:

使用不变关键点匹配和空间验证来比较每对图像,使用SIFT和Hessian仿射关键点检测器和使用first-to-second neighbor ratio rule匹配关键点;然后用Philbin等人提出的仿射变换模型来验证所有成对匹配;在不损失一般性的情况下,我们将描述单个landmark类的其余清理过程。一旦我们得到了所有图像对之间的一组成对分数,我们就构造了一个节点为图像,边缘为成对匹配的图。我们修剪得分低的所有边。然后提取图的连通分量。它们对应于一个地标的不同侧面;见图1,显示了圣保罗大教堂两个最大的连接部分。最后,我们只保留最大的连接组件,并丢弃其他组件,以确保类中的所有图像在视觉上是相关的。这一清洁过程留下约49000个图像(分为42410个培训图像和6382个验证图像),仍然属于586个地标中的一个,称为地标清洁。清理过程在一个32核服务器上花费了大约1周的时间,在类之间并行。

Bounding Box Estimation:

用学习到的感兴趣区域(ROI)选择器代替R-MAC描述符中的区域均匀采样方法;

End-to-End Learning of Deep Visual Representations for Image Retrieval
End-to-End Learning of Deep Visual Representations for Image Retrieval

个人感觉这个方法挺好的,筛选出一些有用的图像,并且进一步准确定位图像中的图像;对一些小型数据集可能就不太适合了,方法还是可以借鉴的,学习了;

4、 Learning to Rank: An End-to-End Approach

4.1 The R-MAC Baseline

建议看一下原论文:Particular object retrieval with integral max-pooling of CNN activations.

End-to-End Learning of Deep Visual Representations for Image Retrieval

用点积比较两幅图像的R-MAC向量可以解释为加权多对多区域匹配,其中权重取决于聚集区域描述符的范数。

4.2 Learning to Retrieve

Learning with a Classification Loss:

使用交叉熵损失很容易地对地标数据集上的标准分类体系结构(例如VGG16)进行微调,然后使用改进的卷积滤波器作为R-MAC管道的特征提取器,而不是使用原始权重。使用这种方法作为我们的训练基准,首先,它不直接学习任务寻址、检索,而是一种代理、分类。第二,它没有利用R-MAC架构,因为它学习了原始的分类架构,使用了低分辨率的方形裁剪。只有在训练结束后,卷积权值才与R-MAC体系结构一起使用。

Learning with a Ranking Loss:

使用基于图像三元组的Ranking Loss。给定由查询图像、与查询相关的元素和不相关的元素组成的三元组,相关图像的R-MAC表示更接近于查询的表示,而不是无关图像的表示。

设计了一个三流连体网络体系结构,其中三个流中的每一个产生的图像表示都被综合考虑到了损失。该架构如图3所示。卷积滤波器和完全连接层的权重在流之间共享,因为它们的大小与图像的大小无关。这意味着Siamese体系结构可以处理任何大小和纵横比的图像,可以使用测试时使用的相同(高)分辨率的图像来训练网络。

使用如下的Ranking Loss. 设 

End-to-End Learning of Deep Visual Representations for Image Retrieval

 是一个带有R-MAC描述符 q 的查询图像;

End-to-End Learning of Deep Visual Representations for Image Retrieval

 是一个带有 

End-to-End Learning of Deep Visual Representations for Image Retrieval

 描述符的相关图像;

End-to-End Learning of Deep Visual Representations for Image Retrieval

 是一个带有 

End-to-End Learning of Deep Visual Representations for Image Retrieval

 描述符的不相关图像;然后定义Ranking Loss如下所示:

End-to-End Learning of Deep Visual Representations for Image Retrieval

其中m是用于控制边距的标量。给定一个产生非零损失的三重态,子梯度计算如下所示:

End-to-End Learning of Deep Visual Representations for Image Retrieval

子梯度通过网络的三个流进行反向传播,卷积层和“PCA”层一起更新,shifting 和 fully connected 得到更新。这种方法优化了排名目标。

4.3 Practical Considerations

应该注意一些实际的考虑:

  1. 确保采样 triplet 产生效果,首先随机选取 N 个训练样本,用当前模型提取 N 个训练样本的特征,然后计算出所有可能的三元组及其损失。所有产生损失的triplet都会被预选为好的候选项;通过随机抽样一个均匀分布的 N 个图像,然后随机选择25个损失最大的三元组中的一个作为查询来实现的。每次更新模型时都应该重新计算一组好的候选对象,这非常耗时。在实践中,我们假设一个给定模型的大多数硬三元组即使模型更新了几次也仍然是硬的,因此我们只在模型更新 k 次之后更新一组好的候选对象。在我们的实验中,我们使用N=5000个样本和k=64个迭代,每次迭代的批大小为64个三元组。
  2. 第二个要考虑的问题是训练期间所需的内存量,因为我们同时训练大图像(较大的一侧调整为800像素)和三个流。在使用VGG16架构时,我们在一个12gb内存的M40 GPU上一次只能在内存中容纳一个三联。为了对一批有效大小大于1的bs进行更新,我们依次计算和聚合每个三元组的网络参数损失梯度,实际只对每个bs三元组进行更新,bs = 64。
  3. 当使用更大的网络(如ResNet101)时,情况会变得更加复杂,因为我们没有足够的内存来处理甚至一个三元组。为了避免减小图像尺寸会导致图像细节的丢失,我们提出了一种替代方法,具体在算法1中。这种方法允许我们使用单个流顺序处理一个三元组的流,而不是同时使用所有的流。可以在减少训练图像大小的情况下训练深层结构。
End-to-End Learning of Deep Visual Representations for Image Retrieval

4.4 Experiments

本节主要研究不同设置和架构的权重的影响,所有实验都按照标准的R-MAC策略提取区域。

4.4.1 Experimental Details

在四个标准数据集上测试:Oxford5K、Paris6K、Holidays 和 UKB 数据集。对UKB使用[email protected],对其余的使用平均平均精度(mAP)。按照标准做法,在Oxford5K和Paris6K数据集中,只使用查询感兴趣的注释区域,而在Holidays 和 UKB 数据集中,使用整个查询图像。此外,在对Hoildays进行评估时,查询图像将从数据集中删除,但不会对Oxford5K、Paris6K和UKB进行评估。按照大多数基于cnn的方法,我们在Hoildays数据集上手动校正图像的方向,并对校正后的图像进行评估。为了与不修正方向的方法进行公平比较,我们在最后的实验中也报告了不修正方向的结果。

对于网络的卷积部分,采用两种流行的架构:VGG16 和ResNet101。使用PCA投影对全连接层进行初始化,并根据每个区域的归一化描述符进行计算。所有的后续学习都在地标数据集中进行。

为了用分类进行微调,然后遵循标准训练和修改训练集图像的尺寸,然后随机提取224×224的像素区域。为了使用我们提出的架构进行微调,我们还通过随机裁剪(随机删除图像每边5%)来增强我们的训练数据,然后调整产生的裁剪大小,比如最大宽度为800像素,保留宽度。(其实就是对数据进行增强操作)在测试时间,所有数据库图像也被调整大小,使较大的一侧为800像素。所有模型采用动量为0.9、学习率为0.001、权重衰减为0.00005的随机梯度下降(SGD)训练。一旦验证错误停止下降,我们在分类微调时将学习率降低到0.001。在学习排名时,没有看到降低学习率的任何改善,所以将学习率保持在0.001,直到最后。margin被设置为m = 0.1。

4.4.2 Results

定量评估:我们在表1中报告了网络卷积部分的两个可能选择的结果:VGG16(上)和ResNet101(下)。对于每种架构,我们首先使用R-MAC基线报告性能,其卷积层权重直接取自ImageNet预训练的网络,主成分分析是在landmarks -full上学习的。对于学到的模型,使用分类损失或者排名损失在地标数据集上进行微调参数。对于后者,直接使用预训练的参数。

从表1报告的结果中,我们突出显示了以下观察结果。

End-to-End Learning of Deep Visual Representations for Image Retrieval
  • 与在ImageNet上预先训练的模型相比,在相关数据集上使用原始分类损失的Finetuning已经带来了显著的改进,正如Babenko等人(2014)在前三个数据集上观察到的那样(尽管采用了不同的架构)。在这种情况下,使用完全标记进行培训或使用清洁标记进行培训不会产生显著差异。
  • 优化提出的体系结构并降低其排名是最佳的性能策略。对于前三个数据集,使用地标数据集改进我们的模型的权值似乎非常有益。我们只报告结果学习排名与Landmarks-clean。我们发现这一点至关重要:完全学习地标显著降低了模型的准确性。
  • 为了利用排名损失在VGG16中获得好的结果,我们认为重要的是,首先通过训练地标数据集训练分类损失来预热网络,就像Gordo等人(2016)所做的那样。然而,当使用最近的ResNet101架构时,这并不是那么重要:尽管预热网络带来了轻微的改进,最终的结果是相似的。这也可以在图4中观察到,图4中显示了在数据集Oxford5K上的准确率,针对不同模型初始化的训练进度。
  • 正如预期的那样,基于ResNet101的模型优于基于VGG16的模型。然而,这种差距并不像训练带来的改善那么明显。
End-to-End Learning of Deep Visual Representations for Image Retrieval

Impact of Finetuning on the Neurons:

End-to-End Learning of Deep Visual Representations for Image Retrieval
End-to-End Learning of Deep Visual Representations for Image Retrieval

Computational Cost:总体来说,时间太长,除非你的硬件非常好!具体看论文吧。

5、 Improving the R-MAC Representation

在本节中,提出了几种修改网络架构本身的方法。首先,改进了区域池化机制,引入了区域建议网络(region proposal network, RPN)来预测图像中最相关的区域,在这些区域中需要提取局部特征(5.1节)。其次,注意到网络体系结构只考虑单一的固定图像分辨率,提出将其扩展为构建一个多分辨率描述符(5.2节)。

5.1 Beyond Fixed Regions: Proposal Pooling

在R-MAC中用于区域池的多尺度网格试图确保目标被至少一个区域覆盖。然而,这提出了两个问题。首先,任何网格区域都不可能与感兴趣的对象精确对齐。其次,很多区域只覆盖背景,特别是当检索对象规模较小时。这是一个问题,因为R-MAC签名之间的比较可以看作是一个多对多区域匹配,因此区域杂波将负面影响性能。增加网格中区域的数量可以提高一个区域与感兴趣的对象良好对齐的可能性,但也会增加不相关区域的数量。

提出修改R-MAC架构,以增强其聚焦于图像相关区域的能力。为此,用训练有素的区域建议网络(RPN)来代替刚性网格,以定位图像中感兴趣的区域,类似于Ren等人(2015)的建议机制。这个RPN是使用我们清洗过程的副产品获得的地标数据集的近似边界框标注来训练的。所得到的网络架构如图6所示。

End-to-End Learning of Deep Visual Representations for Image Retrieval
End-to-End Learning of Deep Visual Representations for Image Retrieval

Learning the RPN:

End-to-End Learning of Deep Visual Representations for Image Retrieval

5.2 Multi-Resolution

在Tolias等人(2016)提出的原始R-MAC描述符中,图像被考虑为单一比例。但是,可以考虑从调整到不同分辨率的图像中提取和组合特征,以便集成来自不同尺度的信息。其目标是改进数据库图像中以不同尺度出现的对象之间的匹配和小对象的检索。

原始R-MAC网络的一个有趣特点是,不同的输入图像大小仍然产生相同长度的描述符。但是请注意,具有不同分辨率的同一图像的两个版本将不会产生相同的输出描述符。网络的第一部分是完全卷积的,它直接使处理不同大小的输入,而聚合层将依赖于大小的输入特征合并成一个固定长度的表示。根据这个想法,提出从以不同尺度调整大小的图像中提取不同的描述符,然后将它们组合成一个单一的最终表示。在实践中,我们使用3个尺度,在较大的一侧使用550、800和1050像素,保持长宽比。然后分别提取这三幅图像的描述符。最后,我们对它们进行加和聚合,并对它们进行L2-normalize,以获得最终的描述符。

这个多分辨率描述符可以在查询端和数据库端进行计算。这个过程在特征提取时带来了额外的计算成本(大约是三种分辨率成本的三倍),但是在搜索时的成本和存储成本是相同的。

这是一个权重共享的Siamese网络,主要区别是使用平均池,而不是最大池化。

5.3 Experiments

在本节中,我们将研究proposal pooling和多分辨率描述符的影响。

Region Proposal Network:

End-to-End Learning of Deep Visual Representations for Image Retrieval

 Multi-Resolution:

End-to-End Learning of Deep Visual Representations for Image Retrieval

6、Evaluation of the Complete Approach

在本节中,将所获得的表示与最新技术进行比较。我们的最后一个方法集成了另外两个改进:查询扩展(QE)和数据库端特征增强(DBA)。

6.1 Query Expansion

给定查询图像进行查询,然后检索Top-K个结果。然后对K个结果进行空间验证,将与查询不匹配的结果丢弃。将剩下的查询结果与原始查询一起汇总和重新规格化。最后使用组合的描述符进行第二次查询,生成最终的检索图像列表。

虽然查询扩展可以很大程度上提高精确度,但是会增加额外的查询时间:空间验证和第二次查询操作。

本文中没有执行空间验证(但是通常需要访问本地关键点描述符,本文没有);因此的话,也就只有第二个查询会使得时间翻倍。

6.2 Database-Side Feature Augmentation

DBA通过自身和它的邻居的组合替换数据库中每一张图像的标签;主要目的就是通过利用它邻居的特征来提高图像表示的质量。由于不使用空间验证,只对最近的K个邻居进行求和聚合,就像在查询扩展的情况下一样。可以根据邻居的排名总和进行加权。使用如下加权方案:

End-to-End Learning of Deep Visual Representations for Image Retrieval

其中 r 代表邻居的排名;k 代表所有邻居的数目。

同样DBA也会增加数据库的大小和查询时间。真正耗费时间的是在寻找最近的邻居中。并且这个过程一般都是线下完成的,太耗费时间了!!!

6.3 Experiments

6.3.1 Evaluation of QE and DBA

End-to-End Learning of Deep Visual Representations for Image Retrieval
End-to-End Learning of Deep Visual Representations for Image Retrieval

6.3.2 Comparison with the State of the Art

一共在四个数据集上进行验证对比:

Oxford 5k

Paris 6k

Oxford 105k

Paris 106k

上述四个数据集网上都能下载到,我就不赘述了!

表格4列出来一些对比:第一部分的说明如下:

在holidays数据集上,通过手动旋转纠正图像的方向;如果不执行这个操作,准确率会从94.8下降到90.3,但是仍然比现有的技术效果好;

不用使用oracle来旋转数据库映像,可以自动旋转查询映像并发出三个不同的查询(原始查询、查询旋转90度和查询旋转270度)。一个数据库图像的得分是通过三个查询获得的最大得分。这使得查询过程慢了3倍,但是在没有oracle干预的情况下将准确率提高到了92.9。

使用ResNet101代替VGG16重新实现了R-MAC基线。虽然在使用ResNet101时精度的提高是不可忽略的,但通过训练模型获得的精度仍然要高得多(在Oxford5K中,训练时的69.4和84.1,使用单或多分辨率设置)。这一差距突出了设计良好的体系结构和有相关数据的完整的端到端训练的重要性,所有这些都是为图像检索的特定任务量身定做的。

End-to-End Learning of Deep Visual Representations for Image Retrieval

表4的第二部分显示了不必依赖全局表示的最新方法的结果。大多数方法的特点是比本文的方法占用更大的内存(如:

Tolias and Jégou (2015), Tolias et al. (2016), Danfeng et al.(2011), Azizpour et al. (2015). );这些方法在运行时执行代价高昂的空间验证,通常需要在数据库中为每个图像存储数以千计的本地描述符(Tolias and Jégou 2015;Li et al. 2015;Mikulik et al.2013).;

它们中的大多数还执行查询扩展(QE)。为了在同等条件下比较,还使用了QE和使用QE和DBA方法进行对比。仅使用QE带来的改进只有同时使用QE和DBA时的一半左右,并且避免了对数据库的任何预处理。尽管不需要在运行时进行任何形式的空间验证,该方法在所有数据集上都有很大的改进。特别是,性能在5到14点MAP领先的所有数据集的竞争者。

文献中最好的方法(Tolias and Jegou 2015);由于需要大量的存储内存和昂贵的验证,因此很难扩展。例如,Tolias和Jegou(2015)的方法需要一个缓慢的空间验证,每次查询耗时超过1秒(不包括描述符提取时间)。如果没有空间验证,他们的方法会丢失5个mAP点,而且每次查询仍然需要大约200毫秒。Tolias等人(2016)的方法更具可伸缩性,但仍需要额外的空间验证阶段,该阶段基于存储许多数据库图像的本地表示,尽管使用了先进的压缩技术,但最终会比我们的方法占用更大的内存。相比之下,我们的方法只计算两个矩阵向量的乘积(如果不执行QE,只计算一个),这是非常有效的。该操作在不到一秒的时间内计算数百万次图像比较。在不进行任何压缩的情况下,我们的方法需要为每张图像存储2048个浮点数,即8 kb,但是这种表示可以大幅压缩而不会造成很大的精度损失,我们将在下一节中介绍。最后,我们想要指出,我们的方法使用一个通用模型来计算我们学到的形象代表对所有测试数据集对比。

在UKB数据集使用该模型。该方法在没有QE和DBA的情况下获得3.84的[email protected],在有QE和DBA的情况下获得3.91的[email protected]。注意,训练略微降低了我们在UKB上的性能(表1)。这是由于我们的训练集(地标图像)和UKB图像(日常生活项目)之间的差异造成的。下降仍然是边际的,这表明我们的方法可以很好地适应其他检索上下文。

6.3.3 Short Image Codes with PCA and PQ

使用主成分分析(PCA)或产品量化(PQ)压缩我们的2048维图像描述符;在这两种情况下,我们在没有标记的图像上学习词汇表(PCA投影或PQ码本),并用我们学习到的表示进行编码。

End-to-End Learning of Deep Visual Representations for Image Retrieval

6.4 Qualitative Results

End-to-End Learning of Deep Visual Representations for Image Retrieval

继续阅读