监督哈希的图像检索
文章:Supervised hashing for image retrieval via image representation learning
一、概述
1.基于哈希图像检索原理
(1)基础最近邻搜索问题
给定一个点集,以及一个查询点q,需要找到离q最近的点的集合;在大规模高维度空间的情况下,这个问题就变得非常难,而且大多数算法计算量极大,复杂度很高; 而且一般用近似的最邻近搜索代替;哈希就是解决上述这类问题的主要方法;
(2)基于哈希图像检索概述
在一个小型图片数据库中,我们可以为每张图片加上标签,例如一张风景照,我么可以标记山,水,湖泊,房屋等等标签,我们搜索房屋关键字时,可以到数据库中去匹配,从而找到用户需要的图片。
在这个大数据时代,每天产生数以亿计的图片,并且对于图片这种高维数据,依然使用传统的方法已经很难解决检索问题。对于这种大规模数据的检索,近似近邻搜索可以达到很好的效果,它平衡了效率与准确率,使检索达到很好的效果。主要思想是,将每一张图片用一个相对较短的01编码表示,例如长度为64,128的编码,这个编码依然近似保持了图片空间的物理近邻关系。当用户上传一张图片时,使用哈希函数将它转化为01编码,然后计算这条编码与数据库中所有图片的编码进行距离计算(此时使用汉明距离计算)即是将该图片的二进制编码,与数据库中所有二进制编码进行异或运算,其中1的个数即为距离,对所有的距离进行排序,选择前100个距离最近的作为相近的图片,然后通过索引找到原始图片显示出来
(3)基于哈希检索详解
哈希学习的目的:通过机器学习机制将数据映射成简洁的二进制串的形式, 同时使得哈希码尽可能地保持原空间中的近邻关系, 即保相似性.(这一点很重要,如果失去了原来的相似性,那么哈希学习也就变得没有意义了)
以下面这幅图为例,原始数据是三幅图像,其中后面这两幅相似度比较高,也就是说在原始空间中从语义层次的距离或者欧氏距离都比较近,映射为哈希码之后,距离也应该更近。
步骤:
[1] 特征提取
对图像数据库中的图像逐一进行特征提取,并将其以图像文件名和图像特征一一对应的方式添加到特征库中
[2] 哈希编码
哈希编码可以拆分成为两个子阶段,在对特征进行编码之前需要有哈希函数集,而哈希函数集则通过哈希函数学习阶段而得到,因此这两个子阶段分别为哈希函数学习阶段和正式的哈希编码阶段。在哈希函数学习阶段,将特征库划分成训练集和测试集,在训练库上对构造的哈希函数集 进行训练学习;正式的哈希编码阶段时,分别将原来的特征 代入到学习得到的哈希函数集 中,从而得到相应的哈希编码。值得注意的是,如果设计的哈希算法已经经过实验验证有效,那么在实际的应用系统中,在划分数据集的时候,可以将整个图像库既作为训练集也作为图像数据库,从而使得在大规模图像上学到的哈希函数具备较好的适应性。
[3] 汉明距离排序
在汉明距离排序阶段,对于给定的查询图像,逐一计算查询图像对应的哈希编码到其他各个哈希编码之间的汉明距离,然后按从小到大的顺序进行相似性排序,从而得到检索结果。
[4] 重排
针对步骤(3)汉明排序后的结果,可以选择前 个结果或者对汉明距离小于某一设置的汉明距离 的结果进行重排。一般地,在重排的时候采用欧式距离作为相似性度量得到重排后的结果。因此,从这里可以看到,哈希过程可以看作是筛选候选样本或是粗排序的过程。在采用哈希方法进行大规模图像检索的应用系统中,通常会有重排这一步,但是在设计哈希算法的时候,对性能进行指标评价直接采用的是汉明距离,也就是在评价哈希算法性能的时候,不需要重排这一步。
参考文章:
1.哈希学习简介
2.基于哈希的图像检索框架
3.哈希学习算法之二:基于hash的ANN框架
2.目前基于哈希检索的问题
在现有的用于图像检索的监督哈希方法中,输入图像通常由手工制作的视觉特征向量来编码。这样的手工特征向量不一定保留图像对的精确语义相似性,这通常可能会降低哈希函数学习的性能。
3.解决问题
文章提出的方法可以自学习图像的特征和哈希函数。不再需要人工输入图像特征,提高哈希学习的性能,同时保留图像精确的语义相似性。
方法分为两个阶段:
(1)给定训练图像上的成对相似矩阵
S
S
S,提出了一种可伸缩的坐标下降方法,将
S
S
S分解为
H
H
T
HH^{T}
HHT的乘积,其中
H
H
H是一个矩阵,其每一行都是与训练图像相关联的近似哈希码.
(2)采用深度卷积神经网络来获取图像的特征,同时根据特征训练哈希函数。
二、详细步骤
1.整体流程图
2.阶段分析
(1)第一阶段
给出n张图片为 I = { I 1 , I 2 . . . , I n } I=\lbrace I_1,I_2...,I_n\rbrace I={I1,I2...,In}构建出成对的相似矩阵 S S S,如果两张图片在语义上相似那么 S i , j = 1 S_{i,j}=1 Si,j=1语义不相似则为0,如图所示:
i 1 i_1 i1 | i 2 i_2 i2 | . . . ... ... | i n i_n in | |
---|---|---|---|---|
i 1 i_1 i1 | 1 | -1 | -1 | |
i 2 i_2 i2 | 1 | 1 | 1 | |
: | : | : | : | : |
i n i_n in | -1 | 1 | 1 |
采用一种可伸缩的坐标下降算法,将
S
S
S进行分解
S
≈
1
q
H
H
T
S\approx\frac{1}{q}HH^{T}
S≈q1HHT, 且
H
∈
R
n
×
q
H\in R^{n\times q}
H∈Rn×q,其中
H
H
H的元素为
{
−
1
,
1
}
q
\lbrace-1,1\rbrace^{q}
{−1,1}q
在
H
H
H第
K
K
K行值作为图像
I
k
I_k
Ik的近似目标哈希编码
H H H其实就是图片的哈希编码矩阵。
目前的研究指出了, H i . H j T H_i.H^{T}_j Hi.HjT两行的内积一一对应着两行的汉明距离,并且范围在 [ − q , q ] [-q,q] [−q,q]之间,因为 H H H的每一行都是 { − 1 , 1 } \lbrace-1,1\rbrace {−1,1}( H H H是哈希码的矩阵,哈希码的个数为 q q q)。
问题来了:
如果将
S
S
S进行分解
S
≈
1
q
H
H
T
S\approx\frac{1}{q}HH^{T}
S≈q1HHT呢?
先用随机生成的哈希函数获取图像哈希编码生成哈希矩阵然后将利用公式:
(
∣
∣
.
∣
∣
F
\mid\mid.\mid\mid_F
∣∣.∣∣F —Frobenius范数实际上就是衡量这个矩阵和对应的零矩阵的距离,就像二维平面上的一个点,和原点的距离就是它的f范数,这个距离越小说明越相似)来提高矩阵
1
q
H
H
T
\frac{1}{q}HH^{T}
q1HHT与
S
S
S的相似性。
具体算法如下:
1.坐标下降的目的就是分解出和S相似的矩阵,通过此公式来提高相似性
由于在这个式子中的
H
∈
{
−
1
,
1
}
n
×
q
H\in\lbrace-1,1\rbrace^{n\times q}
H∈{−1,1}n×q,无法更好的优化
H
H
H所以对
H
H
H的的取值进行优化,让精度更加朱雀,取到
H
∈
[
−
1
,
1
]
n
×
q
H\in[-1,1]^{n\times q}
H∈[−1,1]n×q 公式如下
2.输入:
矩阵
S
∈
{
−
1
,
1
}
n
×
n
S\in\lbrace-1,1\rbrace^{n\times n}
S∈{−1,1}n×n ,生成的哈希编码位数,误差
ϵ
\epsilon
ϵ,最大的迭代次数
T
T
T
初始化:
3.在面对最小化一个多元的函数问题是,我们每一次迭代的时候只改变一个目标变量的值,也就是固定其他变量不动,只在该变量的维度上寻找一个使函数最小的值。类似于贪心算法。对于矩阵的优化也是每次只针对一个值
H
i
j
H_{ij}
Hij
以
H
H
H的单列为例子:我们对
H
∗
j
H_{*j}
H∗j进行优化,那么我们采用其他列的值进行计算。
那么对于整体的
H
∈
{
−
1
,
1
}
n
×
q
H\in\lbrace-1,1\rbrace^{n\times q}
H∈{−1,1}n×q
对于
H
i
j
H_{ij}
Hij的优化
通过泰勒公式分解:
其中:
进一步分解
因为整个公式要去趋近于0 所以可以得出
计算得出 d公式
更新L
计算L的最小值
(2)第二阶段
在完成第一阶段后,我们开始搭建神经网络,神经网络有三层卷积池化层。
最后的输出层分为两个部分:
第一个部位是红色标识,共有q个输出单元表示了当前图片的哈希码。
第二个部分是黑色标识,共有c个输出单元,表示了能够获取到的图片的离散化特征类,这个部分是假设我们的神经网络可以获取到图片的离散化类标签,我们对能获得的离散化类标签建立矩阵 Y Y Y,它的每一行用 { 0 , 1 } \lbrace0,1\rbrace {0,1}代表了图片是否属于这个类别。这一部分可以加强整个网络的准确性。
3.实验验证
(1)数据集
采用了MNIST、CIFAR-10、NUS-WIDE三个数据集。
其中MNIST数据集总共70k张 28X28 手写的0-9得到图像↑↑↑↑↑
CIFAR-10 由60K张 32X32图像其中共有10类每类由6K张图像 ↑↑↑↑↑↑
NUS-WIDE 是一个带有网络标签标注的图像数据,包含来自网站的 270K张 图像,5018类 不同的标签,只选其中21类 每类照片选择5K张。↑↑↑↑↑
同时为了方便将图像的分辨率统一为64X64
(2)评价指标
- Mean average precision均值平均精度
- Precision-Recall curves
- Precision curves within Hamming distance 2
- Precision curves w.r.t
(3)对比算法
无监督的算法:
LSH、SH、ITQ
监督:
KSH、MLH、BRE、ITQ-CCA
(4)实验结果
MNIST
CIFAR-10
NUS-WIDE
三、总结
整体上由几个创新的点总结下:
1.将图片的相似矩阵通过创新的可伸缩的坐标下降方法,将S矩阵分解 成为与其相似的H哈希编码矩阵,提高了后续深度卷积网络训练的精确性。
2.采用深度卷积神经训练,在卷积神经网络中采用两部分输出,一部分是每个输出单元输出哈希编码,另一部分输出获得图像的类特征矩阵,有助于使神经网络更加的精确。
提出的坐标下降的方法,数学的推理暂且没有做,对于LaTeX数学公式的编辑还不够熟练,以后的时候补充上。