基于深度哈希网络和子块重排序的大规模图像子块检索方法与流程

文档序号:17890454发布日期:2019-06-13 15:35阅读:277来源:国知局
基于深度哈希网络和子块重排序的大规模图像子块检索方法与流程

本发明涉及图像处理技术领域,具体涉及一种基于深度哈希网络和子块重排序的大规模图像子块检索方法。



背景技术:

图片充斥于现代生活的方方面面,随着网络技术的进步和网络的普及,图像这种包含了大量信息的传播媒介呈现出爆发性增长的趋势。人们不再满足于简单的阅读文字或者聆听声音,图片能够给予更加丰富的信息和更加直观的感受,对于信息的传播也能够赋予更加主观化的体验。然而图像这种媒介虽然有着许多优点,但是由于本身对传输的要求高,也更容易存在失真等情况,当网络情况波动,传输的图片往往只有较低的分辨率或者覆盖了噪声,对体验造成恶劣的影响。

由于图片失真和网络波动存在的普遍性,可靠且高效的图像处理算法变得越来越重要,例如当网络条件不够传输高分辨率图片时,可以在客户端将低分辨率图片进行处理,复原为高分辨率图片,当图片受到噪声污染时,也可以利用去噪方法将其恢复为清晰图片。近年来,在图像处理领域,利用局部图像子块的方法高效且流行,其核心方法在于从原图中提取大量具有重叠性的小尺度图像子块,并在处理后堆叠回原图位置,本质是利用了相邻图像子块存在于高度结构化的几何空间的性质。然而这种非局部提取图像子块的方法,在一些没有重复图片模式或者强纹理的图片中,很难找到足够多的相似图像子块作为互补充对象,这将会导致非局部图像处理方法效果的变差。为了弥补这个问题,目前亟待需要将传统的在原图中寻找图像子块的行为扩充到在数据库的范围中寻找图像子块,从而确保找到更多更相近的图像子块,为后续的图像处理算法完成最基础最重要的准备步骤。

面对大规模图像子块检索的问题,首先要解决的是数据规模,一张512*512大小的图片,如果按照7*7大小密集采样图像子块,那么会获得256036张图像子块,在单一图片中寻找近似子块的计算量还能接受,那么扩展到多幅图像甚至数据库的规模,那就完全无法接受了。现有的图像检索方法主要针对图像级别,很少有涉及到图像子块级别的检索,由于图像子块本身尺度小,难以包含高层信息。如果单纯采取密集切割并且暴力求取近邻的方法,效率过低;常用最近邻方法,如著名的k-d树,在如此大规模的数据面前,效率会急剧下降;哈希方法面对包含信息量过小的图像子块,很难有所提升,均不符合实际应用。



技术实现要素:

本发明的目的是为了解决现有技术中的上述缺陷,寻找一种面对大规模图像子块数据同时保持高效率的子块检索方法,从而确保后续的各类图像处理算法有充足的相似子块选择,保证后续算法的效果。

本发明的目的可以通过采取如下技术方案达到:

一种基于深度哈希网络和子块重排序的大规模图像子块检索方法,所述的大规模图像子块检索方法包括下述步骤:

s1、数据准备,准备已通过大规模图像数据库预训练的深度网络权重和待训练的纹理图片图片库;

s2、训练样本挑选,通过预处理、正负样本构建和困难样本挖掘,选出具有代表性的训练样本;

s3、通过搭建网络结构和构造损失函数训练基于图像外观相似性的深度哈希网络,保存训练完成的网络参数;

s4、图像子块重排序,以深度哈希网络作为哈希码提取器,将图片中的所有子块排成队列,其中相似子块聚集在一起

s5、通过连续敏感哈希,对两张图片进行子块之间的快速映射,并将子块队列链接进来,实现快速定位。

进一步地,所述的步骤s1、数据准备的过程如下:

s11、下载通过大规模图像库imagenet预训练过的alexnet网络权重;

s12、选择能够表达图像外观的纹理图片库uiuc_texture。

进一步地,所述的步骤s2、训练样本挑选的过程如下:

s21、预处理,将每张图片下采样到256*256的大小,并进行随机裁剪和正则化处理;

s22、正样本构建,从同一标签下随机挑选两张图片,组成图片对,作为正样本;

s23、负样本构建,随机从两个不同标签下各自选取一张图片组成图片对,作为负样本;

s24、通过k-means聚类,在容易混淆的类别之间构建更多负样本,作为挖掘出的困难样本。

进一步地,所述的步骤s3中搭建网络结构的过程如下:

s31、输入图像x;

s32、将图像x输入卷积层conv1,卷积核大小为11,步长为4,进行局部响应归一化,再通过非线性激活和池化层,得到特征图x1;

s33、将特征图x1输入卷积层conv2,卷积核大小为5,步长为1,进行局部响应归一化,再通过非线性激活和池化层,得到特征图x2;

