当前位置:文档之家› SIFT算法和卷积神经网络算法在图像检索领域的应用分析

SIFT算法和卷积神经网络算法在图像检索领域的应用分析

SIFT算法和卷积神经网络算法在图像检索领域的应用分析1、引言基于内容的图像检索是由于图像信息的飞速膨胀而得到关注并被提出来的。

如何快速准确地提取图像信息内容是图像信息检索中最为关键的一步。

传统图像信息检索系统多利用图像的底层特征,如颜色、纹理、形状以及空间关系等。

这些特征对于图像检索有着不同的结果,但是同时也存在着不足,例如:颜色特征是一种全局的特征,它对图像或图像区域的方向、大小等变化不敏感,所以颜色特征不能很好的捕捉图像中对象的局部特征,也不能表达颜色空间分布的信息。

纹理特征也是一种全局特征,它只是物体表面的一种特性,并不能完全反映物体的本质属性。

基于形状的特征常常可以利用图像中感兴趣的目标进行检索,但是形状特征的提取,常常受到图像分割效果的影响。

空间关系特征可以加强对图像内容的描述和区分能力,但空间关系特征对图像或者,目标的旋转、平移、尺度变换等比较敏感,并且不能准确地表达场景的信息。

图像检索领域急需一种能够对目标进行特征提取,并且对图像目标亮度、旋转、平移、尺度甚至仿射不变的特征提取算法。

2、SIFT特征SIFT(Scale-Invariant Feature Transform,尺度不变特征转换)是一种电脑视觉的算法,用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由David Lowe在1999年所发表,2004年完善总结。

局部特征的描述与侦测可以帮助辨识物体,SIFT特征是基于物体上的一些局部外观的兴趣点,与目标的大小和旋转无关,对于光线、噪声、些微视角改变的容忍度也相当高。

使用SIFT特征描述对于部分物体遮蔽的侦测成功率也相当高,甚至只需要3个以上的SIFT 物体特征就足以计算出位置与方位。

在现今的电脑硬件速度和小型的特征数据库条件下,辨识速度可接近即时运算。

SIFT特征的信息量大,也适合在海量数据库中快速准确匹配。

SIFT算法的特点有:(1)SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变形,是非常稳定的局部特征,现在应用非常广泛。

(仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并加上一个平移,变换为另一个向量空间。

)(2)独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;(3)多量性,即使少数的几个物体也可以产生大量的SIFT特征向量;(4)高速性,经优化的SIFT匹配算法甚至可以达到实时的要求;(5)可扩展性,可以很方便的与其他形式的特征向量进行联合。

SIFT算法可以解决的问题:目标的自身状态、场景所处的环境和成像器材的成像特性等因素影响图像配准/目标识别跟踪的性能。

而SIFT算法在一定程度上可解决:(1)目标的旋转、缩放、平移(RST,Rotation, Stretch, and Translate)(2)图像仿射/投影变换(视点Viewpoint)(3)光照影响(Illumination)(4)目标遮挡(Occlusion)(5)杂物场景(Clutter)(6)噪声SIFT算法的实质是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。

SIFT所查找到的关键点是一些十分突出,不会因光照,仿射变换和噪音等因素而变化的点,如角点、边缘点、暗区的亮点及亮区的暗点等。

David Lowe在他的论文中将SIFT算法分解为如下四步:(1)尺度空间极值侦测:搜索所有尺度上的图像位置。

通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。

(2)关键点定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。

关键点的选择依据于它们的稳定程度。

(3)方向确定:基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。

所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。

(4)关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。

这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。

SIFT能够找出独特的关键点,且关键点不会受移动、转动、缩放、仿射变换、亮度等外在因素的影响而改变其特性,因此能够有效应用在物体辨识上。

虽然SIFT在图像的不变特征提取方面拥有无与伦比的优势,但并不完美,仍然存在:(1)实时性不高。

(2)有时特征点较少。

(3)对边缘光滑的目标无法准确提取特征点。

等缺点,对模糊的图像和边缘平滑的图像,检测出的特征点过少,对圆形目标更是无能为力。

近来不断有人改进,其中最著名的有SURF和CSIFT。

图1 SIFT算法检测效果,来自CSDN3、卷积神经网络卷积神经网络(Convolutional Neural Networks,简称CNN)是当前图像识别领域的研究热点,利用预先训练的CNN 网络提取的图像特征展示出了较强的图像识别能力。

CNN 是建立在传统人工神经网络上的一种深度学习算法,也是第一次成功训练的多层网络的学习算法。

3.1 传统神经网络结构神经网络的诞生起源于对大脑工作机理的研究,人类的神经中枢视觉系统包括几十亿个神经元。

人工神经网络是模拟神经系统的一种算法,但是计算机资源有限,神经网络只能是模拟人脑的抽象简化的模型,和生物系统的工作方式还是有明显差距。

即便如此,人工神经网络依然具有生物系统的很多特点,如鲁棒性、高度并行、非线性、容错性、良好的学习能力等等。

神经网络是一个有向无环的网络结构,由许多个感知器分层互联而成,包括输入层、隐含层和输出层。

输入层直接接受样本的数据,经过一个或多个隐含层,依次向前传播到达输出层。

图2是一个典型的3层神经网络结构,包含一个输入层,一个隐含层和一个输出层;每一层都含有多个神经元(也称为感知器)。

箭头代表不用层次之间神经元信息传递。

图2 神经网络结构挺图需要注意的是,神经元和神经元之间的连接并不是简单的加权,而是需要加入偏置,然后进行加权,最后还要通过一个激励函数进行映射。

