基于SVM和BP神经网络的手写数字识别

更新时间:2024-05-03 17:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘 要

科技发展日新月异,智能识别推陈出新。如今是信息化时期,数字识别在很多智能领域上运用广泛,拥有普遍的使用远景,因此探索这项技术有其重要的实际意义。由于手写数字在写法上千差万别,且数字间字形差别相对较小,使得识别系统的开发具有很大的挑战性。

当前手写数字识别采用的技术有Bayes判别法、决策树法、神经网络和支持向量机(Support Vector Machines,SVM)等。诞生于20世纪90年代的SVM技术是机器学习研究的热点,因其良好的泛化性能成为了数字识别领域的热门方法。

本开发系统借助MATLAB平台实现完成SVM的手写数字识别功能,同时与BP神经网络的识别作对比,并利用了MNIST数据库作扩展与分析。对识别的结果进行探究,得出使识别精准度出现误差的主要因素有手写体数字的规范程度、笔画字迹粗细和清晰,以及训练样本的数量等。

关键词 手写数字识别;神经网络;SVM

Abstract

I

Technological development changes rapidly, and intelligent recognition innovates constantly. In the information era, numeral recognition has broad application prospects in many pattern areas with a common vision, so it is of great practical significance to explore this technology. As a result of handwritten numeral vary widely in the wording and digital shape difference is relatively small, making recognition system development is a great challenge.

At present, Bayes discriminant analysis, decision tree method, neural network and support vector machine (referred to as SVM) are the main methods of recognition of handwriting. SVM technology, which was born in 1990s, is a hot topic in machine learning research. Because of its good generalization performance, it has become a popular method in the field of numeral recognition.

The system uses the MATLAB to realize the handwritten numeral recognition based on SVM, at the same time with the recognition of BP neural network for comparison, and using the MNIST database to extend and analysis. To research the results of recognition, it comes to conclusion that the main factors affecting the accuracy of the recognition include the specification of the handwritten numeral, the thickness and the clarity of the strokes, and the number of the training samples.

Keywordshandwritten numeral recognition; neural network; SVM

II

目录

摘要 ...................................................................................................................................................................... I Abstract ............................................................................................................................................................ I

第1章绪论 ....................................................................................................................................................... 1

1.1 课题研究的背景和意义 ............................................................................................................... 1 1.2 国内外研究现状及分析 ............................................................................................................... 1 1.3 课题研究的主要内容 .................................................................................................................... 1 1.4 本章小结 .......................................................................................................................................... 2 第2章手写数字识别综述 .......................................................................................... 错误!未定义书签。

2.1 预处理技术 .................................................................................................... 错误!未定义书签。

2.1.1 图像二值化 ....................................................................................... 错误!未定义书签。 2.1.2 图像去噪锐化 ................................................................................... 错误!未定义书签。

2.1.3 图像分割细化 ................................................................................... 错误!未定义书签。 2.1.4 图像归一化 ....................................................................................... 错误!未定义书签。 2.2 特征提取技术 ................................................................................................................................. 3 2.3 手写数字识别方法 ........................................................................................................................ 4

2.3.1 决策树法 .............................................................................................................................. 4 2.3.2贝叶斯判别法 ...................................................................................................................... 5 2.3.3 神经网络 .............................................................................................................................. 7 2.3.4 支持向量机 ......................................................................................................................... 9 2.4 本章小结 .......................................................................................................................................... 9 第3章支持向量机 ......................................................................................................................................... 9

3.1 SVM概述 ............................................................................................................................................ 9

3.1.1 VC维 .................................................................................................................................... 10 3.1.2 结构风险最小原理 .......................................................................................................... 10 3.2 SVM的原理 ...................................................................................................................................... 11

3.2.1 二分类支持向量机 .......................................................................................................... 12 3.3 SVM的优缺点 ................................................................................................................................ 13 3.4 标准支持向量机 ........................................................................................................................... 13

3.4.1 线性分划 ............................................................................................................................ 13 3.4.2 非线性分划 ....................................................................................................................... 15 3.5 核函数 ............................................................................................................................................. 16 3.6 SVM参数优化 ................................................................................................................................ 17

