深度哈希-DHN

news/2024/11/29 2:41:41/

Deep Hashing Network for Efficient Similarity Retrieval AAAI 2016
源码:https://github.com/zhuhan1236/dhn-caffe

与上一篇文章类似,通过设计损失函数,使得最后全连接层的输出分布近似于二值{-1,+1}分布。不过这篇论文从理论上说明了为什么这样设计损失函数。

哈希方法的目标是得到二值编码,所以优化过程中经常会遇到离散取值的约束,因此通常来说无法使用基于梯度的方法对目标函数进行优化。为了简化问题,通常的做法是改用一个更宽松的约束,比如不再要求“二值码”是二值的,而是只要在一个规定的范围中即可。优化结束后,再对松弛过的“二值码”进行量化,得到最终的真二值码,深度哈希算法通常采用这种做法。

松弛(Relaxation)带来的问题

用论文中的话说:1、控制量化误差,如果最后一层的输出是任意分布的话,强制二值化成{-1,+1},显然会造成很大误差。论文用实验证实了这一结论。2、一般的会使用内积近似代替汉明距离来衡量图片之间的相似度。因为汉明距离只适用于二值码,而最后一层的输出为连续实数。对于一个二值码{-1,+1},汉明距离与内积有如下关系:

distH(hi,hj)=12(Khi,hj)

同样地,如果最后一层的输出不是近似二值分布的话,使用内积近似代替汉明距离会有很大误差。

如何设计损失函数

在Iterative Quantization (ITQ)中,为了减小量化误差,使用如下目标函数:

QITQ=||hisgn(hi)||2

论文在ITQ的基础上做了改进:
因为 hi sgn(hi) 符号相同,所以
||hisgn(hi)||2=|||hi||sgn(hi)|||2=|||hi|1||2|||hi|1||1.(norm inequality)

所以 |||hi|1||1 为ITQ目标函数的上界,并且An important advantage of the proposed loss is that the L1-loss may encourage sparsity, that is, more hash bits maybe enforced to be {−1, 1} compared with the L2-loss。

附L1范数与L2范数的区别:L2范数是指向量各元素的平方和然后求平方根。使用L2范数的规则项 ||W||2 ,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0。

作者设计了pairwise cross-entropy loss

L=si,jS(log(1+exp(<zi,zj>))sij<zi,zj>)

其本质就是交叉熵损失函数:
L=si,jS(sijlog(σ(Ωij))+(1sij)log(1σ(Ωij)))

其中 Ωij=<zi,zj>,σ(Ωij)=11+eΩij ,总之根据损失函数,当 sij=0 时,要求 Ωij 很小,即不相似。反之当 sij=1 时,要求 Ωij 很大,即相似。这个损失函数为了使学习到的哈希函数能够保持语义相关性。参考: 交叉熵代价函数
接着设计了 pairwise quantization loss
Q=si,jS(|||zi|1||1+|||zj|1||1)

网络结构如下:

这里写图片描述

实验结果:

这里写图片描述
DHN-B:没有量化过程(直接使用实数特征来检索),代表该网络的性能上限。
DHN-Q:不加pairwise quantization loss
DHN-E:将pairwise cross-entropy loss 改成传统的损失函数: L=si,jS(sij1K<zi,zj>)2 (Liu et al.2012; Xia et al. 2014)


http://www.ppmy.cn/news/261247.html

相关文章

机器人导论 学习笔记2 - 运动学(D-H模型)

D-H模型 &#xff08;Denavit-Hartenberg&#xff09; 两种D-H模型&#xff08;标准D-H模型和改进D-H模型&#xff09;比较 1 将连杆坐标系的原点建立在连杆的关节首端 &#xff08;改进型DH&#xff09; 这种建立D-H坐标系的方法的步骤是&#xff1a; 画出各关节轴…

工业机器人(3)-- Denavit–Hartenberg(D-H)参数

在机械工程中&#xff0c;Denavit-Hartenberg 参数(也称为 DH 参数)是与一个特定约定相关联的四个参数&#xff0c;用于将参考坐标系附加到空间运动链或机器人操作臂的连杆上。 “Jacques Denavit and Richard Hartenberg introduced this convention in 1955 in order to sta…

一文详解机器人标准D-H参数与改进型D-H参数

标准D-H参数&#xff08;SDH&#xff09; 关节角&#xff1a;绕轴&#xff0c;旋转到的角度&#xff1b; 偏置距离&#xff1a;沿轴&#xff0c;移动到的距离&#xff1b; 连杆长度&#xff1a;从轴&#xff0c;移动到的距离&#xff1b; 连杆扭角&#xff1a;绕轴&#xf…

国密SM2算法

目录 1 前言2 基础参数3 密钥对生成4 签名算法4.1 预处理14.2 预处理24.3 生成签名4.4 签名验证4.5 签名验证原理 5 参考资料 1 前言 比原链的智能合约支持国密算法的函数。SM2是国密标准的椭圆曲线加密算法&#xff0c;遵循以下SM2国家标准&#xff1a; GB/T 32918.1-2016GB…

dirent.h使用详解

LINUX下历遍目录的方法一般是这样的 打开目录-》读取-》关闭目录 相关函数是 opendir -> readdir -> closedir #include <dirent.h> DIR *opendir(const char *dirname); struct dirent *readdir(DIR *dirp); int closedir(DIR *dirp); 好了&#xff0c;三个函…

SATA协议14种FIS介绍

&#xfeff;&#xfeff; FIS(Frame Information Structure)解析 FIS是一种用于Host和device之间信息传输的机制&#xff0c;每个FIS的格式都是固定的&#xff0c;并且对应唯一的ID&#xff0c;SATA Spec定义了14类FIS ID。 但是&#xff0c;实际上&#xff0c;我们用到主要是…

机器人之D-H模型建立和推导

D-H建模原理推导 1.1 基本思路 D-H建模具体思路是先分别在每个关节加建立关节坐标系&#xff0c;确定关节刚性连杆参数&#xff0c;再依次将关节变换联系起来&#xff0c;计算出末端执行器相对于参考坐标系的变换关系得到坐标变换矩阵&#xff0c;从而建立机械臂运动学方程。关…

03_D-H参数表的建立

D-H参数表&#xff0c;实际上是相邻各个关节坐标的变换关系表&#xff0c;根据之前针对各个关节所建立的坐标系&#xff0c;按照如下四条变换规则&#xff0c;即可得到D-H参数表。 建立D-H参数表的详细步骤&#xff1a; 根据上图所示机械臂的尺寸参数以及以上六个步骤的变换&am…