参看论文:Liu H, Wang R, Shan S, et al. Deep Supervised Hashing for Fast Image Retrieval[C]. computer vision and pattern recognition, 2016: 2064-2072.

会议水平:CVPR2016

供稿单位:中科院计算所 (中科院计算所、自动化所都是做图像处理的神一样的单位,各种CVPR、各种姿势)

1.导读

自从孪生网络又被大家捡起来哪一天(2014),就注定了和匹配相关领域的不平静,无论是图像检索、立体匹配还是基于最佳匹配的跟踪,孪生网络及其衍生分支网络正在一点点颠覆几乎所有的经典算法。由Haomiao Liu报道的深度监督哈希算法短短一年多就收获了134的引用量,大部分的相关工作都是在该基础之上开展的,所以很有必要研究。

Hash,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

2. 摘要及目标

为了在大数据上开发高效的图像检索算法,作者提出了一种新的Hashing方法用于学习图像紧密的二值编码。在图像检索领域,尽管图像的形貌变化带来非常大的挑战,但是利用CNN学习一个鲁棒性的图像表达为解决这个挑战带来了曙光。这边文章就是利用CNN来学习高相似紧凑的二值编码形式,也就是原文作者提到的深度监督Hashing。特别的,作者设计了CNN结构,利用一对图像输入,输出判别分类。(现在看来似乎很简单,但放在16年,确实不容易)。作者精心设计了损失函数,用于最大化判别性能。

Our goal is to learn compact binary codes for imagessuch that: (a) similar images should be encoded to similar binary codes in Hamming space, and vice versa; (b) the binary codes could be computed efficiently。

Our method first trains the CNN using image pairs and the corresponding similarity labels. (创新点来了,鼻祖...)

以下几句真是写出了艺术啊...

While the complex image appearance variations still pose a great challenge to reliable retrieval, in light of the recent progress of Convolutional Neural Networks (CNNs) in learning robust image representation on various vision tasks, this paper proposes a novel Deep Supervised Hashing (DSH) method to learn compact similarity-preserving binary code for the huge body of image data.

尽管复杂的图像形貌变化对图像检索而言是一个巨大的挑战,得益于最近卷机神经网络在各种视觉问题学习鲁棒性性的图像表达的进展, 我们提出一种新的深度监督hashing方法用于学习紧凑相似的二值编码信息。

To this end, a loss function iselaborately designed to maximize the discriminability of the output space by encoding the supervised information from the input image pairs, and simultaneously imposing regularization on the real-valued outputs to approximate the desired discrete values.

最后,精心设计的损失函数去最大化编码信息的输出空间,这些监督信息是从图像对中学习到的,同时对输出施加正则化,让输出迫近离散值(金标准标签)。

Extensive experiments on two large scale datasets CIFAR-10 and NUS-WIDE show the promising performance of our method compared with the state-of-the-arts.

Comment:我发现CVPR的审稿委员会就喜欢the promising performance 和 the state-of-the-arts 这两个词;吹得过分的和太过谦虚的被拒稿了。

3. 方法及细节

Figure 1. The network structure used in our method. The network consists of 3 convolution-pooling layers and 2 fully connected layers. The filters in convolution layers are of size 5 × 5 with stride 1 (32, 32, and 64 filters in the three convolution layers respectively), and pooling over 3 × 3 patches with stride 2. The first fully connected layer contains 500 nodes, and the second (output layer) has k (the code length) nodes. The loss function is designed to learn similarity-preserving binary-like codes by exploiting discriminability terms and a regularizer. Binary codes are obtained by quantizing the network outputs of images.

图1. 作者方法中的网络框架。这个网络包含3个卷积-池化层 和 两个全连接层。

3.1 损失函数设计

The loss function is designed to pull the network outputs of similar images together and push the outputs of dissimilar ones far away, so that the learned Hamming space can well approximate the semantic structure of images.