3.6.1 径向基核函数 ................................................................................................................... 17 3.6.2 遗传算法 ............................................................................................................................ 18 3.7 本章小结 ........................................................................................................................................ 19

III

第4章 BP神经网络 .................................................................................................................................... 19

4.1 BP神经网络概述 .......................................................................................................................... 20 4.2 BP神经网络原理及性能 ............................................................................................................ 20

4.2.1 BP神经网络算法流程 .................................................................................................... 20 4.2.2 数据归一化 ....................................................................................................................... 20 4.2.3 BP神经网络训练 ............................................................................................................. 21 4.2.4 BP神经网络参数 ............................................................................................................. 22 4.2.5 BP神经网络函数 ............................................................................................................. 23 4.3 本章小结 ........................................................................................................................................ 24 第5章手写数字识别的设计和实现 ....................................................................................................... 24

5.1 基于SVM的手写数字识别 ......................................................................................................... 24

5.1.1 设计目标 ............................................................................................................................ 25 5.1.2 样本图片选取 ................................................................................................................... 25 5.1.3 设计与实现 ....................................................................................................................... 27 5.2 BP神经网络的手写数字识别 ................................................................................................... 32

5.2.1 设计目标 ............................................................................................................................ 32 5.2.2 样本图片选择 ................................................................................................................... 33 5.2.3 设计与实现 ....................................................................................................................... 34 5.2.4 结果分析 ............................................................................................................................ 39 5.3 MNIST数据库的扩展 ................................................................................................................... 39

5.3.1 样本图片获取 ................................................................................................................... 39 5.3.2 样本图片处理 ................................................................................................................... 40 5.3.3 样本训练及识别 .............................................................................................................. 40 5.3.4 结果分析 ............................................................................................................................ 42 5.4 实验结果分析 ............................................................................................................................... 43 5.5 系统调试及问题解决 .................................................................................................................. 43 5.6 本章小节 ........................................................................................................................................ 44

结论 ................................................................................................................................................................... 44 参考文献 ......................................................................................................................................................... 46 致谢 ................................................................................................................................................................... 46 附录 ................................................................................................................................... 错误!未定义书签。

IV

第1章 绪论

1.1 课题研究的背景和意义

数字识别主要有印刷体与手写体识别,由于存在人体差异和个人习惯的不同,即使是同一个数字,每个人书写的情况都会千差万别。手写数字识别技术在不同的数字数据库实验中已得到了较为满意的识别辨认效果,然而将其使用到手写文档中,其识别的精准度仍难以达到实际要求。

手写数字是借助电子仪器去自动辨别人手写出来的数字。尽管由于笔画、字型等因素还未能在计算机上做到全部都正确识别,但其在各方面应用早已十分广泛,多存在于办公和教学自动化、银行票据自动识别、邮政自动分拣等技术领域当中。

在日常生活和工作中,每天都会接触大量的数字信息,尤其是处理各种各样的数字文档工作,如账单、邮编、电话号码、物流编号等,一些极其关键的数字信息的误判往往极易造成巨大损失,在要求较为苛刻的国防、金融等领域更是不能出现丝毫差错。如何利用现代化技术,使人们从这些繁重且细致繁琐的工作中解放出来,提高识别正确率、记录准确率及其效率已成为一个亟待解决的问题。

智能识别在当代科技应用中日趋普及,科学技术以及物质需求的持续抬高,数字识别的准确率和速度都有了更大的提升。数字不仅构建了数学基础,也承载着信息内容;不仅在数学上发挥着作用,也是人们沟通、交流和学习的主要工具。由数字组合成的各种代码或符号应用广阔,是人类生活和科技进步不可或缺的组成部分,基于这个原因,手写数字的智能识别就具有重大的实际意义[1]。

1.2 国内外研究现状及分析

20世纪初期,德国科学家运用光学相互对比技术第一次实现了机器识别文字符号;50年代起,西方国家为了更好进行信息的处理、保存和保密,开始着手对西文光学字符识别(OCR)的研究;20世纪中叶,全球很多国家开始了探索数字识别。美国科技巨头IBM公司最早开发了相关的产品,这款产品只能认识制定好的字符所印刷出来的文字或符号。1970年左右,我国初步对符号的识别作综合探索。清华大学在1989年推出了OCR软件,着手对汉字和数字的识别进行研究,并在手写汉字和数字识别等领域上取得了巨大的成功。

