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)

Deep Learning of Binary Hash Codes for Fast Image Retrieval

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的节点数目)

Deep Learning of Binary Hash Codes for Fast Image Retrieval

粗糙检索是用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

Deep Learning of Binary Hash Codes for Fast Image Retrieval

左边第一列是待检索图像,右边是48和128位H层节点分别得到的结果。可以看到检索出的数字都是正确的,并且在这个数据集上48位的效果更好,128位的太高,容易引起过拟合。

(2)CIFAR-10

Deep Learning of Binary Hash Codes for Fast Image Retrieval

在这个数据集上128位的H层节点比48位的效果更好,比如128检索出更多的马头,而48位的更多的全身的马。

(3)Yahoo1M

Deep Learning of Binary Hash Codes for Fast Image Retrieval

此外,因为图像特征表示对于图像检索至关重要,因此进行了不同网络模型提出的特征对于检索效果的比较。

 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.

Deep Learning of Binary Hash Codes for Fast Image Retrieval

作者在这个数据集上比较了只用FC7,只用H和同时用两者(粗糙到细致)的结果,实验结果表明是两者都用的效果更好。

可以看到如果只用alexnet而不进行fine-tune的话,检索出的结果精度很低。

总结

整篇文章觉比较偏工程,全篇讲理论和方法的部分很少,几乎没有什么数学公式,但是效果好,这个最重要。关键是想法很简单,但是很巧妙,值得学习。