深度学习变革视觉实例搜索

雷锋网按:本文作者邓启力,哈尔滨工业大学深圳研究生院计算机系硕士研究生二年级,导师为“鹏城学者”徐勇教授。研究兴趣为深度学习与计算机视觉。曾获2015年首届阿里巴巴大规模图像搜索大赛二等奖,总排名第三名。

摘要

近些年,深度学习在各种计算机视觉任务上都取得了重大的突破,其中一个重要因素就是其强大的非线性表示能力,能够理解图像更深层次的信息。本文对基于深度学习的视觉实例搜索方法做了简单的总结和概括,希望能给读者们带来启发。

前言

给定一张包含某个物体的查询图片,视觉实例搜索的任务就是从候选的图片库中找到那些与查询图片包含相同物体的图片。与一般的图像搜索相比,实例搜索的搜索条件更为苛刻——是否包含相同的物体,如同一款衣服,同一辆车等等。该问题具有非常广泛的应用前景,如商品搜索,车辆搜索和基于图像的地理位置识别等。举个例子,移动商品图像搜索就是通过分析利用手机相机拍摄的商品照片,从商品库中找到相同或相似的商品。

然而在实际场景中,由于姿态,光照和背景等干扰因素,所以两张包含相同物体的图像往往在外观上差异很大。从这个角度来看,视觉实例搜索的本质问题就是应该学习什么样的图像特征从而使得包含相同物体的图像在特征空间上是相似的。

近些年,深度学习在各种计算机视觉任务上都取得了重大的突破,其中就包括视觉实例搜索任务。本文主要对基于深度学习的实例搜索算法(下面简称为“深度实例搜索算法”)进行剖析和总结,文章分为四个部分:第一部分总结了经典视觉实例搜索算法的一般流程;第二部分和第三部分分别从两个方面去介绍近些年主要的深度实例搜索算法;端到端的特征学习方法和基于CNN特征的特征编码方法;第四部分将通过总结在2015年首届阿里巴巴大规模图像大赛(Alibaba Large-scale Image Search Challenge, ALISC)中出现的相关方法,介绍一些实践中可以提高实例搜索性能的技巧和方法。

经典视觉实例搜索算法的一般流程

在深度学习流行之前,典型的实例搜索算法一般分为三个阶段:首先在给定的图像密集地提取局部不变特征,然后将这些局部不变特征进一步地编码为一个紧凑的图像表示,最后将查询图像与候选图像库中的图像进行相似度计算(基于第二步得到的图像表示),找到那些属于同一实例的图片。

1.局部不变特征。局部不变特征的特点就是提取图像局部区域的细节信息,不关心全局信息,并对该局部区域内的光线变化、几何变换具有一定的不变性。这对实例搜索非常有意义,因为目标物体可以伴随着几何变换出现图像中的任何区域。在早期的工作中,很多实例搜索方法采用的是SIFT特征。

2. 特征编码。对局部特征进一步地编码有两方面的意义:挖掘这些局部特征之间的相关信息,增强可判别能力;单一紧凑的特征向量更易于实现索引,提高搜索速度。目前常见的方法有VLAD(vector of locally aggregated descriptors),Fisher Vectors,triangular embedding等。在这里,本文简单地介绍下VLAD方法(在本文后面多次出现):a)VLAD方法首先利用k-means得到包含k个中心的码本,然后每个局部特征被指派给离它最近的中心点(我们将这一步称为hard-assignment,之后会相关文章对此进行改进),最后将这些局部特征与其指派的中心点之间的残差累和作为最终的图像表示。从上面可以看出,VLAD方法有无序的特性——不关心局部特征的空间位置,因此可以进一步解耦全局空间信息,对几何变换具有很好的鲁棒性。

3. 相似度计算。一种直接的做法是根据距离函数计算特征之间的距离,例如欧式距离,余弦距离等。另一种是学习相应的距离函数,例如LMNN、ITML等度量学习方法。

总结:经典视觉实例搜索算法的性能往往受限于hand-crafted特征的表示能力。当深度学习应用在实例搜索任务时,主要就是从特征表示入手,即如何提取更加具有判别性的图像特征

端到端的特征学习方法

