Supervised Hashing for Image Retrieval via Image Representation Learning
Supervised Hashing for Image Retrieval via Image Representation Learning
背景
最邻近搜索,是给定一个query,返回空间中距离query最近的点。最直接暴力的方法就是计算查询与特征空间的距离,并按照从小到大的顺序进行排序,返回结果。但是采取这种方法,存储的空间消耗比较大,并且查询时间慢。拿互联网的图片为例,数据规模基本都是上亿级别。如果采取遍历上亿级别的图片,然后返回最小距离的结果,那么用户等的花都谢了。为了解决上述问题,近年来ANN搜索技术发展迅速,对空间和时间的需求也大大降低。其中Hash就是一种代表性的方法。
Hash的目标是相似的特征映射到相近的区域,不相近的特征尽可能映射到远的区域。如下图所示:
在Hash算法中,通常就是将样本表示为一串固定长度的二值编码,使得相似的样本具有相似的二值编码(编码之间的hamming距离小)。最起初的工作,主要工作是在特征空间中随机选择一些超平面对空间进行划分,根据样本在超平面的哪一侧决定每一个bit的值。虽然这种方法能够保证效果,但是有时需要很长的bit才能取到更好的效果。在后来的工作中,为了取得更短的编码长度,人们采用了各种尝试,比如构建不同的目标函数,采用不同的优化方法,使用非线性建模,放松离散的约束等方法。其中基于深度学习的Hash算法,最早是Hinton研究组提出的Semantic Hashing。14年的时候,CNN风生水起。中山大学的潘炎老师和颜水成老师合作在2014AAAI上发表了CNNH(Convolutional Neural Network Hashing),将基于CNN的深度Hash搬上了舞台。
下载地址
主要改进
本篇paper主要关注了有监督的Hash算法。一个关键的问题就是基于学习的Hash 算法需要将图片进行encode成有用的feature represention提高hash的性能。但是对于图像提出的Hash方法主要是使用了现有的视觉描述子,例如gist。然而,这种视觉特征描述子提取是一种无监督的形式,不能完全保证图像之间的语义相关性,比如奥巴马在不同场合的图片之间明显有着很强的语义相关,但是视觉特征向量之间的距离可能很大。于是作者提出了一种用于图片检索的有监督的Hash Method。方法主要分为两个阶段。
第一阶段 Learning approximate hash code
给定n个图片{I1,I2,I3,......In}\{I_1,I_2,I_3,......I_n\},首先根据图片之间的差异,构建一个相似度矩阵SS,其中矩阵Si,j=1S_{i,j}=1表示相似的图片,Si,j=−1S_{i,j}=-1表示不相似的图片,矩阵SS是n*n的矩阵,并且是对称矩阵。首先定义一个n∗qn*q大小的binary的HH。矩阵HH的kthk^{th}行,Hk∈{−1,1}qH_k\in \{-1,1\}^q。HkH_k代表了图像IkI_k的q比特的hash code。将S进行如下分解:
S=H*H^T
分解以后的q-bit的 HkH_k就作为label进行下一步的训练。
研究发现的 Hi.H_{i.}与 Hj.的H_{j.}的内积 Hi.Hj.H_{i.}H_{j.}和 Hi.H_{i.}与 Hj.H_{j.}的Hamming distance有一一对应的关系。所以我们可以通过最小化重构误差来学习近似的Hash code。
\min\limits_{H}\sum_{i=1}^n\sum_{j=1}^n(s_{ij}-\frac{1}{q}H_{i.}H_{j.}^T)^2=\min\limits_{H}||S-\frac{1}{q}HH^T||_F^2 \quad (2)
其中 ||.||2F||.||_F^2是Frobenius norm, H∈{−1,1}n∗qH\in\{-1,1\}^{n*q}。H代表了相似性矩阵S的近似的Hash code。因为 Hi.Hj.∈[−q,q]H_{i.}H_{j.}\in[-q,q],所以这里需要除以q和S保持同样的范围 {−1,1}\{-1,1\}。在公式(2)中,很难进行整数优化,所以,需要把约束 H∈{1,−1}n∗qH\in\{1,-1\}^{n*q}放松为 H∈[1,−1]n∗qH\in[1,-1]^{n*q}。公式(2)就转化为下述的形式:
\min\limits_{H}||S-\frac{1}{q}HH^T||_F^2 s.t. H\in[-1,1]^{n*q}\quad(3)
在公式(3)中,由于 HHTHH^T是非凸的,优化起来仍然困难。所以,这里采用了牛顿法进行求解。算法首先随机选择H中的一个entry进行更新,保持其他的entry固定。在每一次迭代中,只更新一项。假设 H=[H.1,H.2,H.3,......,H.n]H=[H_{.1},H_{.2},H_{.3},......,H_{.n}],这里 H.jH_{.j}是矩阵H的第j-th列。目标函数(3)可以写成如下的形式:
||H_{.j}H_{.j}^T-(qS-\sum_{c\neq j}H_{.c}H_{.c}^T)||_F^2\\ =||H_{.j}H_{.j}^T-R||_F^2=\sum_{l=1}^n\sum_{k=1}^n(H_{lj}H_{kj}-R_{lk})^2
这里 R=qS−∑c≠iH.cHH.cR=qS-\sum_{c \neq i}H_{.c}H_{.c}^H。因为S是对称的,所以R也是对称的矩阵。通过固定H中其他列,目标函数可以写成如下的形式:
\mathscr{G}(H_{ij})=\sum_{l=1}^n\sum_{k=1}^n(H_{lj}H_{kj}-R_{lk})^2\\=(H_{ij}^2-R_{ii})^2+2\sum_{k\neq i}(H_{ij}H_{kj}-R_{ik})^2+constant
下一步需要更新 HijH_{ij}到 Hij+dH_{ij}+d,相应的最优化问题变为如下:
\min_{d}\mathscr{G}(H_{ij}+d)\quad s.t. -1 \leq H_{ij}+d \leq 1\quad
把公式进行Taylor展开如下:
\hat{\mathscr{G}}(H_{ij}+d)=\mathscr{G}(H_{ij})+\mathscr{G}^{'}(H_{ij})d+\frac{1}{2}\mathscr{G}^{''}(H_{ij})d^2 ,\quad (4)
上式中 G′(Hij),G′′(Hij)\mathscr{G}^{'}(H_{ij}),\mathscr{G}^{''}(H_{ij})分别代表 G\mathscr{G}在 HijH_{ij}的一阶导数和二阶导数:
\mathscr{G}(H_{ij})^{'}=4\sum_{k=1}^{n}(H_{ij}H_{kj}-R_{ik})H_{kj}
\mathscr{G}(H_{ij})^{''}=12H_{ij}^2-4R_{ii}+4\sum_{k\neq i}H_{kj}^2
把公式(4)关于d求一阶导:
\frac{\partial \hat{\mathscr{G}}(H_{ij}+d)}{\partial d}\\ =0+\mathscr{G}^{'}(H_{ij})+d\mathscr{G}^{''}(H_{ij})
令上式等于0。可以得到 d=−G′(Hij)G′′(Hij)d=-\frac{\mathscr{G}^{'}(H_{ij})}{\mathscr{G}^{''}(H_{ij})}
所以目标函数的(5)的最优解为公式(6):
\min_{d}\hat{\mathscr{G}}(H_{ij}+d)\quad s.t. -1 \leq H_{ij}+d \leq 1\quad (5)
d=\max(-1-H_{ij},\min(-\frac{\mathscr{G}^{'}(H_{ij})}{\mathscr{G}^{''}(H_{ij})},1-H_{ij})),\quad (6)
d得出以后,就可以按照 Hij←Hij+dH_{ij} \gets H_{ij}+d进行更新。
如果直接计算 R=qS−∑c≠iH.cHT.c∈Rn∗nR=qS-\sum_{c\neq i}H_{.c}H_{.c}^T \in R^{n*n}需要 O(n2)O(n^2)的时间复杂度。为了简化计算,保存矩阵 L=HHT−qSL=HH^T-qS来加速计算。有了L之后,可以按照如下的公式计算 G′(Hij)\mathscr{G}^{'}(H_{ij})和 G′′(Hij)\mathscr{G}^{''}(H_{ij}):
\mathscr{G}^{'}(H_{ij})=4L_{i.}H_{.j} \quad \mathscr{G}^{''}(H_{ij}) =4(H_{.j}^TH_{.j}+H_{ij}^2+L_{ii}) \quad (7)
Li.L_{i.}是L的第i-th的行。这里只需要计算 (O(n))(O(n))的时间复杂度。当 HijH_{ij}一旦更新过后,L的第i行和第j列数据将会发生改变。所以需要根据 Hij←Hij+dH_{ij}\gets H_{ij}+d的值重新计算L:
L_{i.}\gets L_{i.}+dH_{.j}^T,L_{.i}\gets L_{.i}+dH_{.j},L_{ii}\gets L_{ii}+d^2
更新的过程时间复杂度也是 O(n)O(n)。整个算法过程如下所示:
循环总共进行n*q次,所以总的时间复杂度为 O(Tqn2)O(Tqn^2)。
第二阶段 Learning image featrue representation and hash function
把原始的图片和第一步学习到的矩阵H作为网络的输入,通过卷积神经网络来学习Image representation和hash function。作者提出了两种网络结构:CNNH和CNNH+。
CNNH:
CNNH:
网络1,2,3层分别是用了32,64,128个filter。
总结
CNNH与传统的基于手工设计特征的方法的性能取得了显著的提升。但是这个方法学到的图像表示并不能反作用于二值编码的更新,并没有完全发挥出深度学习的潜力,以后的方法有不少的改机,相关内容在后面的博客进一步更新。
Supervised Hashing for Image Retrieval via Image Representation Learning相关推荐
- 图像检索--Deep Supervised Hashing for Fast Image Retrieval
CVPR2016 Deep Supervised Hashing for Fast Image Retrieval 源代码: https://github.com/lhmRyan/deep-super ...
- Aggregation-Based Graph Convolutional Hashing forUnsupervised Cross-Modal Retrieval
Aggregation-Based Graph Convolutional Hashing forUnsupervised Cross-Modal Retrieval Abstract 跨模态哈希以其 ...
- Natural Supervised Hashing
Natural Supervised Hashing IJCAI 2016 要点: 将标签向量视为二进制码,并学习与标签向量结构相似的目标码. 为了避免对大型n⇥n Gram矩阵的直接优化,确定了一种 ...
- 图像检索2:KSH(Supervised Hashing with Kernels)
Supervised Hashing with Kernels 简单的介绍了KSH(基于核函数的监督哈希),文章还是挺不错的,PPT里面有很详细的介绍和推导,下载浏览PPT就可以对这篇 CVPR 20 ...
- 对比学习系列论文CPC(二)—Representation Learning with Contrastive Predictive Coding
0.Abstract 0.1逐句翻译 While supervised learning has enabled great progress in many applications, unsupe ...
- 对比学习系列论文MoCo v1(二):Momentum Contrast for Unsupervised Visual Representation Learning
0.Abstract 0.1逐句翻译 We present Momentum Contrast (MoCo) for unsupervised visual representation learni ...
- (转)Predictive learning vs. representation learning 预测学习 与 表示学习
Predictive learning vs. representation learning 预测学习 与 表示学习 When you take a machine learning class, ...
- 表征学习 Representation Learning(特征学习、表示学习)是什么?
在机器学习领域,表征学习(或特征学习)是一种将原始数据转换成为能够被机器学习有效开发的一种技术的集合.在特征学习算法出现之前,机器学习研究人员需要利用手动特征工程(manual feature lea ...
- 阅读笔记之《DisenQNet: Disentangled Representation Learning for Educational Questions》
<DisenQNet: Disentangled Representation Learning forEducational Questions> DisenQNet:教育问题的解偶表示 ...
最新文章
- php限定名称写法,php命名空间:非限定名称、限定名称、完全限定名称实例详解...
- 安装Debian 7.8 过程,以及该系统的配置过程
- 百度智能云人脸采集SDK通过CFCA权威安全测评
- (错误记录)git push 报错 403
- android 多选项实现
- PHP系统发布指什么,cis系统是指什么
- WebService优点和缺点小结
- 网页为什么只加载了基本html,关于HTML的那些事
- 老鱼Python数据分析——篇一:项目立项
- wxpython 操作图片_wxpython 图像编程
- 计算机ppt以学校生活为主题的作文,以校园为主题的作文(通用5篇)
- 视频号新人直播应该准备什么?
- 【Bug】ValueError: Solver lbfgs supports only ‘l2‘ or ‘none‘ penalties, got l1 penalty
- 九度OJ-题目1163:素数
- CP2K入门教程分享
- Hadoop大象之旅009-通过Shell操作hdfs
- 存储卡丢失照片数据用什么办法能免费恢复
- html实验:百度API定位+获取摄像头拍照
- his java_中航JavaHis住院医生站操作手册
- YANG语言标准中文
热门文章
- 家里宽带都200M了,为什么网速这么慢?简单设置一下
- python两台电脑网络互传信息_两台电脑在同一网络下如何互传文件
- 基于ssm技术的校自助阅览室的设计与实现毕业设计源码242326
- Soft(er)-NMS:非极大值抑制算法的两个改进算法
- 大数据告诉你,北上广深哪里最容易吃到你的家乡味儿?
- 我奋斗了18年才和你坐在一起喝咖啡与我奋斗了18年不是为了和你一起喝咖啡
- 攒机需要注意的8条技巧 转太平洋网
- node.js+小程序基于微信小程序的校园失物招领系统毕业设计源码072343
- jd脚本 v4-bot 镜像部署和配置bot机器人
- Linux进程守护者: 进程监视及自动重启崩溃的进程