Deep Supervised Hashing for Fast Image Retrieval

摘要

这篇paper中提出了Deep Supervised Hashing (DSH)来进行binary code的学习。主要特点如下:(1)设计了深度CNN模型,training data的输入为图像对(imilar/dissimilar),输出为每幅图像的hash code;(2)loss function 最大化了图像之间的区别,区别是从输入图像编码而成的编码空间;(3)在离散化真实值的输出上加了正则项;(4)对于查询的图像通过模型编码成hash code,并通过binary code 表示图像特征。通过在CIFAR-10 和NUS-WIDE上与state-of-the-arts 相比,DSH实验效果promising performance。

主要工作和解决的问题

DSH采用一种CNN架构,输入为图像对(无论两个图像是否相似),输出为binary code。具体架构如下。在实际过程中, 采用在线生成图像对(generate image pairs online)以至于在训练阶段有更多的图像对进行训练。loss function将相似图像在编码空间上拉近距离,将不相似的图像在编码空间上推远距离。为了避免在loss function在hamming空间上不可微分,输出的值松弛化到真实值,同时在离散化的真实值的输出上加了正则项。

Deep Supervised Hashing for Fast Image Retrieval

主要解决的问题在之前模型中非线性的**函数在生成hash code中需要很大的计算代价,降低了网络的训练。文章主要对损失函数进行了优化推导。

DSH模型

DSH模型学习图像特征的compact binary codes,主要优点在于:(1)相似的图像在hamming空间上编码相似;(2)binary code计算更加高效。

Loss Function

Deep Supervised Hashing for Fast Image Retrieval

本文的loss function的设计目标主要是将相似图像的hash code 拉近,不相似图像的hash code推远。

对于图像对Deep Supervised Hashing for Fast Image Retrieval,对应的网络输出的binary codeDeep Supervised Hashing for Fast Image Retrieval,当图像对相似时,y=0,反之y=1,此loss function定义如下:

Deep Supervised Hashing for Fast Image Retrieval    Deep Supervised Hashing for Fast Image Retrieval

其中m>0为边缘阈值参数。第一项惩罚相似图像映射到不同的binary code,hamming距离低于临界值m,第二项惩罚不相似图像映射到不同的binary code。

公式(2)为最小化总体的loss function。

Relaxation

关于公式(2)的优化近几年提出了离散哈希的优化方法(Supervised discrete hashing),这样的优化方法对于内存需求较大。此外为了加快整个网络的收敛速度,从而加上一个正则项,如公式(3)所示。对于不可微分的情况,利用次梯度求解。

Deep Supervised Hashing for Fast Image Retrieval         Deep Supervised Hashing for Fast Image Retrieval

把公式(3)带入(2)中,并进行relaxed overall loss function可以得到公式(4)。对于不可微分的情况,利用次梯度求解。对于计算次梯度用mini-batches,其他的back-propagation一切跟正常一样。

Deep Supervised Hashing for Fast Image Retrieval

上述框架中,问题比较大的一个地方在于sigmoid/tanh的使用。由于这类**函数具有饱和的性质,越是当输出接近期望的值的时候(0/1或-1/+1),梯度就越小,网络训练也就越困难。因此,本工作主要关注sigmoid/tanh的替代品。

Implementation details

网络参数

网络具体参数如网络架构中所示。初始化采用xavier(每个卷积或全连接层的参数通过一个零均值与设定方差的正态分布进行初始化,从而使得输出的发纳差尽量相等),在训练的过程中,batchsize=200,momentum=0.9,weight decay = 0.004,初始化学习率设置为Deep Supervised Hashing for Fast Image Retrieval,每20000次迭代衰减40%(一共150000迭代),边缘参数m = k/2;

训练策略

采用generate image pairs online这样的方式在each mini-batch产生训练数据。为了覆盖住图像对,训练图像是随机选择的。为了增加hash code的可扩展性,如果每个长度的hash code都训练一个model的话太浪费时间,同时随着hash code 的不断增长,参数不断增加,也会出现overfitting。为避免上述问题的产生,一开始网络中输出层中结点比较少,然后进行finetune,得到适用于某个hash code长度的model。

实验

数据集:CIFAR-10 和NUS-WIDE;评测指标:the mean Average Precision (mAP) for different code lengths, precision-recall curves (48-bit), 和 mean precision within Hamming radius 2 for different code lengths

除了上述几个指标外,本文中该涉及到如下几个实验

结果1:对于正则化的评价,其中k=2,m=24,

Deep Supervised Hashing for Fast Image Retrieval      Deep Supervised Hashing for Fast Image Retrieval

结果2:Online 和Offline Image Pair Generation的训练数据集的产生方式。由于内存限制,使用offline for the Siamese scheme这种方式产生了1000万照片对。如下图所示,online收敛的更快。

Deep Supervised Hashing for Fast Image Retrieval

结果3:Finetuning vs. Training From Scratch。对于finetuning,最后FC层,learning rate = Deep Supervised Hashing for Fast Image Retrieval,之前一层=Deep Supervised Hashing for Fast Image Retrieval,每4000次迭代后,减少a factor of 0.6,一共30000次迭代。

Deep Supervised Hashing for Fast Image Retrieval      Deep Supervised Hashing for Fast Image Retrieval

总结

该论文并没有像上述文章那样使用分类网络中间层来进行哈希,而是使用神经网络直接学习哈希编码,并用正则化方法将编码进行约束。

具体来说,就是让神经网络的输出通过正则的手法约束到 {-1,1} 之内(后续使用 0 作为阈值进行离散化),然后让网络的输出达到以下的要求,相似的时候向量距离应该较近,反之则远,通过其目标函数loss function的表现形式来介绍具体过程。

其中 b1,b2 是神经网络输出的向量,y 是一个标志,相似时记为 0,不相似时记作 1,其中超参数有两个,m 时用于控制 b1 和 b2 的最优间隔,和 α 是正则项的权重,可见当输入的是相似图片时,y=0,要使 L 最小,需要最小化两个向量的距离和正则项。而当图片不相似时,y=1,最少化 L 需要使得两个向量的距离分布在 m 的附近,以及最小化正则项。最后的正则项使得输出的特征向量分布在 {-1,1}。