【Deep Hash】CNNH
[AAAI 2014] Supervised Hashing via Image Representation Learning [paper] [code]
Rongkai Xia , Yan Pan, Hanjiang Lai, Cong Liu, Shuicheng Yan.
1. Overcome
之前的哈希方法,大都使用手工的图像特征(如GIST等)作为图像的特征表达, 但是这些手工特征是采用无监督的方式提取的,难以很好得保存原始图片的语义信息。而深度深度神经网络可以很好得表达图像特征信息,因此作者便提出了基于深度的哈希检索方法——CNNH。
2. Contribute
- 第一个采用深度神经网络解决哈希检索问题;
- 采用coordinate descent method学习数据集的近似哈希编码,效率高,计算速度快;
- 在学习哈希函数的同时可以得到图像的特征表达。
3. Algorithm
论文中,作者提出了一种监督哈希方法——CNNH,可以同时学习到图像的特征表达以及哈希函数。
CNNH具有两个阶段,Stage 1将相似矩阵分解为低维的哈希矩阵H,得到每个样本对应的哈希编码。但是这个过程并没有学习到哈希函数,因此无法对新的图像进行哈希编码;Stage 2利用Stage 1得到的哈希编码,以及每个样本对应的类别标签作为ground-truth来训练网络,从而得到哈希函数。假设Stage 1的哈希编码有r个比特位,样本的类别数有c个,那么网络输出层的节点就共有(r + c)个输出节点。
CNNH的输入为原始的图片信息,假设网络已经训练完毕后,对于一张新的测试图片,CNNH输出层的前r个节点就是该图片所对应的哈希编码,后c个节点则表示了图片的类别信息。

Stage 1
根据类别标签获得相似矩阵S,根据KSH中的结论,\(H_{i·}\)和\(H_{j·}\)的汉明距离与内积$H_{i·}H_{j·}^T $是一一对应的,因此可以得到如下目标优化函数:

其中,为了解决优化问题,令\(H ∈ [−1,1]^{n×q}\)>。
之后,通过coordinate descent method方法每次单独对\(H_{i,j}\)进行更新。为了确保每次更新的\(H_{ij}\)不超过[-1, 1]的范围,对更新步长d加入以下操作。这个操作确保了在对\(H_{ij}\)更新时,值不会超过[-1, 1],如果d小于\(H_{ij}\)与边界的距离,则取d,如果大于则取-1或1。

算法流程如下:

Stage 2
Stage 2利用Stage 1得到的哈希编码,以及每个样本对应的类别标签作为ground-truth来训练神经网络。
CNNH网络具有三个卷积层,分别有32, 64, 128 filters。输出层有(r + c)个节点,其中r为哈希编码的比特数,c为数据集的类别数。类别标签的引入使得网络具有了迁移学习的能力,能够更好得学习到图像的特征表达。在训练完毕后,全连接层所对应的值就是每张图片的特征向量。
【Deep Hash】CNNH的更多相关文章
- 【Deep Hash】NINH
[CVPR 2015] Simultaneous Feature Learning and Hash Coding with Deep Neural Networks [paper] Hanjiang ...
- 【POJ2185】【KMP + HASH】Milking Grid
Description Every morning when they are milked, the Farmer John's cows form a rectangular grid that ...
- 【Deep Learning】一、AutoEncoder
Deep Learning 第一战: 完成:UFLDL教程 稀疏自编码器-Exercise:Sparse Autoencoder Code: 学习到的稀疏参数W1: 参考资料: UFLDL教程 稀疏自 ...
- HDU 1280 前m大的数【排序 / hash】
前m大的数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- 【字符串hash】DNA
DNA 题目描述 小X身为奆老,兴趣爱好广泛,他还非常喜欢研究DNA序列……小X进行了一项关于DNA序列研究,发现人某条染色体上的一段DNA序列中连续的k个碱基组成的碱基序列与做题的AC率有关!于是他 ...
- 【Deep Learning】两层CNN的MATLAB实现
想自己动手写一个CNN很久了,论文和代码之间的差距有一个银河系那么大. 在实现两层的CNN之前,首先实现了UFLDL中与CNN有关的作业.然后参考它的代码搭建了一个一层的CNN.最后实现了一个两层的C ...
- codeforces #441 B Divisiblity of Differences【数学/hash】
B. Divisiblity of Differences time limit per test 1 second memory limit per test 512 megabytes input ...
- Codeforces Round #454 C. Shockers【模拟/hash】
C. Shockers time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...
- [BZOJ 1014] [JSOI2008] 火星人prefix 【Splay + Hash】
题目链接:BZOJ - 1014 题目分析 求两个串的 LCP ,一种常见的方法就是 二分+Hash,对于一个二分的长度 l,如果两个串的长度为 l 的前缀的Hash相等,就认为他们相等. 这里有修改 ...
随机推荐
- visual studio code前端插件及常用快捷键【转】
通用插件 HTML Snippets 超级实用且初级的 H5代码片段以及提示 HTML CSS Support 让 html 标签上写class 智能提示当前项目所支持的样式新版已经支持scss文件检 ...
- Properties集合概述与存和取
Properties集合:(Map集合下的Hashtable集合下的一个子类) 特点: 1.集合中的键和值都是字符串 2.集合中的数据可以保存到流中,或者从流中获取 该集合通常用于操作以键值对形式存在 ...
- js封装Cookie操作 js 获取cookie js 设置cookie js 删除cookie
每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code var CookieUtil = { // 设置cookie set : functi ...
- keystore密钥文件使用的算法-PBKDF2WithHmacSHA1 和Scrypt
PBKDF2 简单而言就是将salted hash进行多次重复计算,这个次数是可选择的.如果计算一次所需要的时间是1微秒,那么计算1百万次就需要1秒钟.假如攻击一个密码所需的rainbow table ...
- 表情存储异常--mybatis抛出异常(java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1)
文章参考 https://blog.csdn.net/junsure2012/article/details/42171035 https://www.cnblogs.com/WangYunShuai ...
- Java内存区域划分、内存分配原理(转)
文章引用自 http://blog.csdn.net/OyangYujun/article/details/41173747 运行时数据区域 Java虚拟机在执行Java的过程中会把管理的内存划分为若 ...
- PAT A1102 Invert a Binary Tree (25 分)——静态树,层序遍历,先序遍历,后序遍历
The following is from Max Howell @twitter: Google: 90% of our engineers use the software you wrote ( ...
- ASP 基础一 网站开发 初步认识
一 .ASP 与 ASP.NET的区别 i.ASP是解释型的动态语言,asp文件包含了前端和动态语言VBScript,来实现对服务器的交互,运行在IIS.PWS等WEB服务器上 II.ASP.NET是 ...
- 软概(lesson 2):课堂测试
一.测试题目 二.完成过程 1.设计思想 ①连接mysql数据库 ②设计user类,增加参数 ③设计add类,向数据库内增加内容 ④设计addInput页面,完成录入操作 ⑤设计add页面,接收录入的 ...
- LVDS原理及设计指南--以及衍生的B-LVDS-M-LVDS--CML-LVPECL电平等
LVDS是一种低摆幅的差分信号技术,它使得信号能在差分PCB 线对或平衡电缆上以几百Mbps的速率传输,其低压幅和低电流驱动输出实现了低噪声和低功耗. IEEE 在两个标准中对LVDS 信号 ...