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

2023-10-20 13:30

本文主要是介绍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 Learning of Binary Hash Codes for Fast Image Retrieval阅读总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/247405

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

hdu1496(用hash思想统计数目)

作为一个刚学hash的孩子,感觉这道题目很不错,灵活的运用的数组的下标。 解题步骤:如果用常规方法解,那么时间复杂度为O(n^4),肯定会超时,然后参考了网上的解题方法,将等式分成两个部分,a*x1^2+b*x2^2和c*x3^2+d*x4^2, 各自作为数组的下标,如果两部分相加为0,则满足等式; 代码如下: #include<iostream>#include<algorithm

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

usaco 1.2 Milking Cows(类hash表)

第一种思路被卡了时间 到第二种思路的时候就觉得第一种思路太坑爹了 代码又长又臭还超时!! 第一种思路:我不知道为什么最后一组数据会被卡 超时超了0.2s左右 大概想法是 快排加一个遍历 先将开始时间按升序排好 然后开始遍历比较 1 若 下一个开始beg[i] 小于 tem_end 则说明本组数据与上组数据是在连续的一个区间 取max( ed[i],tem_end ) 2 反之 这个

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

uva 575 Skew Binary(位运算)

求第一个以(2^(k+1)-1)为进制的数。 数据不大,可以直接搞。 代码: #include <stdio.h>#include <string.h>const int maxn = 100 + 5;int main(){char num[maxn];while (scanf("%s", num) == 1){if (num[0] == '0')break;int len =

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的