【摘要】传统的SVM特别适合解决两类分类问题,而对于多类分类,则需将其转化为多个两类分类问题,相应地需要构造多个两类子分类器,这样不但使得分类器结构复杂,而且分类速度受到很大的影响。为了快速地进行多类分类, 本文使用LIBSVM中的svmtrain实现对训练数据集的训练,从而获取SVM多分类模型,利用获取的模型进行测试与预测,不仅使得子分类器数目大大减少,而且使分类速度明显提高。最后从粉末冶金零件图库中选取的8张图像进行了分类实验,取得较好的分类结果。
【关键词】 SVM; 图像分类; 粉末冶金零件;多类分类器;
中国分类号:TP-92
0.引言
支持向量机(Support Vector Machine,SVM)是一种新的机器学习技术。该技术已经成为当前国际机器学习界的研究热点,有许多学者已将它引入到图像分类中来,并取得了较好的效果。粉末冶金(PM)也称为钢铁粉末。它和普通的机械零件的最大区别是用模具加工而成的,由于具有节能、省材、环保、经济、高效等诸多优点,所以被称为典型的近净型制造技术。随着我国粉末冶金零件制造技术的飞速发展,尤其是汽车工业的飞速发展,粉末冶金零件的品种越来越繁多,样式各异,因此对粉末冶金零件的自动检测分类也提出了更高的要求。但是由于传统SVM对于多类分类总是将其转化为多个两类分类问题,相应地需要构造多个两类子分类器,这样不但使得分类器结构复杂,而且分类速度很慢,无法满足生产线上实时分类的需求。本文正是针对粉末冶金零件的特点,研究适合该产品的多类分类器,提高产品分类的快速性和准确性。
1. SVM多类分类器
支持向量机最基本的理论是针对二分类问题。但是在实际应用中涉及的一般是多分类问题,就需要将原始的两类SVM转化为多类分类器。近年提出许多多类SVM分类算法,大多数方法的思路是:构建一系列SVM分类器,每个分类器用于识别其中两个类别,并将它们判别结果以某种方法组合起来实现多类分类[1].
常见的方法有一对一和一对多两种[2]。本文要实现3类不同粉末冶金零件的分类,因为类别不多,故采取一对一的方法。设训练集为T,待分类的零件共有3个类别,在其中找出3种类别的两两组和,共有 个,分别用这两个类别样本点组成两类问题训练集 ,然后用求解两类问题的SVM分别求得3个判别函数 。算法如下图所示:
2. SVM分类过程
本文在设计分类器的时候,所采用的软件就是LIBSVM 2.86[3]。LIBSVM属于SVM模式识别以及回归的一个软件包,它的特点是既简单、易于使用又快速有效。该软件不仅提供编译好的可在Windows 系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用。
目前,LibSVM已经成为国内应用最多的SVM的库,原因是它不但程序小,运用灵活,输入参数少,而且是开源的,易于扩展。
为了得到适合粉末冶金零件的分类器,本文在整个实验过程是按照以下流程进行的。如图2所示。
SVM分类器的输入是图像特征提取的输出文件,也就是图像的边缘方向直方图所包含的数据信息。本文选取3种零件各90幅样本图像进行训练,每幅图像对应一个40维的向量,用它作为分类器的输入。如图3所示:
图中第一列是训练样本的数量,第二列是零件类别的编号,每一行是任何一个训练零件图像的维数。
通过训练得到的SVM模型保存为文件*.model,用记事本打开其内容如图4所示:
下面对模型里面的内容作如下解释:
3.多类分类器的验证
为了更好的判断SVM模型效果,下面我们用以下8幅图片进行测试,如图5所示:
经过对以上8幅图进行测试,每幅图像分别用本文得到的SVM分类器进行分类测试,图像的相似度是由libsvm的置信度统计出来的,其结果如表1所示:
从表格中不难看出,a图和b图属于类型1,c图和d图属于类型2,e图和f图属于类型3,g图和h图看不出来属于哪一类。也就是说只要是粉末冶金零件图的话,它的分类概率就悬殊很大,直接可以分出属于哪一类了;但是如果是非零件图的话,它分类结果相差都不会太大,也就是说,很难分出属于哪一类。
4.结束语
通过测试可以看出明,本文得到的SVM多分类器的准确率是相当高的。经过试验验证,该分类器的识别率可以达到98%以上。所以,将此分类器用在生产线上对粉末冶金零件进行分类识别有一定的实用价值和相当深远的意义。