鲁江坤,万聿枫,曹龙汉,3
(1.重庆人文科技学院 计算机工程学院 重庆 401524;2.重庆邮电大学 自动化学院 重庆 400065;3.重庆通信学院 控制工程重点实验室 重庆 40035)
燃气系统的燃气准确计量是十分重要的,燃气用户主要分布在城市各个小区,数量众多,为了解决燃气抄表及收费的复杂问题,燃气公司必然要求更好更快地实现燃气自动抄收。信息技术的应用领域越来越广泛,抄表难、收费难是人工抄表方式的致命缺陷,智能燃气表应运而生[1]。IC卡燃气表无法实时统计燃气用户的使用情况以及燃气表的整体运行情况,燃气公司想要进行较好的财务分析和供销差统计是非常困难的;通过有线方式进行远程抄表在一定程度上解决了抄表难的问题,但该方式布线量较大,易损坏,故障率较高,维护难度大。无线通信技术的不断发展为无线抄表系统的应用提供了有效手段。
随着信息化技术的发展,图像识别在各行业的应用场景越来越多,基于图像识别的燃气表远程直读系统的研究受到的关注度越来越高。本文研究的基于图像识别的智能燃气表,实现了燃气表机械部分和电子部分完全分离,构造方式简便,可靠性更高,方便大规模生产及应用。对于智能膜式燃气表,机械字轮读数与电子计数存在累计误差难以避免。国家标准规定,一旦出现误差,必须以机械表读数为准,摄像直读方式可以做到零误差。本文深入研究基于图像识别的远程直读系统[2],基本思路是不需要更换原有燃气表,只需将一个具有图像识别功能的抄表终端加装在燃气表上即可。利用加装的CMOS摄像头获取燃气表读数图像,抄表终端进行相应的图像预处理,然后实现燃气表读数的识别,最终识别数据通过GPRS的方式传送到远程管理中心[3],管理人员在后台能够非常方便进行燃气数据的统计和分析。
基于图像识别的燃气表远程直读系统包括图像识别抄表终端与后台管理中心。图像识别抄表终端的主要功能为原始图像的获取、图像预处理、特征提取和数据约简、字符识别等。获取的图像存储在加装的抄表终端中,经过相应的预处理后,获得高质量的单个字符图像;特征提取是获取每类字符的特征向量;数据约简的目的是为了将这些复杂的特征向量简单化,只保留那些识别度较高的关键属性;字符识别是为了获取燃气表最终读数。最终燃气表读数通过无线通讯方式传送到管理中心,达到燃气表远程直读的目的。系统总体结构如图1所示[4]。
图1 系统总体结构Fig.1 Overall structure of the system
设计图像采集模块的目的是为了获取燃气表的原始读数图像。根据国家相关规定,基于防爆要求,干电池是智能燃气表供电的唯一选择,每个月只需要获取1-2次燃气表原始图像,很大一部分时间都处于功耗非常低的休眠状态,能够确保干电池的使用寿命较长,便于家庭使用。在电路设计过程中,降低能耗是重点考虑因素,尽量减少硬件使用数量,并尽可能选择低功耗元器件。本文选择的CPU为Cortex-M3 ARM微处理器STM32F103[5],它的高性价比、低功耗有优势,不需要扩展外部存储器。燃气表的读数区域尺寸并不大,因此,选择30万像素的CMOS微型摄像头作为图像传感器即可,工作模式为320×80,这样能够最大限度节约存储空间和传输时间。燃气表安装位置光线普遍较差,采用发光二极管补光,在外界光线不好时也能较好完成燃气读数采集工作。
CPU主要实现以下功能:利用CMOS摄像头完成燃气表读数原始图像的采集、对读数图像的预处理,然后采用GPRS的方式将其传送到后台管理中心。为了后续步骤能够得到更好的识别效果,采用图像滤波的方式完成降噪工作。为了降低远程传输的数据量,可以对图像进行二值化和数据压缩。
经摄像头采集到的燃气表机械字轮读数图像可能会因为摄像头安装倾斜造成亮度不均匀,后续进行字符识别难度会加大。因此,采取一定的预处理技术对图像进行修正和加工,能够最大限度地将一些不利于图像识别的因素消除掉,以获得对后续字符识别最有利的图像。
图像预处理主要包括:图像增强、图像去噪、图像二值化、燃气表读数区域定位和倾斜校正、边缘检测和字符分割等。
本文采用RBF神经网络来完成燃气表字符的识别。RBF神经网络模型如图2所示。
图2 RBF神经网络模型Fig.2 RBF neural network model
该模型具有3层结构[6-7],工作原理:首先,隐层节点从输入神经元获取相应的特征向量,然后使用相应的径向基函数对获取的特征向量进行非线性运算。设rj(x)为径向基函数,通常选择高斯函数为映射函数,表示为
(1)
(1)式中:j=1,2,…,m,x是输入向量;cj是第j个隐层神经元中心值;σj为隐层中心宽度,可通过(2)式求得
(2)
(2)式中:d为任意2个隐层神经元中心值最大欧氏距离;m是隐层神经元个数。
最后,最终输出层神经元通过隐层输出的加权映射获得,具体网络输出为
(3)
(3)式中,k=1,2,…,p,yk为输出层单个神经元响应;p为神经元总数;wjk为输出权值。
为了提高RBF神经网络的字符识别能力,RBF神经网络的参数需要优化,包括隐层中心位置和中心宽度、输出层的连接权值。本文使用最近邻聚类与K-均值聚类相结合的算法确定隐层中心位置,中心宽度的优化使用遗传算法,使用违逆法确定输出层的连接权值。
具体算法步骤如下。
步骤1计算每类字符中任意一个特征向量与其他向量欧式距离之和,依次计算完成并将其存入矩阵DIT。
步骤2确定DIT中最小值dit及其对应的向量cj,最终结果存放到初始聚类C中。
步骤3逐个计算特征向量与cj的欧式距离,假如该距离小于ditMean,那个该向量就属于聚类中心,最终该输入向量将会被删除。ditMean计算公式为
(4)
(4)式中,n为每类字符样本个数。
步骤4设th=5,将其余向量进行迭代循环,直到向量个数小于th循环结束。
算法步骤如下。
步骤1经过3.2节的计算,可以得到各个类别字符的聚类中心,这些聚类中心可以作为本次K-均值聚类的初始中心。
步骤2分别计算各个特征向量与各个聚类中心的距离,进行类别划分需要计算相应的误差平方和
(5)
步骤3计算各个数据集中的向量均值,以该均值为新聚类中心并由(4)式计算误差平方和e_new。
步骤4将e_new与e做差,假如两者之差的绝对值小于事先设定的阈值,转至步骤5,否则转至步骤2。
步骤5将K个聚类中心分别输出,将每个聚类中心包含的数据依次累加,若累加数据大于所有训练数据的90%,则将这些数据对应的中心作为各个类别字符的最终聚类中心。
通常情况下,确定隐层中心宽度时可采用(2)式来完成,但该方法对中心值的依赖性较高,当隐层中心值的选择不合理时,利用RBF神经网络对燃气表字符分类及识别的效果会受影响。本文采用遗传算法对中心宽度进行优化,目的是消除中心宽度对中心值的依赖。具体方法如下:在构造适应度函数的过程中,选择神经网络的实际输出和标准输出的均方误差来表征。假设隐层中心值确定,中心宽度需要进一步优化,输出权值计算公式为
D=HW
(6)
W=H+D
(7)
H+=(HTH)-1HT
(8)
网络的实际输出为
OUT=HW
(9)
(6)—(9)式中,H为隐层输出矩阵;W为连接权值矩阵;D为标准输出矩阵。
利用3.2节给出的最近邻聚类和K-均值聚类算法相结合的方法来确定隐层中心值,在中心宽度位置、标准输出已经确定的情况下,利用(7)式和(8)式表示出输出权值,再根据(9)式求得网络实际输出。基于上述原理,将均方误差作为因变量,将未知的中心宽度作为自变量,编写适应度函数;在对中心宽度进行优化的过程中进行优化的过程中可以使用Matlab 自带的遗传算法的工具想来完成,可以使用gatool来打开该工具箱。需要将适应度函数写成M文件,然后在界面中设定好交叉概率和变异概率就可以运行遗传算法,经过仿真实验得到该算法迭代到23代的时候,优化函数达到极小值,中心宽度的优化也就完成了,具体仿真结果见3.5.2节。
RBF神经网络字符识别流程如图3所示。
图3 RBF神经网络字符识别流程Fig.3 RBF neural network character recognition process
3.5.1 预处理仿真
对于任意一幅燃气表读数图像,只需要提取7个数字字符。本文研究过程中,使用了光照不一样、角度不同、清晰度不同的场景下的燃气表读数图像共计125幅,分成随机噪声0.1,0.2,0.3及无噪声组,产生的初始样本图像500幅。为了提升图像的质量,合理采用直方图均衡化的方式来处理,图像的二值化处理能够很好区分图像的前景和背景,目标区域的确定采用水平和垂直投影的方式来完成,Canny算子的使用能够进一步细化字符图像,传输像素个数得以减少,最终得到单个的字符图像。任意选取1 600个字符用于仿真实验,其中训练样本和测试样本分别为1 200和400。图像预处理过程如图4所示。
图4 图像预处理过程Fig.4 Image preprocessing process
3.5.2 综合仿真及结果分析
本文所有实验仿真均采用Matlab 2014a来完成,实验数据为0~9共10个数字,选择每类样本100个。考虑到数字1与其它字符之间的宽度差别明显,在区别数字1的过程中只需要利用宽度即可,本次实验中不考虑数字1。
仿真实验中,从每类100个样本中随机选择20个共计180个字符作为训练数据,其余数据作为测试数据。通过前面的算法得到RBF网络输入神经元数为48个,隐层神经元数为23个,输出层神经元个数为9个。
为了对比BP神经网络、RBF神经网络使用遗传算法优化前后的算法的识别率以及训练速度,训练误差性能指标选择0.001,最大遗传代数取100。各个神经网络的结构参数、最终迭代次、训练时间以及识别率数如表1所示。
表1 3种神经网络识别算法对比结果
抄表终端的程序设计流程如图5所示。燃气表原始度数图像的获取需要使用摄像头来完成,经过图像预处理后得到后续实验应用的单个字符。利用本文选择的特征提取方法提取每类字符的实际特征[8],随后进行相应的合理性判定。对于那些存在问题的特征向量,需要重复上述过程再次获取相应特征;对合理的特征向量,使用特征约简删除冗余数据,保留数据特征的关键属性。如果识别之后的数据有错误,需重新进行数据约简,否则程序结束。
图5 抄表终端程序及二次验证流程图Fig.5 Meter reading terminal program and the second verification flow chart
为了进一步提高系统识别的准确度,我们设计了智能单元处理程序“二次验证”体系。程序第一遍执行过程中,需要对识别的燃气表读数进行预判,判读本次的识别结果并与上一次抄表结果比对,假如该数据比上次获得的数据大,将G1记作1,表明程序被执行1次,得到的识别结果将被记录并存储,该二次判断程序会继续执行,否则,将G1记作0,抄表终端将再一次被执行,上一次的抄表结果便是错误的。
在G1被记为1的时候,要考虑本次抄表结果与上次抄表结果是否有差异,如果2次识别结果完全一致,则认为该结果可信,程序执行结束,否则需要进行二次判断。
图像抄表终端对燃气表图像处理和识别之后,得到相应的燃气表读数,然后通过GPRS远程传送到燃气表管理中心,管理中心的工作人员会根据传输上来的燃气表读数和燃气表图像进行比对,并根据上期读数计算出该用户本月的燃气使用量。
仿真测试过程中,选择的图片共计500幅,对识别及应答情况进行分析,具体情况如表2所示。其中,应答失败的数据共有4组,应答中的 7 组数据超过规定的时间内成功返回到管理中心。应答成功率达到97.8%。分析500组数据,出现错误的数据共有6组,其中4组数据是应答失败,另外2组是因为恶劣环境导致图像模糊造成识别错误,此时燃气公司需通过重新抄表或者改变有燃气表安装环境的方式来处理。测试结果表明本系统适合燃气表的远程抄表。
表2 准确率与应答率测试结果
基于图像识别的智能物联网燃气表,不仅要考虑其功能是否完备,还要考虑功耗问题。抄表终端完成图像识别,将得到的数据传送到管理中心,考虑到燃气公司的备案管理等需求,还需要将识别的每张图片都传送到管理中心。燃气表抄表终端的功耗主要包括STM32F103微处理器、摄像头模块和GPRS通信模块的功耗,其中,STM32F103工作模式电流为36 mA,休眠电流为20 μA;摄像头模块工作模式电流为30 mA,休眠电流为20 μA;GPRS模块的发送工作模式电流为90 mA,休眠电流为20 μA。每幅图像(320×80)的传输数据量为3.125 kbit。每天完成一次抄表花费的平均时间为20 s。可以计算出每次抄表的功耗为
Wa≈20×(36+30+90)/3 600≈0.87 mAh
选择4节1 000 mAh的5号干电池串联进行供电,具体参数为LR6 AA 1.5 V,在放电截止电压为4.4 V时,可计算出燃气表抄表终端的工作时间可达3年以上,完全满足工程应用需求。
本文设计了一种基于图像识别的远程直读智能物联网燃气表,提出了基于图像识别的物联网燃气表设计方案与实现方法。通过字符识别,在满足低功耗要求的同时,实现了物联网燃气表的通信。利用遗传算法对RBF神经网络进行优化,字符正确识别率更高。测试结果表明,系统各项指标达到预定要求,具有抄表成功率高、功耗低、成本低及可靠性高等优点,完全适应燃气表市场的需求。