本发明属于信息检索技术领域,具体涉及一种基于手绘草图的图像检索的方法。
背景技术:
随着计算机技术和多媒体技术的快速发展,大量的数字图像随之产生。有效的图像检索技术在各个领域比如遥感、时尚、出版、农业等都有广泛需求。在海量的图像数据集中如何快速找到特定的图像就需要使用图像检索技术。图像检索是一项通过给定的查询方式在海量图像数据集中快速查找相似图像的技术。近年来基于样例的查询随着基于手绘草图的信息检索技术快速发展而受到广泛关注。
基于手绘草图的信息检索最关键的挑战在于处理草图本身固有的模糊性,其模糊性主要表现在以下三个方面:(1)手绘草图相对于其所描绘的自然物体来说风格抽象,线条不规则,描绘的物体比例也往往与真实物体不同。(2)用户绘制草图时往往是根据意识中经过抽象处理的概念来绘制的,没有参照真实图像,这就导致有外观和结构千变万化的草图,即手绘草图与真实图像处在不同的视觉领域内。(3)由于用户的领域知识和绘制技巧参差不齐,绘制的草图具有较大的类内变化,即对同一物体不同用户会绘制出大相径庭的草图,这对检索的精确度造成很大的影响。
大多数现有的基于手绘草图的图像检索工作采用了传统的图像检索流程:首先将真实图像用边缘检测算法转换为边缘线条图像以填补草图与真实图像之间的风格差异。然后使用手工设计的特征描述算子(比如sift、hog、形状上下文等)同时作用于手绘草图与真实图像的边缘图上,提取出他们的特征表达。最终使用视觉词袋框架来将图像的特征表达量化为特征向量,从而用特征向量来计算查询草图与候选真实图像之间的相似度。
然而传统的基于低级特征描述算子的检索方法的主要问题是它们都基于一个假设,即手绘草图与真实图像之间的视觉领域鸿沟可以通过手工设计的特征来轻松的填补。但是事实往往是该假设成立的条件十分苛刻,需要大量的人工干预来对手绘草图与真实图像进行对齐、裁剪等操作,还要将真实图像进行边缘提取等预处理操作,并且手工设计的特征需要根据训练数据集图像的特点人工设定大量的参数,在未知图像上的表现差。由于手绘草图固有的模糊性,即便进行了上述的各种预处理操作之后,真实图像的边缘图依然难以和主要以线条组成的手绘草图进行匹配。
技术实现要素:
针对上述现有技术中存在的问题,本发明的目的在于,提供一种基于手绘草图的图像检索算法,以提升在大规模手绘草图检索数据集上的检索性能。
为了实现上述任务,本发明采用以下技术方案:
一种基于手绘草图的图像检索算法,包括以下步骤:
步骤一,通过边缘检测算法将真实图像数据集p渲染成边缘图数据集e;
步骤二,将手绘草图数据集s和边缘图数据集e的并集作为alexnet网络的输入进行迭代训练得到分类器,然后以分类器作为特征提取器,以分类器网络中的最大池化层为输出特征,将边缘图数据集中所有的边缘图输入分类器得到所有边缘图的索引;
步骤三,利用分类器对手绘草图数据集进行处理,得到训练数据集;
步骤四,构建用于度量学习的孪生卷积神经网络,然后使用训练数据训练该网络,训练结束后得到嵌入函数;
步骤五,用嵌入函数计算边缘图在度量空间中的特征点的集合,并建立索引结构以提高检索效率;
步骤六,输入查询草图,根据所述的索引结构,返回检索结果。
进一步地,所述的步骤二的具体过程包括:
步骤2.1,将s∪e作为alexnet网络的输入,将alexnet网络中全连接层节点的个数设置为真实图像数据集的图像类别数,以在imagenet数据集上预训练的alexnet网络的参数初始化权重,将学习率设置为0.01,权重衰减设置为0.0001,动量设置为0.9,以随机梯度下降法作为优化算法,迭代训练alexnet网络得到分类器c(x);
步骤2.2,将边缘图数据集e={e1,e2,...,en}中的每一个边缘图依次输入分类器c(x)中进行计算,得到边缘图数据集e中的所有图像的索引:
其中:cj为类别编号,j=1,2,...,k;k为真实图像数据集中的图像类别数,
进一步地,步骤三的具体过程包括:
步骤3.1,取手绘草图数据集s中的任一手绘草图作为当前手绘草图sa,将sa输入分类器c(x)得到分类预测分数向量:
其中,当前手绘草图sa的预测类别向量为
步骤3.2,设当前手绘草图sa的类别标签为la,将类别标签la作为正类标签pa,从当前手绘草图sa的预测类别向量ca中随机选5个不同于pa的标签作为负类标签集合
步骤3.3,从索引i中得到标记为正类标签pa的所有边缘图的特征向量集合记为
步骤3.4,选择负类标签集合na中的任一负类标签作为当前负类标签
步骤3.5,重复步骤3.4,直至负类标签集合中所有负类标签都被作为当前负类标签,共得到250个负样本
步骤3.6,将250个正样本与当前草图sa组成正样本对集合:
将250个负样本与当前草图sa组成负样本对集合:
步骤3.7,重复步骤3.1至3.6,直至手绘草图数据集s中所有的手绘草图都被作为当前手绘草图,得到每张手绘草图对应的正样本对集合和负样本对集合,最终将所有正样本对集合与负样本对集合做并集操作,得到最终的训练数据集t。
进一步地,步骤四的具体过程包括:
步骤4.1,设训练集t中的任意元素为元组(s,e,y),元组中s为手绘草图,e为边缘图,y为二值相似性标记,若y=1代表s与e不相似,若y=0代表s与e相似;
步骤4.2,构建用于组成孪生结构的卷积神经网络net;
步骤4.3,用2个步骤4.2中构建的net以共享参数的方式构建用于度量学习的孪生卷积神经网络g;g中包含2个子卷积神经网络nets,nete,其中nets以手绘草图作为输入,nete以边缘图作为输入,2个子网络共享同一组参数,两个子网络的输出都记为fw(·);
步骤4.4,将训练集t中的任意n个元组{(s,e,y)1,(s,e,y)2,...,(s,e,y)n}作为当前批训练元组,将当前批训练元组中的手绘草图sa输入nets得到fw(sa),将元组中的边缘图ea输入netn得到fw(ea);
步骤4.5,通过式(1)得到孪生卷积神经网络g的损失函数值l:
式(1)中,(s,e,y)i当前批训练元组中第i个训练样本,n为当前批训练元组的个数,w为nets,nete共享的网络参数,即g要训练的对象;式(1)中单个训练元组的损失l定义如式(2):
l(w,(s,e,y)i)=(1-y)lp(mw(s,e)i)+yln(mw(s,e)i)(2)
式(2)中,距离度量mw(s,e)=‖fw(s)-fw(e)‖,lp(·)为正样本对的损失函数,
步骤4.6,采用随机梯度下降法作为最优化算法,以最小化损失函数值l为目标修正卷积神经网络g的参数w;
步骤4.7,重复步骤4.4至步骤4.6,直至t中所有训练元组被当作当前批训练元组参与过训练,此时完成了一个纪元的训练;
步骤4.8,重复执行20次步骤4.7后结束网络训练,此时卷积神经网络g输出嵌入函数g(x)。
进一步地,步骤五的具体过程包括:
步骤5.1,将边缘图数据库e={e1,e2,...,en}中的任一张边缘图作为当前边缘图ec,采用嵌入函数g(x)将当前边缘图ec嵌入到度量空间中,得到度量空间中的特征点g(ec);
步骤5.2,重复步骤5.1,将边缘图数据库e={e1,e2,...,en}中所有边缘图嵌入度量空间得到特征点集合f={g(e1),g(e2),...,g(en)};
步骤5.3,将步骤5.2中特征点集合f={g(e1),g(e2),...,g(en)}按照类别存储,得到边缘图数据集e中的所有图像的索引:
其中:cj为类别编号,j=1,2,...,k;k为当前要检索的数据集中的图像类别数,
进一步地,步骤六的具体过程包括:
步骤6.1,记待查询手绘草图为sx,采用嵌入函数e(x)将sx嵌入到度量空间中,得到sx在度量空间中的特征点e(sx);
步骤6.2,在索引ig中检索与待查询手绘草图sx类别标签相同的真实图像边缘图特征点集合f,计算f中每个特征点和特征点e(sx)之间的欧氏距离;
步骤6.3,选取欧氏距离最小的前k个边缘图特征点所对应的真实图像作为与待查询手绘草图sx最相近的k个真实图像,返回给用户作为检索结果。
本发明与现有技术相比具有以下技术特点:
1.本发明方法采用度量学习算法得到一个映射函数,将手绘草图与真实图像映射到同一度量空间,在该度量空间中的l1范式可以直接代表原空间中草图和真实图像之间的“语义”相似度,很好的解决了草图与真实图像之间的跨域匹配问题。具体的讲,本发明使用正负样本对来训练卷积神经网络,从而将输入空间中标记为相似的草图与照片的特征向量“拉近”,而把标记为不相似的图像的特征向量“推远”。最终设计出一个集成化的检索方法。
2.本发明通过针对手绘草图的特点设计一种全新的卷积神经网络结构,采用该卷积神经网络来自动学习超完备的特征过滤器组组成特征提取器,提取出高级抽象特征,该特征除了能够处理草图的几何形变之外,在未知数据集上也有很强的泛化能力,有效的解决了手工设计的低级几何特征描述子的算法泛化能力弱,难以扩展到未知数据集的问题。
3.本发明以度量学习方法对草图与真实图像学习一种相似度度量,有效的解决了传统的基于手绘草图的图像检索算法中存在的难以进行跨域匹配、难以对草图的大量类内变体保持不变性的问题,极大的提高了基于手绘草图的图像检索的精确度和鲁棒性,达到了目前本领域先进水平。
附图说明
图1是本方法的整体流程图;
图2是alexnet结构图;
图3是孪生卷积神经网络结构图;
图4是本发明检索结果示意图;
具体实施方式
以下结合附图对本发明方案进行详细说明。
一种基于手绘草图的图像检索算法,如图1所示,包括以下步骤:
步骤一,通过边缘检测算法将真实图像数据集渲染成边缘图数据集;其具体过程为:
记真实图像数据集为p={p1,p2,...,pn},n为数据集中真实图像的个数;采用边缘检测算法依次将真实图像数据集中的照片pi(i=1,2,...n)渲染成边缘图ei,构成边缘图数据集e={e1,e2,...,en},e中的边缘图和p中的图片一一对应;
本实施例中,真实图像数据集p选用flickr15k数据集,边缘检测算法采用canny算法。
步骤二,将手绘草图数据集和边缘图数据集的并集作为alexnet网络的输入进行迭代训练得到分类器,然后以分类器作为特征提取器,以分类器网络中的最大池化层(maxpool3层)为输出特征,将边缘图数据集中所有边缘图输入分类器得到所有边缘图的索引,其具体过程为:
步骤2.1,记手绘草图数据集为s={s1,s2,...,sa,...,sk},a=1,2,…,k;k为数据集中手绘草图个数;将s∪e作为alexnet网络的输入,将alexnet网络中全连接层节点的个数设置为真实图像数据集的图像类别数,本实施例使用的数据集步骤一所述的flickr15k数据集中的类别数33;以在imagenet数据集上预训练的alexnet网络的参数初始化权重,将学习率设置为0.01,权重衰减设置为0.0001,动量设置为0.9,以随机梯度下降法作为优化算法,迭代训练alexnet网络得到分类器c(x);其中x为一张图像(边缘图或手绘草图)数据,分类器的输出为一个c维的向量,c为边缘图数据集或手绘草图数据集中图像类别的数量,向量的第b个元素为分类器判断输入的图像x属于第b类的概率值;构建出的alexnet网络如图3所示。
本实施例中,所述的alexnet卷积神经网络来自:krizhevskya,sutskeveri,hintonge.imagenetclassificationwithdeepconvolutionalneuralnetworks[c]//advancesinneuralinformationprocessingsystems.2012:1097-1105。
步骤2.2,将边缘图数据集e={e1,e2,...,en}中的每一个边缘图依次输入分类器c(x)中进行计算,得到边缘图数据集e中的所有图像的索引
cj为类别编号,j=1,2,...,k;k为真实图像数据集p中的图像类别数,
步骤三,利用分类器对手绘草图数据集进行处理,得到训练数据集,其具体步骤如下:
步骤3.1,取手绘草图数据集s中的任一手绘草图作为当前手绘草图sa,将sa输入分类器c(x)得到分类预测分数向量:
其中,当前手绘草图sa的预测类别向量为
步骤3.2,设当前手绘草图sa的类别标签为la,将类别标签la作为正类标签pa,从当前手绘草图sa的预测类别向量
步骤3.3,从索引i中得到标记为正类标签pa的所有边缘图(即正类边缘图)的特征向量集合记为
clayer-name(·)表示分类器某一层(未明确标识layer-name则特指最后一层)的输出,cmp3(·)是分类器的最大池化层(maxpool3,简写为mp3)的输出向量;sa,pa中的上标a用于标识当前选中的草图,
步骤3.4,选择负类标签集合na中的任一负类标签作为当前负类标签
步骤3.5,重复步骤3.4,直至负类标签集合中所有负类标签都被作为当前负类标签,共得到250个负样本
步骤3.6,将250个正样本与当前草图sa组成正样本对集合
步骤3.7,重复步骤3.1至3.6,直至手绘草图数据集s中所有的手绘草图都被作为当前手绘草图,得到每张手绘草图对应的正样本对集合和负样本对集合,最终将所有正样本对集合与负样本对集合做并集操作,得到最终的训练数据集t;
步骤四,构建用于度量学习的孪生卷积神经网络,然后使用步骤三生成的训练数据训练该网络,训练结束后得到能够将图像嵌入学习的度量空间中的函数。其具体步骤如下:
步骤4.1,设训练集t中的任意元素为元组(s,e,y),元组中s为手绘草图,e为边缘图,y为二值相似性标记,若y=1代表s与e不相似,若y=0代表s与e相似;
步骤4.2,构建用于组成孪生结构的卷积神经网络net,本实施例中,该神经网络的结构如表1:
表1本发明卷积神经网络结构表
步骤4.3,用2个步骤4.2中构建的net以共享参数的方式构建用于度量学习的孪生(siamese)卷积神经网络g;本步骤构建出的网络g如图3所示,由2个相同的子网络构成,两个子网络结构相同,共享参数,均为步骤4.2中所述的网络net;
本实施例中,所构建的孪生卷积神经网络g的结构如图3所示,其中包含2个子卷积神经网络nets,nete,其中nets以手绘草图作为输入,nete以边缘图作为输入,每个子卷积神经网络的基础模型都为表1所示;2个子网络共享同一组参数,两个子网络的输出都记为fw(·),最终同时使用nets,nete的输出计算损失函数值;
步骤4.4,将训练集t中的任意n个元组{(s,e,y)1,(s,e,y)2,...,(s,e,y)n}作为当前批训练元组,将当前批训练元组中的手绘草图sa输入nets得到fw(sa),将元组中的边缘图ea输入netn得到fw(ea);
步骤4.5,通过式(1)得到孪生卷积神经网络g的损失函数值l:
式(1)中,(s,e,y)i当当前批训练元组中第i个训练样本,n为当前批训练元组的个数,w为nets,nete共享的网络参数,即g要训练的对象;式(1)中单个训练元组的损失l定义如式(2):
l(w,(s,e,y)i)=(1-y)lp(mw(s,e)i)+yln(mw(s,e)i)(2)
式(2)中,距离度量mw(s,e)=‖fw(s)-fw(e)‖,lp(·)为正样本对的损失函数,
步骤4.6,采用随机梯度下降法作为最优化算法,以最小化损失函数值l为目标修正卷积神经网络g的参数w;
本实施例所采用的随机梯度下降法的参考文献为:bottoul.large-scalemachinelearningwithstochasticgradientdescent[m]//proceedingsofcompstat'2010.physica-verlaghd,2010:177-186.
训练过程包含2个阶段:
第一阶段是前向传播阶段,将训练样本输入网络的数据层,经过网络中各种隐含层进行逐层变换,逐层映射,直到输出层按照损失函数l计算损失值。
第二阶段是反向传播阶段,用损失值计算各个参数的梯度值,将参数向负梯度方向更新,进一步对整个卷积神经网络的参数进行监督优化。
步骤4.7,重复步骤4.6至步骤4.6,直至t中所有训练元组被当作当前批训练元组参与过训练,此时完成了一个纪元的训练;
步骤4.8,重复执行20次步骤4.7后结束网络训练,此时卷积神经网络g输出嵌入函数g(x)。
步骤五,用嵌入函数g(x)计算边缘图在度量空间中的特征点的集合,并建立索引结构以减少检索时需要和手绘草图特征进行相似度计算的候选边缘图特征数量,提高检索效率。其具体步骤如下:
步骤5.1,将边缘图数据库e={e1,e2,...,en}中的任一张边缘图作为当前边缘图ec,采用嵌入函数g(x)将当前边缘图ec嵌入到度量空间中,得到度量空间中的特征点g(ec);
步骤5.2,重复步骤5.1,将边缘图数据库e={e1,e2,...,en}中所有边缘图嵌入度量空间得到特征点集合f={g(e1),g(e2),...,g(en)};
步骤5.3,将步骤5.2中特征点集合f={g(e1),g(e2),...,g(en)}按照类别存储,得到边缘图数据集e中的所有图像的索引:
其中:cj为类别编号,j=1,2,...,k;k为当前要检索的数据集中的图像类别数,
步骤六,输入查询草图,根据所述的索引结构,返回检索结果,具体步骤如下:
步骤6.1,记待查询手绘草图为sx,采用嵌入函数e(x)将sx嵌入到度量空间中,得到sx在度量空间中的特征点e(sx);
步骤6.2,在索引ig中检索与待查询手绘草图sx类别标签相同的真实图像边缘图特征点集合f,计算f中每个特征点和特征点e(sx)之间的欧氏距离;此处使用该测试手绘草图sx的类别标签从索引ig中得到与查询手绘草图sx类别标签相同的真实图像边缘图特征点集合;
步骤6.3,选取欧氏距离最小的前k个边缘图特征点所对应的真实图像作为与待查询手绘草图sx最相近的k个真实图像,返回给用户作为检索结果。
仿真实验:
本发明采用flickr15k数据集进行实验,flickr15k中包含了大约15000幅真实图像,以及330张手绘草图;共分类为33类;本次实验选用caffe深度学习库实现所有卷积神经网络的训练过程。训练时间与训练数据集的大小以及训练纪元数有关。本发明实验的机器配置为intelcore-i5-6600k3.2hzcpu、16gb内存、nvidiagtx10606gbgpu×2、cudav8.0、cudnnv5.1、mxnetv0.9.3、ubuntu16.04操作系统。在预先计算所有真实图像的特征后,每张草图的查询处理时间平均大约为0.002秒,说明本发明设计的算法有较高的可用性。
表2:基于手绘草图的图像检索结果比较
表2展示了本发明算法与其他基准算法的平均均值准确率(meanaverageprecision,map)对比结果。从表2中可见,本发明算法达到了0.1954的map,超过了其他所有基准方法。特别的,本发明算法相比于其他所有非线性方法而言鲁棒性更强。从表2中还可以看出,本发明算法比同样采用卷积神经网络的3dshape有更好的性能,说明本算法设计的较大的卷积核尺寸更适合于提取手绘草图的特征。
图4展示了部分手绘草图的查询结果。从图4中可以看出本发明检索出的图像与手绘草图的相关性十分强,说明本算法的有效性。
总之,本算法通过设计一种新的卷积神经网络结构得到一种嵌入函数,将所有手绘草图与真实图像映射到学习到的度量函数所定义的度量空间中进行相似度度量,有效的提升了检索算法的精确度和鲁棒性,达到了目前的先进水平。