1. 概述
本文的重点:
- 图像的binary hash code的生成方法
- 两阶段的检索方法——coarse-to-fine search strategy
2. 基于内容的图像检索
2.1. 基于内容的图像检索
基于内容的图像检索(Content-based Image Retrieval,CBIR)旨在通过对图像内容的分析搜索出相似的图像,其主要的工作有如下两点:
- 图像表示(image representation)
- 相似性度量(similarity measure)
2.2. 基于CNN的图像内容提取
以AlexNet卷积神经网络为例,AlexNet的网络结构如下图所示:
将最终的4096维向量作为最终图像的特征向量。这样的向量是一些高维向量,不利于计算。
3. 二进制哈希编码的深度学习方法
3.1. 模型结构
模型结构如下图所示:
在文章中,作者指出,该模型主要有三个主要的部分:
- 在大规模的ImageNet数据集上进行有监督的预训练;
- 在目标数据集上对模型进行微调,同时增加隐含层;
- 接收query,提取query的hash编码,同时查找相似的图像。
3.2. 对hash的二进制编码的学习
本人认为在上图中, F 7 F_7 F7与 F 8 F_8 F8之间会存在一个隐层,这一点不影响对Latent Layer的构造。
如上所述,我们可以使用 F 7 F_7 F7的结构作为图像的特征,但是这样的向量是一个高维的向量(4096维),这样的向量不利于计算。解决的方法有:降维(如PCA,Hash等方法)。通过Hash的方法构造出来的二进制的编码形式,可以利用hashing和Hamming距离计算相似度,那么能否通过模型学习到最好的Hash方法?
解决的方法是在 F 7 F_7 F7和 F 8 F_8 F8之间增加一个映射层(Latent Layer)H,那么如果两个图片生成的二进制编码相似,那么这两张图片也应该具有相同的标签。在H层的激活函数为Sigmoid函数。
3.3.检索
在深层的卷积神经网络中,浅层可以学习到局部的视觉表征,而深层可以捕获到适合识别的语义信息。
在检索阶段,作者采用了由粗到精的搜索策略(coarse-to-fine search strategy):
- 首先从Latent layer中检索出一批相似的候选集
3.3.1. 粗粒度检索
对于图像 I I I,可以得到其Latent Layer的输出,记为 O u t ( H ) Out\left ( H \right ) Out(H),用该输出作为图像的特征表示。为了能够得到二进制的形式,需要对上述的输出做如下的变换:
H j = { 1 if O u t j ( H ) ≥ 0.5 0 o t h e r w i s e H^j=\begin{cases} 1 & \text{ if } Out^j\left ( H \right )\geq 0.5 \\ 0 & otherwise \end{cases} Hj={10 if Outj(H)≥0.5otherwise
假设数据集中包含了 n n n个图像: Γ = { I 1 , I 2 , ⋯ , I n } \Gamma =\left \{ I_1,I_2,\cdots ,I_n \right \} Γ={I1,I2,⋯,In},其对应的二进制编码为: Γ H = { H 1 , H 2 , ⋯ , H n } \Gamma _H=\left \{ H_1,H_2,\cdots ,H_n \right \} ΓH={H1,H2,⋯,Hn},其中 H i ∈ { 0 , 1 } h H_i\in\left \{ 0,1\right \}^h Hi∈{0,1}h。
对于待检索的图像 I q I_q Iq,其对应的二进制编码为 H q H_q Hq,可以利用Hamming距离,当 H q H_q Hq与 H i ∈ Γ H H_i\in \Gamma _H Hi∈ΓH之间的Hamming距离小于某个阈值,得到 m m m个候选集 { I 1 c , I 2 c , ⋯ , I m c } \left \{ I_1^c,I_2^c,\cdots ,I_m^c \right \} {I1c,I2c,⋯,Imc}。
3.3.2. 细粒度检索
对于粗粒度检索出来的候选集 { I 1 c , I 2 c , ⋯ , I m c } \left \{ I_1^c,I_2^c,\cdots ,I_m^c \right \} {I1c,I2c,⋯,Imc},细粒度检索从该候选集中找到top k的结果。对于待检索的图像 I q I_q Iq,取出其和后选集中的对应的 F 7 F_7 F7的向量值,记为 V q V_q Vq和 V i P V_i^P ViP,计算期之间的欧式距离:
s i = ∥ V q − V i P ∥ s_i=\left \| V_q-V_i^P \right \| si=∥∥Vq−ViP∥∥
参考文献
[1] Lin K, Yang H F, Hsiao J H, et al. Deep learning of binary hash codes for fast image retrieval[C]//Proceedings of the IEEE conference on computer vision and pattern recognition workshops. 2015: 27-35.