基于SVM的图像分类系统设计文档成勇.docx
- 文档编号:14768926
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:31
- 大小:963.90KB
基于SVM的图像分类系统设计文档成勇.docx
《基于SVM的图像分类系统设计文档成勇.docx》由会员分享,可在线阅读,更多相关《基于SVM的图像分类系统设计文档成勇.docx(31页珍藏版)》请在冰点文库上搜索。
基于SVM的图像分类系统设计文档成勇
基于SVM的图像分类系统设计文档-成勇
LANZHOUUNIVERSITYOFTECHNOLOGY
毕业设计
题目基于SVM的图象分类系统
学生姓名成勇
学号10240330
专业班级计算机科学与技术3班
指导教师李晓旭
学院计算机与通信学院
答辩日期
摘要
支持向量机(SVM)方法是建立在统计学习理论基础之上的,克服了神经网络分类和传统统计分类方法的许多缺点,具有较高的泛化性能。
但是,由于支持向量机尚处在发展阶段,很多方面尚不完善,现有成果多局限于理论分析,而应用显得较薄弱,因此研究和完善利用支持向量机进行图像分类对进一步推进支持向量机在图像分析领域的应用具有积极的推动作用。
本文通过支持向量机技术和图像特征提取技术实现了一个图像分类实验系统。
文中首先引入了支持向量机概念,对支持向量机做了较全面的介绍;然后,讨论了图像特征的描述和提取方法,对图像的颜色矩特征做了详细的描述,对svm分类也做了详细的说明;最后讨论了由分类结果所表现的一些问题。
测试结果表明,利用图像颜色矩特征的分类方法是可行的,并且推断出采用综合特征方法比采用单一特征方法进行分类得到的结果要更令人满意。
关键词:
支持向量机图像分类特征提取颜色矩
第一章前言
1.1本课题的研究意义
随着信息社会的到来,人们越来越多的接触到大量的图像信息。
每天都有大量的图像信息在不断的产生(如卫星、地质、医疗、安全等领域),这些图像信息的有效组织和快速准确的分类便成了人们亟待解决的课题。
图像分类就是利用计算机对图像进行定量分析,把图像中的每个像元或区域划归为若干类别中的一种,以代替人的视觉判读,图像分类的过程就是模式识别过程,是目视判读的延续和发展。
是工业和学术界的热点问题。
本文提出了一种利用支持向量机(SupportVectorMachine,简称SVM)的图像分类方法。
该系统可用于各类图像的分类,给定某类图像的训练数据,可以学习分类规则。
对于给定的新图像,即能输出图像的类别。
1.2本论文的目的、内容
首先应该指出的是,在某些方面,SVM同神经网络的研究方法是可以相互借鉴的。
正如在对神经网络的研究一样,人们在SVM的研究方面不能抱有矛盾的幻想,一方面想使其功能强大无比,任何情况下都具有极高的泛化能力;另一方面,又要求SVM具有良好的性能,例如全局收敛且收敛速度快。
这显然是不现实的,它应该是人们不断为之奋斗的目标。
因此在SVM的研究方面必须有所侧重,本文在SVM的研究中偏向于它的性能和应用性,即要求保证全局最优的基础上,尽量提高收敛速度,使其在图像分析中发挥很好的作用:
而对SVM的容量控制等理论问题,本文暂不过多涉及。
本文对以下问题做了研究:
1。
分析SVM模型中核函数的特性,探讨核函数与SVM分类器性能的关系,为下面的研究做铺垫。
2.利用上述的分析,研究了图像的特征对SVM分类器的影响,主要利用了颜色特征和纹理特征,分别对颜色图像分类、纹理图像分类以及综合特征的图像分类进行了比较,并在Pc机上进行大量的实验,对实验数据进行对比和分析。
1.3开发技术介绍
1.3.1SVM技术及其发展简史
SVM是支持向量机(SupportVectorMachine)的简称,是在统计学习理论基础上发展起来的一种机器学习方法。
早在六十年代,SVM的奠基人V.Vapink就开始了统计学习理论的研究。
1971年,V.Vapink和Chervonenkis在“TheNecessaryandSufficientConditionsfortheUnifomsConvergenceofAveragestoExpectedvalues,一文中,提出了SVM的一个重要的理论基础--VC维理论。
1982年,在“EstimationofDependencesBasedonEmpiricalData”一书中,V.Vapnik进一步提出了具有划时代意义的结构风险最小化原理,为SVM奠定了直接的、坚实的理论基础。
1992年,B.Boser,T.Guyon和V.Vapnik,在“ATrainingAlgorithmforOptimalMarginC1assifiers”一书中,提出了最优边界分类器,由此形成了SVM的雏形。
SVM的提出被认为是机器学习的一个重要革新。
1993年,Cortes和Vapnik,在“TheSoftMarginclassifier”一文中,进一步探讨了非线性最优边界的分类问题。
1995年,Vapnik在“TheNatureofstatisticalLearningTheory”一书中,完整地提出了SVM分类。
1997年,V.Vapnik,S.Gokowich和A.Smola,发表的“SupportVectorMethodforFunctionApproximation,RegressionEstimation,andsignalProcessing”,一文中,详细介绍了基于SVM方法的回归算法和信号处理方法。
1998年,Smola在他的博士论文中详细研究了SVM中各种核的机理和应用,为进一步完善SVM非线性算法做出了重要的贡献。
l999年,B.Schokopf和S.Mika等人在“InputSpaceVersusFeatureSpaceinKemel-BasedMethods”一文中提出了将核变换和核技巧用于空间变换。
同年,B.scholkopf,C.J.C.Burges和A.J.Smola在“AdvancesinKemelMethods—supportVectorLearning”一文中详细阐述了核方法。
上述及同期其它学者的工作,将隐含在SVM中的核方法引申出来,并且得以发展和完善。
核方法的提出、完善和进一步地应用,是SVM对学习算法的重要贡献,是SVM发展的一个重要里程碑。
1.3.2java技术简介
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE,JavaME,JavaSE)的总称。
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。
Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
Java是由SunMicrosystems公司于1995年5月推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称。
由JamesGosling和同事们共同研发,并在1995年正式推出。
Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。
1995年更名为Java,并重新设计用于开发Internet应用程序。
用Java实现的HotJava浏览器(支持Javaapplet)显示了Java的魅力:
跨平台、动态的Web、Internet计算。
从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器均支持Javaapplet。
另一方面,Java技术也不断更新。
(2010年Oracle公司收购了SUN)
第二章系统分析
2.1系统需求分析
随着信息社会的到来,人们越来越多的接触到大量的图像信息。
每天都有大量的图像信息在不断的产生(如卫星、地质、医疗、安全等领域),这些图像信息的有效组织和快速准确的分类便成了人们亟待解决的课题。
图像分类就是利用计算机对图像进行定量分析,把图像中的每个像元或区域划归为若干类别中的一种,以代替人的视觉判读,图像分类的过程就是模式识别过程,是目视判读的延续和发展。
是工业和学术界的热点问题。
SVM,SupportVectorMachine,即支持向量机,是一种机器学习算法,不过现今最常拿来就是做分类(classification)。
也就是说,如果我有一堆已经分好类的东西(可是分类的依据是未知的!
),那当收到新的东西时,SVM可以预测(predict)新的数据要分到哪一堆去。
2.2系统业务流程分析
应用svm分类的步骤如下:
(1)首先搜集各个类的训练集和测试集
(2)从训练集和测试集中提取图片特征
(3)将训练集提取的数据用于svm的学习训练,得到训练模板
(4)通过模板对测试集提取的特征数据用于分类,得到分类结果
系统业务流程图如下图2.2所示:
图2.2系统业务流程图
第三章系统总体设计
3.1分类系统的结构
基于支持向量机的图像分类实验系统的框架示意图如下图3.1所示:
图3.1系统结构图
3.2图像数据库
图像数据库指搜集不同种类的图片作为特征提取的图片数据集。
本次我所取的图片以颜色特征为主如下表格3.2所示:
表格3.2图片类别
红色
黑色
蓝色
绿色
黄色
3.3特征提取模块
该模块主要负责对图像数据库中的图像进行特征提取,并对其进行特征归一化处理,把所提取的特征数据以下格式写到特征输出文件中,以作为下一个模块的输入数据。
[label][index1]:
[value1][index2]:
[value2]...
[label][index1]:
[value1][index2]:
[value2]...
3.4svm分类模块
该模块以特征提取模块的输出文件作为输入,可以对支持向量机的各个参数进行选择,包括核函数及其参数,然后用一定量的样本对该学习机进行学习和训练,用测试样本来测试,得到最后的分类效果。
使用SVM的流程大概就是:
1.准备数据并做成指定格式(有必要时需svmscale)。
2.用svmtrain来train成model。
3.对新的输入,使用svmpredict来predict新数据,得到分类结果。
第四章系统详细设计
4.1特征提取模块
该模块主要负责对图像数据库中的图像进行特征提取,并对其进行特征归一化处理,然后把图像的特征值输出到相应的文件中,以作为下一个模块的输入。
4.1.1颜色矩
颜色是彩色图像最重要的内容之一,被广泛用于图像检索中。
但从图像中提取颜色特征时,很多算法都先要对图像进行量化处理。
量化处理容易导致误检,并且产生的图像特征维数较高,不利于检索。
stricker和0reng0提出了颜色矩的方法[1],颜色矩是一种简单有效的颜色特征表示方法,有一阶矩(均值,mean)、二阶矩(方差,viarance)和三阶矩(斜度,skewness)等,由于颜色信息主要分布于低阶矩中,所以用一阶矩,二阶矩和三阶矩足以表达图像的颜色分布,颜色矩已证明可有效地表示图像中的颜色分布,该方法的优点在于:
不需要颜色空间量化,特征向量维数低;但实验发现该方法的检索效率比较低,因而在实际应用中往往用来过滤图像以缩小检索范围。
设p(i,j)图像的像素值,N为像素数,则:
Mean=(sum(p(I,j)))/N
Variance=sqrt(sum(p(I,j)-mean)^2/N)
Skewness=Variance=(sum(p(I,j)-mean)^3/N)^1/3
三个颜色矩的数学定义:
其中,Pi,j表示图像第i个颜色通道分两种灰度为j的像素出现的概率,N表示图像中的像素个数。
与颜色直方图相比,该方法的另一个好处在于无需对特征进行向量化。
因此,图像的颜色矩一共只需要9个分量(3个颜色分量,每个分量上3个低阶矩),与其他的颜色特征相比是非常简洁的。
在实际应用中为避免低次矩较弱的分辨能力,颜色矩常和其它特征结合使用,而且一般在使用其它特征前起到过滤缩小范围(narrowdown)的作用。
4.2SVM分类模块
该模块以特征提取模块的输出文件作为输入,可以对支持向量机的各个参数进行选择,包括核函数及其参数,然后用一定量的样本对该学习机进行学习和训练,用测试样本来测试,得到最后的分类效果。
4.2.1svm的算法简介
近年来,随着统计学习理论和支持向量机越来越受到广泛的关注,陆续提出了许多关于SVM的训练算法,其算法也日益完善。
下面就简单介绍一下SVM算法。
SVM训练算法主要有三类:
二次规划算法,分解算法和增量算法。
另外,针对特定的问题,很多研究者在这三类算法的基础上提出了很多改进算法,这些算法在特定问题的解决中表现出了很好的效果。
第一类是二次规划算法。
在前面的分析中多次提到,SVM可以归结为一个二次规划(QP)问题,QP是一种常见的优化问题,有一套比较成熟的理论基础。
从数学角度分析,SVM是一个求条件极值问题,其通常的解法有罚函数法和单纯形法。
罚函数法的基本思想是将解不满足约束条件的程度作为惩罚项加在目标函数中,将条件极值问题转化为无条件极值问题来处理,求得其解后增大惩罚力度,将上一步的结果作为下一次寻优的起始迭代点,再求解无条件极值问题,直到满足约束为止。
单纯形法是先随机找到一个可行点作为初值点,构造以可行点为顶点的单纯形,然后按某种搜索策略逐步缩小单纯形,直至各项点间的距离在允许误差范围内为止。
第二类是分解算法。
当训练样本增加时,二次规划算法存在训练速度慢,效率低下,算法复杂而难以实现等问题。
为此,一些学者提出了处理大规模训练集的算法。
Cones和Vapnik提出Chunking算法,该算法每次求解一个子QP问题,得到若干支持向量。
用这些支持向量和一些不满足优化条件的样本,构成新的子QP问题,而初始子问题由任意若干个样本构成。
重复上述过程,知道所有样本满足优化条件。
该方法存在的问题是,当支持向量较多时,算法的训练速度明显变慢。
因为该方法实际求解的QP问题中的赫赛(Hessiall)矩阵的规模下降为最多。
P1att提出了SMO(SequentialMinimal和mization序贯最小优化)算法。
该算法将工作样本集的规模减到最小一一两个样本的情况,其优点是针对两个样本的二次规划问题可以有解析解的形式,从而避免了多样本情况下的数值解不稳定及耗时问题,同时也不需要大的矩阵存储空间,特别适合稀疏样本,算法避开了复杂的数值求解优化问题的过程。
此外,SVM算法工作集的选择也别具特色,不是传统的最陡下降法,而是采用启发式策略,通过两个嵌套的循环来寻找待优化的样本变量。
在外循环中寻找违背KKT(Karush.Kuhn.Tuckcr)最优条件的样本,然后在内循环中再选择另一个样本,完成一次优化。
再循环,进行下一次优化,直到全部样本都满足最优条件,这大大加快了算法的收敛速度。
sM0算法主要耗时在最优条件的判断上,所以应寻求最合理即计算代价最低的最优条件判别式。
第三类是增量算法。
训练方式是在训练样本单个输入的情况下训练,其训练样本总的个数是未知的。
最典型的应用是系统的在线辨识。
Ahmed.s.N最早提出了SVM增量训练算法,但只是近似的增量,即每次只选一小批常规二次规划算法能处理的训练样本,然后只保留支持向量,抛弃非支持向量,和新进来的样本混和进行训练,知道训练样本用完为止,实验表明误差可以接受。
CauwenberghsG等人提出了增量训练的精确解,即增加一个训练样本或减少一个样本对Lagrange系数和支持向量的影响,实验表明算法是有效的,特别是减少一个样本时,对模型选择算法LOO(Leaveoneout)的形象解释,缺点是当样本无限增多时,还是必须抛弃一些样本,使其能够实用。
此外,在以上三类基本算法的基础上,许多学者还提出了其他的算法,如;张学工提出的CSVM算法,将每类训练样本集进行聚类分成若干个子集,用子集中心组成新的训练样本集训练SVM等。
这些算法为SVM的广泛应用起到了推动作用。
4.2.2svm的核函数选择
支持向量机模型最重要的一个参数就是核函数。
选择什么样的核函数,就意味着将训练样本映射到什么样的空间去进行线性划分,核函数的选择关系到能否得到正确识别结果,而怎样从理论上保证选择最优的核函数仍是一个有待解决的问题,目前多是通过实验来决定。
4.2.3svm的核函数
核函数是SVM模型建立的一个主要问题,因为核函数在支持向量机中占有比较重要的地位,所以本节将其单独列出来,对现有的研究成果进行整理和分析,为以后的实验打下坚实的理论基础。
Vapnik在SVM理论中提到,当问题不是线性可分时,利用核函数将样本集映射到某一高维空间,使得样本集在高维空间的像集是线性可分的。
定理:
对任给的样本集K,均存在一映射墨K1,K2两类,则必然存在一映射F:
Sn→M,F(K)在M中是线性可分的。
该定理说明:
对任给的样本集K,均存在一映射F,在此映射下,F(K)(在高维空间中)是线性可分的。
上述即为核函数的存在性定理,该定理为在任意样本集上应用核方法(包括SVM)提供了理论保证。
4.2.4svmtrain的用法
svmtrain实现对训练数据集的训练,获得SVM模型。
Train(训练)data.train会接受特定格式的输入,产生一个"Model"文件。
这个model你可以想象成SVM的内部数据,因为predict要model才能predict,不能直接吃原始数据。
用法:
svmtrain[options]training_set_file[model_file];
其中,options(操作参数):
可用的选项即表示的涵义如下所示:
-ssvm类型:
设置SVM类型,默认值为0,可选类型有:
0--C-SVC
1--n-SVC
2--one-class-SVM
3--e-SVR
4--n-SVR
-t核函数类型:
设置核函数类型,默认值为2,可选类型有:
0--线性核:
u'*v
1--多项式核:
(g*u'*v+coef0)degree
2--RBF核:
e(uv2)g-
3--sigmoid核:
tanh(g*u'*v+coef0)
-ddegree:
核函数中的degree设置,默认值为3;-gg:
设置核函数中的g,默认值为1/k;
-rcoef0:
设置核函数中的coef0,默认值为0;
-ccost:
设置C-SVC、e-SVR、n-SVR中从惩罚系数C,默认值为1;
-nn:
设置n-SVC、one-class-SVM与n-SVR中参数n,默认值0.5;
-pe:
设置n-SVR的损失函数中的e,默认值为0.1;
-mcachesize:
设置cache内存大小,以MB为单位,默认值为40;
-ee:
设置终止准则中的可容忍偏差,默认值为0.001;
-hshrinking:
是否使用启发式,可选值为0或1,默认值为1;
-b概率估计:
是否计算SVC或SVR的概率估计,可选值0或1,默认0;
-wiweight:
对各类样本的惩罚系数C加权,默认值为1;
-vn:
n折交叉验证模式。
其中-g选项中的k是指输入数据中的属性数。
操作参数-v随机地将数据剖分为n部分并计算交叉检验准确度和均方根误差。
以上这些参数设置可以按照SVM的类型和核函数所支持的参数进行任意组合,如果设置的参数在函数或SVM类型中没有也不会产生影响,程序不会接受该参数;如果应有的参数设置不正确,参数将采用默认值。
training_set_file是要进行训练的数据集;model_file是训练结束后产生的模型文件,该参数如果不设置将采用默认的文件名,也可以设置成自己惯用的文件名。
4.2.5svmpredict的用法
svmpredict是根据训练获得的模型,对数据集合进行预测,依照已经train好的model,再加上给定的输入(新值),输出predict(预测)新值所对应的类别。
用法:
svmpredict[options]test_filemodel_fileoutput_file;
options(操作参数):
-bprobability_estimates:
是否需要进行概率估计预测,可选值为0或者1,默认值为0。
model_file是由svmtrain产生的模型文件;test_file是要进行预测的数据文件;output_file是svmpredict的输出文件,表示预测的结果值。
svmpredict没有其它的选项。
第五章系统测试
5.1图像数据
本次测试所用图片以颜色特征为主如下表格5.1所示:
表格5.1图片类别及数量
红色
黑色
蓝色
绿色
黄色
总计
训练数量/张
100
100
100
100
100
500
测试数量/张
80
80
80
80
80
400
5.2提取颜色矩特征
读取图片、提取图片特征,得到训练数据文件和测试数据文件,如下图5.2.1、图5.2.2所示:
图5.2.1训练数据
图5.2.2测试数据
5.3svm分类
1、读取训练数据文件,训练svm得到model文件,如下图5.3.1所示:
图5.3.1model文件
2、读取测试数据文件,进行分类输出分类结果,如下图5.3.2所示:
图5.3.2分类结果文件
5.4测试结果分析
测试结果如下图5.4所示:
从实验结果来看,利用图像颜色矩特征的分类方法是可行的,这说明人们获取图像信息是多方位的。
由此可以推断出提高分类准确率的方法有:
(1)采用多折交叉验证
(2)综合多种特征来分类
第六章软件使用说明书
SVM,SupportVectorMachine,即支持向量机,是一种机器学习算法,不过现今最常拿来就是做分类(classification)。
也就是说,如果我有一堆已经分好类的东西(可是分类的依据是未知的!
),那当收到新的东西时,SVM可以预测(predict)新的数据要分到哪一堆去。
这里我们简单讲述基于svm的图像分类系统的使用方法:
(1)按类搜集图片一部分作为训练,另一部分作为测试;如下图6.1所示:
图6.1图像数据
(2)提取图片特征,并把特征数据指定为svm能读入的数据格式;如下图6.2所示:
图6.2特征数据
(3)用训练数据训练svm分类器,得到model文件,如下图6.3所示:
图6.3model文件
(3)读入测试数据进行分类,得到分类结果文件如下图6.4所示:
图6.4结果文件
设计总结
在大学的学习过程中,毕业设计是一个重要的环节,是我们步入社会参与实际项目的规划建设的一次极好的演示.毕业设计是四年学习的总结和提高,和做科研开发工作一样,要有严谨求实的科学态度。
毕业设计有一定的学术价值和实用价值,能反映出作者所具有的专业基础知识和分析解决问题的能力。
此次毕业设计是我们从大学毕业生走向未来工作重要的一步。
从最初的选题,开题到分析调查、代码编写直到完成设计。
其间,查找资料,老师指导,与同学交流,反复修改代码,每一个过程都是对自己能力的一次检验和充实。
在毕业设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 SVM 图像 分类 系统 设计 文档
![提示](https://static.bingdoc.com/images/bang_tan.gif)