设计的损失函数驱动网络对相同的图像输出距离很近,对不同图像输出距离很远。
To avoid optimizing the nondifferentiable loss function in Hamming space, the network outputs are relaxed to real values, while simultaneously a regularizer is imposed to encourage the real-valued outputs to approach the desired discrete values.
为了避免在hamming空间优化不可微分的损失函数,网络输出轻松转为实数值,同时采用了正则化,使得实数值输出更加贴近离散值{-1, +1}.

Comment:我之前也在思考,为什么在hamming空间存在不可微分的情况,其实做着这样描述是非常保守的。粗鲁一点就是K长度的Hamming二值编码,你告诉我怎么设计金标准?怎么设计损失函数?怎么进行求偏导数,误差传播?如果对这个问题陷入了深思,那就别扯了,直接把二值编码变成实数值就好了,这个原理就相当于在最后一层加载了一个全连接层,而这个全连接层刚好只有一个神经元,只此而已。

b1,b2是一对图象输入。y是标签,y=0表示相似,也 表示不相似。Dh是两个二值编码矢量的hamming距离。m>0是一个margine值。前一项惩罚相似图像对,后一项惩罚不相似图像对

为了便于设计反向传播,作者用了L2-norm:

这里重点看第三项,该项最大的一个好处在于对特征的紧凑型进行了约束,如果特征很稀疏,那么该项惩罚值很大。

这个求偏导过程也就很顺利:

3.2 应用细节

1. 所有的卷积层作者都利用了ReLU进行调整

2.During training, the batch size is set to 200, momentum to 0.9, and weight decay to 0.004. The initial learning rate is set to 10-3 and decreases by 40% after every 20,000 iterations (150,000 iterations in total). The margin m in Eqn.(4) is heuristically set to m = 2k to encourage the codes of dissimilar images to differ in no less than k2 bits.

Comment:这里要说明一点,作者发表这篇文章的时候,BatchNorm还没有广泛应用,后来有人进做了一点点的结构更改,性能取得了非常大的提升。

4. 结果

We attribute the promising retrieval performance of DSH to three aspects: First, the coupling of non-linear feature learning and hash coding for extracting task-specific image representations; Second, the proposed regularizer for reducing the discrepancy between the real-valued network output space and the desired Hamming space; Third, the online generated dense pairwise supervision for well describing the desired Hamming space.

Comment:写这篇文章主要是因为他是开山之作。以我们现在的观点审视作者的这段话,其实性能这么好并不是因为损失函数多厉害,在线训练多出色。就是卷积的效益太强了! 后面也有人把损失函数简单的换成了L2-norm,结构上裁剪全连接层,使得网络变得很轻,性能更好。所以,对于计算机视觉领域,基于数据驱动的特征提取器,才是核心。