其原理如图3所示:图3 神经元Sigmoid单元图中x1~x n是从上一层网络神经元的输入信号,令W ij表示从上层神经元j到该层神经元i的权重,x0是偏置(bias)。

将输入表示为X,将权值表示为W,那么神经元i的输出与输入的关系可以表示为:3.2 BP算法原理人工神经网络可以从大量样本中学习到离散、连续或者向量形式的函数,在众多神经网络学习算法中,反向传播算法(Back Propagation,简称BP)是其中最杰出的代表,该算法性能最好且应用最为广泛,其主要思想是:导入训练样本,计算期望值和实际值的差值,然后通过不断的调整权值,减小两者误差,直到误差小到规定值为止。

BP算法具体步骤如下:(1)数据预处理,预处理的方法有很多,比如说去噪,归一化等,普通的神经网络都要用到归一化,即将数据等比例的映射到[0,1]和[-1,1]区间内,归一化处理可以将大范围数据映射到小范围区间内,防止网络收敛慢,训练时间长;也可以提高算法精确度,减小误差;另外需要归一化的一个重要原因是:神经网络的激活函数如Sigmoid和Tanh函数,只能处理[0,1]以及[-1,1]区间内的数据,只有在这个区间内,曲线变化才会明显。

一般的归一化方法都是线性方法。

(2)设置网络初值,传统的神经网络中,权值和阈值是随机给出的,一般随机变化的权值都是比较小的参数,过大的权重容易导致局部收敛和过拟合。

(3)根据给定的权值和阈值以及Sigmoid函数,计算隐含层各神经元的输入和输出,依次向前传递,计算每一层的输出值,这个输出值是网络计算出来的值。

(4)计算网络输出和期望值的差值,依次从后往前调整各个层次的权重,一般使用逻辑回归调节每个神经元的权值。

(5)重复迭代,直到全局误差满足要求。

3.3 卷积神经网络结构通过构建多个隐含层,传统神经网络算法也可以通过大量样本中学习出复杂的分类曲面,因此传统神经网络被广泛应用于语音识别和图像识别领域。

传统的模式识别方法,一般是首先设计一个算法用作特征提取,如常见的HOG特征、LBP特征以及SIFT特征,然后将提取的特征传入一个可训练的分类器,对分类器进行训练,最后将测试样本导入分类器进行分类。

这种模式下,由于提取出来的特征一般较小,因此可以设计一个全连接的多层网络作为分类器。

另一种思路是:考虑直接用神经网络进行特征提取和分类,而免去前面的特征提取过程。

反向传播算法可以将前面几层神经网络训练成特征提取器,把后面层次用来分类:只是这种方法有较大的弊端。

首先,如果直接用神经网络进行特征提取,要提取到足够好的特征,隐含层结点必定不能太少,而传入的语音频谱和图像的像素往往比较大。

假设输入层数据有1000个神经元(一般情况下远远不止),第一个隐含层有100个神经元,由于神经网络是全连接的,那么仅仅是这两层之间就有十万个以上的连接权重。

即使不考虑训练速度,如果没有足够的训练样本,这些参数也难以拟合网络;其次,全连接的网络对每一个样本进行学习,每一个样本的传入都会影响参数的更新,而传入的数据之间往往是有很大相似之处的,例如在图像识别中,两帧图像的差距可能只是很小的方位移动,而全连接的网络无法捕捉这种信息,不能根据样本对训练过程进行优化,费时又费力。

而卷积神经网络可以通过一定手段,充分利用数据的局部性特征,缓解这些问题。

卷积神经网络是受视觉神经机制启发而设计的一种多层感知器(Multi-layer Perceptron,简称MLP)。

与传统神经网络一样,它运用反向传播算法对网络进行训练。

不同的是,其网络结构进行了简化和改进。

如果将神经网络看作是一种训练生成分类器的算法,那么卷积神经网络可以概括为提取特征和训练生成分类器的算法。

卷积神经网络的三个基本概念是:局部感知野、权值共享以及时间或空间降采样,这种结构特点使网络对于输入的噪声、形变和扭曲等变化具有极强的适应性。

在一个卷积神经网络模型中,神经元可以分为两类,一类是用于特征提取的S元,另一类是抗形变的C元,S元中有两个重要的参数,即阈值参数和感受野;感受野就从输入层中提取多大的空间作为输入,阈值参数控制着输出对输入的反应程度。

同样,卷积神经网络是一个多层网络结构,它的每一个层实际上是由多个特征图构成,每一个特征图代表一种特征;每一个特征图上又有许多个独立的神经元。

对应的,将卷积神经网络的网络层分为卷积层和下采样层,也称为降采样或者子采样层;网络层次之间并非线性映射,从卷积层到下采样层是一个下采样层,从下采样层到卷积层则是一个卷积滤波的过程。

图4是一个简化的卷积神经网络结构:图4 卷积神经网络结构图其中,Input是输入层,通过3个可训练的数字滤波器,然后加上偏置,通过一个Sigmoid 函数,得到C1,C1是一个卷积层,由于是3个滤波器,因此包含了3个特征图,每个特征图代表学到的一组特征;从C1到S2的过程是一个下采样过程,具体做法是C1中的连续4个像素(2×2区域)求和,加权值加偏置,映射到S2中的一个点上,C1中的每一个特征图都单独下采样,因此S2也包含3个特征图,然后从S2到C3又是卷积滤波,从C3到S4是下采样,得到S4后,将特征拉成一条直线作用于神经网络。

相关主题