[0040] 下面结合附图对本发明进行进一步详细描述。
[0041] 如图1和2所示,一种基于深度学习的图像哈希编码方法,在学习部分引入了深度卷积神经网络,通过对图像特征与哈希函数的联合优化,实现了端到端的训练过程。其实现包括如下步骤:
[0042] 步骤1、采用在ImageNet图像识别数据库上训练好的图像分类模型GoogLeNet作为初始化的基本网络结构,并将GoogLeNet模型的最后一层分类层替换为哈希层,该哈希层的单元数即为图像要编码成的比特数。
[0043] 步骤2、对GoogLeNet的参数进行优化;
[0044] 共迭代M次,每次迭代将从检索数据集中选取的50幅图像作为GoogLeNet模型的输入;并且将图像人工标注的标签信息同时作为GoogLeNet模型的输入,用于判断图像间的相似性。
[0045] 所述的M为50000;
[0046] 在每次迭代中,将从检索数据集中选取的50幅图像随机两两组合构成成对图像,并通过成对图像的标签信息判断两幅图像是否相似,从而对成对图像进行损失计算。
[0047] 同时根据每幅图像输入进GoogLeNet模型得到的二值码,进行二值码均匀分布损失的计算和量化损失的计算。
[0048] 计算出以50幅图像为一批次的所有损失后,使用随机梯度下降算法和反向传播算法来对GoogLeNet模型的参数进行更新,迭代进行M次后,得到了训练好的模型。
[0049] 步骤3、利用上述训练好的GoogLeNet,将图像检索数据集中的图像输入GoogLeNet模型,由于GoogLeNet模型的输出为浮点数,所以要将浮点数量化为二值码,从而得到每幅图像的二值码,参看图2。
[0050] 下面详细介绍本发明定义的三个损失函数对GoogLeNet模型进行参数优化,从而得到高质量的图像哈希编码的过程。
[0051] 将成对图像作为GoogLeNet模型的输入,设两个输入的图像分别为I1,I2,对应的二值码为b1,b2。本发明定义如下三个损失函数来对GoogLeNet模型进行优化:
[0052] 步骤2所述的成对图像的损失函数:
[0053]
[0054] s.t.bi∈{-1,+1}q,i∈{1,2}, (1)
[0055] S表示两幅图像是否相似,若相似,S=1;否则,S=0。H(·,·)表示两个二值码间的海明距离。如果两幅图像是相似图像,则损失等于其二值码间的海明距离,否则当两幅图像不相似时,定义一个阈值t,若海明距离小于该阈值时,才对该损失函数有贡献。
[0056] 由于上式(1)二值码是离散取值,直接优化困难,因此本发明放松上式的限制,由整数限制变为范围限制{-1,+1}->[-1,+1],海明距离变为欧式距离,GoogLeNet模型得到实值输出。公式(1)重写为:
[0057]
[0058] s.t.bi∈[-1,+1]q,i∈{1,2}. (2)
[0059] 公式(2)的梯度计算如下:
[0060] 当S=1时,
[0061] 当S=0时,
[0062] 步骤2所述的二值码均匀分布损失的计算如下:根据信息论,熵越大所蕴含的信息越多。为了提高二值码的信息量,本发明使压缩的二值码均匀分布。当二值码中-1和+1出现的概率都为50%时,熵最大信息量最多,所以该均匀分布损失函数定义为:
[0063]
[0064] q表示二值码的长度,即哈希层的单元数。n为图像数量,即得到的二值码数量,bi(j)表示第i个二值码的第j个比特。
[0065] 步骤2所述的二值码量化损失函数:
[0066] 利用GoogLeNet模型的哈希层输出为浮点数,为了得到二值码需要量化,量化过程如下:
[0067] b=sign(v), (6)
[0068] v表示GoogLeNet模型的输出;
[0069] 为了减小从欧式空间到海明空间映射导致的量化误差,本发明设计了一个量化损失函数,用于计算最后一层哈希层的值与量化该哈希层后的值的差,即每个单元(比特)量化前与量化后的值相减,具体如下:
[0070]
[0071] 如果vi>0,则b=1;否则,b=-1,其中,vi表示二值码的第i个比特;
[0072] 三个损失函数同时对哈希层的值进行计算,每幅图像的损失累加后,进行反向传播,更新GoogLeNet模型的参数。
[0073] 实施例
[0074] 下面以CIFAR图像数据集为例,进行进一步的说明。所述图像数据集包含60000张图片,共有10类标签,包括飞机、船、汽车、动物等。首先将该数据集中随机50000幅作为训练集,10000幅作为测试集。
[0075] 采用在ImageNet图像识别数据集上预训练好的图像分类模型GoogLeNet来完成图像的哈希编码任务。将GoogLeNet中的最后一层有1000个单元的分类层替换为一个哈希层,该哈希层的单元数量为图像编码为二值码的比特数,比如48比特,就定义48个单元。
[0076] 然后,对上述设置好的GoogLeNet模型进行参数的优化。该过程进行50000次迭代,每次迭代随机从训练集图像中选取50幅图像及图像对应标签输入进GoogLeNet,经过在GoogLeNet中的前向传播,在最后一层哈希层得到未进行二值化的哈希编码。利用上述定义的三个损失函数计算损失,通过随机梯度下降和反向传播算法来更新GoogLeNet网络的参数。
[0077] 最后,利用上述优化完成的GoogLeNet对训练集中所有图像进行哈希编码。对于测试集中的待检索图像,首先将待检索图像输入GoogLeNet,然后得到其哈希编码,用该哈希编码与训练集图像的哈希码进行逐一比较,计算海明距离,得到根据海明距离进行排序的图像列表,海明距离越小,两幅图像的相似性越大。