NetVLAD: CNN architecture for weakly supervised place recognition  (CVPR 2016)

这篇文章是来自于INRIA 的Relja Arandjelović等人的工作。该文章关注实例搜索的一个具体应用——位置识别。在位置识别问题中,给定一张查询图片,通过查询一个大规模的位置标记数据集,然后使用那些相似的图片的位置去估计查询图片的位置。作者首先使用Google Street View Time Machine建立了大规模的位置标记数据集,随后提出了一种卷积神经网络架构,NetVLAD——将VLAD方法嵌入到CNN网络中,并实现“end-to-end”的学习。该方法如下图所示:

原始的VLAD方法中的hard-assignment操作是不可微的(将每个局部特征指派给离它最近的中心点),因此不可以直接嵌入到CNN网络里,并参与误差反向传播。这篇文章的解决方法就是使用softmax函数将此hard-assignment操作转化为soft-assignment操作——使用1x1卷积和softmax函数得到该局部特征属于每个中心点的概率/权重,然后将其指派给具有最大的概率/权重的中心点。因此NetVLAD包含了三个可以被学习参数,,其中是上面1x1卷积的参数,用于预测soft-assignment,表示为每个簇的中心点。并在上图的VLAD core层中完成相应的累积残差操作。作者通过下图给我们说明NetVLAD相比于原始的VLAD的优势:(更大的灵活性——学习更好的簇中心点)

这篇文章的另一个改进工作就是Weakly supervised triplet ranking loss。该方法为了解决训练数据可能包含噪声的问题,将triplet ranking loss中正负样本分别替换为潜在的正样本集(至少包含一张正样本,但不确定哪张)和明确的负样本集。并且在训练时,约束查询图片和正样本集中最可能是正样本的图片之间的特征距离比查询图片与所有负样本集内的图片之间的特征距离要小。

Deep Relative Distance Learning: Tell the Difference Between Similar Vehicles (CVPR 2016)

接下来的这篇文章关注的是车辆识别/搜索问题,来自于北京大学Hongye Liu等人的工作。如下图所示,这个问题同样可以被看成实例搜索任务。

和很多有监督的深度实例搜索方法一样,这篇文章旨在将原始的图片映射到一个欧式特征空间中,并使得在该空间里,相同车辆的图片更加聚集,而非同类的车辆图片则更加远离。为了实现该效果,常用的方法是通过优化triplet ranking loss,去训练CNN网络。但是,作者发现原始的triplet ranking loss存在一些问题,如下图所示:

对于同样的样本,左边的三元组会被损失函数调整,而右边的三元组则会被忽视。两者之间的区别在于anchor的选择不一样,这导致了训练时的不稳定。为了克服该问题,作者用coupled clusters loss(CCL)去替代triplet ranking loss。该损失函数的特点就是将三元组变成了一个正样本集和一个负样本集,并使得正样本内的样本相互聚集,而负样本集内的样本与那些正样本更加疏远,从而避免了随机选择anchor样本所带来的负面影响。该损失函数的具体效果如下图所示:

最后这篇文章针对车辆问题的特殊性,并结合上面所设计的coupled clusters loss,设计了一种混合的网络架构,并构建了相关的车辆数据库去提供所需的训练样本。

DeepFashion: Powering Robust Clothes Recognition and Retrieval with Rich Annotations (CVPR 2016)

最后的这篇文章同样是发表在CVPR 2016上,介绍了衣服识别和搜索,同样是与实例搜索相关的任务,来自于香港中文大学Ziwei Liu等人的工作。首先,本篇文章介绍了一个名为DeepFashion的衣服数据库。该数据库包含超过800K张的衣服图片,50个细粒度类别和1000个属性,并还额外提供衣服的关键点和跨姿态/跨领域的衣服对关系(cross-pose/cross-domain pair correspondences),一些具体例子如下图所示:

然后为了说明该数据库的效果,作者提出了一种新颖的深度学习网络,FashionNet——通过联合预测衣服的关键点和属性,学习得到更具区分性的特征。该网络的总体框架如下所示:

FashionNet的前向计算过程总共分为三个阶段:第一个阶段,将一张衣服图片输入到网络中的蓝色分支,去预测衣服的关键点是否可见和位置。第二个阶段,根据在上一步预测的关键点位置,关键点池化层(landmark pooling layer)得到衣服的局部特征。第三个阶段,将“fc6 global”层的全局特征和“fc6 local”的局部特征拼接在一起组成“fc7_fusion”,作为最终的图像特征。FashionNet引入了四种损失函数,并采用一种迭代训练的方式去优化。这些损失分别为:回归损失对应于关键点定位,softmax损失对应于关键点是否可见和衣服类别,交叉熵损失函数对应属性预测和三元组损失函数对应于衣服之间的相似度学习。作者分别从衣服分类,属性预测和衣服搜索这三个方面,将FashionNet与其他方法相比较,都取得了明显更好的效果。

总结:当有足够多的有标注数据时,深度学习可以同时学习图像特征和度量函数。其背后的思想就是根据给定的度量函数,学习特征使得特征在该度量空间下具有最好的判别性。因此端到端的特征学习方法的主要研究方向就是如何构建更好的特征表示形式和损失函数形式。

基于CNN特征的特征编码方法

本文在上面部分介绍的深度实例搜索算法,主要关注数据驱动的端到端特征学习方法及相对应的图像搜索数据集。接下来,本文关注于另一个问题:当没有这些相关的搜索数据集时,如何提取有效的图像特征。为了克服领域数据的不足,一种可行的策略就是在CNN预训练模型(训练在其他任务数据集上的CNN模型,比如ImageNet图像分类数据集)的基础上,提取其中某一层的特征图谱(feature map),对其进行编码得到适用于实例搜索任务的图像特征。本部分将根据近些年相关的论文,介绍一些主要的方法(特别的,本部分中所有的CNN模型都是基于ImageNet分类数据集的预训练模型)。

Multi-Scale Orderless Pooling of Deep Convolutional Activation Features (ECCV 2014)

这篇文章发表在ECCV 2014上,是来自于北卡罗来纳大学教堂山分校Yunchao Gong和伊利诺伊大学香槟分校Liwei Wang等人的工作。 由于全局的CNN特征缺少几何不变性,限制了对可变场景的分类和匹配。作者将该问题归因于全局的CNN特征包含了太多的空间信息,因此提出了multi-scale orderless pooling (MOP-CNN)——将CNN特征与无序的VLAD编码方法相结合。

MOP-CNN的主要步骤为,首先将CNN网络看作为“局部特征”提取器,然后在多个尺度上提取图像的“局部特征”,并采用VLAD将这些每个尺度的“局部特征”编码为该尺度上的图像特征,最后将所有尺度的图像特征连接在一起构成最终的图像特征。提取特征的框架如下所示:

作者分别在分类和实例搜索两个任务上进行测试,如下图所示,证明了MOP-CNN相比于一般的CNN全局特征有更好的分类和搜索效果。

Exploiting Local Features from Deep Networks for Image Retrieval (CVPR 2015 workshop)

这篇文章发表在CVPR 2015 workshop上,是来自于马里兰大学帕克学院Joe Yue-Hei Ng等人的工作。近期的很多研究工作表明,相比于全相连层的输出,卷积层的特征图谱(feature map)更适用于实例搜索。本篇文章介绍了如何将卷积层的特征图谱转化为“局部特征”,并使用VLAD将其编码为图像特征。另外,作者还进行了一系列的相关试验去观察不同卷积层的特征图谱对实例搜索准确率的影响。

Aggregating Deep Convolutional Features for Image Retrieval(ICCV 2015)

接下来这篇文章发表在ICCV 2015上,是来自于莫斯科物理与技术学院Artem Babenko和斯科尔科沃科技学院Victor Lempitsky的工作。从上面两篇文章可以看出,很多深度实例搜索方法都采用了无序的编码方法。但包括VLAD,Fisher Vector在内的这些编码方法的计算量通常比较大。为了克服该问题,这篇文章设计了一种更加简单,并且更加有效的编码方法——Sum pooing。Sum pooling的具体定义如下所示:

