Bit-Scalable Deep Hashing with Regularized Similarity Learning for Image Retrieval and Person Re-ide

摘要

在图像检索中,提取图像特征和生成hash function是两个关键的步骤。之前大部分深度学习的方法这两个步骤是相互分开的,同时输出的hash code的长度是预先设置好的。这样就会忽略掉不同长度的hash code分别代表的意义,同时也限制整个model的灵活性(不同长度的hash code 训练不同的model)。为解决上述两个问题,paper中提出了一种可以生成bit-scalable的hash code。在本文中,作者把hash 学习当做正则化相似学习(regularized similarity learning);同时把训练数据分为一批三元组样本,每个三元组中包含两个具有相同label图像和一个不同label的图像,对于每个三元组,在hamming space,我们最大化了匹配图像对和不匹配图像对的边缘;此外,利用正则化项来保证邻接一致性(相似图像具有相似的hash code);采用端到端的深度卷积神经网络来同时学习特征提取和hash function的生成。更重要的在于,输入的hash code 每一位权重不一样,这样就可以通过截断不太重要的bit进行控制hash code的长度。实验结果在公开基准数据集是state-of-the-art,同时在人物重识别方面也取得了期待的结果;同时也bit-scalable hash code采用较短的bit长度保证了图像特征的区别能力。

本文的主要工作和解决的问题

hash code的长度问题:较短的hash code适用于计算能力受限的情况(移动设备),较长的hash code 适用于追求更高的准确性。之前的工作在解决上述问题时,通常采用对于不同长度的hash code 都进行存储。这样会消耗大量的计算和存储资源。对于bit-scalable的hash code之前的方法也有过介绍,通常利用重要性下降的方式进行hash code的排序,即前面的bit比后面的bit更加重要。这样的方法要很难设计映射的特征空间,而且当减缩位数时性能会很差。

本文提出的DRSCH主要就解决上述问题的。model的主要优点如下:

(1)对以前基于三元组的相对相似度比较(hamming space)进行了扩展,增加了正则项(由最近提出的拉普拉斯稀疏编码,2015TPAMI);对于每个三元组的样本(三元组中包含两个具有相同label图像和一个不同label的图像)的hash 学习作为最大化样本中匹配和不匹配相对距离,在Hamming空间中保证邻接关系。

(2)采用CNN来进行提取,采用了fc和tanh-like layer来输出hash code;采用element-wise layer来进行产生hash code的权值,从而生成bit-scalable hashing。

(3)为了解决大规模图像的存储问题,采用一种批处理的模式(batch-process fashion)。即在每轮学习中,从tranning images中随机选择子集(150-200)构建三元组样本;然后采用SGD进行参数学习。因为每张图片可能存在若干个三元组样本中,我们对每张图片的偏导数进行计算从而代替三元组样本的偏导数,从而减少代价。

DRSCH的主要工作和贡献:

(1)将特征学习和hash function的统一起来提出DRSCH使得图像检索更加灵活;

(2)对于hash 学习提出了一种新的方法——regularized triplet-based comparison

(3)实验表明,在公开标准数据集上DRSCH是state-of-the-art,同时在person re-identification领域表现也很好。

DRSCH 模型

With the weight w, we employ the weighted Hamming affinity [37] to measure the dissimilarity between two hashing codes, which is expressed as a linear combination of the agreement between the two codes:

上述定义的带权的hash code可以有如下优点:(1)根据不同bit的不同权重可以产生更加有效的hash code;(2)根据不同情况,可以截断不太重要的hash bit,从而灵活的产生不同的长度的hash code;(3)weighted Hamming distance后续计算可以简化成跟普通hammig一样。

Formulation

        

           

由于hash code 是binary的,是不可微的,因此提出了tanh-like approximation o(v) of the sign function:

   

在进行衡量hash code 距离计算时,本文中提到了一点Tips(Lookup Table)

binary hashing的明显优势在于bit-wise的XOR或者是采用lookup table的方式进行hash code之间距离的衡量。在本文中,我们采用LUT快速返回hahs code之间的weigthed affinity。假设L为hash code 长度,构建lookup table的长度为,等于两个hash code XOR后的所有结果的candidate。在检索阶段,hash weight都已经训练好,因此the weighted hamming affinity of each XOR result 都在之前计算好然后存储在lookup table中,基于此方法,ranking list 通过table lookup搜索进行返回。

