基于Hadoop平台的图像识别
2017-03-23赵祯
赵祯
摘 要: 基于Hadoop平台以字符识别为例建立图像识别系统。所设计的系统在借鉴云平台高扩展性以及高效性等优势的基础上,有效地解决了传统字符识别系统在计算效率以及数据处理方面所存在的不足。通过实例验证了基于Hadoop平台进行图像识别相比单机图像识别系统具有更高的效率:在仅具有2个节点的Hadoop图像识别平台上进行字符图像的识别时,由于节点数较少,在2台计算机中消耗的数据交换时间使得Hadoop图像识别平台进行图像识别的总时间甚至超过了单台计算机所使用的时间,而在具有4个节点、6个节点和8个节点的Hadoop图像识别平台上,处理相同图像所使用的时间随着节点数量增多而降低。
关键词: 字符识别; Hadoop平台; 图像识别; 数据交换时间
中图分类号: TN911?34; U495 文献标识码: A 文章编号: 1004?373X(2017)04?0128?04
Image recognition based on Hadoop platform
ZHAO Zhen
(Department of Software Engineering, Inner Mongolia Electronic Information Vocational Technical College, Hohhot 010000, China)
Abstract: The image recognition system was established based on Hadoop platform, which takes the character recognition as an example. The system based on the advantages of good scalability and high efficiency of the cloud platform can effectively eliminate the shortcomings of the traditional character recognition system in the aspects of computing efficiency and data processing. The fact that the efficiency of the image recognition system based on Hadoop platform is higher than that of the stand?alone image recognition system is verified with an instance. The data exchange time consumed in two computers makes the total time of the image recognition based on Hadoop image recognition platform with only two nodes longer than the use time of the image recognition based on single computer due to the less node quantity, when the character image is recognized on Hadoop image recognition platform with two nodes. The use time for processing the same image on Hadoop image recognition platform with four nodes, six nodes or eight nodes is deduced with the increase of the node quantity.
Keywords: character recognition; Hadoop platform; image recognition; data exchange time
在對互联网图片进行匹配和分类的过程中,单台计算机已经无法满足相应的需求,而分布式计算框架能够稳定和高效地匹配和分配大量的互联网图片,具有显著的优势[1?2]。本文基于Hadoop平台,以字符识别为例建立图像识别系统。本文所设计的系统在借鉴云平台高扩展性以及高效性等优势的基础上有效的解决在计算效率以及数据处理方面传统字符识别系统所存在的不足。主要体现在以下两个方面:利用Hadoop能够在平台各个节点中分配字符识别任务,对于任务执行时间的缩短有非常积极的作用,还能够提升系统处理大型数据集的效率;能够在普通的PC机上搭建Hadoop平台,同时节点数可以根据数据量大小以及任务需求来灵活的减小,相比于一些昂贵的服务器,其具有非常显著的成本优势。另外,在互联网技术逐渐发展和完善的过程中传统的单机离线识别系统已经不能满足现代化的需求,所以以云平台为基础对字符识别系统进行研究具有显著的现实意义和实用价值[3?4]。
1 基于Hadoop平台图像识别系统框架
1.1 传统图像识别框架
传统图像识别框架如图1所示。
传统图像识别框架主要由图像预处理模块、相关特征提取模块和分类器训练分类模块组成[5]。
(1) 图像预处理模块。通过图像预处理模块能够转换用户所选择的彩色图片,并将转换得到的灰度图像在内存中进行读入,为下一步的计算做好准备工作。
(2) 相关特征提取模块。通过相关特征提取模块能够运算读入到内存中的图像数据,进而保证所获取的图像特征能够满足用户需求。通过该模块能够向量化用户提供所需要的特征。
(3) 分类器训练分类模块。通过对神经网络以及支持向量机等机器学习算法的应用,该模块能够训练所提取的样本数据,同时根据实际的需求用户可以对相关的算法训练分类器进行选择。能够在本地文件系统中以文件的形式将这些训练得到的分类器储存起来。在实现前两个模块的功能以后就可以使用分类器判决特征向量,进而对输入图像的类别进行识别。
在利用传统图像分类系统进行图像分类的过程中,图像特性提取过程需要耗费非常长的时间,另外在对较大数据量的特征矩阵进行计算时需要读写系统硬盘与内存,这就直接增加了程序的出错率,降低了系统的稳定性和可靠性。
在训练分类模型的过程中用户可以利用传统图像分类系统对不同类型的分类器模型进行选择。但是不同的分类器采用了不同的训练算法,使得所选取的参数以及模型存在着一定的差距,如果不能保证所选取分类器模型的适用性,没有充分地优化模型参数,就会降低分类器的正确率。
1.2 基于hadoop平台图像识别系统框架
基于Hadoop平台的图像识别系统整体框图如图2所示[6]。在Hadoop平台上进行图像识别主要分为以下5个过程[7]:
(1) 用户提交图像分类请求。通过Job Client就可以从Hadoop的Job Tracker中获取新的图像分类作业ID。然后工程JAR包可以由图像分类作业运行,通过Job Client能够将程序依赖的图像特征分类数据以及配置文件复制到HDFS中。完成以上过程以后,Job Client就可以将作业提交到Job Tracker中,Job Tracker首先对作业的相关信息进行检查,然后输入数据的划分情况就可以从HDFS中获取,做好作业执行的准备工作。
(2) 图像分类作业的任务分配与初始化。在接收到Job Client提交的作业之后,Job Tracker就会对作业进行初始化操作,并在一个内部的任務队列中放置该作业。利用Hadoop的作业调度器可以调度这个队列中的任务。根据Task Tracker的心跳情况Job Tracker就可以在相应的集群节点上分配相关的作业任务,由于部分特征数据是存放在DataNode上的,因此在进行MapTask的过程中Job Tracker能够从本次直接获取输入数据,这样能够有效地减少数据传输过程中所产生的网络损耗。
(3) 图像分类任务的Map阶段。在获取到Job Tracker所分配的任务以后,程序的相关数据以及JAR文件就可以自动地从HDFS中获取,并在本地的文件磁盘中进行储存,通过对本地的Java虚拟机进行执行就可以对JAR文件和数据进行加载,这样运行任务实例的Task Tracker中就可以接收到数据块。在对Map任务进行执行的过程中,应当对特征库中的图像特征与对应类下输入图像的特征之间的距离进行计算,并将特征图像库中的图像类别以及计算得到的距离作为输出结果的键值对,并在本地文件磁盘中存储得到的结果。
(4) 图像分类任务的Reduce阶段。在获取Map任务计算得到的图像特征向量的中间临时键值对之后,就可以进行图像的分类。MapReduce框架按照其对应的键值对这些特征向量进行分类,当中间结果的键值一致时就会整理和合并键值对的特征向量,并由ReduceTask来处理合并之后的结果。利用ReduceTask可以排序MapTask的输出,并获取图像分类的结果,同时将结果写入到HDFS中。
(5) 图像分类任务的完成:完成Reduce阶段以后,JobTracker就会识别到任务已经完成,并进行相应的表示,另外用户利用JobTracker可以获取作业运行的相关参数。最后,利用JobTracker清空所有作业状态,利用TaskTracker删除Map阶段产生的中间结果,这样用户就可以在HDFS上对结果文件进行查看。
2 字符图像识别方法
通常情况下,对字符进行识别,会使用神经网络和字符识别两种方法。神经网络的识别效率很低,但是拥有较好的容错性能;字符识别形式简单,运行速度快,应用比较广泛。在文中对字符进行识别,使用文献[8]提到的模板匹配和字符图像特征统计相结合的方法。通过确定分析样本和输入形式之间的相似度,将相似程度最高的确定为输入模型类型。在特征的提取过程中,会使用字符的最直接形象,在识别过程中会用到内容匹配原理。也就是说,在完成匹配的时候,要将标准形式的字符和需要输入的字符放到相同的分类器中。相关匹配方法表示如下:
假设以输入函数表示输入字符,函数表示标准模板,为通过相关器比较得到的输出。相关器的输出表示为:
3 Hadoop平台图像识别过程实现
为了保证Hadoop平台能够并行地识别字符图像,应当以MapReduce框架为基础进行Reduce()和Map()函数的编写,其中输入和数据键值对的设计对于Map()和Reduce()函数的编写非常关键[9]。
将Keyin设定为Text 类型来对字符图像的文件名进行储存;将Valuein设置为Image 类型来对字符图像数据进行储存。在将图像数据从HDFS中批量读入以后,Map()函数就可以将其解析为相应的键值对,通过Exif信息提取的执行就可以识别字符,同时在中间结果Keyj中存储所识别的字符,在中间结果Valuej中存储图像文件名以及拍摄时间,经过Collect,Spill,Combine过程Reduce()函数就可以接收到最终的结果。在执行Map Tasks的过程中,输入图像的数量控制着所产生的Map 任务个数,同时这些Map 任务具有相互独立的特点。Map任务数据流处理过程如图3所示[10?11]。
其中,字符识别功能可以通过Map()函数来实现,每个Map 任务由单独的键值对来启动,采用下面两个步骤处理解析出的图像。首先通过调用metadata?extractor就可以将拍摄文件名和时间提取出来。然后通过算法的执行来对图像中的字符进行识别。最后在键值对中写入结果,并将其作为Reduce()函数的输入[12]。
在完成Map()函数的执行以后就需要将输出的中间值Valuej以及keyj传递到Reduce Task,不同的Keyj下的Valuej由不同的Reduce Task来负责,在执行完所有的Map()函数以后就可以在Reduce()函数中合并和排序处理收集到的键值对。Reduce任务数据流处理过程如图4所示。
其中,通过应用冒泡法Reduce()函数可以排序Value 值中的时间参数,并将拍摄时间与文件名以及字符以文本的形式进行输出[13]。
4 基于Hadoop平台图像识别效率分析
本文通过实例对比分析基于Hadoop平台以及单机图像识别平台的识别效率。
单机图像识别平台和Hadoop图像识别平台中主从机均使用相同配置的计算机。在Hadoop平台中节点计算机上安装Hadoop 1.0.0版本平台系统,并对Hadoop平台系统进行配置。
将采集到的字符图像分为四组,各组中分别包含了200,500,1 000和2 000张字符图像,分别使用单机图像识别平台以及配置有2,4,6和8个节点的Hadoop图像识别平台进行图像识别,分别得到各种识别平台下的识别时间如图5所示。
從各识别平台的识别效率对比曲线可以看出,在仅具有2个节点的Hadoop图像识别平台上进行字符图像的识别时,由于节点数较少,在两台计算机中消耗的数据交换时间使得Hadoop图像识别平台进行图像识别的总时间甚至超过了单台计算机所使用的时间,而在具有4个节点、6个节点和8个节点的Hadoop图像识别平台上,处理相同图像所使用的时间随着节点数量增多而降低。
5 结 论
在对互联网图片进行匹配和分类的过程中,单台计算机已经无法满足相应的需求,而分布式计算框架能够稳定和高效地匹配和分配大量的互联网图片,具有显著的优势。本文基于Hadoop平台,以字符识别为例建立图像识别系统。本文所设计的系统在借鉴云平台高扩展性以及高效性等优势的基础上有效地解决在计算效率以及数据处理方面传统字符识别系统所存在的不足。通过实例验证了基于Hadoop平台进行图像识别相比单机图像识别系统具有更高的效率。
参考文献
[1] 王自昊.基于Hadoop的图像分类与匹配研究[D].北京:北京邮电大学,2015.
[2] 梁世磊.基于Hadoop平台的随机森林算法研究及图像分类系统实现[D].厦门:厦门大学,2014.
[3] 吕联盟.基于云计算的人脸识别系统研究与设计[D].西安:长安大学,2014.
[4] 李洁.基于Hadoop的海量视频的分布式存储与检索研究[D].南京:南京邮电大学,2015.
[5] 陈永权.基于Hadoop的图像检索算法研究与实现[D].广州:华南理工大学,2013.
[6] 李彬.嵌入式车牌识别系统的设计与实现[D].西安:西安工业大学,2013.
[7] 陈洪.基于云计算的大规模图像检索后台处理系统实现[D].成都:西南交通大学,2013.
[8] 陈聪,姚大志.高灵敏度CCD和图像特征在车牌识别中的应用[J].计算机仿真,2015,32(11):164?168.
[9] 潘天工.汽车牌照自动识别系统的研究[D].哈尔滨:哈尔滨理工大学,2006.
[10] 李科.基于FPGA和DSP的车牌识别系统的硬件设计与实现[D].成都:电子科技大学,2007.
[11] 王彤.车牌识别系统设计与实现[D].苏州:苏州大学,2009.
[12] 李颜.基于云平台的车牌识别系统设计与实现[D].桂林:桂林电子科技大学,2015.
[13] 章为川.基于神经网络的车牌识别系统的研究与设计[D].成都:西南交通大学,2006.