其中就是在卷积层在空间位置上的局部特征(这里提取局部特征的方法,与上篇文章一致)。在使用sum pooling后,对全局特征进一步地执行PCA和L2归一化得到最终的特征。作者分别与Fisher Vector,Triangulation embedding和max pooling这些方法进行比较,论证了sum pooling方法不仅计算简单,并且效果更好。

Where to Focus: Query Adaptive Matching for Instance Retrieval Using Convolutional Feature Maps (arXiv 1606.6811)

最后这篇文章目前发在arXiv上,是来自于澳大利亚昆士兰大学Jiewei Cao等人的工作。正如本文在开头部分所提到的,杂乱的背景对实例搜索影响非常大。为了克服该问题,这篇文章在上篇文章所提出的sum-pooling方法的基础上,提出了一种被称为query adaptive matching (QAM)的方法去计算图像之间的相似度。该方法的核心在于对图像的多个区域执行池化操作,并创建多份特征去表达图像。然后在匹配时,查询图像将分别与这些区域的特征比较,并将最佳匹配分数作为两张图像之间相似度。那么接下的问题是如何去构建这些区域。

作者首先提出了两种方法——Feature Map Pooling和Overlapped Spatial Pyramid Pooling (OSPP),去得到图像的base region。然后通过对这些base region不断地合并,以找到最好的相似度评分为目标,构建出目标区域。其中最吸引人的地方在于,作者将整个合并的过程,转化为了对一个优化问题的求解。下图显示了QAM方法的部分结果及对应图像的特征映射。

总结:在某些实例搜索任务中,由于缺少足够的训练样本,所以不能直接 “端到端”的去学习图像特征。这时候,如何将现成的CNN特征编码为适合实例搜索的图像表示就成为该领域的一个热门研究方向。

2015年首届阿里巴巴大规模图像搜索大赛总结

在介绍完近些年一些主要的深度实例搜索方法后,在接下来的部分,本文将通过总结在阿里巴巴大规模图像搜索大赛中出现的相关方法,来介绍一些实践中可以提高视觉实例搜索性能的技巧和方法。

阿里巴巴大规模图像搜索大赛由阿里的图像搜索组所主办,要求参赛队伍从海量的图片库中找出那些与查询图片包含相同物体的图片。这次比赛提供了以下两类数据用于训练:约200W张图片的训练集(类别级标签及相对应的属性),1417张验证查询图片及相对应的搜索结果(总共约10W张)。在测试时,给定3567张查询图片,参赛队伍需从约300W张图片的评测集中(无标签),搜索出那些符合要求的图片,评价指标为基于top 20的mAP ( mean  Average  Precision)。

首先简单介绍我们的方法——Multi-level Image Representation for Instance Retrieval,该方法取得了这次比赛的第三名。很多方法都是用最后一个卷积层或全连接层的特征进行检索,而由于高层的特征已经损失了很多细节信息(对于更深的网络,损失更严重),所以实例搜索时不是很精准,如下图所示,即整体轮廓相似,但细节则差距很大。

为了克服该问题,我们将CNN网络中不同层的特征图谱(feature map)进行融合,这不仅利用了高层特征的语义信息,还考虑了低层特征的细节纹理信息,使得实例搜索更精准。如下图所示,我们的实验主要基于GoogLeNet-22网络,对于最后的8层特征图(从Inception 3b到Inception 5b),首先使用最大池化对这些不同尺度的特征图分别进行子采样(转换为相同尺寸的特征图),并使用的卷积对这些采样结果进一步地处理。然后对这些特征图做线性加权(由的卷积完成),最后在此基础上,使用sum pooling得到最终的图像特征。在训练时,我们根据所提供的训练数据,通过优化基于余弦距离的triplet ranking loss来端到端学习这些特征。因此在测试时,可以直接使用特征之间的余弦距离来衡量图像的相似度。

另外,借鉴于训练SVM分类器时使用了难分样本挖掘的思想,我们的方法首先在前向计算时,计算当前训练批次中所有潜在三元组的损失(从当前训练批次中选取两张相同类别的图片和一张不同类别的图片构成潜在三元组),然后找到那些“困难”的三元组(更大的损失),最后在反向计算时,使用这些“困难”的三元组进行误差传播,从而取得更好的训练效果。