1963年, Vapnik首次提出了支持向量(SV)方法;历经20年磨练,美国贝尔实验室研究者随后在有限样本的机器学习问题上挖掘了支持向量机(SVM)。跟随科技发展和国外研究的步伐,我国的SVM理论研究在性能优化和训练识别上也取得了一定进展。

历经几十年,数字识别技术在不断的改进下已经得到了很大进步,判断准确度也越来越高。利用BP神经网络和支持向量机作识别已经在各类数据库里获得了较好的成果。分析目前在这方面取得的进展,比对海内外研究的成果和关注的方向,手写数字识别需深入研究解决存在的两大难点,即速度与准确性都需达到更高的水平[2]。

假以时日若对该算法进行相应改进及优化,该技术就能获得更长远的进步。

1.3 课题研究的主要内容

1

本次设计研究的主要内容包括:

1、手写数字识别方法综述。介绍常用的几种方法,并进行简要比较。

2、支持向量机、神经网络的简介。介绍对比两种方法的发展、技术原理和特点,分析支持向量机如何进行学习和实现,BP神经网络的构建和参数确定,为应用在手写数字识别进行可行性讨论。

3、手写数字识别的设计与实现。借助MATLAB平台编程作仿真实验,首先对手写数字图像进行标准化预处理,建立算法进行参数寻优,最后对测试集进行识别和结果分析。

4、Mnist数据库的扩展识别。筛选部分图像,借助SVM法对其作识别和比较分析。

1.4 本章小结

本章扼要概述该课题的研究背景、近况及主要内容,并从多个角度叙述对其研究的重要意义。

第2章 手写数字识别综述

2

手写数字识别过程大致分成预处理、特征提取、分类器分类等几个过程,预处理为能获得正确的有关数字的特性作了基础,而得到有关的数字特征则保证了最后分类的有效性[3]。

2.1 预处理技术

预处理技术,包括了尺寸和位置归一化等多个方面,通常借助它来消除数字图像中包含的噪音、压缩并剔除多余的且与判别无关的数据信息,为进一步提取特征做出不可或缺的铺垫,提升整个系统性能、判别准确率和速率[4]。预处理包括了以下几个方面,如图2-1。

二值化处理去噪锐化分割细化归一化 图2-1 预处理过程

2.1.1 图像二值化

二值化是把灰度图像转变成黑白两个等级,根据其像素的种类再进一步选择具体操作措施。通过二值化将图像中的数字目标从图像中提取出来。将原有图像中那些能够体现其轮廓特征作射影处理后,再保存下来,把那些体现不了的部分全部都作剔除处理。经过这一步操作处理之后,就能获得该图像中有关构成数字的轮廓和特征的有用信息。

2.1.2 图像去噪锐化

反色操作后噪声来源一般有:数字图像本身就存在的污损、孤立点;图片本身存在的底色在作二值化处理后造成了新噪声出现。图片本身导致的噪声干扰能借助自适应二值化算法去优化;图像中存在的笔划的凹凸、孤立墨点的情况,可以通过选择适当的结构元素去消除,或利用小波变换的时频局部化及小波基剔除图像局部高频化的噪声。数字图像的模糊边沿可以采用锐化来实现快速聚焦,改善清晰度。

2.1.3 图像分割细化

图像分割是指依照图像中的各部分像素划分成互不相同的子区域,更方便更有效地对数字后续作进一步单独处理和对数字包含信息的提取,常见的分割方法有阈值分割、区域分割和边缘检测分割等。细化是为了去除输入噪音,保留初始图像特有的几何特性,在保留最初笔划的连续性和特征的前提下,从字符边界逐层移除轮廓黑点像素。手写数字由于存在着书写位置高低、角度位置偏差等人为不可抗拒因素,都会明显增大训练的包袱还会影响识别辨认效果,分割细化后仍需对数字再作出位置矫正逼近处理。

2.1.4 归一化

