基于Python的模式识别综合设计性实验
2019-10-08赵晶莹刘向东魏晓丹
郭 海,赵晶莹,2,刘向东,魏晓丹
(1. 大连民族大学 计算机科学与工程学院,辽宁 大连 116600;2. 大连理工大学 电子信息与电气工程学部,辽宁 大连 116024)
模式识别实验课程要求学生掌握模式识别的基本理论与方法,并通过程序语言实现预处理、特征提取、分类器的实现等功能[1]。近年来,Python已在机器学习、数据挖掘、模式识别领域广泛应用,并取得良好效果[2-4]。
近来,国内外专家学者对模式识别课程不断进行探索及优化。张懿璞等[5]研究人工智能背景下的模式识别课程教学改革与实践,利用教学分层和实例教学方法对智慧交通和人工智能控制的模式识别进行课程改革。付荣荣等[6]研究工程教育背景下模式识别课程的教学改革问题,从模式识别课程的教材现状、教学组织方式及教学持续改进等方面进行深入的研究。侯志强等[7]从创新模式角度进行研究,取得良好效果。杨勃等[8]分析Matlab的优势并将其应用到模式识别课程教学中,针对遇到的问题提出解决方法。蒋俊锋[9]针对模式识别课程涉及较多数学理论的困难,提出一种淡化理论而使课程教学与实验教学交替进行的教学方式。杨志红[10]开发出一个模式识别虚拟教学平台,旨在提高教师教学效率。高贵等[11]借鉴国外大学模式识别课程经验并结合国内研究生教学现状,从教学内容和教学模式两方面对模式识别课程进行改革。蔡宣平等[12]从教学理念、教学内容、实践环节和网络课程资源共享等4个方面进行改革尝试。
上述研究对于教学效果的提升有很好的促进作用,但更多侧重于课程内容、教学方法及课程资源建设等,对实验环节的研究较少。我校作为民族高校,将少数民族文字识别引入模式识别课程实验教学,开发了基于Python的模式识别综合设计性实验,并将教师的科研成果融入其中,有利于增强学生对模式识别理论的理解,锻炼学生的动手能力,激发学生从事少数民族信息处理的热情。
1 现有模式识别课程实验的不足
现有的模式识别课程实验开发工具主要采用Matlab、C、C++等[14-15]。Matlab语言虽然简洁、强效,但是其分类器、图像处理工具包等为非开源,不利于学生深入学习。C和C++功能强大,但是其代码编写难度大,开发时间较长,在模式识别方面的开源项目远远少于Python。多年的教学实践发现,很多模式识别课程实验缺少趣味性,实验内容与学生生活联系不紧密,难以引起学生兴趣。结合民族类高校少数民族学生多的特点,将少数民族文字识别引入模式识别实践教学,大大提高了学生对实验的关注度和兴趣。以下以纳西图形文的文字识别为例进行介绍。
2 基于Python的模式识别综合设计性实验案例
2.1 实验原理
2.1.1 预处理
文字识别的预处理主要包括版面分析、文档切分、灰度变换、二值化、轮廓提取、平滑、细化等。对于灰度变换、二值化、轮廓提取、平滑、细化等基本图像处理可以调用Python的scikit-image包。纳西图形文的行切分采用投影法,单字切分采用投影回溯法。图1为纳西图形文的切分效果[16]。
图1 纳西图形文切分效果图
2.1.2 特征提取
特征提取是模式识别的主要内容,这里主要采用网络特征法、穿透数法、方向线素法等。
网络特征法是假设二值图像大小为N×N,在图像里打M×M个网格,如2所示。取每个网格里黑色点的个数,形成一个 M×M的特征向量。穿透数特征法与此类似。
方向线素特征法是网格特征法的升级。先对图像进行网格处理,再用滑动窗口对每个网格进行平滑移动,求出各滑动窗口内黑色像素个数,从而形成特征值,如图3所示[17]。
图2 纳西图形文粗网格特征法
图3 纳西图形文方向线素特征法
特征提取还可使用 scikit-image包内置的特征提取工具,但是否适合于纳西图形文有待实验者自行验证。
2.1.3 分类器设计
模式识别分类器种类很多,概括起来包括距离分类器、神经元网络及类神经元网络、决策树、集成学习、深度学习等,详见表1所示。
表1 常见分类器
深度学习在大训练样本下的分类精度优于其他模型,但在训练样本不足情况下,反而不如其他模型。在实验过程中,学生可根据实际情况自行确定分类方法。
2.2 实验内容
纳西图形文字符识别是对模式识别实验教学内容的创新[18],具体要求如下。
2.2.1 预处理
符合临近水源,遗址点分布较为密集且出土实物文本较多较全,代表性较强,可以作为昂昂溪文化突出代表的是五福及滕家岗等处遗址。
教师提供纳西图形文样本图片,学生利用Python的scikit-image包编写程序完成对图像二值化、降噪版面分析、字符切分、轮廓提取,将切分好的图像归一化到64×64大小,并对每幅图像给予相应的类标签。纳西文共有2120个字符,学生可以根据情况选择部分字符来构建样本,但一般不能少于100类,每类不能少于80张图片。
2.2.2 特征提取
利用Python编写程序,实现用网格特征法、穿透数特征法或方向线素特征法对特征的提取,有余力的学生还可采用小波纹理特征法、卷积特征法、弹性网格特征法等方法。将完成特征提取的图片按照指定格式进行存储。对于方向线素特征法、卷积特征法、弹性网格特征法这些维度较高的特征法,还可采用PCA、LDA或流形等来降低维度,以便加快分类器的训练速度并提升分类精度。
2.2.3 分类器设计
实验指导书中提供了最简单的距离分类器的方法样例,学生可根据实际情况利用表1设计自己的分类器。分类器可采用Python的scikit-learn、mlxtend包,或利用Python调用Caffe、TensorFlow、Keras等框架来编写程序。
一般说来不建议学生选用Stacking方法和深度学习方法,因为其模型训练时间过长,无法在课上完成,建议有余力的学生课后利用学校开放的多路 CPU服务器和K80计算卡来实现。
2.3 实验及结果分析
实验硬件平台采用HP Intel Xeon E3-1285 v4工作站,内存 8 G。预处理、特征提取、训练和分类采用Anaconda Python2.7集成环境,在实验的机器中已经安装Caffe、TensorFlow、Keras等框架,可用Python调用。
字符的切分准确率是决定纳西图形文识别的一个主要影响因素。对于相同字体大小的切分精度很高,但是不符合实际情况。为了更真实地接近实际应用,本实验采用不同字体大小的文档进行切分实验。表 2是纳西图形文字符切分情况,不同的预处理方法会导致切分的精度略有不同。
表2 纳西图形文切分情况
完成切分后,需要对纳西图形文单字进行分类识别。为了比较不同特征对于识别精度的影响,构建了210000个样本的单字图像,共2100类,采用欧式距离的识别精度如表3所示。在具体实验中,学生需设计并实现性能更好的分类器来完成该实验,同时可根据实际情况缩减样本集大小,但纳西图形文单字识别的准确率应高于表3。
表3 欧式距离的识别精度
后续的实验研究表明,当使用 LDA和流形对特征降维后,方向线素特征法识别精度好于其他两种特征识别法。随着机器学习技术的发展,深度学习分类器在纳西图形文的识别上表现更好,如采用VGG-16、胶囊网络、深度支持向量机等,其识别准确率可达99.9999%以上。
除了对识别精度进行分析,还需对单字识别模型的混淆矩阵、召回率、宏平均等进行分析,以便更好地评价分类方法。因篇幅所限,在此不予详述。
综上所述,本文通过纳西图形文字符识别的综合性设计实验,将模式识别中的知识点融入其中,旨在激发学生的学习热情,使其更深入地理解模式识别理论及应用。
3 结语
本文基于Python语言,结合民族高校特点,以纳西图形文识别为例,提出了一个模式识别综合性设计实验项目,将教师的科研成果融入实验教学中去。通过该综合性设计实验,培养了学生分析问题、解决问题及综合应用知识的能力,教学效果良好。该实验的设置还激发了少数民族学生投入民族文字信息处理工作的热情,促进了对保护和传承民族文化的信息人才的培养。