s34、将特征图x2输入卷积层conv3,卷积核大小为3,步长为1,通过激活层得到特征图x3;

s35、将特征图x3输入卷积层conv4,卷积核大小为3,步长为1,通过激活层得到特征图x4;

s36、将特征图x4输入卷积层conv5,卷积核大小为3,步长为1,通过激活层和池化层得到特征图x5;

s37、将特征图x5输入2层长度为4096的全连接层,得到全连接特征。

进一步地,所述的步骤s3中构造损失函数的过程如下:

构建两个相同结构共享权值的网络,通过图片对的形式进行学习;

对于哈希码定义图片对的标签:当图片对的两张图片来自于同一个标签,则图片对的标签为sij=1,否则sij=0,由此定义图片对标签的似然函数:

其中bi,bj∈{-1,1}cbi,bj表示图片i和j的哈希码;

那么在优化最大似然函数的时候,需要求解以下优化问题:

为了满足哈希码离散形式的要求和连续函数容易优化求解之间的平衡,考虑到sigmoid函数的性质,当它的导数趋近于0的时候,自身的函数值趋向于0或者1,所以通过将sigmoid函数的导数作为惩罚项添加到损失函数中,从而使得二值化哈希值时精度损失降低,其中sigmoid函数的表达形式为:

其导数为:

sig′(x)=sig(x)×(1-sig(x))

最终的损失函数形式为:

进一步地,所述的步骤s4、图像子块重排序的过程如下:

s41、随机定位一个图像子块,在只有h×h个子块的邻域中进行暴力的最近邻查找,每个子块仅仅访问一次,其中,h取值为4或5;

s42、当该邻域中的子块都被访问过,此时队列的最后一个子块在全图范围中查找最近邻子块;

s43、定位到新的子块,并以其为中心划分新的h×h个子块的邻域;

s44、重复步骤s41-s43,直至访问完所有子块,按照访问顺序,所有子块将排成一维队列,此时每个子块的前后多个子块都是自己的相似子块。

进一步地,所述的步骤s5、通过连续敏感哈希,进行子块之间的快速映射,并将子块队列链接进来,实现快速定位的过程如下:

s51、通过连续敏感哈希,将待处理图片a和通过深度哈希找到的最近邻图片a1之间进行子块的快速映射;

s52、将图片a1和它自身重排序之后的子块队列进行映射,将每个子块在队列中的前后3个相似子块作为候选,从而实现对图片a中相似子块的快速检索。

本发明相对于现有技术具有如下的优点及效果:

1)、本发明针对图像子块检索,提出一种基于深度哈希网络和子块重排序的大规模图像子块检索方法,灵活运用了图像包含的信息,达到加速子块检索的效果,提高了效率。

2)、本发明提出了端到端的深度哈希网络来解决图像外貌相似性搜索问题,无需人为监督和调整,整体网络参数较少,所需训练时间也较少,符合实际应用场景。

3)、本发明提出的子块重排序算法,结合了图像局部性和整体一致的特性,有效利用了图像局部延展性和整体模式的跳变,高效有用,且同时可以离线并行运行,有效节约大量时间。

4)、本发明通过图像级别的深度哈希方法解决图像库范围太大的问题,通过子块重排序解决子块检索过于繁琐次数过多的问题,整体效率在图像级别和子块级别两个阶段都得到了提高,相比传统的检索子块方法,大大压缩了时间。

附图说明

图1是本发明提出的基于深度哈希网络和子块重排序的大规模图像子块检索方法的流程图;

图2是本发明中深度哈希网络的内部结构图;

图3是本发明中子块重排序效果图;

图4是本发明中连续敏感哈希的细节图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例

如图1所示,本实施例公开了一种基于深度哈希网络和子块重排序的大规模图像子块检索方法,输入图片,依次进行哈希码提取、k近邻图片检索、图像子块重排序和csh图像子块快速映射。哈希码提取由深度哈希网络完成,通过输入样本图片对的训练,共享权值的两个网络会学习图像的外貌特征,通过端到端的训练使得最终输出的哈希码具有表征图像外观特征的能力。训练好的网络作为一个哈希码提取器,能够将数据库中所有图片输入,并将哈希码存储下来,这样每当有新的待处理图片,就能通过哈希码迅速在数据库中查找海明距离最小的k张图片。将这k张图片进行子块重排序,就能将相近的图像子块排列到相邻的位置,这样每一个定位的子块前后几个子块都是相似子块,可以直接进行堆叠。最后通过csh方法将待处理图像和近邻图像进行快速一一映射,然后将重排序后的图像子块段堆叠回来,达到快速寻找大规模图像子块的目的。

本实施例公开的基于深度哈希网络和子块重排序的大规模图像子块检索方法具体包括如下技术步骤:

s1、数据准备;

本实施例需要准备的数据主要是经过大规模图像数据库预训练的alexnet网络和纹理图片数据集uiuc_texture。考虑到本发明需要寻找具有外观相似性的图片,并不涉及到高层语义,而网络深度提高重点在于将浅层图像信息结合为高层语义信息,所以选择网络深度较浅的alexnet,既能满足功能的需求,同时也能节约训练时间。通过大规模图像数据库imagenet预训练过的alexnet网络,对图像信息已经有了较好的表征能力,尤其是前几层卷积层,在迁移到纹理图像上时也能很好地表现低层次的外观特征。

选择纹理图片数据集uiuc_texture的原因在于目前主流的图片检索算法主要是基于高层语义的检索,鲜有基于图像外观信息的检索,尤其是基于图像子块的外观信息,为了实现对于子块级别外观信息的检索,选择的首要方法是自己定义图像关于子块的距离公式然后通过计算建立距离矩阵。这整个过程相当于通过暴力计算每两个子块之间的距离从而建立训练集,经过少量尝试发现是完全无法接受的代价。纹理图片重点表征的就是图像的外观信息,当纹理数据集中两幅图像属于同一个标签的时候,恰恰说明这两者的外观相似度很高,所以采用纹理数据库来训练深度哈希网络,使得网络拥有辨别图片外观相似性的能力。

s2、训练样本挑选;

由于需要训练共享权值的两个网络,从而实现端到端自适应的哈希学习,训练样本需要以图片对的形式出现。首先需要对所有图片统一大小,才能统一输入到网络中进行训练,具体步骤如下:

s21、预处理:将每一张纹理图片下采样到256*256大小,并进行随机裁减和正则化处理;

s22、正样本构建:从同一标签下随机选取两张图片,组成图片对,作为正样本;

s23、负样本构建:随机从两个不同标签下各自选取一张图片组成图片对,作为负样本;

s24、为了提高负样本的有效性,进行困难样本挖掘:将全部样本进行k-means聚类,在聚类结果中统计哪些类别的图片分错的概率更大,从而在这些容易混淆的类别之间选取构建更多负样本。困难样本挖掘作为补充手段,可以在训练效果不好的时候,有效提高负样本质量。当两个负样本本身有巨大差异性,判别器能够轻易将他们分开,这种样本对训练的提升就很小,所以通过容易混淆的负样本,能让判别器关注此类微小的差别,从而有效提高算法辨识能力。

s3、深度哈希网络组成及训练方法,包括搭建网络结构和构造损失函数;

如图2所示,针对检索图像外观相似性的任务要求,本实施例设计了一个共享权值的深度哈希网络。它的卷积层部分主要结构类似于alexnet,搭建网络结构具体过程如下:

s31、输入图像x;

s32、将图像x输入卷积层conv1,卷积核大小为11,步长为4,进行局部响应归一化,再通过非线性激活和池化层,得到特征图x1;

s33、将特征图x1输入卷积层conv2,卷积核大小为5,步长为1,进行局部响应归一化,再通过非线性激活和池化层,得到特征图x2;

s34、将特征图x2输入卷积层conv3,卷积核大小为3,步长为1,通过激活层得到特征图x3;

s35、将特征图x3输入卷积层conv4,卷积核大小为3,步长为1,通过激活层得到特征图x4;

s36、将特征图x4输入卷积层conv5,卷积核大小为3,步长为1,通过激活层和池化层得到特征图x5;

s37、将特征图x5输入2层长度为4096的全连接层,得到全连接特征。

通过卷积层和全连接层,该网络已经能很好地起到一个特征提取的作用,由于本实施例是深度哈希网络,需要将最终的特征二值化。最简单的方法是将全连接层特征根据阈值直接二值化,但是这样的方法只能用到预训练网络学习到的特征表达,不能根据训练集的变化自适应地学习,那就无法满足实现检索图片外观相似性的任务要求。

其中,构造损失函数的过程如下:

为了完成一个端到端自适应的网络,本实施例将上述结构的网络复制一遍,变成两个网络,他们有着一样的结构和权重,训练过程中也是共享权值。为了能够让网络学习到图片的相似性,所有的训练过程都以图片对的形式进行,网络的输入和设计的损失函数也是针对图片对而设计。

对于哈希码定义图片对的标签:当图片对的两张图片来自于同一个标签,则图片对的标签为sij=1,否则sij=0。由此定义图片对标签的似然函数:

其中bi,bj∈{-1,1}cbi,bj表示图片i和j的哈希码。

那么在优化最大似然函数的时候,需要求解以下优化问题:

为了满足哈希码离散形式的要求和连续函数容易优化求解之间的平衡,考虑到sigmoid函数的性质,当它的导数趋近于0的时候,自身的函数值趋向于0或者1,所以通过将sigmoid函数的导数作为惩罚项添加到损失函数中,从而使得二值化哈希值时精度损失降低。

