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

相关文章

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Redis的Hash类型及相关命令小结

《Redis的Hash类型及相关命令小结》edisHash是一种数据结构,用于存储字段和值的映射关系,本文就来介绍一下Redis的Hash类型及相关命令小结,具有一定的参考价值,感兴趣的可以了解一下... 目录HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSET

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的

C# Task Cancellation使用总结

《C#TaskCancellation使用总结》本文主要介绍了在使用CancellationTokenSource取消任务时的行为,以及如何使用Task的ContinueWith方法来处理任务的延... 目录C# Task Cancellation总结1、调用cancellationTokenSource.

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

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