Deep Learning of Binary Hash Codes for Fast Image Retrieval
论文下载地址
这是一篇台湾中研院发表在CVPR2015年的文章。
之前deep hash,一般来说,网络根据图像的label,输入一个二元组或者三元组,利用CNN网络提取出图像的特征,根据相同的label应该具备比较接近的海明距离作为网络的优化目标,然后提出一种新的目标函数,采用优化策略使函数能够求导,利用BP算法,得到最优解。本篇paper主要有以下几点贡献:
- 在第7层后加入了一个全连接层,类似于LSH的作用,得到了二进制串。
- 训练采用分类任务的loss进行finetune。
- 检索的过程采用了层次的搜索。
Method
图 1 主要结构
整个过程主要有以下三部分:
- 在大规模的数据集进行pre-training
- 加入Latent layer,利用分类的loss进行fine tune
- 图像搜索过程中,采用hierarchy deep search
最近研究发现,输入的图像经过网络 F6−8 得到的信息在图像分类,检索中有很大作用。但是这些信息又是高维(上千维)的特征,这些特征直接用于检索,将会非常耗时。直观的想法就是把这些有效的特征用来压缩变成二进制特征,来进行计算海明距离。所以,作者修改了网络结构,在 F7 和 F8 之间加入了全连接层,fine-tune的过程中,随机初始化latent layer进行训练。
在检索的过程中,浅层学习了图像的局部特征,深层学习了语义信息。作者提出了一个粗粒度到细粒度的检索策略,首先检索语义信息,得到相似的候选集,然后再从候选集中利用mid-level进行检测。
给定图片
I
,首先作者利用latent layer得到的输出作为图像的信息,记作
假定图像集为 Γ={I1,I2,I3,......,In} ,n是待检索图像的数目。每幅图像得到一个长度为h的二进制码 Hi∈{0,1}h ,得到二进制码的集合 ΓH={H1,H2,H3,......,Hn} 。给定查询图像 Iq ,首先根据海明距离,取小于指定阈值的二进制码,得到包含m个元素的候选集 P={Ic1,Ic2,Ic3,......,Icn} 。
得到候选集以后,作者从第7层的输出,和候选集图像的第7层输出特征,进行计算欧式距离,然后选取最小的K个特征。
Experiment
作者分别在Mnist,CIFAR-10, Yahoo-1M数据集上进行实验。
MNIST
mnist数据集总共10类,修改网络
F8
为10-way 的softmax预测分类结果。作者加入了latent layer,为了进行比较,分别设置latent节点个数为48和128,使用SGD方法进行训练。learning rate 0.001,5000次迭代。
结果如下所示:
CIFAR-10
同样把
F8
改为10-way的softmax,latent layer节点的数目设置为48和128。
实验结果如下所示:
Yahoo-1M
数据集图像总共116类,最后分类层神经元数目设定为116。latent layer节点的数目设定为128。
作者分别测试了不同网络和网络层得到的特征进行比较:
- ALexNet pre-training F7得到的特征
- Ours-ES 作者网络F7得到的特征
- Ours-BCS 作者网络latent-layer 得到的二进制特征
- Ours-HDS 融合作者网络的F7 和latent layer的特征
References
Kevin Lin†, Huei-Fang Yang†, Jen-Hao Hsiao‡, Chu-Song Chen
Deep Learning of Binary Hash Codes for Fast Image Retrieval cvpr 15