由于原有图片中的数字大小都各有不同,故而需要作归一化操作,以便让其得到统一。归一化是对每个不同大小尺寸的数字子图像进行缩放射影到统一大小的字符样本中,使其能够具有大概相同的尺寸,便于后续作特征提取和分类识别。

2.2 特征提取技术

3

该部分是整个操作的重中之重,其特性信息量的获得直接关系到最终的效果。提取的方法有:结构特征和统计特征。

结构特征识别方法是从字符的结构或者造型中获取到最能够代表其形状的某类基本信息,类似如横竖撇捺、左右弯钩、交叉等。这种方法能够很好地识别字符笔画的细小改变,但文法相对复杂、对背景复杂的图像识别率较低。

统计特征识别方法是对字符信息进行全体统计学分析比较,采用像素密度特征、数形变换、模板适配等技术,识别相对稳定,抗噪声强,但不能检测到字符的笔画变化情况、字符复杂的几何和拓扑结构,识别出错的概率依然不小。

综合以上两种方法的优劣所在,现阶段手写数字特征提取技术已逐渐趋于对结构与统计特征方法的相结合。本设计采取了统计的方法,即把数字图片作反色处理后,再对像素进行统计分析获取其特性。特征提取技术如图2-1所示。 优点:能够识别笔画细 小变化。

结构识别

缺点:易出现毛刺、断 划,识别率低。

特征提取技术

优点:抗噪声强,识别 稳定。

统计识别

缺点:不能检测笔画变 化,出错概率大。

图2-2 特征提取技术

2.3 手写数字识别方法

2.3.1 决策树法

一种类似流程图的从上到下的树形结构。其基本思想如图2-3所示。

训练数据集训练集分类算法决策树

图2-3 决策树基本思想

4

用一个逻辑判断说明其内部节点(非叶节点),如:形式为a?b。其中:

根节点属性值属性值非叶子节点1No属性值YesNoNo非叶子节点2属性值Yes

图2-4 决策树结构图

决策树优点有:

①准确性高、速度快,易于解释和理解;

②基本上无需对要作判别的数据作处理,即使需要,该准备工作也是很容易处理,而其它方法必须先作剔除冗余的操作。

然而,其缺点也是很明显,主要表现在:

①当存在信息类别多且数目不统一情况时,出错的速度在某种程度上会出现很大幅度的增加。

②内部节点的判别具有明确性,这种明确性可能会带来误导。

2.3.2贝叶斯判别法

贝叶斯(Bayes)判别方法是按照Bayes统计思想的应用,根据最小风险代价判决或最大似然比进行判决。Bayes决策法主要有以下两类。 (1)基于最小错误率的Bayes决策

依照样本库中样本的密度函数,借助Bayes算出待识变量在各状态的概率。在哪个状态下最大就把它划为哪一类。

已知有n?个p?维总体G1、G2、?、Gn(每个总体Gi能看作是其指数X?X1、X2、?、

,借助经验或估计可得:Gi的先验概率分别为q1、q2、?、qn。 显然有: Xn?的所有取数)

qi?0(i=1,2,?,n)且?qi=1(2-1)

i=1n各总体Gi对应的p维密度函数f1(x)、f2(x)、?、fn?x?,在得到一个样本x的情形

5

后,借助Bayes公式计算该样本x来自第k个总体的后验概率:

q?f(x)kP()?nkk?????????(k?1,2,?n)(2-2) x?qi?fi(x)i?1hk当存在:P()???max?P() 时,则:判x来自第h个总体。

1?k?nxx(2)基于最小风险的Bayes决策

依照样本库中样本的密度函数及损失函数,借助Bayes得到概率,再根据后验概率和损失函数计算出各种辨认结果的损失,其中错判损失最小的即为最后的识别结果。

把x错判成第h个总体的平均损失定义为:

q?f(x)?h?hE()????nkk??L??(2-3) xk?h?k?q?f(x)?iii?1

L(h/k):损失函数,表示将样品错判的损失。当h?k时,有:L(h/k)=0;当h?k时,

有:L(h/k)>0 。

当存在:E(h/x)?minE(k/x),则:判x来自第h个总体。

1?k?g实际上,错判造成的损失认为是等同的,即:

?0,???h?k(2-4) L(k/x)???1,???h?k

识别流程图如下图2-5。

6

下图3-8是针对二类分布的样本。图a中,要将两类样本分离需要用一个椭圆形的非线性分类器,而图b,借助两阶多项式把信息射影进三度空间中,只需要一个线性的分类面就能把区分开两种不同的样本。

x2z3x1z1z2(a)(b)图3-8 二维样本分类

SVM中每一个核函数各自都有与其相对应的一种互不一致的不是线性的射影。常用的核函数主要有:

1)线性核函数:K?x,xi??=??xxi; (3-22)

TTp2)多项式核函数:K(x,xi)=(?xxi +r)?,??>0?; (3-23)

3)径向基(高斯)核函数:K,??>0?; (3-24) (x,xi)=exp(-?||x-xi||2)4)两层感知器核函数:K(x,xi)=tanh(?xTxi+r) 。 (3-25)

对于同一个的数据集,使用不同的核函数以及同一核函数的不同参数,其效果都不尽相同,因此如何根据数据的特性采用哪个核函数以及如何确定核函数的参数成了机器学习中的研究热点。

3.6 SVM参数优化

利用SVM作区分类别试验时,必须将有关参数作调改处理方可获得相对满意的预期类别准确率,其中最最重要的两个是惩罚因子c和核参g。本设计是使用RBF核函数和GA算法并且借助向量机来求得全局最佳解。

3.6.1 径向基核函数

径向基核函数(Radial Basis Function,RBF)是 Powell在?1985?年提出的多维空间插值技术,为沿径向对称变量函数。通常表示成表示成空间某一点x?到中ci?的距离,即欧氏范数,记 k(?x?ci?)。

当x远离ci时函数取值很小。常见的有高斯函数,表示为:

17

K(x?ci)=exp(-?||x-ci||2), ??12?2?0(3-26)

式中,ci为高斯函数中心,?为高斯函数方差。

3.6.2 遗传算法

遗传算法(Genetic Algorithm,GA) 又称基因进化算法,是美国人创作发明的某类解决的指令,是以生物遗传同进化为基础的,能够满足非简单系统更优秀的自动调节处理的优化技术[7],该算法开始出现于20世纪中后期,再经过20年的磨练,在1990年前后达到了兴盛的巅峰阶段。

图3-9为遗传算法循环流程图:

开始产生初始种群计算适应度适应度是否达到期望值或迭代次数是否达到最大值Y选择结束交叉计算适应度Y适应度是否达到期望值或迭代次数是否达到最大值交叉

图3-9 遗传算法流程图

将训练集交叉验证后的精准度作为适应度函数值,利用GA算法对SVM进行寻找最佳

因子。流程如图3-10:

18

适应度定标是否满足终止条件YN计算适应度函数选择操作交叉操作变异操作产生初始种群确定最优解确定适应度函数(CV意义下的准确率)解码二进制编码输出最优解(bestc,bestg)开始结束

图3-10 利用GA优化SVM参数(c & g)的算法流程图

3.7 本章小结

本章介绍了SVM的相关理论,概述了SVM的发展、原理技术和优点等,并着重分析了标准向量机在线性划分和非线性划分下的应用,以及核函数和GA对SVM参数的寻优。

第4章 BP神经网络

19

4.1 BP神经网络概述

BP神经网络(BPNN)属于多层前馈网络,各层只同相邻层彼此联接,同层彼此不相联,且层与层没有回馈相连现象存在。当输出层同期望输出出现误差时,进入误差反向传播,依照预测的出入不断地改正不同层的连接值,使得其减小到可以被满意肯定为止。

BP神经网络的拓扑结构如图4-1。

输入值权值X1?ij输出值权值?jkY1X2...Xn输入层隐含层输出层...Ym

图4-1 BP神经网络结构图

4.2 BP神经网络原理及性能

4.2.1 BP神经网络算法流程

BP神经网络流程有:网络的构建、训练和分类。如图4-2:

BP神经网络训练N系统建模构建合适的BP神经网络BP神经网络初始化BP神经网络训练训练结束BP神经网络构建BP神经网络分类BP神经网络分类测试数据Y图4-2 BP