图像检索:CNN对Hash组算法的颠覆相关推荐

  1. CV:计算机视觉技最强学习路线之CV简介(传统视觉技术/相关概念)、早期/中期/近期应用领域(偏具体应用)、经典CNN架构(偏具体算法)概述、常用工具/库/框架/产品、环境安装、常用数据集、编程技巧

    CV:计算机视觉技最强学习路线之CV简介(传统视觉技术/相关概念).早期/中期/近期应用领域(偏具体应用).经典CNN架构(偏具体算法)概述.常用工具/库/框架/产品.环境安装.常用数据集.编程技巧 ...

  2. 从头到尾彻底解析Hash表算法

    从头到尾彻底解析Hash表算法 发布时间: 2013-10-02 10:26  阅读: 25156 次  推荐: 14   原文链接   [收藏]   作者:July.wuliming.pkuoliv ...

  3. 哈希(Hash)算法是一种单向密码体制(它是一个从明文到密文的不可逆的映射只有加密过程没有解密过程)

    https://www.cnblogs.com/xiaojq/p/11109634.html 简单解释:哈希(Hash)算法,即散列函数.它是一种单向密码体制,即它是一个从明文到密文的不可逆的映射,只 ...

  4. 转 从头到尾彻底解析Hash表算法

    出处:http://blog.csdn.net/v_JULY_v.   说明:本文分为三部分内容,     第一部分为一道百度面试题Top K算法的详解:第二部分为关于Hash表算法的详细阐述:第三部 ...

  5. 卷积神经网络(CNN)前向传播算法

    在卷积神经网络(CNN)模型结构中,我们对CNN的模型结构做了总结,这里我们就在CNN的模型基础上,看看CNN的前向传播算法是什么样子的.重点会和传统的DNN比较讨论. 1. 回顾CNN的结构 在上一 ...

  6. DL之CNN:卷积神经网络算法简介之原理简介——CNN网络的3D可视化(LeNet-5为例可视化)

    DL之CNN:卷积神经网络算法简介之原理简介--CNN网络的3D可视化(LeNet-5为例可视化) CNN网络的3D可视化 3D可视化地址:http://scs.ryerson.ca/~aharley ...

  7. DL之CNN:卷积神经网络算法应用之卷积神经网络实践技巧(DA/DP/WI/BN/H/O/R)、优化技术经验之详细攻略

    DL之CNN:卷积神经网络算法应用之卷积神经网络实践技巧(DA/DP/WI/BN/Hyperparameter/Overfitting/Regularization).优化技术经验之详细攻略 目录 卷 ...

  8. DL之CNN:卷积神经网络算法简介之卷积矩阵、转置卷积(反卷积Transpose)、膨胀卷积(扩张卷积Dilated/带孔卷积atrous)之详细攻略

    DL之CNN:卷积神经网络算法简介之卷积矩阵.转置卷积(反卷积Transpose).膨胀卷积(扩张卷积Dilated/带孔卷积atrous)之详细攻略 目录 卷积矩阵的简介 卷积.转置卷积--Tran ...

  9. DL之CNN:基于CRNN_OCR算法(keras,CNN+RNN)利用数据集(torch,mdb格式)训练来实现新图片上不定长度字符串进行识别—训练过程

    DL之CNN:基于CRNN_OCR算法(keras,CNN+RNN)利用数据集(torch,mdb格式)训练来实现新图片上不定长度字符串进行识别-训练过程 目录 输出结果 设计思路 核心代码 输出结果 ...

最新文章

  1. 因为在此系统中禁止执行脚本解决
  2. 高级考题_经济师考过就满足?还有这个高级职称等你拿!
  3. OkHttp3 + retrofit2 封装
  4. 浅谈ADO.NET中的五个主要对象
  5. MYSQL性能查看(命中率,慢查询)
  6. JEPLUS平台JS事件的操作技巧——JEPLUS软件快速开发平台
  7. nginx的安装及配置文件详解
  8. easyui datagrid 点击其它 单元格,不让头列 checkbook 选中
  9. 2035年进入现代化交通强国行列
  10. 【上电即上华为云】华为云smart智联Cat.1+PLC无线网关_3121N-IED_MC615-CN-L610-CN
  11. Mac配置ll的查看命令
  12. html5 语音唤醒,真正实现息屏语音唤醒小爱同学!释放你的双手,逼格满满哦!...
  13. 今天,想和姐妹们聊聊技术与成长|大厂程序媛的升级打怪之路
  14. linux修改密码时候提示太简单了怎么办,linux修改密码
  15. C++中的随机数函数(
  16. 快速了解常见安全设备1-入侵检测和防火墙
  17. python宝典 宋强 pdf_Python宝典
  18. Microsoft CMT 系统
  19. python爬取快手粉丝榜_[Python] 【原创开源】快手爬虫,根据id批量爬取用户的所有图集和视频...
  20. vue-admin-elem对接地图报错Unable to preventDefault inside passive event listener invocation.

热门文章

  1. 防止用户将表单重复提交的方法
  2. 毕业后的五年拉开大家差距的原因在哪里?
  3. 问题:二进制数中1的个数。
  4. hdu 1937(尺取法)
  5. hdu 4417(树状数组+离线算法)
  6. hdu 1494(DP)
  7. 使用JavaScript让网页title动起来
  8. 6.MySQL图形化工具的使用
  9. 特征工程中的IV和WOE详解
  10. iOS-iOS9系统SEGV_ACCERR问题处理【v3.6.3的一些bug修复】