其中sigmoid函数的表达形式为:

其导数为:

sig′(x)=sig(x)×(1-sig(x))

最终的损失函数形式为:

从上面的优化问题可以看出该式希望两个相似的图片之间的海明距离尽可能的缩小,不相似的图片之间的海明距离尽可能扩大,也就是满足了希望在欧式空间外观相似的图片拥有尽可能相似的哈希码,外观不相似的图片拥有不相似的哈希码的要求。

对于一个离散优化问题,如果直接将bij从离散松弛到连续问题,可以较容易地解决,但是实验效果会下降。那么为了满足哈希码的离散条件,本发明提出一种新的约束方式,使得求出的bij尽可能满足离散条件,同时使得训练过程在连续条件下发生。其中bij为哈希码bi,bj之间的海明距离。

根据sigmoid函数在自变量过大或过小的情况下,趋向于值0和值1,在训练网络的时候容易造成梯度消失,因为此时的sigmoid函数的导数趋向于零。反过来,当把sigmoid函数的导数值作为惩罚项添加到损失函数中,为了使损失函数最小化,优化方法会自适应使得惩罚项变小,那么此时sigmoid函数的导数趋向于零,也就是让sigmoid的函数值趋向于0或者1,而0和1正好就是离散哈希优化需要得到的结果。当得到的哈希码通过松弛离散的条件进行连续优化的同时,让其值尽可能接近0和1,那么最终将其二值化造成的对精准度的损害就越小。

通过以上优化方法,本发明通过大量图片对的训练,得到能够辨识图像外观的深度哈希网络,每当输入一张图片,该网络能够输出对应的48位长度的哈希码。在离线情况下,可以将整个数据库的图片都以哈希码的形式存储,当新的待处理图片输入网络并得到哈希码之后,可以通过哈希码快速查找图片库中前k张拥有相似外观的图片,本实施例认为查找到的图片符合拥有大量相似图像子块的要求,在接下来图像子块级别的处理中能够找到大量相似子块用于进一步的处理。

s4、图像子块重排序;

每一张图片都是由大量图像子块组成,由于图像自身在局部范围的相似性,很多情况下大量的相似图像子块都集中在一起。在全图范围中寻找相似子块的计算消耗大,找到相似子块的概率较小,而在领域中找到相似子块的计算消耗小,找到的概率较大。本实施例利用图像的这点性质,决定在较小的滑动窗口中寻找相似子块。

子块重排序的最终结果是将图片从二维形式转换为一维的子块序列,在这个一维序列中通过截断、均值光滑等方法进行处理之后再还原成二维图片的形式。如果在全局范围解决这个重排序问题,那么实际上就是解决旅行商问题,然而对于大量的图像子块,如果通过旅行商这样一个np难问题求解,必将耗费大量的计算资源,同时也无法灵活运用图像本身的光滑性假设。为了减少计算量,本实施例选择一种简单而有效的近似解决方法,同时有效利用图像特有的性质。

对于重排序后的图像子块本实施例定义光滑的重排列序列为:

其中w(x,y)表示在定义的度量方式中,图像子块x和y之间的距离。通过最小化上式,可以找到一条最短路径,同时每个图像子块仅仅访问一次。限制在只有h×h个子块的邻域中进行暴力的最近邻查找,当领域中的图像子块都排进了队列之后,最后一个图像子块在此时的邻域中已经没有最近邻可供查找,那么此时就需要到整幅图所有没有被访问过的图像子块中进行查找,当找到新的图像子块时,重新以此时的图像子块为中心,划分新的h×h大小的邻域,并重复之前的过程,直到没有任何图像子块没有被访问过。此时这个访问所有图像子块的顺序被定义为对整个图像中所有子块的重排序。

通过这样的搜索方式,在自定义的邻域中进行暴力检索可以很好地利用图像局部的平滑性质,当邻域中子块都被访问过之后跳到全局检索新的邻域,可以利用到图像非局部的相似性,即图像中出现的重复模式,例如罗马柱的图片会有大量的重复模式。最终的排序效果如图3,领域中相近似的图像子块都被排在一起,这样每当定位一个子块,它的前后邻居都是相似子块,由此可以大大减少多次检索的步骤,从而节省算法时间。

s5、通过连续敏感哈希快速定位;

如图4所示,通过连续敏感哈希(csh),可以快速将两幅同尺寸的图之间的相似子块进行快速的一一映射。此时需要进行映射的对象为图a:待处理图像,图a1:通过深度哈希在数据库中找到的相似外观图像。结合步骤s4中将图a1重新排序的子块队列,图a中每一个映射完毕的图像子块都能在队列中找到大量相似子块,处理并堆叠后放回对应的位置,从而完成整个大规模图像子块的检索过程。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1