神经网络算法流程图

4.2.2 数据归一化

数据归一化,它用于在网络预测前,对数据信息进行处理,将搜集到的数据信息,进一步全部的变换成介于0到1范围内,回避由于输入输出的数量级不同而导致产生差错比

20

较大。把数据归一化常用以下两种方式: (1)最大最小法。

xk?(xk?xmin)/(xmax?xmin) (4-1)

其中,xmax数据序列最大数,xmin数据序列最小数。 (2)平均数方差法。

xk?(xk?xmean)/xvar(4-2)

其中,xmean数据的平均值,xvar数据的方差。

4.2.3 BP神经网络训练

BP神经网络预测前需要对网络进行训练,步骤流程为:

网络初始化隐含层输出计算输出层输出计算阈值更新权值更新误差计算 图4-3 BP神经网络训练流程图

n(1)隐含层输出H: Hj=f(??x?a)j?1,??2,?…,l (4-3)

ijiji?1(2)输出层预测输出O:Ok=?H?jj?1lij?bkk?1,??2,?…,m (4-4)

(3)预测误差计算e:ek=Yk?Okk?1,??2,?…,m (4-5) (4)权值更新:

m?ij??ij??Hj(1?Hj)x(i)??jkeki?1,??2,?…,n;j?1,??2,?…,l

k?1?jk??jk??Hjekj?1,??2,?…,l;k?1,??2,?…,m (4-6)

(5)阈值更新:

aj?aj??Hj(1?Hj)??jkekj?1,??2,?…,l

k?1m21

bk?bk?ekk?1,??2,?…,m (4-7)

其中:

4.2.4 BP神经网络参数

1.隐含层节点数

隐含层节点数在一定程度上对预测准确的比率起不少作用,有: ①节点数太少:限制了网络的学习,影响训练的准确率; ②节点数太多:会加大训练的时长,容易过拟合了网络。 可借助以下(4-8)的式子进行确定:

l?n?1

l?(m?n)?a

l?log2n (4-8)

其中,n、l、m分别是输入层、隐含层、输出层的节点数量;a是介于0到10范围内的常数[8]。一般是先根据公式(4-8)估计l的大概范围,再用试凑来找到最佳值。普遍来说,适当增多节点数,分类的误差值一般是先减小而后增大。

2.隐含层

隐含层分两种,第一种是单层,另一种是多层。它们的区分,在于层数的不同,当然,它们之间也有联系。多个单隐含层一起构成了多隐含层,因此后者具有更高的测试准确度,更强的泛化性能和更长的时训。根据网络训练时长和精准度决定隐含层层数的多少,在精度要求实现下,单一的映射选取单层可以加快效率;为了提高网络测试的精准度,复杂的则需要选取多层的。 3.学习速率

学习率?的大小在[0,1]范围之内,要得到越大程度的权值修改和越快的网络学习速率,就需要选取越大的?。?过大会导致震荡现象在权值的学习过程中出现,?过小将造成网络过慢收敛,难以得到不变动的权值。变学习速率方法是指伴随着学习不停地进行,在进化一开始拥有较大的学习率?和收敛快速的网络,将会持续地减小并最终趋向稳定。 变学习速率计算公式如下:

?(t)??max?t(?max??min)/tmax(4-9)

式中,?max为最大学习速率;?min为最小学习速率;tmax为最大迭代数;t为当前迭代数。 4.附加动量

22

利用梯度修正法进行权值和阈值的学习,过程很缓慢,因为并未考虑经验的积累,而是从预测误差的负梯度角度进行修正。利用附加动量的途径可以使得该问题有所改善。 附加动量的权值学习公式:

??(k)???(k?1)????(k)?a?[??(k?1)???(k?2)](4-10)

式中,??(k)、??(k?1)、??(k?2)分别为k、k?1、k?2时刻的权值;a为动量学习率。

4.2.5 BP神经网络函数

P:输入数据矩阵;T:输出数据矩阵;S:隐含层节点数;

TF:节点传递函数。有:handlim、handlims、purelin、tansig、logsig等; BTF:训练函数。有:traingd、traingdm、traingda、traingdx、trainlm等; BLF:网络学习函数[8]。