尽管此方法可以提高搜索效率,不过当l过大的时候,可能导致存储爆炸。因此可以采用将hash code 划分为等长的部分(本文总中part = 8),每一部分都关联定长的子表,总体的hash affinity是所有子表的和。

Deep Architecture

整个网络架构包括10层,其中卷积-池化6层,卷积激活函数采用ReLu,池化采用average pooling,一层池化32filter,二层池化64filter,三层池化128filter,size5*5,stride = 2,池化size2*2,stride=1.最后四层包括两个标准的fc,输出hash code的 tangent like layer 和输出权重的 an element-wise connected layer to weigh each bit of hash code。第一个fc是512,第二个fc是hash code 的长度。

LEARNING ALGORITHM

本节中作者主要进行网络参数学习的优化。主要对公式(14)进行偏导数求解。得到公式(15)。

    

由于本人数学功底有限,对于该部分理解有限,为避免错误出现,直接上结论,具体推导细节可以查看原文。

在进行优化的过程中,作者提出了两个Tips:Acceleration 和 Batch Process Implementation。

Acceleration阶段:

在优化过程中,计算第一项和第二项的loss function分别要对求偏导数。其中第一项是要计算基于三元组的梯度,而第二项是基于每张图像的梯度,因此作者提出把两种偏导数都归结于每张图像的梯度上,并进行了推导证明。

Batch Process Implementation

在实际训练过程中,采用batch-process fashion。在每一轮中,仅仅一小组三元组产生而且送入网络。对于该小组的三元组的产生如果采用随机的方式是不可靠的,这样可能会导致图像在三元组的上分布是分散的,因此会产生极少的质量不高的数据。为解决该问题,本文采取了一种有效的三元组产生策略。首先,选择,从随机选择的O个图像中K个类别;然后对于每个图像I,构建一定数目的三元组,在每个三元组中图像label是不同与I的label而且是从其他剩余类别中选择的。用该方法产生的三元组是相对比较集中化的,因此我们可以学习到更改的pairwise lable的信息。更重要的是,由于每一迭代中来类别和图像是随机选择的,因此当迭代次数足够多的时候,将会产生所有的可能性。在本实验中,作者设置K=10,O=20.

实验(由实验部分可以看出该工作巨大的工作量)

数据集:MNIST,CIFAR-10,CIFAR-20和NUS-WIDE,以及人物重识别的CHUK03

实验model:DRSCH,DSCH(removing the Laplacian regularization term)以及其他model

评测指标:Mean Average Precision (MAP)  precision@500 precision@k 以及HAM2 

比较有意思的是下面这组实验(F代表提取特征的时间,H代表hash code 生成的时间,S代表搜索的时间)

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本课程适合具有一定深度学习基础,希望发展为深度学习之计算机视觉方向的算法工程师和研发人员的同学们。基于深度学习的计算机视觉是目前人工智能最活跃的领域,应用非常广泛,如人脸识别和无人驾驶中的机器视觉等。该领域的发展日新月异,网络模型和算法层出不穷。如何快速入门并达到可以从事研发的高度对新手和中级水平的学生而言面临不少的挑战。精心准备的本课程希望帮助大家尽快掌握基于深度学习的计算机视觉的基本原理、核心算法和当前的领先技术,从而有望成为深度学习之计算机视觉方向的算法工程师和研发人员。本课程系统全面地讲述基于深度学习的计算机视觉技术的原理并进行项目实践。课程涵盖计算机视觉的七大任务,包括图像分类、目标检测、图像分割(语义分割、实例分割、全景分割)、人脸识别、图像描述、图像检索、图像生成(利用生成对抗网络)。本课程注重原理和实践相结合,逐篇深入解读经典和前沿论文70余篇,图文并茂破译算法难点, 使用思维导图梳理技术要点。项目实践使用Keras框架(后端为Tensorflow),学员可快速上手。通过本课程的学习,学员可把握基于深度学习的计算机视觉的技术发展脉络,掌握相关技术原理和算法,有助于开展该领域的研究与开发实战工作。另外,深度学习之计算机视觉方向的知识结构及学习建议请参见本人CSDN博客。本课程提供课程资料的课件PPT(pdf格式)和项目实践代码,方便学员学习和复习。本课程分为上下两部分,其中上部包含课程的前五章(课程介绍、深度学习基础、图像分类、目标检测、图像分割),下部包含课程的后四章(人脸识别、图像描述、图像检索、图像生成)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值