SVM学习算法(共7篇)
SVM学习算法 篇1
摘要:通过分析现有SVM的两种改进算法:半监督学习算法和增量学习算法, 给出了对现有的增量学习算法的改进, 提出了一种新的半监督增量SVM学习算法, 将其应用于Web文本分类中, 并验证了半监督增量SVM学习算法的有效性和可行性。
关键词:支持向量机,半监督学习,增量学习,Web文本分类
Vapnik V.提出的支持向量机 (Support Vector Machine, SVM) 是在统计学习理论[1]基础上发展起来的一种新的学习算法。它是针对结构风险最小化原则提出的, 改变了传统的经验风险最小化原则, 具有很好的泛化能力。通过引入核映射方法, 有效克服了维数灾难, 较好地解决了非线性问题[2]。
支持向量机在模式分类中具有其它方法不可比拟的优越性, 但也还存在一些问题: (1) 理论上样本数量越多, 分类器精度越高, 但随着样本数据的增加, 时间的增长也是非常迅速的; (2) 训练SVM分类器, 使用的是标注过的样本 (labled examples) , 但要人工地标注大量样本, 既是对人力、时间的耗费, 同时也可能带来人为的出错率。解决第一个问题的方法, 就是引入增量学习方法, 解决第二个问题的办法, 就是使用半监督学习方法。
1 增量学习算法 (Incremental Learning)
1.1 α-ISVM
萧嵘等提出了SVM的增量学习算法α-ISVM, 萧嵘等提出了SVM的增量学习算法α-ISVM, 主要思想是:构造了一个再分类-再训练循环, 每次总是把误分样本引入和SV样本一起进行训练, 直到误分样本比例小于系统设定的阈值。
1.2 Syed等提出的增量学习算法
Syed等提出了的增量学习算法, 主要思想是:增量训练由SV样本和新样本组成, 再训练只需要进行一次即可完成, 所以的非SV样本点都被抛弃。
2 半监督学习算法 (Semisupervised Learning)
传统的SVM算法采用的是人工分类好的文档集D′来训练分类器, 属于有监督的学习算法。要提高它们的分类精度就要增大训练集D′, 使D′中包含的文档数目|D′|增加。但分好类的文档集D′相对没有分类的文档集D″是一种非常昂贵的资源。半监督算法的主要思想是:将未分类文档的类别看成为不完整数据, 通过迭代将D″自动转化为D′, 从而增大了训练集D的规模, 使原来的训练集数据D= {D′}变为现在的D={D′, D″}, 这样在D′不变的情况下提高了分类器的精度。
3 半监督增量SVM学习算法
增量算法和半监督算法都在经典SVM算法基础对分类器性能有较大的提高。但也存在一些可以改进的地方。
3.1 对增量算法的改进
在1.1节中提到的α-ISVM 增量学习算法, 每次把误分样本加入训练集中进行训练, 这样是不全面的。由KKT条件, 只有违背KKT条件的新增训练样本才能使原SV集发生变化。即Lagrange乘子αi= 0, yif (xi) ≥1的样本。违背KKT条件的样本可以分为3类:
(1) 位于分类间隔中, 与本类在分类边界同侧, 可以被原分类器正确分类的样本, 满足0≤yif (xi) {1;
(2) 位于分类间隔中, 与本类在分类边界异侧, 被原分类器分类错误的样本, 满足-1≤yif (xi) ≤0;
(3) 位于分类间隔外, 与本类在分类间隔异侧, 被原分类器分类错误的样本, 满足yif (xi) {-1。
由此可见, 加入新增样本得到新的SVM分类器时, 分类错误只是样本违反KKT条件的特定情况, 并且由于错分样本中给系统引入噪声的可能性较大, 所以单纯依靠错分样本很有可能降低训练精度。所以KKT条件比分类函数的分类判断更合理, 应该选择所有违背KKT条件的样本作为下一步训练集。
在1.2节中提到Syed等提出的增量学习算法, 它将训练集中的所有非SV样本抛弃, 然后加入新增样本进行训练, 这样也是不全面的, 因为可能会丢失原来样本集中的信息。虽然SV集在某些情况下可以代替原来的训练样本集, 但随着新样本的加入, 最优分类面会发生变化, 原样本集中非SV可能转化为SV。
基于对以上两种算法的分析, 在设计算法时, 我们以是否违背KKT条件为判断依据, 违背则加入新的训练集, 否则就放入测试集中;将训练集中的非SV样本不做丢弃处理, 而是把它放入测试集中, 使它有可能再次符合条件进入训练集。
3.2 半监督增量SVM学习算法描述
在保证精度的前提下, 为了尽可能地节约人力和时间, 在半监督学习和增量学习的基础上的, 提出了半监督增量学习算法。它克服了半监督学习训练时间较长、训练量较大的问题, 也弥补了增量学习算法全部需要已标记样本的不足。
它的算法可以表示如下:
D′为已标记样本, D″为未标记样本, Ti为训练集, Xi为新增样本集, Ωi为训练的分类器。
(1) 用D′作为初始训练集T0, 得到Ω0, T
(2) 用Ω0判断出D″中各样本的类别, 得到初始新增样本集X0;
(3) 判断X0中的样本是否有违反Ω0的KKT条件的, 分X0为X
(4) 用Tj={T
(5) 用Ωj判断出Xj中各样本的xji (xji∈Xj) 的类别, 如果xji的类别发生变化, 则判断Xj中的样本是否有违反Ωj的KKT条件的, 分Xj为Xxj和X
(6) j=j+1, 返回第 (4) 、 (5) 步, 直到新增样本集中样本类别不再发生变化或误分率满足某个阈值。
4 实验分析
本文将半监督增量SVM算法思想运用到Web文本分类中。实验数据为从网上获取的网页, 为财经类和非财经类两类分类。共计样本1400个, 其中已标记样本400个 (财经类150个, 非财经类250个) ;未标记样本1 000个。用已标记样本中的200个 (财经类70个, 非财经类130个) 做为训练集, 未标记样本1000个作为新增样本集, 其余200个已标记样本作为最后分类器性能测试集。对上述三种算法做了比较:Syed等提出的增量SVM学习算法、半监督SVM学习算法、半监督增量SVM学习算法。实验结果如表1所示:
由实验数据可知, Syed等提出的增量SVM学习算法由于只需要一次迭代, 所以时间较短;而半监督SVM学习算法由于需要多次迭代, 且样本量较大, 所以时间较长。我们提出的半监督增量SVM学习算法较增量学习算法来说, 节约了很多的用于标注样本的人力成本, 时间代价上增长并不是很大, 正确率也没有下降;较半监督学习算法来说, 时间和正确率都有较大提高。
5 总结
本文提出了一种新的SVM算法——半监督增量SVM学习算法。它融合了半监督算法和增量算法的长处, 又克服了它们各自的不足。实验证明半监督增量SVM学习算法的有效性和可行性。
参考文献
[1]Vapnik V.The nature of statistical learning theory.NewYork:Spring-er-Verlag, 1995
[2]Burges C J C.A tutorial on support vector machines for pattern recog-nition.Knowledge Discovery and Data Mining, 1998;2 (2) :121—167
[3] Platt J C. Fast training of support vector machine using sequential minimaloptimization, In:Advances in Kernel Methods——Support Vector Learning, MIT, 2002
[4]Cristianini N, Shawe-Taylor J.An introduction to support vector ma-chines and other Kernel-based learning Methods.Publishing House of Electronics Industry, 2004
基于SVM算法的分类器设计 篇2
1 支持向量机算法
1.1 算法思想
支持向量机算法的主要思想可以概括为:(1)它针对线性可分情况进行分析,而对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而使高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能。(2)它基于结构风险最小化理论,在特征空间中建构最优分割超平面,使得学习器得到全局最优化,并在整个样本空间的期望风险以某个概率满足一定上界。
1.2 原理简介
支持向量机基于线性划分,但可以想象,并非所有数据均可线性划分。如二维空间中的两个类别的点可能需要一条曲线来划分其边界。支持向量机的原理是将低维空间中的点映射到高维空间中,使其成为线性可分的。再使用线性划分的原理来判断分类边界。在高维空间中,它是一种线性划分,而在原有的数据空间中,它是一种非线性划分[2]。
但讨论支持向量机的算法时,并不是讨论如何定义低维到高维空间的映射算法,而是从最优化问题的角度来考虑的。求最优解的问题可分为无约束最优问题和有约束最优问题。无约束最优算法可表达为mxinf(xi)。可用数值计算方法中的牛顿法、最速梯度下降法等,通过多次循环,求得一次近似的最优解。
有约束问题,一般表达为
支持向量机对于非线性可分的情况,可使用一个非线性函数φ(x)将数据映射到一个高维特征空间,再在高维特征空间建立优化超平面,分类函数变为
通常无法了解φ(x)的具体表达,也难以知晓样本映射到高维空间后的维数和分布等情况,不能在高维空间求解超平面;b是分类阙值,可用任意一个支持向量求得,或通过两类中任意一对支持向量取中值求得。由于SVM理论只考虑高维特征空间的点积运算φ(xi)·φ(xj),而点积运算可由其对应的核函数直接给出,即K(xi,xj)=φ(xi)·φ(xj)用内积K(xi,xj)代替最优分类面中的点积,就相当于将原特征空间变换到了某一新的特征空间,得到新的优化函数
求解上述问题后得到的最优分类函数是
上式中的求和实际上只对支持向量进行。其中核函数K(xi,x)可有多种形式,常用的有
(1)线性核K(x,y)=(x·y)。
(2)多项式核K (xi,x)=(xi·x+1)d,d是自然数。
(3) Radial Basis Fuction(RBF)核(径向基核)
支持向量机的一个显著特点是,计算的复杂度程度与输入空间映射成的核空间的维数无关。因此,就没有了维数问题。换言之,人们在高维空间中进行设计,不必使用大量参数的显模式,其由空间的高维数决定。这也对扩展性产生了影响,而实际上SVM具有较好的扩展性。
支持向量机的一个局限是,直到目前为止也没有最佳方法选择核函数,这仍是一个未解决的问题。但通常而言,径向基核函数不会有过大偏差,对大部分分类问题的效果不会有较大差异,故是首选。
1.3 支持向量机的一般特性
(1) SVM学习问题可表示为凸优化问题,因此可利用已知的有效算法发现目标函数的全局最小值。而其他分类方法都采用一种基于贪心学习的策略来搜索假设空间,这种方法一般只能获得局部最优解。(2) SVM通过最大化决策边界的边缘来控制模型的能力。尽管如此,用户必须提供其他参数,如使用核函数类型和引入松弛变量等。(3)通过对数据中每个分类属性引入一个哑变量,SVM可应用于分类数据。(4) SVM一般只能用在二类问题,对于多类问题效果不佳。
2 基于SVM的分类器设计
2.1 分类器原理
数据分类是数据挖掘中的一个重要题目。数据分类是指在已有分类训练数据的基础上,根据某种原理,经训练形成一个分类器;然后使用分类器判断测试数据的类别[5]。
基于SVM的分类器是一种基于分类边界的方法。其基本原理是:若训练数据分布在二维平面上的点,按照其分类聚集在不同的区域。基于分类边界的分类算法的目标是,通过训练找到这些分类之间的边界。对于多维数据,可将其视为N维空间中的点,而分类边界就是N维空间中的面,称为超面。线性分类器使用超平面类型的边界,非线性分类器使用超曲面。
线性划分如图1所示,可根据新的数据相对于分类边界的位置来判断其分类。一般首先讨论二分类问题,然后再拓展到多分类问题。
2.2 基于SVM算法的分类器的实现步骤
(1)将数据集转化为SVM支持的格式。(2)数据预处理,将数据集的分类属性值归一化并选择训练集和测试集。(3)选择核函数类型。(4)采用交叉验证和网格搜索方法寻找最优的参数c和gamma。(5)用最优化的参数训练出分类器。(6)用设计的分类器进行测试[3,4,5,6]。
3 实验与结果分析
实验以Matlab为开发平台[7],用Libsvm工具箱设计了一个简单的分类器,并用公共数据库中的数据集为训练样例和测试样例,重点对其从训练集的选择方法,参数的选择与优化方面进行测试与验证。
3.1 数据集的划分
为方便结果的可视化,本文测试数据集的特征向量为二维,共包含210个样例,其中前100个为正例,后110个为反例。将数据集按3种方法划分出训练集和测试集。取参数c=16,g=0.01,然后分别对这其进行测试,测试结果如表1所示。
从实验结果可看出,前两种均分法不佳,这是因训练集包含的正反例涵盖不全,导致一些特例分类错误。第3种分法涵盖较均匀且全面,分类效果最佳,为方便验证算法参数的影响,本实验选择第3种分法进行测试验证。
3.2 参数c和g的优化
令c=2-5,2-3,…,215,g=2-15,2-13,…,23,采用交叉验证和网格搜索的方法寻找最优的参数bestc和bestg,搜索结果如图2所示。得出最好的参数bestc=23 170,bestg=0.000 244 14,对应的准确率为96.666 7%(58/60)。最优的参数bestc和bestg对应的可视化分类结果如图3所示。
3.3 参数c的选择及影响
固定选取g=0.000 244 14,测试不同参数c值对应的分类准确度,测试结果如表1所示。
参数c的值在变化过程中的一些典型值对应的分类结果如图4所示。
从测试结果可以看出,惩罚因子c决定了有多重视离群点点来的损失,随着c值的增大,对目标决策函数的损失也越大,此时则暗示非常不愿放弃这些利群点,如果继续将c值增大,增大到无穷大时,只要稍有一个点离群,目标决策函数的值就会变为无限大,使问题无解,这样分类器的分类效果则会很差。
惩罚因子c不是一个变量,整个分类器优化过程中,c是一个必须事先制定的值,制定这个值后,解得一个分类器,然后用测试数据查看结果,若不理想,则更换c值再得到一个分类器,再看效果,如此则是一个参数寻优的过程,最终可以求出分类器效果最好的c值。根据对这些离群点的重视程度来选择合适的c值,如果对离群点不是很重视,则可选择个小的c值,若这些离群点重要,则应选择较大c值。
3.4 参数g的选择及影响
固定选取c=23 170,测试不同参数g对应的分类准确度,测试结果如表2所示。
参数g在变化过程中典型值对应的分类结果如图5所示。
gamma参数是选择径向基函数作为kernel后,该函数自带的参数。隐含地决定了数据映射到新特征空间后的分布。从实验结果中虽然无法直接观测到数据映射到新特征空间后的分布情况,但是通过支持向量的变化可以看出gamma参数对分类器的影响,随着gamma参数的增大,分类器的支持向量越多越分散,说明数据映射到新特征空间后的分布也越复杂,从而使目标决策函数越复杂,影响分类器的分类效果。因此可以通过选择不同的gamma参数值来观测分类器的效果,逐步优化gamma参数,最终选择出最优值。
4 结束语
用公共数据库中的数据集作为训练样例和测试样例,对设计的基于SVM算法的分类器进行了实验,研究了SVM算法中主要参数c和gamma的物理意义。从实验结果可看出,在将SVM算法应用于数据分类时,参数c和gamma对结果的影响仍不容忽视,因此在应用时,应选择合适的参数c和gamma类优化分类效果。
参考文献
[1]Tom M Mitchell.机器学习[M].曾华军,张银奎,译.北京:机械工业出版社,2003.
[2]Crist Anne.支持向量机导论[M].李国正,王猛,曾华军,译.北京:电子工业出版社,2004.
[3]Chih-wei Hsu,Chang Chihchung,Lin Chih Jen.A practical guide to support vector classification[M].Korea:Seoul University,2010.
[4]徐义田.基于SVM的分类算法与聚类分析[J].烟台大学学报,2004,17(1):9-13.
[5]杨铁建.基于支持向量机的数据挖掘技术研究[D].西安:西安电子科技大学,2005.
[6]魏蕾,何东健,乔永亮.基于图像处理和SVM的植物叶片分类研究[J].农机化研究,2013(5):12-17.
SVM学习算法 篇3
一、支持向量机分类
1. 分类算法原理。
支持向量机从本质上来讲也是一种统计方法, 本文的研究中着重讨论和研究了非线性支持向量机的求解, 而非线性支持向量机的求解是以线性支持向量机的求解为基础的。S V M的核心思想在于使分类间隔最大实际上就是对概化能力的控制, 就是说不仅能将两类分开, 而且使分类间隔最大。
线性可分的支持向量机问题是一个二次规划问题, 可以转化为如下的最优化问题:
优化变量为和, 而是学习样本, 其中是特征矢量、是归属的类别值。
借助Lagrange函数将问题转化为对偶函数形式, 通过分析约束条件, 最后可得到分类函数
经济系统最重要的特点就是非线性, 支持向量机能够应用在经济领域的原因就在于能够处理非线性问题, 可以通过非线性变换转化为某个高维空间中的线性问题, 在变换空间求最优分类面。应用支撑向量机模型按照不同资源位指标体系对经济区域进行更细致的分类, 解决了样本不足的问题。通过支撑向量机模型的建立, 有可能在样本比较少的情况下对经济区域按照资源位进行更为合理的分类, 同时与按照某一类资源位指标体系的分类的结果进行对比, 深入地揭示该区域在哪些指标上具有优势或是发展潜力。
2. 指标选择。
根据2005年的国家统计年鉴, 需要注意的是分类指标的选择非常关键, 这是分类是否成功的关键, 本文是通过主成分分析法进行指标的选择, 通过主成分分析法, 本文选择的指标包括地区生产总值、资本形成总额、城镇人口比重、第三产业人口占就业人口比重、职工平均工资、人均国民生产总值、城镇居民可支配收入、平均每人全年消费性支出等几项指标, 从而较好的对区域经济进行了分类, 其中第一因子主要由技术与投资指标决定, 第二因子由可持续发展类的包括绿化等指标来决定。
二、实验
本文选取了28个省份的地区生产总值、资本形成总额、城镇人口比重、第三产业人口占就业人口比重、职工平均工资、人均国民生产总值、城镇居民可支配收入、平均每人全年消费性支出等八个经济指标。首先随机选取的八个省份的数据进行训练。
图上的点分为两类:红色为经济发达, 黑色为不发达省份。红点的省份:北京、天津、上海、江苏、浙江、广东、辽宁、山东。属于经济发达的省份黑色就是其余的省份。同时按照资本, 产业布局等多种指标对不同指标进行分类, 获得如下效果:通过上面的分析可以看到, 使用SVM算法对经济区域进行分类得到的经济发达地区包括北京、天津、上海、江苏、浙江、广东、辽宁、山东, 与实际情况非常接近。本文将支持向量机算法在使用有限样本对数据进行分类的能力很好的应用在经济领域里, 经济系统最重要的特点就是非线性, 支持向量机能够应用在经济领域的原因就在于能够处理非线性问题, 有可能在样本比较少的情况下对经济区域按照资源位进行更为合理的分类。
摘要:本文应用支撑向量机模型按照不同资源位指标体系对经济区域进行更细致的分类, 解决了样本不足的问题。通过支撑向量机模型的建立, 有可能在样本比较少的情况下对经济区域按照资源位进行更为合理的分类, 同时与按照某一类资源位指标体系的分类的结果进行对比, 深入地揭示该区域在哪些指标上具有优势或是发展潜力。
关键词:资源位,系统经济学,经济模型,支撑向量机
参考文献
[1]概化理论研究及应用前景.心理科学, 2003[3]
SVM学习算法 篇4
1 SVM理论知识
SVM,是支持向量机的英文缩写,是一种新型的机器学习方法,是在统计学理论的基础上提出的一种新型学习方法。标准向量机的基本思想是,假设存在一组带有标志的样本[(x1,y1)(x2,y2)(x3,y3)......(xn,yn)],对其中每一个点均进行输入xi∈(-1,1),i=1,2,3......n,通过SVM给出一个函数f(x),通过这个函数将样本中的每一个输入样本的输出值和所对应的目标值之间的误差进行求得,并保证线性回归函数尽量保持平滑。SVM算法主要是为分类平面制造出两个不同的样本,进而使其分类间隔变得最大。
而非线性SVM是通过非线性映射将其转化成另一个高维,甚至到达一个无穷维高度的空间线性分类问题,进而将其中最优的分类面求出,在此过程中不需要将线性转换的具体方式进行全面的熟悉和了解,非线性问题的映射是某一个高度空间的线性问题采用的积核函数,通过权值向量、偏差,进而得出非线性问题的回归函数。
2 改进的SVM彩色图像水印算法
本文对SVM彩色图像水印算法的改进优化进行分析,通过水印嵌入法和水印提取法两种进行研究分析。水印信息分为两种不同的作用的信息,有参考水印和标识水印,参考水印是其所有者在密钥的控制下随机产生的顺序,在进行水印提取时,将其作为SVM训练使用的资源,建立起SVM训练模型。而标识水印是带有一定意义和版权的二值图像,是要真正完成的水印信息嵌入。通过HVS的视觉掩蔽特性将标识水印信息嵌入到原始图像中。参考水印的产生以及标识水印的嵌入过程是相同的,通过SVM训练模型对标识水印信息进行提取。
2.1 SVM彩色图像水印嵌入算法
将K设置为表示M×N的彩色图像,其中K=KR、KG、KB,R、G、B分别表示的是彩色图像的红色、绿色以及蓝色的信息。将图像上某一素点的位置设置为P(i,j),i=1,2,3......M,j=1,2,3......N。则彩色图像的标志水印则是一个为m×n大小的二值图像。将SVM彩色图像水印算法的鲁棒性增强,可以同时将水印信息嵌入到图像的三个通道中。
SVM彩色图像水印嵌入算法的具体步骤为:
(1)产生水印。嵌入的水印信息分为参考水印信息和标识水印信息,参考水印信息的产生是由密钥进行控制进而产生的长度为L的随机序列R=r1,r2,r3.......rl,参与到SVM训练中,标识水印的产生是通过利用Hilbert曲线对二值图像的信息进行扫描,形成一维向量。
(2)水印信息嵌入位置的选择。根据图像版权所有者提供的另一密钥,随机选取嵌入位置,将水印信息嵌入位置设置为Pt(it,jt),t=1,2,3......T,T为嵌入水印的长度值。在水印信息嵌入之前的l位参考水印为t∈(1,l),参与到水印提取SVM训练中。从l+1的位置开始进行标识水印嵌入。
(3)水印信息的嵌入。将每一个待嵌入的水印的像素点作为中心,取一定邻域宽度的像素,按照相关的计算公式,将图像的红、绿、蓝三个通道的强度计算出来,然后根据HVS视觉掩蔽特性,对图像的三色信息进行先后选择,三色信息的选择顺序为蓝色、红色、绿色。
2.2 SVM彩色图像水印提取算法
该种水印提取算法是将水印嵌入信息作为SVM训练的特征向量,然后进行标识水印信息的得到和提取。具体步骤如下:
(1)由图像版权所有者提供的两个密钥下的参考水印和嵌入水印位置信息R=r1,r2,r3.......rl;Pt(it,jt),t=1,2,3......T,T为嵌入水印的长度值。
(2)对待嵌入参考水印的每一个嵌入位置(it,jt),其中t∈(1,l),以这个嵌入位置为中心的一定邻域像素内的图像三色通道强度的平均值计算出来,完成参考水印信息的提取和特征向量以及剩余信息的计算和提取。
(3)建立SVM训练模型。将上步中得到的参考水印向量作为SVM的输入向量,t∈(1,l)最为目标训练向量,进而得到一个的训练样本,在此样本的基础上,选择合适的核函数和参数,参与到SVM训练模型中。
(4)水印的提取。根据标识水印位置信息,结合SVM训练模型,将输出向量Ot=IC`(it,jt)的值通过公式进行计算,进而得水印的提取公式:
Wt`=(IC`)(it,jt)=IC(it,jt),当wt`≥0时,wt=1;当wt`<0时,wt=0。
3 小结
本文对SVM彩色图像水印算法的优化改进进行了分析和学习,通过水印嵌入和提取算法,将新的学习方法加入到数字水印提取中,将水印信息嵌入到数字图像的三色通道中,将水印的嵌入量增加,进而将数字图像的鲁棒性增强。SVM彩色图像水印算法通过加密对数字图像进行安全性保护,及时将其公布,也不会对其信息的安全性产生威胁。
摘要:随着计算机信息技术的发展,数字信息的交流和发展达到了一个空前的高度,在数字信息技术发展的同时也伴随着一些问题的产生,例如所有权问题等,为了可以更好的对作品的所有权进行保护,采用数字水印技术可以将这个问题进行有效的解决。而为了将图像水印效果增强,需要将其水印算法进行改进,本文针对SVM彩色图像水印算法的优化改进进行研究分析。
关键词:SVM,数字水印,彩色图像,嵌入
参考文献
[1]贝依林.彩色图像水印算法研究[D].辽宁师范大学,2008.
[2]张民,张德伟,张峰,杨吉宏,师庆玲.改进的基于SVM的彩色图像水印算法[J].山东农业大学学报(自然科学版),2010(09):54-55.
基于SVM空对地目标跟踪算法 篇5
SVM是20 世纪90 年代Vapnik和Cortes提出的用于模式识别的方法[5]。它是建立在统计学习理论的VC维理论和结构风险最小化原理基础上的,通过对原问题二次规划求取全局最优解,解决机器学习问题,可利用小样本对目标学习,训练分类器,属半监督学习。随着目标表示方法增多,采用多种表示方法可得到高精度跟踪效果使得在跟踪中数据维数增大,导致实时性下降,SVM在处理高维数据中表现出独特的优势[6]。针对小样本数据,SVM分类器[7]对样本的学习能力能够解决跟踪中目标丢失、融合等问题。基于上述分析,本文引入基于SVM分类跟踪算法,利用灰度直方图和哈尔特征提取目标特征,采用线性、高斯等核函数对视频评估,实现目标精准跟踪。
1 支持向量机
n维实数集X表示输入空间,m维实数集Y表示输出空间,Z = X × Y表示样本空间,F表示目标函数集合。机器学习的目的是在集合F中找到一个函数f*( x,α*) 逼近满足样本空间Z中的位置概率分布F。则目标函数的实际风险
式中,L( y,f( x,α) ) 为一个给定模式x的真实值和计算值f( x,α) 之间的损失函数。
与用经验风险Remp( f) 逼近真实风险的经验风险最小化原理不同,结构风险最小化( Structural Risk Minimization,SRM) 原理引入置信风险 ε( l,δ,h)
根据文献[5],ε( l,δ,h) 可表示为
当VC维h增加时,系统对于目标细节掌握的先验知识越多,其识别能力越强,能够在从背景中精确的锁定目标,因此经验风险Remp( f) 随着h的增加而减小; 然而,从式( 3) 可见,算法的置信风险 ε 与VC维h成正比,这是因为h的增加会导致系统对背景噪声过于敏感,背景中一个细小干扰都会对目标识别结果造成很大的影响。SRM原理将真实风险在经验风险与置信风险之间( 分类模型复杂度与学习能力) 寻求了一个折中,三者关系如图1 所示,在满足跟踪精度的前提下,提高跟踪过程实时性。
支持向量分类器[8]( Support Vector Classification,SVC) 基本设计思想为,利用核函数对现实问题二次规划为凸优化问题,将尺度空间中线性可分与线性不可分数据均映射为特征空间中线性可分数据,利用最大间隔分类器( 即支持向量分类器) 对数据学习、分类。
给定一个线性可分样本S = ( ( x1,y1) ,( x2,y2) ,…,( x1,y1) ) ,其中xi∈X,yi∈Y,i = 1,2,…,l,求解决策函数f∈F满足
经二次优化后,求解决策函数的问题转化为求解优化问题
式中:ω为权重向量,b为偏置,二者共同决定分类超平面;l为样本总数。位于ω,b所确定的分类超平面上或在超平面附近的输入向量x*被称为支持向量[9],即为图像中区分于背景的目标特征。
2 核函数选择
选择支持向量机的优势在于它能够将尺度空间中线性不可分数据通过非线性映射函数映射为高维特征空间中线性可分数据,继而在特征空间中选取分类超平面。为了得到非线性映射,支持向量机引入核函数概念,根据Mercer定理避免了在高维特征空间中进行内积运算问题,进一步提升运算速度。
Mercer定理: 如果函数K是Rn× Rn→R上的映射( 即两个n维向量映射到实数域) 。那么K是一个有效函数( 也成Mercer核函数) ,当且仅当对于训练样本{ x1,x2,…,xl} ,其相应的核函数是对称半正定的[10]。
本次实验采用的核函数下面分别介绍。
2. 1 线性核函数( Linear Kernel)
线性核函数是各类核函数中形式最简单的,仅仅为两个向量的内积。采用线性核函数算法等价于不采用核函数,故该核函数针对于尺度空间中线性可分的数据。
2. 2 高斯核函数( Gaussian Kernel)
高斯核函数也称径向基核函数( Randial Basis Function Kernel,RBF) ,二者的主要差别是高斯函数每一个基函数中心对应一个支持变量,输出权值由算法自主决定。函数中变量十分重要,选取过大会导致函数趋向于线性核函数,高维特征空间将失去其非线性特性; 选取过小会导致函数对决策边缘噪声敏感,影响目标跟踪准确度。
选取不同核函数将构成不同的支持向量机,并且对不同实验数据效果亦不相同[11]。线性核函数和高斯核函数应用较为广泛,针对线性可分数据,各类核函数分类效果大同小异,然而线性核函数计算量大大小于其他核函数,可减少算法运行时间,有利于提高算法实时性。高斯核函数适用范围广,不论低维、高维、大小样本等情况,高斯核函数均适用。
3 目标表示
3. 1 灰度直方图[12]
直方图是多种空间域处理技术的基础。直方图能有效用于图像增强,其固有信息在其他图像处理应用( 如图像压缩与分割) 中也非常有用。直方图在软件中易于计算,也适用于商业硬件设备,因此它是实时图像处理的一个流行工具。
本实验将灰度直方图作为目标表示,主要是考虑到其计算简易性,减小算法复杂度。灰度直方图包含了目标的亮度信息,为了进一步突出其易于计算的特点,本算法并未直接对波门中目标像素进行直方图提取,而是先对波门信息进行灰度降级,如此大大缩减了像素灰度数量与存储空间,进而将目标进行一定数量的等分,将图像分块后再进行直方图处理,在减少像素数量的同时,不会丢失目标特有的亮度信息。
3. 2 哈尔特征
哈尔( Haar-like) 特征是计算机视觉领域常用的一种特征算子。最初由Papageorigiou等人用于人脸描述[13-14],分为4 类共15 个算子,其中对角线特征1 个,中心特征( 点特征) 2个,边缘特征4 个,线特征8 个。特征算子表示为黑白相间的矩形,其特征值定义为黑色区域的像素与白色区域像素的差值,在相减过程中,保证二者的像素数相同。矩形特征的位置、大小根据实验需要进行调整。
矩形特征的灵活性( 矩形大小、位置、像素权值) 可为分类器提供大量目标特征,积分图为哈尔特征提供快速算法,可在较短时间内完成对大量矩形特征计算,可满足目标跟踪准确性和实时性的要求[15]。故采用哈尔特征对目标进行表示,在提取目标固有特征同时,能够在跟踪过程中目标发生变化后提取并保存新特征,从而保证在跟踪波门中长时间锁定目标。本次实验选取水平方向、垂直方向的边缘特征和线特征,1 个对角线特征,1 个中心特征共6 个特征对目标进行表示,如图2 所示。
4 实验结果
本文主要针对机载环境对地面目标跟踪的测试视频,对基于SVC跟踪算法进行试验验证。测试视频为卡内基梅隆大学数据库中用于测试空对地目标跟踪的视频egtest02,帧频25 f / s,帧图大小为640 pixel × 480 pixel。实验设备为Intel CoreTM双核CPU,主频2. 53 GHz,内存4. 00 Gbyte。实验软件为Visual Studio 2010 和opencv2. 4. 8。跟踪算法主要采用哈尔特征对目标表示,核函数选取 σ = 0. 2 的高斯核函数。
SVC中的样本从视频第一帧中选取,由于样本数量较小,为了保证跟踪精度,样本中目标充满整个波门,目标样本在随后跟踪过程中不断扩充。支持向量上限为75,减少计算量提高算法实时性。目标搜索区域为半径30 pixel圆形,算法对以上一帧中最佳匹配点为圆心的圆内区域进行步长为2 的遍历,利用SVC对样本集分类,求得本帧中的支持向量,锁定目标位置并将新的支持向量添加进学习器中,如图3 所示。
其中,目标特征评价函数为
式中: x为搜索区域模板; x*为目标模板; yout表示搜索区域与目标模板相似度,其值越大表示搜索区域是跟踪目标的可能性越大。
跟踪目标为机场背景下匀速行驶的汽车,如图4 所示。绿色边框为跟踪波门,波门中为目标车辆,其余车辆为干扰车辆。在整个视频中,第260 ~ 548 帧相机焦距增大,目标车辆减速、转弯,车辆尺度、轮廓发生大幅度变化; 车辆转弯后在第549 ~ 716 帧与三辆车进行会车,第三辆车与目标车辆车型相同; 会车完成后车辆转弯,在952 ~ 1 231 帧航拍相机在x方向剧烈晃动,x方向最大速度为15 pixel/s,最大加速度为5. 17 pixel/s2。
跟踪过程中,航拍相机在第260 帧焦距缩短,目标车辆明显减速,跟踪波门中目标比例减小,如图5b所示。目标车辆在第402 ~ 531 帧完成约100°转弯,角速度为1. 45 rad/s,第400 ~ 424 帧遇到强光干扰,如图5c所示。第530 帧完成转弯,学习器保存目标车辆转弯过长中17 个姿态,支持向量增加到48 个。整个过程中目标车辆锁在跟踪波门内,并未发生任何波门抖动、假跟踪现象。
车辆完成第一次转弯进行会车实验,六辆车共三种车型,每种车型颜色不同。为减少算法复杂度,实验处理对象均被转化为灰度图像,削弱算法对车辆颜色的分辨能力。在通过前两辆不同车型的车辆时,波门可锁定目标,未出现假跟踪现象,其中相似车辆像素占波门最大达到12. 7% ,如图6d所示,但在第677 ~ 681 帧波门锁定同款相向行驶车辆,如图6f所示。在完成回车后,目标与相似车辆分离,分类器根据学习器中在之前跟踪过程中对目标积攒的先验知识,重新锁定目标车辆。
整个会车过程中,目标车辆分别于三辆相向车辆融合,干扰车辆部分进入跟踪波门,但是没有影响整体跟踪效果,会车阶段跟踪精确度达到98. 4% 。
目标完成第二次转弯,即第990 帧之后,航拍相机在x方向产生剧烈抖动,并且焦距调小,目标所占波门比例减小,其像素比例为变换前的1 /3,如图7 所示,最大速度达到15 piexl / s。整个过程中目标被波门牢牢锁住,跟踪精度达到100% 。
5 结束语
经仿真实验验证,算法在跟踪过程中对目标学习后,可对尺度3 倍变换、角速度1. 45 rad/s、融合12. 7% 波门的目标实现高度准确性和稳定性跟踪,并且排除最大速度为15 piexl/相机抖动的不稳定因素,鲁棒性较强,因此,基于SVC跟踪算法精度满足实际工程应用。
SVM学习算法 篇6
关键词:车牌识别,SVM,特征向量,网格,投影,细化
汽车牌照识别 (LPR) 系统是智能交通系统的核心部分, 也是目前计算机与图像模式识别领域的一个重要课题。该系统一般包括车牌定位、字符分割、字符识别3种技术, 其中字符识别技术是整个系统的难点。目前常用的字符识别方法主要有两类: (1) 模板匹配法[1]; (2) 神经网络法[2]。方法 (1) 识别速度快, 但抗干扰能力较弱, 受光照、噪声等因素影响较大, 且准确率较低。方法 (2) 一般具有良好的适应性, 抗干扰能力强、准确率高, 但识别速度较慢, 且识别过程中容易产生过学习的现象。目前, SVM方法已被广泛应用于模式识别等领域, 针对车牌字符识别的问题, 文中提出特征提取时运用网格、水平投影与垂直投影密度相结合, 在充分降低特征向量维数的基础上, 利用C-SVM进行车牌识别, 最终获得了较高的识别率。
1 识别算法流程
为提高识别正确率, 首先, 需对分割好的字符进行归一化处理, 使每个字符大小均为48×24。对归一化的字符进行细化处理, 使之成为笔画只有一个像素的图片。然后对图片进行特征提取, 提取图片的网格特征、水平投影特征与垂直投影密度特征, 将这3种方法提取的特征组成特征向量集, 该特征向量集的维数为144。最后利用得到的特征向量集进行SVM初次识别, 识别结果中若含有易混淆的字符, 则根据字符特有的像素特征进行二次识别, 得出字符最终识别结果[3]。具体算法的流程如图1所示。
2 字符预处理
2.1 字符归一化处理
车牌分割得到的字符通常大小不一, 差别较大, 为了提高识别率, 减少误差, 通常对字符做预处理操作。文中算法字符预处理包括字符归一化处理和细化处理[4,5]。其中字符归一化包括大小归一化和质心归一化。质心归一化算法复杂, 且处理之后字符形状变化较大, 在此仅进行字符大小归一化处理。首先统计字符的垂直投影和水平投影, 分别从上、下、左、右4个边框位置向内扫描, 记录初次出现投影值≥1的位置, 并将该位置作为新的边框, 边框之外的部分进行裁剪, 这便没有多余的边框存在, 减小了后续特征提取的误差。然后对空隙点采用最近邻插值算法, 将字符大小统一为48×24。
2.2 字符细化处理
细化即经过每层的剥离, 从图像中去掉一些点, 但仍保持原来的形状, 最终使每个笔画只含有一个像素的过程, 类似于图像骨架化。在识别过程中, 字符笔画粗细不同会影响字符的识别率。为提高识别率, 消除冗余点, 本算法对归一化后的字符采用形态学细化方法将字符笔画宽度细化成只有一个像素。便可大幅减少笔画粗细不一所带来的误差。采用Matlab自带的函数, BW2=bwmorph (BW, operation, n) 命令。BW2是细化之后的图像, BW为待细化图像, operation选择thin, n选择Inf。由此完成了对字符的细化处理。
3 投影密度的特征提取
常用的统计字符特征的方法有网格特征法、全像素特征法、13点特征法、投影特征法和外围轮廓特征法等。网格特征法是将整个字符图像分割成多个小的图像块, 然后统计每个小图像块的有效像素值之和, 最终将这些小图像的有效像素值之和进行排列生成特征向量。其中, 全像素特征和13点特征均是网格特征的变异, 本质是相同的。网格法的精确度取决于所分割的小图像块的大小, 若过小造成字符特征向量维数过高, 过大 (如13点特征法) , 则无法有效提取字符的细节信息。网格法反映字符整体特征的能力较弱, 在识别过程中, 特征提取仅使用网格法准确率较低。外围轮廓特征法是扫描整幅图像, 分别记录上、下、左、右4个方向上像素值不为0的第一个点所在位置, 这些位置信息组成的特征向量集便是字符的外围轮廓特征向量集。轮廓法中特征向量集的维数是2× (m+n) , m表示字符二值图像的行数, n表示字符二值图像的列数。轮廓法对内部细节特征的提取较少, 对于内部笔画复杂的字符识别率不高。投影方法计算简单、速度快, 但细化能力弱。为此文中采用网格、水平投影与垂直投影密度3种特征提取法提取特征。因此既有字符的整体轮廓特征, 又有内部细节特征, 且特征向量维数充分低。
首先, 对预处理后的字符统计像素值, 分别计算垂直投影和水平投影。在垂直方向上, 将每列的投影值除以字符总的像素值得到垂直投影密度, 该密度特征反映的是每一列像素值所占整个字符像素值的比例, 比起单纯的垂直投影, 更能反映每列像素在整幅图像中的分布情况。将水平投影值依次排成一列, 共48维。垂直投影密度排成一列, 共24维。然后将字符分为72个小网格, 每个网格的大小为4×4。统计每个网格的像素值之和, 共得到 (48×24) / (4×4) 个值, 即72个, 将这72个值依次排成一列组成72维向量。将网格法、水平投影和垂直投影密度这3种方法得到的向量依次连接组成一列。由此, 垂直投影密度与水平投影共48+24=72维, 加上网格法得到的72维总共形成72×2=144维的特征向量集。由此可见文中所得到的特征向量集的维数是全像素特征提取法维数 (48×24) 的1/8, 在保证字符特征的同时充分降低了特征向量的维数。若仅使用轮廓提取法得到的特征向量维数为2× (48+24) =144, 与本算法维数相同。但轮廓法反映的信息不够全面, 不能较好地反映字符尤其是汉字字符的内部细节特征。
4 SVM字符识别算法
支持向量机[6,7,8,9] (Support Vector Machine, SVM) 是Corinna Cortes和Vapnik8等在20世纪90年代提出的一种机器学习方法, 在解决小样本、非线性及高维模式识别问题上有着明显优势。SVM通过构造函数将输入空间映射到高维特征空间, 在高维特征空间中基于结构风险最小化原则得到最优超平面, 使分类的期望误差最小。
4.1 SVM算法原理
其中, s.t.表示约束条件。
上述问题是一个二次规划问题, 其最优解可根据拉格朗日函数求出, 故可转换为如式 (2) 所示的对偶问题
其中, K (xi, xj) = Ф (xi) T Ф (xj) 是核函数。
4.2 SVM字符识别算法
首先选取标准字符共390幅, 包括汉字字符186幅、字母144幅、数字60幅, 将其特征向量集送入SVM中训练。SVM中核函数的选择必须满足Merce条件, 不同的核函数对识别结果产生不同的影响。目前有3种常用的核函数:多项式核函数 (Polynomial Kernel) 、径向基核函数 (Radical Basis Function, RBF) 、Sigmoid核函数 (Sigmoid Tanh) 。在车牌字符识别的实验中, 采用径向基函数的支持向量机性能稍好于采用其他两种核函数的支持向量机性能[11]。因此, 文中采用径向基函数 (RBF) 即作为支持向量机的核函数。拉格朗日乘子C即惩罚系数, 其大小表示对分错的点加入多少惩罚。当C较大时, 分错的点则会变少, 但过拟合的情况会较为严重, 当C较小时, 分错的点增多, 由此得到的模型也会不准确。根据文献[10]的实验, 在车牌识别中, C取1时识别率较低, C取10时识别效果达到最佳点, 然而C再增加到50一直到100, 识别率均保持不变。因此, 文中惩罚系数C取10。SVM的分类器, 选择一对一的二分类器组合, 即每两个不同的类型组成一个SVM分类器。这对于m种类型, 就能组成m (m-1) /2个SVM分类器, 将训练得到的支持向量保存。然后将输入字符的特征向量集通过决策函数对这m (m-1) /2个SVM分类器分别进行测试匹配计算。决策函数为
其中, xi表示训练得到的支持向量;yi为xi所对应的分类取值。K (xi, x) 表示训练时所用的核函数, 此处仍然选择径向基函数。通过匹配计算得出待测数据x的决策值, 匹配计算完所有的分类器, 累计各类别的得分, 选择得分最高者为x的所属类别。最后将该类别作为初次识别的决策结果。
4.3 易混淆字符的二次识别
在初次识别中, 数字2与字母Z, 数字0与字母D容易混淆。其内外部特征均极其相似。目前多数算法均未专门针对这一问题提出解决办法。通过观察2与Z的细化图可发现, 其最大不同在于上半部分, Z有一行像素连续, 像素值达到了峰值, 而2则没有, 2的行峰值在下部, 根据该判断条件, 可较容易的将2与Z分开。而0与D的区别则在于左半部分, D中一列连续像素的顶点距离弧度顶点像素的距离<5, 而0则>5, 根据这一特点便可将0与D分开。在其他大部分算法中, Q与D, Q与0容易混淆, 而在文中的算法, 其却并不容被混淆, 故不属于易混淆字符, 无需二次识别。但需注意, 在实际车牌识别中, 车牌第二位确定是字母, 不需要二次识别, 二次识别只需在后5位进行。二次识别算法的具体流程如图2所示, 从流程图可看出, 本算法根据各自的像素特征区分易混淆字符。最终识别的结果如图3所示, 其中图3 (a) 表示为定位后的彩色车牌图片, 图3 (b) 为图3 (a) 中车牌运用本算法得到的对应识别结果。从图3可知, 运用文中提出的算法, 易混淆字符也可被准确识别[11]。
5 实验结果
本算法在Intel (R) Pentium (R) 4 CPU 2.8 GHz, 512 MB RAM的机器上用Matlab7.1仿真, 平均每个字符的识别时间约为1.08 s, 能够满足实时性要求。在训练样本中汉字字符186幅, 字母与数字共204幅, 已训练的字符识别正确率达到100%。未经训练的字符1 545幅, 识别正确率约为98.10%。其中, 汉字字符的测试样本165幅, 识别正确157幅, 正确率约为95.15%。数字字符测试样本602幅, 识别正确597幅, 正确率约为99.34%。字母字符测试样本388幅, 识别正确379幅, 正确率约为97.68%。具体测试字符的识别结果如表1所示。
表2给出了文中提出的算法与其他文献同类算法的效果对比。从表2可看出, 单独使用网格提取、粗像素提取、轮廓提取中的任意一种进行特征提取时正确率均不理想, 而本算法正确率较高, 效果优于文献中其他4种算法。
实验结果表明, 本算法识别率高, 鲁棒性好。对于模糊图片的抗干扰能力较强, 有较好的实用价值。但识别时间仍需缩短, 且汉字笔画多, 外围轮廓与细节信息均较为丰富, 故识别率略低于字母和数字。因此缩短识别时间, 提高汉字字符的识别率将是下一步研究的重点。
6 结束语
SVM学习算法 篇7
关键词:人脸检测,SVM算法,Adaboost算法
0 引 言
人脸检测是指对任何给定的一幅图像,可以是数字化的视频信号或者扫描进来的图片,通过某种搜索算法,判断其中是否包含人脸,如果有就标出人脸的位置和大小[1]。近年来,人脸检测在视频监控、人脸识别、人机交互等领域中扮演着越来越重要的角色[2],它已经成为模式识别、计算机视觉与人机交互等研究领域的热点之一。
人脸检测有很多方法,每种方法都有各自的优缺点。文献[3]中提出了一个基于haar-like特征的Adaboost分类的人脸检测算法。该算法与其他检测算法相比,在解决实际问题中具有实时性好、检测速度快的优点。但是该方法也存在着比较大的识别误差,在进行人脸候选区域选择时会把很多明显的非人脸区域标出。
而SVM算法[4]对于人脸和非人脸的两类分类问题具有较好的鲁棒性,本文提出了一种把SVM和Adaboost算法相结合的人脸检测方法,该方法先通过Adaboost算法从待检测图像中找出可能的人脸区域,然后用训练好的SVM分类器去除非人脸区域,最终确定人脸位置并标出。
1 人脸检测的相关方法和技术
1.1 Adaboost人脸检测原理
在人脸检测过程中,需要对候选图像进行分析,判断是否为人脸,大多数人脸检测系统都是使用特征对人脸进行建模,这些特征都应该有一定的人脸和非人脸区别。Adaboost算法进行人脸检测时,需要从人脸中抽取大量的简单特征,该检测器选择由Rainer Lienhart等人提出的扩展的haar-like特征,如图1~图3所示[3]。
每个特征由2~3个矩形特征组成,分别检测边界、细线、中心特征,这些特征可表示为[3]:
式中ωi为矩形特征的权,RectSum(ri)为矩形ri所围图像的灰度积分,N是组成featurej的矩形个数。
为了快速计算矩形特征值,Lienhart引入了积分图的概念。对一个输入图像,像素(x,y)处的像素值定义为I(x,y),积分图iI(x,y)定义为该点上方和左侧的像素和。若令s(x,y)表示(x,y)所在列的所有纵坐标不超过y的点的像素值的总和[3],则有:
一个输入图像的积分图可以通过递推公式逐点扫描原图像一次计算出来。有了积分图可以很容易地计算出任何矩形区域的像素总和。在多尺度检测时,采取缩放特征模板的方法,在任意尺度搜索,都可以使用这一积分图。
Adaboost算法是一种分类器算法[3],其基本思想是大量的分类能力一般的弱分类器通过一定的方法叠加(boost)起来,构成一个分类能力很强的强分类器,再将若干个强分类器串联起来成为分级分类器来完成图像的搜索检测功能。串联的级数取决于对错误率和检测速度两个指标的要求。用这种不断叠加组合生成的强分类器能很快排除掉部分背景区域而把更多的时间放在目标区域的计算上面。这种方法虽然能较快排除掉一些背景区域,但是也增大了检测的错误率。
设输入为N个训练样本:{xi,yi} ,…,{xn,yn},其中yi={0,1}对应负样本和正样本;
第j个特征生成的简单分类器形式为:
其中:hj代表简单分类器的值;θj为阈值pj用来表示不等号的方向只能取±1;fj(x)表示特征值。
利用Adaboost算法学习的大致流程如下:
(1) 给定例子集合以及它们的初始权重ω1。
(2) 对于每个t=1,2,…,T(其中T为训练次数):
① 归一化权重ωt;
② 对于每个特征j,按照上面的方法生成与权重样本相应的单分类器hj;
③ 计算相对于当前权重的误差,选择具有最小误差的简单分类器hj加入到强分类器中去;
④ 更新每个样本对应的权重ωt+1。
(3) 得到最终的强分类器h(x)。
将强分类器串联起来形成级联分类器,串联式应把由更重要特征构成的强分类器放前面,这样可以排除大量负样本,提高检测速度。
1.2 支持向量机分类检测
1.2.1 肤色模型
人脸检测常用的色彩空间有RGB、HSV、YIQ、YCbCr等空间[5,6]。尽管人的肤色各异,但是在色彩空间范围内呈一定的聚类特性,而且肤色差异主要体现在亮度上而不是色彩信息上,所以本文采用YCbCr色彩空间。YCbCr空间中的Y代表颜色的亮度信息,Cr和Cb分别代表红色和蓝色的色度。但是,单纯的色彩空间转换还不够,必须对YCbCr色彩空间进行非线性转换,经过转换后的肤色分布区域可以用一个椭圆来近似表示,其表达式为:
其中,
式中的常量[7]为:
ex=1.60 ey=2.41 a=25.39 b=14.03
cx=109.38 cy=152.02 θ=2.53
1.2.2 特征提取
由于人脸具有明显的形状特征,而且具有平移、旋转不变性,所以本文根据文献[8]提出的七阶不变距理论来提取图像的形状特征组成七个特征向量,再加一个区域面积像素比s1作为第八个特征向量,总共八个特征向量来训练SVM。其中,七阶不变矩的公式[8]如下:
其中,
根据上文中描述的特征提取方法对所有人脸和非人脸提取特征作为下文SVM的训练特征库进行训练。
1.2.3 SVM分类器训练
支持向量机SVM[9]是在统计学习理论基础上发展起来的。它是基于结构风险最小化原理的统计学习方法,有着较强的分类能力,能有效地克服神经网络中可能遇到的局部极小值和过学习问题。它的基本思想是寻找一个最优超平面使分类间隙最大。对于二维的情况来说,就是寻找最优分类线把两类准确地分开,并且使分类间隙最大。对于高维空间来说就是找最优分类面的问题了。对于高维空间的线性函数,其计算的时间复杂度取决于样本的数量,支持向量机避开了高维空间计算,利用事先定义好的核函数来实现样本间的内积运算,从而实现了非线性空间到线性空间的转换。
目前研究和应用的最多的核函数有三种:
① 多项式核函数KFpoly(xi,x)=[<xi,x>+1]q,它构成了q阶多项式分类;
② S形核函数:采用Sigmoid作为内积,即KFsigmoid(xi,x)=tanh(v<xi·x>+c);
③ 径向基形式核函数:
其中,‖x-xi‖表示两个向量x,xi取差后求模,pi为常数,调整pi的值可以改变支持向量机的检测精度。
2 SVM和Adaboost相结合的人脸检测方法
本文的人脸检测算法的处理过程如图4所示。
虽然传统的基于Adaboost算法的人脸检测方法极大地提高了人脸检测速度和精度,但是由于Adaboost算法只是利用了人脸的灰度特征,所以具有一定的局限性。当待检测图像的背景比较复杂、类haar-like特征比较多时容易出现误检测的情况。如何过滤这些被误检的非人脸区域成为了本文工作的重点。而SVM算法对于两类分类问题表现出了良好的鲁棒性,比较适合区分人脸和非人脸这种两类分类预测问题。
本文提出了结合Adaboost和SVM的人脸检测算法来降低传统Adaboost算法的误检率。其工作重点是如何训练生成分类准确率较高的SVM分类器(得到XML格式的分类特征库文件)。本文算法主要分为两个阶段:第一阶段是前面所述的生成SVM分类器,第二阶段是利用得到的SVM分类器来进行候选区域筛选,其具体过程描述如下:
第一阶段 SVM分类器生成
(1) 用Adaboost算法来搜索图片,把检测出的人脸图片作为SVM分类器的训练正样本,把非人脸图片作为训练负样本。采用这种方法可以取得SVM的训练样本(本文已取得500个人脸正样本和800个非人脸负样本)。
(2) 考虑到手臂、脖子等肤色区域对检测结果的影响,本文在特征提取之前首先进行了色彩空间转换。把图像从RGB空间转换到具有聚类特性的YCbCr空间。通过大量分析人体肤色的颜色直方图可以发现当像素满足Cb∈[80,128]并且Cr∈[134,165]时,该像素点为肤色像素点,否则为非肤色像素。
(3) 根据上文中描述的特征提取方法,提取图像的七阶不变矩加区域肤色像素面积比s1,总共八个特征组成SVM训练特征库,这些特征被保存在一个文本文件中作为LIBSVM[10]的输入进行参数搜索,得到的参数作为SVM训练参数,训练完成后得到face_SVM_model.xml文件,该XML文件就是用来进行分类预测的分类特征库文件。
第二阶段 利用本文算法进行人脸检测
(4) 利用传统的Adaboost算法进行目标检测,产生若干个可能的候选人脸区域。加载训练好的face_SVM_model.xml分类特征库文件。对已生成的候选人脸区域逐个进行SVM分类预测,并根据区域肤色像素面积比s1和SVM的预测结果来过滤被误检的非人脸区域。
(5) 经过大量实验验证,当区域肤色像素面积比s1大于0.6,并且SVM预测结果为1的时候认为该候选区域为最终的人脸区域。
(6) 通过Adaboost算法进行目标检测和SVM分类预测后得到最终的人脸检测结果。
3 实验结果及分析
本文实际上设计了两级分类器(Adaboost和SVM)进行人脸检测,如何训练生成分类精确率较高的SVM分类器是本文主要工作,也是进行后续候选区域过滤的关键。支持向量机的训练集由因特网上下载1500幅彩色图像生成,通过上文的Adaboost算法随机生成人脸和非人脸图片并从中挑选出1300个作为训练样本,其中包括500个人脸正样本和800个非人脸负样本。因为RBF核具有良好的性态,RBF核SVM(简称为RBF-SVM)在实际应用中表现出了良好的学习性能,所以本文采用RBF-SVM。但是,RBF-SVM的性能受惩罚因子C和核参数γ的影响,C和γ的值影响SVM的分类精确率,我们采用LIBSVM[10]支持向量机算法库进行训练,然后采用参数搜索网格的方法来确定分类精确率最高的C和γ的值。经过参数网格搜索确定了最佳的C和γ,分类精确率等值,如图5所示。
图5是在LIBSVM下通过样本训练生成的参数网格搜索结果,其代表的含义是当C=8192,γ=2.0的时候,RBF-SVM具有最好的分类精确度accuracy=83.0899%。
训练生成SVM分类器后即可进行人脸检测。在对人脸候选区域进行过滤时除了用到SVM分类外,还用到了上文特征提取的第八个特征(区域面积像素比s1),通过大量的实验,本文把该阈值设定为0.6。为了验证本文提出的方法,实验所用的测试集是从因特网和自拍生成,包括单人和多人图像。本文采用VC++ 6.0和OpenCV 1.1作为开发工具,硬件平台为:Pentium(R) 4 3.0GHz,1GB内存;软件平台为:Windows XP Professional。
图6~图8为经典的Adaboost算法和本文算法在静态图像上的检测结果。
为了比较不同的人脸检测算法的检测性能,我们采用了正检人脸数、漏检数和误检数三个评价指标,这三个评价指标的具体定义如下:
正检人脸数是指图像中被正确检测出的人脸数。
漏检数是指图像中未被检测出的人脸数叫作漏检数。
误检数是指图像中被误检为人脸的非人脸窗口数。
如图6所示,(a)为未经过改进的Adaboost算法的人脸检测结果,正检人脸数1个,漏检数0个,误检数2个。(b)为本文算法的检测结果,正检测数1个,漏检数0个,误检数0个。
如图7为多人情况下的人脸检测结果,其中,(a)为Adaboost算法的检测结果,图中有53个人脸,其中,正检人脸数52个,漏检数1个,误检数14个;(b)为本文算法的检测结果,正检人脸数52个,漏检数1个,误检数0个。
如图8为图像背景类肤色区域比较多的情况下的检测结果,(a)为Adaboost算法检测结果,图中有19个正面人脸和2个侧面人脸,其中,正检人脸数20个,漏检数1个,误检数17个;(b)为本文算法检测结果,其中,正检人脸数20个,漏检数1个,误检数5个。
另外,我们对收集的200幅人脸图片进行了检测,200幅图像中包括总人脸数317个。实验得到结果是,Adaboost算法的检测结果为:正检人脸数289个,漏检数29个,误检数143个;本文算法的检测结果为:正检人脸数289个,漏检数29个,误检数13个。
从实验结果可以看出,当图像背景与肤色相差比较大时本文算法能有效地解决误检情况、与Adaboost算法相比能大大减少误检数,说明检测算法具有可行性。同时,本文算法也存在不足之处,在图像背景区域中存在着较多类肤色区域的情况下,未能有效地去除那些类肤色的非人脸区域。实验结果表明,本文算法具有改进Adaboost算法对于复杂环境下的误检率,提高人脸检测精度。此外,本文算法还可通过积累更多的人脸样本,训练取得更高精度的SVM模型,从而将SVM模型应用到人脸检测过程。
4 结 语
本文提出了一种基于利用SVM改进Adaboost算法的人脸检测精度方法。它充分结合了Adaboost算法和SVM对于两类分类问题的优点,先通过高检测率的Adaboost算法从图像中筛选出人脸候选区域,然后通过SVM分类器的过滤,去除一些被误检为人脸的非人脸区域,最后完成人脸检测。实验证明了该方法具有较好的检测效果,提高了检测精度,减低了误检数。同时,实验中也发现当背景区域和肤色相近的时候容易造成误检。我们下一步的工作是扩充训练样本集、改进核函数等方法来进一步提高算法的检测效率。
参考文献
[1]Yang M H,Kriegman D,Ahuja N.Detecting Faces in Images:A Survey[J].IEEE Trans Pattern Analysis and Machine Intelligence,2002,24(1):34-58.
[2]梁路红,艾海舟,等.人脸检测研究综述[J].计算机学报,2002,25(5).
[3]Viola P,Jones M.Rapid Object Detection Using a Boosted Cascade ofSimple Features[C]//Proc.IEEE Conference on Computer Vision andPattern Recognition,Kama;Hawaii,USA,2001.
[4]Burges C J C.A tutorial on support wector machines for pattern recogni-tion[J].Data Mining and Knowledge Discovery,1998,2(2):121-167.
[5]Kjeldsen R,Kender J.Find Skin in Color Images[C]//Proc.SecondInt’1 Conf.Automatic Face and Gesture Recognition,1996:312-317.
[6]Garcia C,Tzinitas G.Face Detection Using Quanized Skin Color Re-gions,Merging and Wavelet packet Analysis,IEEE Trans,Multimedi-a1,1999:264-277.
[7]飞思科技产品研发中心编著.Matalab 6.5辅助图像处理[M].北京:电子工业出版社,2003.
[8]Hu M K.Improved Moment Invations for Shape Discrim Ination[J].Pattern Recognition,1993,26(5):683-686.
[9]Li Xuchun,Wang Lei Sung Eric.A Study of Adaboost with SVM basedweak Learners[C]//Proceedings of international Joint on Neural Net-works.Montreal Canada 2005:196-201.