NET:待训练网络;X:输入数据矩阵;T:输出数据矩阵;

Pi:初始化输入层条件;Ai:初始化输出层条件;

[8]

net:训练好的网络;tr:训练过程记录。

x:输入数据;y:网络预测数据[8]。

4.节点传递(转移)函数

1)logsig函数:y?1/?1?exp(?x)?。 2)tansig函数:y?2/?1?exp(?2x)??1。 3)purelin函数:y?x。

由于BPNN中预测精准度受到隐含层同输出层节点传递函数影响,一般来说,

logsig函数多用于前者,而purelin函数多用于后者。

23

4.3本章小结

本章概述了BPNN的相关理论,介绍了该网络特点,着重介绍了其原理技术、以及其如何构建、训练和实现预测的能力,并说明了相关函数。

第5章 手写数字识别的设计和实现

5.1 基于SVM的手写数字识别

本次设计采用的开发平台是MATLAB,SVM工具为LIBSVM工具箱。MATLAB自带的SVM实现函数与LIBSVM的差别:

① MATLAB中的SVM实现函数仅有的模型是C-SVC;而LIBSVM工具箱有C-SVC、nu-SVC、one-class SVC和nu-SVR等多种模型可供使用。

② MATLAB中的SVM实现函数只能解决分类问题;而LIBSVM工具箱不仅支持分类问题,也支持回归问题。

③ MATLAB中带有的SVM实现函数只能解决二分类,而对于多分类问题是无法应对的;而LIBSVM采用一对一法支持多分类。

24

④ MATLAB中带有的SVM实现函数若是使用RBF核函数时是不能对核参gamma作调整处理;而LIBSVM工具箱可以。

⑤ LIBSVM工具箱采用序列最小最优算法(SMO)处理最优问题;而MATLAB中的SVM处理最优问题有:经典二次规划、序列最小最优和最小二乘法等等。

5.1.1 设计目标

SVM可用于模式类别区分及非线性回归,并且在其他领域中也体现了其优异的泛化性能。关于SVM的研究和拓展,包括算法本身的改进和实际应用,都持续被提出来。因此,借助SVM这种方式作识别的辨认处理已成为大致的趋向。

对于SVM在手写数字识别中的应用,目前已经从不同的方面提出了许多改进算法,但仍然存在以下问题:

(1)训练大规模数据集的问题。目前尚未找到同大范围样本有作用的SVM及分类算法。 (2)核函数与核参数的选择问题。支持向量机方法目前存在最大的困难就是核的攫取,怎样按照现实样本数据选择和建立合适的核函数、怎样设置参数等尚缺少相关的知识来决定。

针对这些问题,本设计做了较好的平衡,设计了一个简单实用的识别程序,设计目标为:找到恰当的分类方法和训练数据集,将识别过程流程化,找到适合的核函数,对SVM的有效性作检验。

5.1.2样本图片选取

为提高识别的准确度和识别速度,分析识别率和误判情况,选取了两组样本图片进行实验。从“0”至“9”,每个手写数字图片名称统一为“num*_*”,第一个*为图片上的数字值,第二个*为该数字的编号。如此给每张图片制作标签,用来判断识别的准确率。 (1)样本图片I

训练样本I:数字图片从“0”到“9”各有5张,像素大小是50?50,格式为“.jpg”。 测试样本I:数字图片从“0”到“9”各有3张,像素大小是50?50,格式为“.bmp”。

25

图5-1 训练样本I图片

图5-2 测试样本I图片

(2)样本图片II

训练样本II:数字图片从“0”到“9”各有10张,像素大小是240?240,格式为“.bmp”。 测试样本II:数字图片从“0”到“9”各有3张,像素大小是240?240,格式为“.bmp”。

26

图5-3 训练样本II图片

图5-4 测试样本II图片

5.1.3设计与实现

基于SVM的识别流程分五步走:

27

图像预处理图像特征提取训练训练集建立支持向量机预测测试集

图5-5 SVM识别流程图

(1)图像预处理:二值化处理后批量剪裁,图片转化成标准16?16像素。 (2)图像特征提取:使用统计识别进行提取。