接下来简单总结其他队伍的相关方法。在端到端的特征学习方法中,除了triplet ranking loss,contrastive loss(对应于Siamese network)也是常见的损失函数。除此之外,还有一些方法值得我们关注,可以显著地提高搜索性能:

(一)  同款图挖掘

在有监督的机器学习方法中,更多的数据可能就意味着更高的准确率。因此来自于中科院计算所的团队提出,先根据ImageNet预训练模型的特征,在类别级训练集上聚类,然后通过阀值,挖掘出更多地同款图,最后用这些同款图去训练CNN网络,学习图像特征。该方法实现简单,并且可以显著地提高搜索的性能。

(二)  目标检测

在实例检索中,复杂的背景噪声直接影响了最终的搜索性能。因此很多队伍首先尝试使用目标检测(比如faster-rcnn)定位感兴趣的区域,然后在进一步地学习特征,比较相似度。另外,当没有bounding box训练数据时,弱监督的目标定位也是一种有效的方法。

(三) 一阶池化特征和二阶池化特征融合

二阶池化方法通过捕捉图像二阶统计变量,如协方差等,往往可以取得更好的搜索准确率。来自大连理工的李培华教授所带领的团队在CNN网络的基础上,将一阶池化特征和二阶池化特征融合,取得非常出色的成绩。

(四) 联合特征学习和属性预测

该方法和本文在第三部分所提到的DeepFashion类似,同时学习特征和预测图片的属性(多任务训练),从而得到更具区分性的特征。

本文作者:深度学习大讲堂

本文转自雷锋网禁止二次转载,原文链接

时间: 2024-10-23 12:44:06

深度学习变革视觉实例搜索的相关文章

中国人工智能学会通讯——深度学习与视觉计算 1.1 视觉大数据

摘要:首先阐述什么是视觉大数据,以及视觉大数据分析需要解决的关键问题:然后介绍 了深度学习的发展背景,并简要回顾了深度学习在计算机视觉领域的发展历史:最后介绍 了深度学习在视觉计算中的一些工作,并讨论了未来潜在的研究方向. 1.1 视觉大数据 人类感知外部世界的时候,约有 70% 以上的外界信息是由视觉系统所接收和处 理的.因此,对于视觉信息的有效处理与 理解是非常重要的. 我们知道,从第一台光学成像设备产生 的那一刻开始,人们就在不断地改进成像 系统,希望能够更加真实地记录客观世界, 留下往日

中国人工智能学会通讯——深度学习与视觉计算 1.2 深度学习在计算机视觉领域的应用

1.2 深度学习在计算机视觉领域的应用 深度学习近几年成为国际上非常流行 的重要的数据分析工具,在我们视觉计算 领域也得到了广泛应用.对于传统的视觉 信息处理而言,一般首先要做特征提取: 然后利用特征进行模型学习,比如分类等. 在这个过程中,涉及到模式识别研究中两 个经典的问题,即特征的提取与表示和模 型的学习. 传统算法通常利用经验知识来手工设 置视觉特征,缺少与环境的信息交互以及知 识库的决策支持.举个例子,给定一幅图 像,我们希望知道这幅图像的目标类别(比 如斑马).按照传统的视觉模式分析

中国人工智能学会通讯——深度学习与视觉计算 1.3 计算机视觉领域利用深度学习可能带来的未来研究方向

1.3 计算机视觉领域利用深度学习可能带来的未来研究方向 第一个,深度图像分析.目前基于深度 学习的图像算法在实验数据库上效果还是 不错的,但是远远不能够满足实际大规模 应用需求,需要进一步的提升算法性能从 而能够转化相应的实际应用.比如这个基 于图片的应用,可以估计性别和年龄,但 是其实经常会犯错,因此需要进一步提升 深度图像分析的性能. 第二个,深度视频分析.视频分析牵扯 到大量的数据和计算量,所以做起来更加 麻烦.当前深度视频分析还处于起步的阶 段,然而视频应用非常广泛,比如人机交互. 智

推荐系统主要算法总结及Youtube深度学习推荐算法实例概括

