相关电子技术论文

相关标签

基于内容的图像检索系统的设计与实现

发布时间:2019-12-04 13:43

  摘 要

  通常的,图像检索可以分为两大类:基于文本的图像检索和基于内容的图像检索。本文的主要内容是设计并实现了一个基于内容的图像检索系统。

  现在主流的图像检索技术主要是对图像提取局部特征,并利用特征袋模型对特征进行处理,以获得检索精度和检索性能之间的平衡。一个检索系统的运作主要包括数据集预处理和正式的检索过程。其中预处理过程包含:图像特征提取、视觉词典构建以及图像特征编码。检索过程会对待检索的图像进行类似处理,同时还有对特征的相似度比对,之后返回结果。

  本文基于前人的研究成果,做出的主要工作如下:

  1. 搭建一个基于flask框架的在线检索系统。

  2. 图像数据集处理阶段,对每幅图像提取RootSIFT特征,并对特征进行k-means聚类,用来构建特征袋模型。

  3. 利用ukbench数据集,比较了基础特征袋模型,汉明嵌入,弱几何一致性校验,空间几何重排等的检索效果,并对效果进行mAP评价。

  关键词:图像检索;特征袋模型;汉明嵌入;弱几何一致性;几何重排

  前 言

  随着诸如智能手机、数码相机、平板电脑等电子设备的普及,人们可以用越来越容易的方式创作以及获取图片。同时,社交网站的兴起,如国外的Instagram、Facebook和国内的QQ等,直接催生了人们分享照片的兴趣。这些原因无疑导致了图像数据库的规模迅猛增长,例如,flickr作为一个照片分享网站,单是2017年就有用户上传了高达6亿张图片,中国最大的电商网站淘宝同样保存着数十亿计的用户图片。海量的图像规模不仅在存储方面增加了难度,同时在应用方面,也对能够让用户精准、快速的查找感兴趣的图片提出了挑战。因此,针对大规模图像数据库的信息检索,成为了当前数字图像处理技术方向的研究热点。

  到目前为止,大规模图像检索的主流是基于内容的图像检索技术,主要方式是类似于文本处理方面的词袋模型,本文下面即对此展开介绍,并解释其他的扩展方法。

  本文下面的组织如下:第1章介绍基于内容的图像检索技术的基本内涵,并介绍图像检索的评价指标,第2章介绍了利用提取图像局部特征的基本BoF模型检索方法,以及相应的索引、相似度计算方式,第3章介绍了对聚类的改进,即汉明嵌入,第4章介绍了基于几何信息的重排,第5章则展示了实验效果,对所采用的方法进行相应的实验,并利用评价指标进行效果评价。

  第1章 绪论

  本章介绍了传统图像检索方法的缺陷,并展示了基于内容的图像检索技术的要点。本章还展示了检索系统的基本工作流程,以及对检索结果的评价方法。

  1.1 基于内容的图像检索

  传统的图像检索方法主要是基于关键字的图像检索方法,这种方法主要是通过人工对要处理的图像进行关键字标注,让每幅图像添加对应的关键字,检索时就将对图像内容的检索转化成了对关键字文本的检索,无疑要容易许多。

  这种方法有时候效果可能会很好,它也曾被百度等搜索引擎采用过,但是它有一些显著的缺点。首先人工标注耗时耗力,今天的大规模图像数据库显然是无法应用的,其次,所谓一图胜千言,一幅图像的内涵有很多,往往无法用几个关键字描述完全,并且每个人对图像内容的理解也不一样,因此检索时会导致误差。这些缺点导致上述技术无法更广泛的应用。而现在的商用的图像检索系统使用的技术主要是基于内容的图像检索(Content Based Image Retrieval, CBIR)[1

  基于内容的图像检索技术基本不需要人工干预,并且是对图像内容本身的理解。一个基本的在线CBIR系统检索流程如图 11所示[2]:

  首先选取初始的图像数据集,需要对它进行特征提取,本文这里选取了ukbench,共10200幅图片,每四幅一组,每组都是类似物体在不同角度和尺度的图像。下文的内容都是基于这一数据集的5000幅图子集来做效果评估。

  接着是对选取好的数据集进行图像特征提取。图像特征有很多种,常见的包括颜色特征,纹理特征,形状特征等等,称为底层特征,以前的CBIR系统主要基于此实现,综述性文献[3]对此有叙述。这些底层特征都比较易受环境影响,像是光照、尺度、视角,以及一些背景方面的变化都会对检索结果造成较大的影响,所以图像检索时会选择局部特征,这种特征的抗干扰性比较好。Lowe提出的SIFT特征[4]就是这样一种在实践中被证明效果较好的局部特征,它具有很好的尺度,旋转,和平移不变性,基于Lowe的工作,后人提出了许多的改进,其中文献[5]提出了RootSIFT特征,它仅仅是对原始SIFT特征的一种代数扩展(对每个计算出来的原始SIFT描述子进行L1归一化并取平方根),但是却能够改进检索效果。由于RootSIFT对SIFT特征的兼容性和易于计算的特点,本文进行图像特征提取时,对SIFT进行处理转换成了RootSIFT特征。

  SIFT特征和RootSIFT特征一样,每个描述子都是128维,每幅图包含成百上千个这样的特征描述子,一个基本的数据集,比如ukbench,包含上千万维这样的高维向量,如果查询图片依靠暴力匹配每个向量的距离来计算相似度,性能上无法接受。

  为了处理大规模图像数据集,Sivic等人基于文本处理领域的词袋模型,提出了特征袋 (Bag Of Feature, BoF)模型[6],利用k-means算法对所有描述子进行聚类,聚类之内的描述子具有较高的相似度,聚类之间的描述子具有较高的离散度,量化形成集聚类时间较长,针对k-means本身的改进有层次k-means和近似k-means等,本文这里介绍的是Jegou等人在文献[7]中提出的另一种思路,即首先对描述子进行较粗的聚类,接着通过添加汉明编码对描述子应用汉明嵌入,来进一步改进粗聚类的视觉单词,这种方法可以获得比原始模型更好的结果。

  量化描述子形成视觉单词的过程中,原始图像本身的视觉几何信息被丢失掉了,这无疑会限制检索的效果。针对这一问题,很多人做出了利用空间几何信息的改进,文献[7]提出了弱几何一致性约束,即简单的增加了关键点角度和尺度信息的校验,对前面模型得到的结果进行重排。文献[8]则提出了对已有结果的前若干幅图片增加进一步的空间验证过程,重新排序来获得更高的精度。

  1.2 图像检索评价指标

  对图像检索返回的结果,本文利用的评价指标为平均精度均值指标 (mean Average Precision, mAP)指标[9]。mAP是指的是平均精度(Average Precision, AP)的均值:次查询的平均精度。一般检索最重要的两个指标是精度(Precision)和召回率(Recall),若用x轴表示召回率,y轴表示精度,可得到精度-召回率曲线(Precision- Recall curve, PR curve)。AP结合精度和召回率两方面的特征,代表的是PR曲线下的面积:

  就代表每召回一幅图就计入其精度,最后精度和除以召回数的值。mAP作为所有AP的均值,可以更好的衡量检索效果。本文下面都将采用这个指标。

  第2章 BoF模型

  BoF模型来自于文本处理领域的词袋模型,其主要思想是将所有描述子聚类形成视觉词典,再根据视觉单词对描述子进行量化,最后根据量化的特征进行检索。

  本章展示了如何根据已有图像局部特征来进行视觉词典的构建,形成频率直方图,以及利用倒排索引和投票机制进行特征匹配[10]。

  2.1 基于视觉单词的匹配

  原始的BoF模型的处理流程有下面几步:

  首先对于原始图片,可以先进行增强、分割以及统一格式的处理以方便下面的操作。原始图片处理完成后,对它们提取RootSIFT特征,假设共

  的复杂度,实际由于频率向量是稀疏的,复杂度会更低。

  实现过程中,倒排索引是将视觉单词和倒排列表分开存储。倒排列表的索引与视觉单词是一一对应的,一个列表项包含的是属于某个视觉单词的所有条目组成的链表,每个条目中包含了图片id以及其他的特征信息。

  利用结合倒排索引的投票机制来计算相似度,可以比正排表快上百倍。

  第3章 汉明嵌入

  本章展示了在基于原始的BoF模型,利用倒排索引结构来存储预处理的图像特征信息,利用投票机制来获取相似度得分之后,如何通过汉明嵌入来进一步的提升图像检索的精度,并讨论其背后的原理。

  3.1 原始模型的缺点

  原始BoF模型比较好的利用了图像局部特征对图像的区分能力,同时利用倒排索引的结果也能够有效的检索图像,这种方式使得利用原始模型能够获得比较好的检索能力,但是缺点也是明显的。

  首先量化会带来误差,不同的描述子可能因为距离相近被映射到相同的视觉单词,这降低了描述子之间的区分性。聚类是依靠手动选取的,表 21表明一般来说聚类数设的越高,精度也会提升,主要是越多的聚类数让量化带来的误差越小,要有一个满意的效果,向量通常需要达到上万维,获取这么多的视觉单词十分耗时,实验中使用MiniBatchKMeans对ukbench的5000幅图像进行聚类,耗时达到数十个小时。

  值继续增高后,提升效果越来越差,甚至聚类数达到一定程度精度有可能下降,这是由于描述子中含有噪声,更多的聚类让噪声分布越广泛。的选取应该谋求量化误差和描述子噪声之间的平衡。量化误差尽可能的小,不同的描述子不应该映射到相同的视觉单词,描述子噪声应该尽量的分布在同一个聚类单元中,以避免干扰到正常的描述子。这依靠手动选取通常是很困难的,需要遍历一个范围内的

  文献[7]提出了汉明嵌入方法,可以很好的解决这个问题。

  3.2 基于汉明嵌入的匹配

  汉明嵌入是一种同时兼顾粗聚类和细聚类两方面好处的方法,即更小的量化误差和更少的噪声干扰。

  首先汉明嵌入选取一个较小的值,这避免了噪声干扰,下面的问题是对被分配到同一个聚类的描述子进行进一步的细化。为了达到这个目的,可以对同一聚类内的描述子进行汉明编码,再比较汉明距离。同一聚类内的描述子,对应的二进制汉明编码

  即每维异或之后的值之和。使用汉明距离是为了能让两个描述子对应汉明编码之间的汉明距离能够反映描述子之间的欧几里得距离,即保留暴力匹配中描述子强大的区分性。

  这种从欧几里得空间到汉明空间的映射,就称为汉明嵌入(Hamming Embedding, HE),它保证了在欧几里得空间内距离相近的描述子,对应的汉明距离也会是相近的[11]。

  汉明嵌入包含在预处理和查询这两个阶段中,需要获得每个描述子的汉明编码,首先预处理包含如下过程:

  =23这个阈值。

  汉明嵌入方法可以很好的和倒排索引结构结合起来。上文中,倒排列表的索引与视觉单词是对应的,在汉明嵌入中就对应一个中值向量。每个列表项是一个链表。链表中的每个条目都对应某幅图片中的一个描述子,因此在条目中可以加入汉明编码。在实现过程中,由于汉明编码是一个64维的二值向量,可以将这个向量压缩为64位整型存储。

  在匹配的过程中,利用投票机制计算相似度分数,遍历倒排列表的每一个条目,需要用到式3-3的匹配函数。可以先计算查询图像描述子的汉明编码与遍历的汉明编码的距离,一旦汉明距离大小超出了阈值,那么就不会再更新相似度分数。

  实验中,利用了汉明嵌入的查询过程甚至比没有利用的,即单一的倒排索引遍历查询的时间更短。这主要是由于计算汉明距离仅仅是对两个64位整型的汉明编码进行异或操作后再统计1的个数,这里的计算代价要小于更新相似度分数的代价,而利用汉明嵌入,使用一个较小的阈值,可以显著过滤大量量化误差较大的描述子,避免了很多分数更新操作。汉明嵌入也不会增加多少空间复杂度,每个描述子添加一个8字节汉明编码即可,因此值得采用。

  第4章 几何重排

  无论是原始BoF模型,还是增加了汉明嵌入了改进版模型,尽管图像检索效果已经不错,但是它们仍然没有利用到图像的空间几何特征。如果要进一步的改进检索效果,应该考虑到图像几何信息,因此本章接下来对汉明嵌入之后得到的结果进一步添加了基于图像空间几何的重排序阶段。

  4.1 弱几何一致性

  前面提到过,加入集合信息能够对检索效果很好的提升,但是却无法实际应用,因为和暴力匹配算法一样,几何匹配算法的计算代价都很高昂。即使有不少工作都基于对几何匹配算法的优化,但是到目前为止,还是只能应用于几百张规模的数据集,没有大规模利用的可能性。为了解决这个问题,文献[7]提出了弱几何一致性(Weak Geometric Consistancy, WGC)匹配。

  4.1.1 弱几何一致性

  顾名思义,弱几何一致性仅仅只利用了一部分的几何信息,即角度和尺度信息。对于SIFT(或者RootSIFT)局部特征而言,每个不变的感兴趣区域的检测都具有相关的尺度和旋转角度信息[12],这里具有特征尺度和主导方向。相应的,一对匹配图像之间会有一个尺度和角度方面的差异,并且就全局图像而言,尺度和角度的变化大致是一致的。下面进行一个比较:

  同样有峰值出现在大约3/4附近,这表示在尺度差(尺度差是关键点半径的对数差)3/4附近匹配到的描述子最多,这同样符合肉眼观察到的缩放现象。

  可以认为峰值附近的值就是特征尺度和主导方向,如果加入权重考量,在特征尺度和主导方向的相似度得分就是最高的峰值,其余位置的匹配都是噪声,将它们都过滤掉,不计入投票分数。

  4.1.2 考虑弱几何一致性的相似度计算

  考虑一对匹配的图像,它们之间会有一个一致性的变化,弱几何一致性会过滤掉角度和尺度方面变换不一致的特征,这是通过假设以下变换分别估计查询图像和参考图像之间的旋转和缩放参数来完成的[13]:

  角度差对应的分数和尺度差对应的分数都是取各自直方图中的最大值,两者之间再取一个最小值,就作为最后的分数。二维转化为一维计算可以降低内存和CPU的消耗,上式也是对式4-3的合理估计。

  弱几何一致性方法同样很好的利用了倒排索引结构,在汉明嵌入的基础上,继续向倒排列表每个列表项中的每个条目加上弱几何信息,即弧度形式的角度和尺度的对数,并没有增加多少空间消耗。

  在查询时间方面,弱几何一致性拖慢了查询的速度。尤其是对没有利用到汉明嵌入时的单一弱几何一致性的应用来说,查询一幅图的时间可以达到十秒左右,这主要是由于它利用的是式4-4来计算投票分数,即对两个直方图的更新,而直方图的更新访问具有随机性,这就无法利用到缓存。没有经过汉明嵌入过滤的原始特征数量很多,大量的直方图更新操作增加了运行的时间。

  而在同时添加汉明嵌入和弱几何一致性后,时间相较于原来BoF模型来说,只是略微有所增加,还可以接受。不同于完整的几何重排,弱几何一致性方法能够被利用到大规模图像数据集。

  4.2 基于几何信息的重排

  几何匹配算法由于计算代价高昂不适用于大规模图像检索,但是它还是能够应用于重排序的过程,也就是对用前面所有的算法检索得到的结果,选取前若干幅结果,然后对它们根据空间几何信息进行重排序。对几十幅图像进行空间重排序的过程不会让查询时间增长多少,但却是很好的增加检索精度的方式。下面是详细的介绍。

  4.2.1 随机抽样一致算法

  RANSAC(RANdom SAmple Consensus,RANSAC)算法[15]诞生于1981年,由Fischler和Bolles首次提出,这是一种需要迭代的方法,作用是从一组观测数据中估计数学模型的参数,观测数据可以包含异常值,并且异常值不会影响估计值。

  RANSAC并不会产生固定的结果,它只能是在一定概率的情况下产生相对合理的结果,但是如果整个过程包含更多的迭代,产生合理的结果概率会增加。

  一般要从包含异常值较少的数据集当中拟合出适当的数学模型,可以应用最小二乘法,但如果数据包含很多的异常值,即噪声较大,最小二乘法就显得力不从心,这时候RANSAC就可以派上用场。

  RANSAC算法本身就假设了数据集中既包含正常值(inliers),又包含异常值(outliers),正常值可以被数学模型很好的描述(数学模型本身就来自正常值),而异常值偏离了正常值的范围很远,并且无法适应由正常值得到的数学模型。如果给定一组可信的观测数据,RANSAC算法假设存在一个能够解释数据的数学模型。

  RANSAC算法基本步骤如下:

  1. 首先从输入数据集中随机的选择一个子集,称之为假设正常值(hypothetical inliers)。

  2. 对在假设正常值中的元素,拟合出相应的数学模型,获取模型参数,其中假设正常值中的元素个数确保能够得到一个确定的模型。

  3. 对所有其他数据针对拟合模型进行测试。根据拟合模型对应的损失函数,适合拟合模型的,就认为与假设正常值是一致的,将其加入到一个集合中,称为一致集(consensus set)。

  4. 如果有足够多的数据都被归类于一致集,那就说明由假设正常值估计得到的模型是适当的。对不在一致集的数据,可以认为它们就是异常值。而对在一致集中的成员,对它们进行重新评估来改进模型,这里可以利用最小二乘法。

  对上述的过程进行若干次的迭代,每次迭代都会产生一个模型,如果没有足够多的数据都被归类于一致集,那模型就会被拒绝,而如果这个是对上一次产生的模型的改进,并且改进后一致集的大小比未改进的大,那这个模型会被保留,并应用到下一次迭代。

  4.2.2 错配点剔

  将RANSAC算法应用到重排序中,主要是用它来剔除匹配图像的错配点,比如误匹配图像图 45(a)和图 45(b):

  图 45是一对误匹配的图,连线的基本是错配点,如果计算了错配点对应的权重分数,那么显然误差会很大。这个问题下面应用RANSAC算法来解决。

  首先是获取两幅图像的匹配对。这些匹配对可以通过kNN算法获取,对于查询图像的每个描述子,从参考图像中获得最邻近的点。这种方法得到的所有匹配已经基本没有错配了,但是还可以进一步的提升。

  首先考虑从参考图像中获取两个距离最近的邻居,称为最邻近点和次邻近点,当最邻近点和查询描述子的距离与次邻近点和查询描述子的距离的比值小于一个比率时,才认为该最邻近点是真正的匹配点。Lowe对这个比率做了很多测试[12],本文这里取值为0.7。选取到真正的匹配点之后,就将他们作为输入数据集,利用RANSAC算法,采取上面的步骤,即能够找到一个变换矩阵。能够与变换矩阵对应变换符合的即为正常值,不能的就是异常值,会被剔除。统计正常点的个数,作为匹配的分数,再依照这个排序,作为最终的结果。图 46是利用RANSAC剔除错配点之后的匹配。

  可以看到,误匹配点已经基本没有了,相应的,他们经过重排阶段的得分会很低。利用RANSAC算法的几何匹配只是应用于最后的top_k幅图像,因此虽然复杂度比较大也不会太过影响匹配时间,同时它能够让匹配结果有一个极好的提升。图 47和图 48体现了这样的差异。

  从图 47可以看到,尽管召回率很高,但是精度还很差。

  几何重排进一步对这top_k幅图像进行几何特征匹配,得到所有的正常点,根据正常点个数重排。重排之后,正确的图像的分数相应的会很高。这让检索精度有了很大的提升。

  第5章 实验过程

  本文实现的是一个在线的CBIR系统,下面介绍详细的实现过程。

  5.1 开发环境

  本文基于flask框架搭建了web系统,主要的编程语言是python。

  图像处理主要是利用的python版的opencv库,机器学习算法则主要是利用scikit-learn库,图像绘制使用的是matplotlib工具包。其余的图像检索算法则自己实现。

  本图像检索系统的数据集可以按照需求指定,常见的有holidays、oxford5k和caltech101等,不同的数据集需要实现相应的mAP评价标准的计算方法。本文这里选取了ukbench数据集的前5000幅图作为实验数据集。

  5.2 框架设计

  本图像检索系统主要包含web界面处理程序,以及图像检索的程序。

  web界面处理程序主要包含视图函数处理,表单处理,以及相关静态文件实现这些方面。

  图像检索的程序则分为几大块,首先是获取图像数据集和获取数据集以及设计该数据集的检索效果评价程序。其次是实现SIFT、RootSIFT特征提取,以及相应特征匹配程序。汉明嵌入的相关实现和倒排索引结构都需要分开实现。最后则是实现BoF模型,以及对上述程序的集成。

  5.3 实现

  综合上面所有的章节,本文的预处理流程可以由图 51概。

  倒排列表最终是形成图 51的结构,其余的结果,比如视觉单词,idf权重等,可以分开存储。

  查询的过程需要载入这些已经计算好的结果,其中倒排索引比较大,可能会比较耗时,因此这里利用了@cached_property装饰器,仅仅是第一次需要载入,之后直接保存在缓存中,不必再二次载入。

  共支持拖动上传,文件上传以及粘贴图片网址上传这三种文件上传方式。

  检索图ukbench00060.jpg,检索效果如图 53所示。

  本实验设置检索结果一共返回20幅图片。这里图ukbench00060.jpg的mAP达到了100%,效果比较不错。

  最后对于检索效果评价的结果如表 51所示。

  根据上述章节的设置,检索数据集一共5000幅图,设置的初始聚类数为5000,如果加了汉明嵌入,阈值则设为23。

  从表 51中可以看出,在原始BoF模型基础上,单一增加了汉明嵌入的提升效果最好,加入重排或者弱几何验证的提升则比较小。如果将这几种方法都结合起来,最后的mAP评价可达到90%以上。

  第6章 结论

  本文介绍了基于内容的图像检索相关算法及其基本原理,并设计建立了一个在线CBIR系统,进行了实验验证。

  本文详细介绍了类似于文本词袋模型的BoF模型,及其背后基于视觉单词匹配的数学原理。介绍了倒排索引相对于传统正排表的优势,以及投票机制是如何更新相似度分数的。本文也剖析了BoF的优缺点,利用汉明嵌入方法改进了原始模型,大大改进了检索系统的精度。

  本文最后一章讲述弱几何一致性方法,即利用部分几何信息来作为量化描述子的匹配能力的补充。还有空间重排,通过剔除错配点来提升精度,使用的是RANSAC算法,对前面方法得到的结果进行重排提升精度。

  除了本文所提到的方法外,还有其他方法提升检索效果。

  聚类方面,比如利用层次聚类来减少聚类的时间。对于弱几何一致性方法,还可以进一步的在尺度和角度信息之外,利用平移信息来保证几何的一致性,即加强的弱几何一致性(Enhanced Weak Geometric Consistency, E-WGC)。对于大规模图像检索,可以利用哈希方法来提升检索速度。近年来,深度学习方法被应用到图像检索领域,这相比于传统方法,检索效果得到了进一步提高。

  以上就是未来对图像检索系统提升的方向。

毕业论文:http://www.3lunwen.com/jsj/dzjs/5415.html

上一篇:基于卷积神经网络的中文情感分析

下一篇:没有了

     移动版:基于内容的图像检索系统的设计与实现

本文标签:
最新论文