(3)训练训练集:载入训练样本,预处理后生成样本矩阵。

(4)建立支持向量机:借助RBF核函数并使用GA算法来找到最符合特征的最佳参数。 (5)预测测试集:载入测试集,预处理后作识别处理。 5.1.3.1 图像预处理

由于图片中数字的大小和位置不尽相同,为了消除这些影响,首先对每张图片做标准化预处理:将每张图片进行二值化反色预处理后,批量剪裁,转变成像素为16?16。经过该操作后,数字上像素点的灰度值变成1,背景的则为0,即原来的数字图片经过上述操作后变成是黑底白字[9]。处理前后的图片如图所示。

图5-6 原始图片(左)与预处理图片(右)

5.1.3.2 图像特征处理

完成二值化后,用统计识别法来获取特征。提取数字的轮廓,将图像分成大小为4?4的小区域,变换产生特征变量,获得所有轮廓像素点方向信息进行统计,生成50?256的属性矩阵形式,其中的行代表字符特征向量。如图5-7所示。

标签1 方向1频数 方向2频数?DTP频数 方向1频数?DTP频数标签2 方向1频数 方向2频数?DTP频数 方向1频数?DTP频数?标签 n方向1频数 方向2频数?DTP频数 方向1频数?DTP频数 图5-7 训练样本矩阵

5.1.3.3 建立支持向量机

建立SVM,采取RBF核函数并利用GA算法找寻最佳参数。本设计中程序代码GA寻优如下:

(1)设置GA相关参数

28

ga_option.maxgen = 100; ga_option.sizepop = 20; ga_option.cbound = [0,100]; ga_option.gbound = [0,100]; ga_option.v = 10; ga_option.ggap = 0.9;(2)GA进行参数寻优

[bestCVaccuracy,bestc,bestg] = ...gaSVMcgForClass(TrainLabel,TrainData,ga_option)5.1.3.4 训练训练集

载入训练图片进行训练,获取最佳参数和适度曲线。 (1)训练

cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];model = svmtrain(TrainLabel, TrainData, cmd);(2)训练集上查看识别能力

preTrainLabel = svmpredict(TrainLabel, TrainData, model);(3)训练时间记录

tic?训练程序??

(4)最佳参数获取和适应度曲线 训练样本I:

tocbestCVaccuracy = 98bestc = 3.4933bestg = 9.1004Accuracy = 100% (50/50) (classification)Elapsed time is 35.925217 seconds.

29

适应度曲线Accuracy[GAmethod](终止代数=50,种群数量pop=20)Best c=3.4933 g=9.1004 CVAccuracy=98090 8070适应度60504030最佳适应度平均适应度20 05101520253035404550进化代数

图5-8 训练样本I适应度曲线Accuracy

综上:

最佳参数:惩罚参数c?3.4933,核参数g?9.1004; 建立的SVM在训练集上的识别率是100%;

训练时间为35.92?s,最佳适应度为98%。

训练样本II:

bestCVaccuracy = 98bestc = 77.8335bestg = 0.0128Accuracy = 100% (100/100) (classification)Elapsed time is 111.281083 seconds.

30

适应度曲线Accuracy[GAmethod](终止代数=70,种群数量pop=20)Best c=77.8335 g=0.012779 CVAccuracy=980 9080适应度706050最佳适应度平均适应度40 010203040506070进化代数图5-9 训练样本II适应度曲线Accuracy

综上:

最佳参数:惩罚参数c?77.8335,核参数g?0.0128; 建立的SVM在训练集上的识别率是100%;

训练时间为:111.28s,最佳适应度为98%。 5.1.3.5 预测测试集

对测试样本作反色处理后,借助已建立的支持向量机识别图片中的数字。 (1)测试结果 测试样本I:

Accuracy = 93.3333% (28/30) (classification)ans = Columns 1 through 17 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 Columns 18 through 30 5 6 6 6 7 7 7 8 8 8 9 9 9ans = Columns 1 through 17 0 0 0 1 1 7 2 2 2 3 3 3 4 4 4 5 5 Columns 18 through 30 5 6 6 6 7 7 7 8 8 8 7 9 931

本文来源:https://www.bwwdw.com/article/jgjg.html

Top