协同过滤 协同过滤(CF)及其变式是最常用的推荐算法之一.即使是数据科学的初学者,也能凭之建立起自己的个性化电影推荐系统,例如,一个简历项目. 当我们想要向某个用户推荐某物时,最合乎情理的事情就是找到与他/她具有相同爱好的用户,分析其行为,并且为之推荐相同的东西.或者我们可以关注那些与该用户之前购买物品相似的东西,并推荐相似的产品. 协同过滤(CF)有两种基本方法,它们分别是:基于用户的协同过滤技术和基于项目的协同过滤技术. 该推荐算法的以上情形中均包含两步: 1. 找到数据库中有多少用户/项目

深度学习如何将个性化引入互联网

深度学习属于机器学习范畴下的一个子集,其利用多种方法以实现人工智能研究当中的一大核心目标:让计算机对我们的世界进行充分建模,从而展现我们理解当中的"智能". 从基本概念角度出发,深度学习方法往往具备非常基础的共通特征.深度学习算法通过多个处理层对原始数据进行解释.其中每个处理层皆将前一处理层的输出结果作为输入结果,同时创建出更为抽象的表达.因此,只要将更多数据馈送至正确的算法当中,则算法通常能够给出更多与相关规则及特征紧密关联的推理与情景,并据此在处理新的类似情况时作为参考. 谷歌翻译

缺乏支持!Caffe深度学习框架未来堪忧

文章讲的是缺乏支持!Caffe深度学习框架未来堪忧,Caffe是由贾扬清在伯克利上学期间开发的,该项目已经开放源码,目前已获得社区贡献以及伯克利视觉和学习中心(BVLC)赞助.广泛来说,BVLC现在是伯克利人工智能研究(BAIR)实验室的一部分.同样,Caffe也已经超出了视觉范围,包括非视觉深度学习部分,虽然已发布的Caffe模型绝大多数仍然与图像和视频相关. Caffe是一个由表达式,速度和模块化组成的深度学习框架.其优势在于Caffe的模型和优化是通过没有硬编码的配置来定义的,以及在GPU

怎样找到一份深度学习的工作 | 附学习材料,资源与建议

如果你是一个软件工程师(或者你现在正在学习这一方面),你肯定有机会听说过深度学习(有时候深度学习缩写为"DL").它现在是一个热门.且快速发展的研究领域,解决工业界的一系列问题,从图像识别.手写识别到机器翻译,更甚于AlphaGo4比1击败了世界围棋冠军.  大部分人认为找与深度学习相关的工作应该具有博士学位或者大量的相关经验,但是如果你已经是一名很好的工程师,那你就可以很快.很好的学习这些必要的技能和技巧.至少,这是我们的观点.(即使你是深度学习的初学者,非常欢迎您加入我们的职位申请

126篇殿堂级深度学习论文分类整理 从入门到应用 | 干货

如果你有非常大的决心从事深度学习,又不想在这一行打酱油,那么研读大牛论文将是不可避免的一步.而作为新人,你的第一个问题或许是:"论文那么多,从哪一篇读起?" 本文将试图解决这个问题--文章标题本来是:"从入门到绝望,无止境的深度学习论文".请诸位备好道具,开启头悬梁锥刺股的学霸姿势. 开个玩笑. 但对非科班出身的开发者而言,读论文的确可以成为一件很痛苦的事.但好消息来了--为避免初学者陷入迷途苦海,昵称为 songrotek 的学霸在 GitHub 发布了他整理的深

深度学习前瞻:吴恩达 + 百度 > 谷歌吗?

导读:百度是中国网民上网时的常用工具,它致力于成为影响全球的力量.作为世界上人工智能领域的顶尖研究员,吴恩达先生能否助其成功挑战硅谷最大的互联网公司? 百老汇音乐厅位于旧金山北海岸,是新古典主义建筑,已拥有95年历史,历经岁月磨蚀,四周环绕数不清的脱衣舞俱乐部.从Blondie(金发女郎)到Ramones(莱蒙斯),曾有许多朋克乐队在此演出.但今年六月某个明亮的早晨,一位完全不同类型的"摇滚明星"在此登场.一小撮参加科技创业会议的人群簇拥着一位身穿蓝色礼服衬衫和深蓝套装.个子高高.说话