一种基于深度学习的图像检索方法和装置
技术领域
本发明属于深度学习在图像处理领域的应用,具体涉及一种采用深度神经网络对图像进行二进制哈希编码并用于检索的方法和装置。
背景技术
图像检索技术针对用户感兴趣的图像内容,按照特定的相似度衡量标准,将相关图像以相似度由高到底的方式呈现给用户。其核心问题在于如何浓缩图像的信息,获取图像的特征描述子,充分表达图像的内容信息。
传统的图像检索技术针对图像的纹理、颜色、形状等基本特征进行图像特征的提取,并采用相应的图像相似度量方法进行相似度的计算。然而这些基本的图像特征无法描绘图像的语义内容,而实际应用中,用户所关注的图像内容往往是语义层面的,比如图像中的场景、物体等概念。此外,随着互联网时代的发展,现阶段图像检索任务趋向于大规模化、多样化,要求图像检索算法能够在更短的时间内在海量图像数据中寻找到用户感兴趣的图像,这就使得图像检索技术更为困难。
针对上述问题,近些年来人们开始尝试采用深度神经网络对图像进行特征提取,利用深度神经网络,尤其是深度卷积神经网络强大的图像表达能力和二进制哈希编码高效的计算效率来实现快速图像检索,并取得了一定的成果。然而现有这类方法仍存在一些局限性,尤其是池化层的配置。在深度神经网络的结构设计中,池化层起着十分重要的作用。随着神经网络层数的不断加深,一方面池化层起着下采样的作用,减少图像的干扰信息,获取图像的重要信息;另一方面也正是下采样减少了图像的像素个数,一定程度上减少神经网络的参数,缓解了网络参数过多,消耗内存、难以收敛的问题。而现有的设计网络中,人们往往采用单一的池化方法,尤其是最大池化方法来实现池化层。针对这一缺陷,本发明提出了一种采用多种池化方法相结合的深度神经网络结构来提升图像检索的效果。
发明内容
本发明针对现有的基于深度学习的图像检索方法的局限性,提出了一种新的基于深度学习的图像检索方法和装置。
针对现有的基于深度学***均池化两种池化方法,极大地保留图像的语义信息以实现较好的图像检索效果。并进一步将从深度神经网络中获取的具有语义信息的哈希编码与多种传统的哈希编码方法相结合,获取最后的图像检索结果。本发明所采用的图像检索方法是基于深度学习的图像检索方法,采用深度神经网络进行图像检索,也就是通过搭建并训练相应的深度神经网络来获取图像的二进制哈希编码用于图像的检索过程。
具体来说,本发明采用如下技术方案:
一种基于深度学习的图像检索方法,其步骤包括:
1)搭建深度神经网络,用于图像的二进制哈希编码提取;
2)将训练集图像分批输入深度神经网络,用于深度神经网络的模型训练,并保存训练好的深度神经网络模型;
3)载入深度神经网络模型,将训练集的所有图像输入深度神经网络,获取具有语义信息的二进制哈希编码,同时采用传统的二进制哈希编码方法,获取具有视觉信息(纹理、颜色、形状)的二进制哈希编码,利用具有语义信息的二进制哈希编码和具有视觉信息的二进制哈希编码建立本地特征库;
4)将待检索图像输入深度神经网络模型,获取相应的具有语义信息的二进制哈希编码,并采用传统的二进制哈希编码方法获取该待检索图像的具有底层视觉信息的二进制哈希编码,将获取的该待检索图像的二进制哈希编码与本地特征库进行对比,并通过相似度获得检索结果。
进一步地,步骤1)所述深度神经网络的数据集划分方法为:如果在实际的应用场景中并没有大量的可用训练图像,则另取与本应用场景相近的图像数据集,将其作为训练集,否则将现有数据集划分为训练集和测试集,每张图像都有各自的标签,标签根据实际的需求设置,每张图像的标签能够不唯一。
进一步地,步骤1)所述深度神经网络的每一层池化层都有平均池化层和最大池化层,并且随着网络深度的加深,每一层池化层的网络输出层数增多,同一层池化层输出的特征图尺寸相同;在特定的网络层将池化层所有输出的特征图串联起来,并再次经过若干个卷积层进行卷积操作,实现所有特征图的特征融合效果;在深度神经网络的输出部分,采用一个全局平均池化层将深度神经网络的输出转化为向量,最后经过若干个全连接层,将深度神经网络的输出降到指定的二进制哈希编码长度。
进一步地,步骤2)采用对比损失函数进行深度神经网络的训练,所述对比损失函数采用以下步骤计算:
a)对于给定的任意批次图像I={I0,I1,...IN-1},其标签为Y={y0,y1...yN-1},N为一个批次图像的大小,取任意图像对Ii、Ij,i,j∈[0,N],有对比损失函数损失值Lpair(Ii,Ij):
其中δ(Ii,Ij)表示图像对是否相似,d(Ii,Ij)表示图像对之间的距离,margin为边缘系数。δ(Ii,Ij)和d(Ii,Ij)的定义分别为:
其中yi和yj分别为第i,j张图像的标签,y'i,k和y'j,k分别神经网络第i、j张图像在第k个节点的输出值,m为神经网络输出节点的个数,数值上与提取的二进制哈希编码长度相同;
b)对于一个批次内所有图像对存在总的损失值L:
结合Lpair(Ii,Ij)定义,L改写为:
进一步地,步骤3)将神经网络获得的具有语义信息的二进制哈希编码与采用多种传统的二进制哈希编码方法得到的具有视觉信息的二进制哈希编码相结合作为图像的特征。
进一步地,步骤4)采用以下的相似度计算方法来衡量图像之间的相似度:
a)给定待检索图像Itest,将其输入深度神经网络,获取具有语义信息的二进制哈希编码H0:
H0=sign(Y')
其中Y'为神经网络的输出,sign(*)为取符号函数;
b)假定采用n种传统图像哈希编码生成方法,其获得的二进制哈希编码分别为H1,H2...Hn,则Itest总的二进制哈希编码Htest={H0,H1,...Hn};则对于来自特征库的每一张图像Itrain,其二进制哈希编码为H'train={H'0,H'1,...H'n};
c)采用以下两种方案中的一种计算相似度sim(Itest,Itrain):
第一种:
第二种:
其中λi∈(0,1]且λ0+λ1+...λn=1,s(Hi,H'i)为:
其中hk、h'k分别为Hi和H'i第k位数值,zi为第i种哈希编码的位数。
一种基于深度学习的图像检索装置,其包括:
深度神经网络搭建模块,负责搭建深度神经网络,用于图像二进制哈希编码提取;
深度神经网络训练模块,负责将训练集图像分批输入深度神经网络,用于深度神经网络的模型训练,并保存训练好的深度神经网络模型;
本地特征库建立模块,负责载入深度神经网络模型,将训练集的所有图像输入深度神经网络中,获取具有语义信息的二进制哈希编码,同时采用传统的二进制哈希编码方法获取具有视觉信息的二进制哈希编码,利用具有语义信息的二进制哈希编码和具有视觉信息的二进制哈希编码建立本地特征库;
检索模块,负责将待检索图像输入深度神经网络,获取相应的具有语义信息的二进制哈希编码,并采用传统的二进制哈希编码方法获取该待检索图像的具有视觉信息的二进制哈希编码,将获取的二进制哈希编码与本地特征库进行对比,通过计算相似度获得检索结果。
本发明中“语义信息”是指从神经网络中获取的图像特征。一般认为从神经网络中获取的图像特征是一种高层次的语义特征,即不仅仅是对图像的浅层视觉表达,而是对一个物体、一个场景等概念的表达。
采用本发明的池化方法,之所以能够极大地保留图像的语义信息,是因为本发明在网络的同一层采用了多种池化方法,这些池化方法对信息的筛选有所差异,在每一层的池化过程中都保留了多种池化方法的信息。
本发明提出的基于深度学习的快速图像检索方法,着重改进网络的结构,采用多种池化方法尽可能地保留图像的重要信息提高图像检索的准确率,同时利用二进制哈希编码与生俱来的计算开销优势,实现在海量图像数据中进行快速、精准的图像检索。
附图说明
图1是本发明方法的主要步骤的流程图。
图2是本发明的深度神经网络的网络结构图。
具体实施方式
下面通过实施例和附图,对本发明作详细说明。
图1是本发明方法的主要步骤的流程图。
步骤1:如果在实际的应用场景中,并没有大量的可用训练图像,则另取与本应用场景相近的图像数据集,将其作为训练集,否则将现有数据集划分为训练集和测试集,每张图像都有各自的标签,标签根据实际的需求设置,每张图像的标签可以不唯一。
步骤2:搭建并设计如图2所示深度神经网络。网络的每一层池化层都有平均池化层和最大池化层,并且随着网络深度的加深,每一层池化层的网络输出层数增多,同一层池化层输出的特征图尺寸相同。在特定的网络层将池化层所有输出的特征图串联(即图2中的“拼接”)起来,并再次经过若干个卷积层进行卷积操作,实现所有特征图的特征融合效果。在深度神经网络的输出部分,采用一个全局平均池化层将深度神经网络的输出转化为向量,最后经过若干个全连接层,将深度神经网络的输出降到指定的二进制哈希编码长度.
步骤3:将训练集的图像随机划分为若干个小批次输入神经网络,并采用对比损失函数进行深度神经网络的训练。对于给定的任意批次图像I={I0,I1,...IN-1},其标签为Y={y0,y1...yN-1},N为一个批次图像的大小。取任意图像对Ii、Ij,i,j∈[0,N],有对比损失函数损失值Lpair(Ii,Ij):
其中,δ(Ii,Ij)表示图像对是否相似,d(Ii,Ij)表示图像对之间的距离,margin为边缘系数。δ(Ii,Ij)和d(Ii,Ij)的定义分别为:
其中,yi和yj分别为第i,j张图像的标签,y'i,k和y'j,k分别为神经网络第i、j张图像在第k个节点的输出值,m为神经网络输出节点的个数,数值上与提取的二进制哈希编码长度相同。
所以,对于一个批次内所有图像对存在总的损失值L:
结合Lpair(Ii,Ij)定义,L可以改写为:
步骤4:载入训练好的神经网络模型,将所有训练集图像输入神经网络,获取相应的具有语义信息的二进制哈希编码,同时采用多种传统的哈希编码方法,如普哈希、局部敏感哈希等方法对训练集的图像进行哈希编码,获取具有视觉信息的二进制哈希编码。结合上述两种二进制哈希编码,建立本地图像特征库。
步骤5:将测试集图像输入神经网络,重复步骤4)获取两种类型的二进制哈希编码,与本地特征库所有训练图像的二进制哈希编码进行比对,并按相似度由高到底返回给用户图像检索结果。相似度计算方法如下:
给定测试图像Itest,将其输入神经网络,获取具有语义信息的二进制哈希编码H0:
H0=sign(Y')
其中,Y'为神经网络的输出,sign(*)为取符号函数。
假定采用n种传统图像哈希编码生成方法,其获得的具有视觉信息的二进制哈希编码分别为H1,H2…Hn,则Itest总的二进制哈希编码Htest={H0,H1,...Hn}。则对于来自特征库的每一张图像Itrain,其二进制哈希编码为H'train={H'0,H'1,...H'n},有如下两种相似度sim(Itest,Itrain)计算方案:
第一种:
第二种:
其中λi∈(0,1]且λ0+λ1+...λn=1,s(Hi,H'i)为:
其中hk、h'k分别为Hi和H'i第k位数值,zi为第i种哈希编码的位数。
为验证本发明方法的有效性,本发明在公开数据集CIFAR-10、NUS-WIDE上进行了对照试验,将本发明的方法与现有的方法进行了对比。
CIFAR-10数据集包含60,000张图像,官方将其划分为50,000张训练图像和10,000张测试图像,共10类。本发明使用给定的50,000张训练图像用来训练深度神经网络,将10,000张测试图像随机划分为1,000张查询集和9,000张图像集。
NUS-WIDE数据集包含来自Flickr的19,5834张图像,共81类。本发明采用在这个数据集上最常用的划分方法,选取21个最常见的类别,包含图像19,5834张,每类含有图像至少5,000张。再从这些图像中随机选出10,000张作为测试集,剩余的图像作为训练集。最后从测试集中随机选取1,000张作为查询集,余下9,000张作为被查询的图像集。
为了简化实验,本发明只采用了提出的具有语义信息的二进制哈希编码进行实验对比,并彻底地考察了在不同哈希编码长度下各种方法的平均准确率。实验的结果如表1所示。从实验结果上看,无论是在CIFAR-10数据集上还是NUS-WIDE数据集上,本发明提出的方法都比现有的先进方法具有更好的图像检索效果。
表1-不同哈希码长下的图像检索平均准确率
上表1中,CNNH+方法参考文献“Supervised Hashing for Image Retrieval viaImage Representation Learning”;DNNH方法参考文献“Simultaneous Feature Learningand Hash Coding with Deep Neural Networks”;DLBHC方法参考文献“Deep Learning ofBinary Hash Codes for Fast Image Retrieval”;DSH方法参考文献“Deep SupervisedHashing for Fast Image Retrieval”;SUBIC方法参考文献“SUBIC:A supervised,structured binary code for image search”。
本发明在每一层采用的池化方法不限于平均池化和最大池化,而可以是现有的池化方法的多种组合。
上述实施例及附图仅用以说明本发明的技术原理,并不用以限制本发明。本领域的技术人员可以对本发明的技术方案做同等变化与修改,本发明的保护范围应以权利要求书的限定为准。