Deep Learning of Binary Hash Codes for Fast Image Retrieval
摘要
当数据label可用时,采深度网络来学习binary code,同时来表示图像深度表示特征。与其他基于pair-wise的方法不一样,该方法采用point-wise的思想。实验表明该方法在CIFAR-10 和 MNIST是state-of-the-art。同时在1百万张衣服图片的大规模数据集中验证该方法的可扩展性和有效性。
本文的思路和主要工作
有些基于pair-wise的方法通常使用相似度矩阵来描述图像对或者数据对之间的关系(主要指的是CNNH和CNNH+),并采用这些相似信息来学习hash function。当处理大规模数据集时,要构建矩阵和产生hash code。本文从监督学习出发,同时学习图像表示和binary code,与其他方法不同的是(基于pair-wise的CNNH和CNNH+),本文的方法是基于point-wise的思想,利用incremental learning nature(SGD),适用于大规模图像检索。本文的主要工作包括如下四点:
(1)介绍了适用于快速图像检索的一种有效而简单监督学习框架;
(2)基于网络模型的稍微改动 finetune,同时学习图像特征表示和hashing-like function;
(3)该方法在CIFAR-10 和 MNIST是state-of-the-art;
(4)相比于其他conventional pair-wised approaches,本文方法中基于point-wised的思想学习到hashing code在数据规模方面具有很好的可扩展性。
本文方法DLBHC(Deep Learning of Binary Hash Codes)
DLBHC模型中主要包括三个模块。模块1是在ImageNet上的预训练;模块2是在目标数据集上的fine-tuning,同时学习特征表示和hash-like function。模块3是通过分层网络架构进行查询,采用由粗到细的策略利用学习的hashes-like binary code和F7feature。其中模块1中用的是AlexNet(ImageNet Classification withDeep Convolutional Neural Networks)
Learning Hashlike Binary Codes
这篇文章的想法很巧妙,深层CNN的最后一个全连接层(fc8)和倒数第二个全连接层(fc7)之间加了一层全连接隐层,就是figure1中绿色的latent layer(H),使用sigmod作为**函数。这样一来,既可以得到深层的CNN特征(fc7的特征),还可以得到二分的哈希编码,即来自H。这个隐层H不仅是对fc7的一个特征概括,而且是一个连接CNN网络的中层特征与高层特征的桥梁。
实现网络能够对某一类物体高鲁棒,即target domain adaption,用一类主题目标数据集来整定(fine-tune)整个网络。latent layer H和FC8在fine-tune时 权重是随机初始化的。其中H的初始化参考了LSH[1]的方法,即通过随机映射来构造哈希位。FC8的节点数由目标类别数决定,H的节点数在文中有两种尝试:48和128。通过这样训练,得到的网络能够产生对特定物体的描述子以及对应的哈希编码。
Image Retrieval via Hierarchical Deep Search
本文在进行图像检索时,采用一种coarse-to-fine策略进行检索,从而加快检索速率。首先,先检索语义相似度高的候选对象(with similar hidden binary activations from the latent layer),;然后,基于深层的中间图像特征表示进行相似度排序,从而进一步过滤掉具有similar appearance的图像。
Step 1:Coarse-level Search.
对于给定的图像I,latent layer后的输出为Out(H),binary code 中的每位j = 1,2,3……h(h为latent layer的节点数目)
粗糙检索是用H层的二分哈希码,相似性用hamming距离衡量。待检索图像设为I,将I和所有的图像的对应H层编码进行比对后,选择出hamming距离小于一个阈值的m个构成一个池,其中包含了这m个比较相似的图像。
Step2:
细致检索则用到的是FC7层的特征,相似性用欧氏距离衡量。距离越小,则越相似。从粗糙检索得到的m个图像池中选出最相似的前k个图像作为最后的检索结果.
两张图128维的H层哈希码距离计算速度是0.113ms,4096维的fc7层特征的距离计算需要109.767ms,因此可见二值化哈希码检索的速度优势
实验
实验数据采用MNIST CIFAR-10 Yahoo-1M Dataset。作者在MINIST,CIFAR-10,YAHOO-1M三个数据集上做了实验,并且在分类和检索上都做了实验,结果都很不错,特别是在CIFAR-10上图像检索的精度有30%的提升。
(1)MINIST
左边第一列是待检索图像,右边是48和128位H层节点分别得到的结果。可以看到检索出的数字都是正确的,并且在这个数据集上48位的效果更好,128位的太高,容易引起过拟合。
(2)CIFAR-10
在这个数据集上128位的H层节点比48位的效果更好,比如128检索出更多的马头,而48位的更多的全身的马。
(3)Yahoo1M
此外,因为图像特征表示对于图像检索至关重要,因此进行了不同网络模型提出的特征对于检索效果的比较。
AlexNet: F7 feature from the pre-trained CNN;
Ours-ES: F7 features from our network;
Ours-BCS: Latent binary codes from our network;
Ours-HDS: F7 features and latent binary codes from our network.
作者在这个数据集上比较了只用FC7,只用H和同时用两者(粗糙到细致)的结果,实验结果表明是两者都用的效果更好。
可以看到如果只用alexnet而不进行fine-tune的话,检索出的结果精度很低。
总结
整篇文章觉比较偏工程,全篇讲理论和方法的部分很少,几乎没有什么数学公式,但是效果好,这个最重要。关键是想法很简单,但是很巧妙,值得学习。