被引用次数:126
作者个人网址:https://sites.google.com/site/kevinlin311tw/
源代码:https://github.com/kevinlin311tw/caffe-cvprw15
AlexNet网址:https://github.com/BVLC/caffe/blob/master/models/bvlc_alexnet/train_val.prototxt
图像检索很很多的应用,比如淘宝里面的根据提供的图片对商家卖的商品进行检索,谷歌里面的图片搜索功能。
目录结构:
摘要
1.介绍
2.相关工作
3.方法
3.1. Learning Hash-like Binary Codes
3.2. Image Retrieval via Hierarchical Deep Search
Coarse-level Search.
Fine-level Search.
4.实验结果
4.1数据集
MNIST Dataset
CIFAR-10 Dataset
Yahoo-1M Dataset
4.2. Evaluation Metrics
4.3. Results on MNIST Dataset
Performance of Image Classification.
Performance of Images Retrieval.
4.4. Results on CIFAR-10 Dataset
Performance of Image Classification.
Performance of Images Retrieval.
4.5. Results on Yahoo-1M Dataset.
Performance of Image Classification.
Performance of Images Retrieval.
5.总结
4.2测量方法
上面的公式3中,如果测量前20个准确率,那么分母就是20,分子是如何确定的呢?我们在测量相关性时仅仅考虑分类类别,所以当查询的图像和第i幅图像有着相同的标签时,我们就把分子上的函数取值为1,其他情况则取值为0。
提出的图像检索框架是基于层次化的深度搜索。我们的方法是由三个主要的部分组成。第一部分是一个卷积神经网络在ImageNet数据集上的有监督的预训练,为了去学习丰富的中层的图像表达。在第二个部分,当我们在目标集上去finetune预训练的模型时,我们在网络中加入一个隐含层并且在这一层的神经元能够学到类似hash一样的表达。最后一步就是检索图像使用一个粗糙的到精细的技巧。而这个技巧利用了学习到的像hash一样的二进制编码和F7的特征。
图2是来自某数据集的示例图像。各种各样的产品图像说明了高度的变化,并且对图像的分类和检索来说,是一个很大的挑战。
图3,通过变化隐含层的二进制编码的bit数目,对来自MNIST数据集检索的前10图像。就是变化图1中的h的大小。当bit的数量增加的时候,有着相似外表的相关图像被检索出来。
注1:这儿,需要注意,图1的第二部分也是按照10类进行分类,计算loss,但是就是说copy了预训练的参数。实质上,对于给定的图片和标签,比如是汽车图像,标签是汽车,然后训练的时候,我们是按照我们的标签的指导去提取特征,实质上,汽车图像里面也许会有公路的出现,如果我纯粹的给出公路的图像,该如何检索呢?
图4是对MNIST图像检索的精度。纵轴是精度,横轴是检索的前多少图像。比如检索前200张的图像,最后评判前200张图像有多少张是检索正确的。
注2:这儿有个问题,你如何确定,该幅图像中检索出来的前200图像中,如果检索完全正确并且检索出来的相似图像的顺序也是一致的,这是如何确定的?
实质上作者仅仅考虑类别,这儿不仅要求图像的主体内容和检索图像主体内容一致,还要求即使是同一标签的也要求对检索图像也有个先后的相似性。
参考文章:基于内容的图像检索系统性能评价【作者:韦娜;耿国华;周明全 来源期刊:《中国图象图形学报:A辑》2004年 第11期 格式:PDF 页数:6页】
作者在第3章“获取相关性评价的通用方法”中,作者说到:
图5,是前10的检索图像,数据集是CIFAR10,此时也是变化隐含层的bit数目后,检索出的前10图像。
图6是精度。
图7是在雅虎数据集上的图像分类结果。图像下面的文字是GT。
图8是图像检索的精度。
图9是对雅虎数据集不同特征下的前5检索图像。蓝色的代表显示查询的图像和检索的图像是同一个标签,而黑色的叉则代表不是。
对于表一,我们用我们的结果比较了几种目前最好的方法。值得非常注意的是,我们的模型被特别的设计用来做图像检索,而其他则是通过改变网络的结构去最优分类的任务。例如,提出的maxout激活函数的工作,这方法提高了dropout的近似模型的准确率。另一个有代表性的就是NIN,这个通过多层感知,提高了对本地batch的分辨力,避免了过拟合。为什么48个隐藏节点比128的错误率要低,作者说,48个足够表征分类的特征,而增加过多的隐藏节点就会引起过拟合。
表2是,分类的准确率的性能对比。
译文如下:
1.介绍
基于内容的图像检索报告通过分析图像的内容来搜索相似的图像;因此,图像的表征和相似度计算就十分重要。沿着这项研究的进展,其中最有挑战性的问题之一就是把像素级的信息联系到分割上。尽管很多hand-crafted features已经被提出来表征图像,在深度学习出来之前,这些可视化的描述子的性能依旧受限。最近的研究表明,深度CNN在various vision tasks的性能上已经取得重大突破,比如目标检测,图像分类和分割。这些成就有助于提高深度CNN的能力,以学习丰富的mid-level的图像表征。
随着深度CNNs学习到丰富的mid-level的图像描述子,Krizhevsky等人使用了来自第7层的特征向量并且展示了在ImageNet上的杰出性能。尽管如此,因为CNN的特征是高维度的并且直接计算两个4096维的向量之间的相似性的效率低下,Babenko等人提出了压缩使用PCA和discriminative dimensionality re-duction去压缩CNN的特征,为了获得更好的性能。
在CBIR(基于内容的图像检索)中,图像的表征和计算成本开销都起着一个重要的作用。最近,由于可视化内容的增加,在一个大型数据库里的快速搜索成为了一个工程上的需要。许多研究致力于回答这样的问题,如何从大规模的数据库中有效的检索出相关的数据。因为很高的计算成本开销,在数据库里的搜索的传统的线性搜索(或全面搜索)算法是合适的。取而代之,一个更加实际的技巧就是,使用Approximate Nearest Neighbor (ANN)的算法或者基于hashing的方法来加速这一搜索过程。这些方法将高维度的特征转换到更低维度的特征,接着就生成compact(紧凑的) binary codes。得益于这些二进制编码,通过binary pattern matching or Hamming distance measurement,快速的图像搜索才得以可能,并且极大地降低了计算开销和进一步的提高了搜索的效率。其中的这些方法使用了相似矩阵(包含数据的pair-wised的相似性),属于pair-wised method,能够描述image pairs 或data pairs之间的关系,并且利用这些相似度信息去学习一个hash函数。不管怎样,当处理一个大规模的数据集时,构造这样一个矩阵并产生编码是极其耗费力气的。
受启发于深度学习的重大进展,我们提出这样一个问题,我我们能否利用深度CNN的优势去获得hashing?取代pair-wised的学习方法,我们能否直接从深度CNN产生二进制的紧凑编码?为了解决这些问题,在所有的数据都打上标签的前提下,我们提出了一个深度CNN模型能够同时学习图像的表征和二进制编码。这是,我们的方法被设计来进行一个有监督的学习。进一步地,我们讨论到,当一个更有能力的学习模型比如深度CNN被使用并且数据的标签可获得,通过利用一些隐含层去表征隐含的concepts(用而精致的激活函数比如sigmoid),二进制编码能够被学习到,其中这个concepts在结构中国主宰着分类的标签。这与其他的监督的学习是不一样的(比如【30】),那些监督学习方噶虽然考虑了数据的标签,但是需要pair-wised输入到学习过程中。换言之,我们的方法在point-wised manner方法中,学习到了二进制的hashing codes,该方法利用深度CNN能够学到更多的特征(通过SGD)。深度学习的应用也能够保证有效检索特征的学习。我们的方法对比传统方法,非常适合于大型数据集。
我们的方法有着如下的特征:
*我们引入了一个简单的有效的监督学习框架应用于快速图像检索。
*对网络模型的小的改动,我们的深度CNN能够同时学习到domain specific image representations和一组类似hashing的函数,以用来快速的图像的检索。
*提出的方法在公用数据集上MNIST和CIFAR-10上超越了目前最好的方法。我们的模型在CIFAR-10上的比之前最好的检索性能提高了30%的精度,在MNIST数据集上提高了%1的精度。
*我们的方法用一个point-wised manner方法,学习到二进制的hashing编码并且对比于传统的pair-wised approaches对比之下,能够轻易地拓展数据的大小。
这篇论文的组织结构如下:在第二章中,我们先简要地回顾了hashing算法和深度学习下的图像检索的关工作。在第三章中,详细阐述了我们方法的细节。最后,在第四章中,提供了实验结果,紧随着,在第五章中,给出了总结。
2.相关工作
许多hashing算法已经别提出来大概鉴定出和查询相关的数据。这些方法主要被分为2个主要的类别,无监督和有监督的方法。
无监督的hashing的方法使用未打上标签的数据来学习一组hash函数。其中最有代表性的一个就是Locality-Sensitive Hashing (LSH),该方法目的是最大化这样一个概率——相似的数据映射到相似的二进制编码。LSH产生二进制编码,是这样产生的,通过利用一个随机的阈值,把数据点转化为一个随机的超平面。Spectral hashing (SH)是另一个representative approach方法中,通过对给定数据,沿着PCA方向,对非线性函数设定阈值,来产生紧凑的二进制编码。
最近的研究已经说明,使用监督的信息能够使得二进制hash codes学习更好到更好的表现。监督的方法能够在学习的过程中吸收标签的信息,【18,20,15】。这些监督的hashing方法通常使用pair-wised标签,来产生更有效的hash标签。不管怎么样,这些算法需要一个大型的稀疏矩阵来在训练集上描述在data points之间的相似性。
除了跟踪hashing的研究轨迹,图像表征在CBIR中也扮演着一个重要的角色。基于CNN可视化的描述子最近已经被应用到图像检索的任务中。Krizhevsky等最先使用从7层网络中提取出的特征来检索图像,并且在ImageNet上取得令人印象深刻的表现。Babenko等着重于CNN特征的降维,并且使用一个压缩后的CNN特征取得了很好的检索性能。尽管这些最近的工作在图像检索中取得很好的结果,通过直接对学习到CNN特征在欧式空间的pattern matching上,来检索,此方法十分低效率。
深度结构已经被使用来hash learning。不管怎么样,大多数都是无监督的,其中深度自动编码器被用来学习representations。Xia等提出了一个监督的hashing方法去学习而二进制的hashing编码为了快速图像检索,通过深度学习并在公用数据集上得到了组好的图像检索性能。不管怎么样,在他们的预处理步骤中,一个矩阵分解算法被是用来学习数据的representation codes编码。它因此需要the input of a pair-wised similarity matrix of the data并且对此种情况是无用的,比如data size非常大,因为它同时消耗着相当大的内存和计算时间。
对比之下,我们提出了一个简单的但是有效率的深度学习方法去学习一组类似于hash的函数,并且在可获得的公共的数据集上能够得到一个很好的结果。我们进一步把我们的方法应用到一个有着1 million衣服图像的数据集上来说明我们方法的能力。我们将在下章中describe提出的方法。
3.方法
图1展示了我们提出的框架。我们的方法主要包括3个部分。第一部分是在ImageNet数据集上的监督式的预训练。第二个部分是finuetune有着隐含层的网络,并同时学习feature representation和一组类似hash的函数。第三个部分是通过层次化的搜索来检索和查询图像相似的图像。我们使用了由Krizhevsky等提出的来自与Caffe CNN库里的预训练模型,其中,该模型是训练在ImageNet数据集上(超过1.2million图像分类成1000类)。我们提出的学习二进制编码的方法将在下面详细叙述。
3.1学习类似Hash的二进制编码
最近的研究表明,F6-8层的特征激活导致输入的图像能够serve as视觉上的特征。这些mid-level的图像表征在图像分类,检索和其他等上说明了令人印象深刻的提高。不管怎么样,这些signatures是高维度的向量,而这些向量在大规模的数据集上检索图像是效率低下的。为了更有效的图像检索,一个更实际的做法机试减少计算开销,即把特征向量转化为二进制编码。比如紧凑的二进制编码能够通过hashing or Hamming distance快速的比较。
在这部分,我们提出同时学习特定的图像表征和一组类似hash的函数(或二进制编码)。我们假设,分类层F8分最终输出依赖与一组h个的隐含attributes,其中每一个attribute要么是on,要么是off。以另一种观念来看,图像将导致相似的二进制激活,这些图像可能有着一样的标签。为了使这种想法令人满意,我们在F7和F8中内置了一个隐藏层H,见图1的中间一个。隐藏层H是全连接层,并且它的神经元的激活函数是规则化的。提出的隐藏层H是被sigmoid函数记过,所以激活值是在0到1之间。
为了获得domain adaptation,我们在目标集上finetune了提出的网络。深度CNN的初始化参数是被设置为在ImageNet上训练的参数。H和最后的分类层是随机初始化的。H层初始化的随机参数类似于LSH,为了构造hashingbits而使用了random projections。这些编码随后将从来自与LSH的适应到这些,这些就是从有监督的深度网络学习中能够更好的适合数据。对于深度CNN模型没有很大的改动,提出的模型能够同时学习到可视化的描述子和一组类似hash的函数,从而能够有效的图像检索。
3.2通过层次化的深度搜索来图像检索
Zeiler and Fergus分析了深度CNN并说明了shallow layers(浅层)学习到可视化的描述子,然而CNN中更深的层捕获了semantic information更适合识别。我们采用了一个粗糙到精细的搜索技巧为了快速地,准确地图像检索。我们首先检索出一组拥有相似的high-level的se-mantics的候选图片,这个se-mantics是来自这隐藏层的拥有着相似隐藏二进制的 activations。接着,为了进一步过滤图像,在最深的mid-level image representations上进行相似度的评级。
粗糙的搜索
对于给定一幅图像I,我们首先提取来自隐含层的输出作为图像的signature,这儿被记为Out(H)。这个二进制的编码接着通过binarizing the activations by a threshold来获得。对于每一个bit j=1...h(这儿h是隐含层中节点的数目),我们输出H的二进制编码,通过下述函数。
注意有n张图像要进行恢复。对于给定的一副查询图像Iq和它的二进制编码Hq,如果在Hq和Hi低于一个阈值时,我们鉴定出一个拥有着m个候选者的候选区。
精细的搜索
对于给定的查询图像Iq和候选区P,我们使用来自F7层提取的特征鉴别出top k的图像。欧式距离越小,两幅图像就有着更高的相似性。
4.实验结果
5.总结
参考网址:http://blog.csdn.net/han_xiaoyang/article/details/50856583【深度学习与计算机视觉(11)_基于deep learning的快速图像检索系统】