Deep Learning of Binary Hash Codes for Fast Image Retrieval阅读总结

《Deep Learning of Binary Hash Codes for Fast Image Retrieval》

摘要

  • 提出了一个有效的架构产生快速图像检索的二进制哈希索引码
  • 在有标签情况下,在CNN基础上使用隐藏层表示主导标签的潜在概念来学习二进制哈希码
  • 相比于其他监督方法使用pair-wised的输入,我们的技术基于point-wised
  • 我们的方案相比于state-of-art表现出色

1.引言

灵感1——CNN:

  • Krizhevsky等人使用CNN第7层的输出作为特征向量进行图像检索
  • 由于第7层的输出的特征向量维数过高,Babenko等人采用PCA主
    成分分析和discriminative dimensionality reduction技术进行降维,取得了更好的效果

灵感2——哈希:

  • 传统的线性搜索不适用于大数据集,ANN或哈希方案加快了计算进程
  • 这些方法是一种降维技术,可以产生二进制码

我们的方案:

  • 引入一个简单但有效的监督学习框架
  • 只需简单调整,我们的卷积神经网络可以同时学习图像表示与类哈希函数集
  • 在MNIST和CIFAR-10数据集上的表现超过了所有state-of-art
  • 以point-wised的方式学习二进制哈希码

2.相关工作

有很多种哈希算法,这些方法大致可以分为无监督方案与监督方案。

无监督算法:

  • Locality-Sensitive Hashing(LSH):最大化相似的数据映射到相似的二进制码
  • Spectral hashing(SH):沿给定数据的PCA方向使用非线性函数进行阈值化生成紧凑的二进制代码

监督算法相比于无监督算法,在学习过程中结合了标签信息,但算法需要一个巨大的稀疏矩阵描述训练集中数据间的相似度。

深度架构也早已应用于图像检索,但大部分是无监督的,可以参见如下两篇论文:

  • R. Salakhutdinov and G. Hinton. Semantic hashing.Interna-tional Journal of Approximate Reasoning, 500(3):500, 2007.
  • A. Krizhevsky and G. E. Hinton. Using very deep autoen-coders for content-based image retrieval. InESANN, 2011.

Xia等人使用了监督的深度哈希方法来进行图像检索,取得了很好的效果,但其空间复杂度高,不适用于大数据集。

3.方案

在这里插入图片描述
方案由3部分组成:

  • 在大规模数据集ImageNet上监督预训练
  • 微调网络,隐藏层同时学习图像表示与哈希函数集
  • 通过分层深度搜索检索相似图片

3.1学习类哈希二进制码

  • F 7 F_7 F7 F 8 F_8 F8之间加入一个隐藏层 H H H,激活函数采用 s i g m o d sigmod sigmod
  • 微调网络, H H H F 8 F_8 F8参数随机初始化,其余冻结

3.2 通过分层深度搜索进行图像检索

粗糙级别的搜索:
H H H层的输出为 O u t ( H ) ∈ [ 0 , 1 ] Out(H)\in [0,1] Out(H)[0,1],二进制码为 H H H,二进制码长度为 h h h
对于 j = 1 ⋯ h , 有 H j = { 1      O u t j ( H ) ≥ 0.5 0      o t h e r w i s e j=1\cdots h,有H^j=\begin{cases} 1 ~~~~Out^j(H)≥0.5\\0 ~~~~otherwise\end{cases} j=1h,Hj={1    Outj(H)0.50    otherwise
定义m个候选图像,有候选池 P = { I 1 C , I 2 C , ⋯   , I m C } P=\{I^C_1,I^C_2,\cdots,I^C_m\} P={I1C,I2C,,ImC}(由Hamming距离阈值处理导出)

精细级别的搜索:
给定查询图像 I q I_q Iq和候选池 P P P,使用从 F 7 F_7 F7提取的特征得到前 k k k个图像,使用欧式距离作为相似度衡量指标。

"Deep Hashing for Compact Binary Codes Learning" 是一篇关于深度哈希学习的论文。该论文提出了一种用于学习紧凑二进制码的深度哈希算法。以下是该论文中深度哈希算法的公式推导过程: 1. 首先,给定一个训练集 $\{x_i\}_{i=1}^n$ 和它们的标签 $\{y_i\}_{i=1}^n$,其中 $x_i$ 是输入数据,$y_i$ 是输出标签。 2. 然后,利用神经网络学习一个将输入数据映射到二进制码的哈希函数 $h(x_i)$,其中 $h(x_i)$ 是一个 $k$ 位的二进制向量,$k$ 是哈希码的长度。 3. 在深度哈希学习中,我们使用多个哈希函数来生成多个二进制码。因此,我们学习 $m$ 个哈希函数,每个哈希函数对应一个二进制码 $B_j$。 4. 对于每个输入数据 $x_i$,我们得到 $m$ 个哈希码 $B_j^i$,其中 $j=1,2,...,m$。 5. 然后,我们将这些哈希码组合成一个紧凑的二进制码 $b_i$,即 $b_i = [B_1^i, B_2^i, ..., B_m^i]$。 6. 确定损失函数,使得学习到的二进制码可以最大程度地保留数据之间的相似度。 7. 定义损失函数 $L$,其中 $L$ 由两部分组成:量化损失和分类损失。 8. 量化损失用于衡量哈希码的质量,分类损失用于保留数据之间的相似度。 9. 量化损失可以表示为:$L_{quan} = \sum_{i=1}^n\sum_{j=1}^m\frac{1}{2}(B_j^i - h_j(x_i))^2$,其中 $h_j(x_i)$ 是第 $j$ 个哈希函数的输出。 10. 分类损失可以表示为:$L_{cls} = -\sum_{i=1}^n\sum_{j=1}^n w_{ij}y_iy_j\log\sigma(b_i^Tb_j)$,其中 $w_{ij}$ 是样本 $i$ 和 $j$ 之间的相似度权重,$\sigma$ 是 sigmoid 函数。 11. 最终的损失函数可以表示为:$L = \lambda L_{quan} + L_{cls}$,其中 $\lambda$ 是量化损失的权重。 12. 在训练过程中,我们使用反向传播算法来优化损失函数,学习到最优的哈希函数和二进制码。 这就是 "Deep Hashing for Compact Binary Codes Learning" 论文中深度哈希算法的公式推导过程。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值