朱志猛
(中关村硬创空间集团有限公司,北京 100083)
随着物联网、大数据、通信、和图像识别领域深度学习技术[1-3]的深入和普及,电力监控系统[4]迅速发展,各项成本得到一定程度地降低。电力监控系统是一种集视觉、红外、声音传感器于一体,可以对电力设备的热缺陷、断电状态、异常现象进行检测的系统。系统还可读取指针或数字指示仪表的编号,包括压力表、油温表、避雷器指示灯等,从而可快速分析设备运行状态,便于设备管理。因此,实现智能指针或数字识别[5]是智能电力监控重要的前提之一。
近年来,许多学者对电力监控中智能仪表识别相关的工作进行了研究。文献[6]提出了一种基于OpenCV的变电站仪表识别方法。该方法利用图像处理分割表盘单个数字图片后,基于卷积神经网络进行数字识别。文献[7]提出了一种融合感知与控制的数显仪表识别方法。该方法使用图像目标检测网络识别数显仪表,标出目标区域。接着,通过卷积循环神经网络进行实时仪表数字识别。文献[8]针对海上升压作业的特征对仪表识别技术做了改进,在嵌入深度学习技术后,使系统能够分别完成仪表检测与识别任务。由于该识别技术分两个步骤完成,为此,还须根据各步骤的难度、特征设计对应的深度学习模型。现有的基于计算机视觉的仪表识别技术虽然具有较高的准确率,但其大多数方法只能在仿真环境中表现出良好的性能,很难应用于复杂多变的真实场景。此外,大部分仪表图像处于良好的拍摄条件下,当读数区域受到气泡、污渍和光点干扰时,很难正确的读数。
为改善上述问题,本文提出了一种智能仪表监控系统。首先,对系统的架构进行设计。其次,对系统中最为重要的识别任务环节,设计了基于深度学习的智能仪表检测模型,从而实现电力仪表的智能识别。
智能仪表监控系统架构如图1所示,主要由感知层、网络层、信息层、应用层四部分组成。首先,每个智能仪表都附有一个GPS、摄像头、通信模块,便于本地监控视频关键帧发送至云端进行识别并产生预警信息。其次,采用互联网和窄带物联网[9-13](NB-IoT,narrow band internet of things)进行通信,其中NB-IoT用于与仪表间的有效通信,互联网用于最终用户管理。最后,建立了一个基于云的智能处理方案,从而实现处理、识别、存储和决策各个待监控仪表的状态信息。
图1 智能仪表监控系统结构
感知层由大量感知设备及传感器构成如光学传感器、振动和位置传感器等。基于这些感知单元,系统可以实时感应到仪表的振动、表盘读数等信息。
网络层是实现智能仪表监控系统最重要的组成部分之一。一方面云服务器需要与所有仪表通信,另一方面管理人员必须跟踪所有的仪表,从而预警相关设备运行状态,如遇故障或突发事件也可安排人员执行维修工作。
信息层根据感知层级网络层传输的数据进行响应控制。当从仪表监控系统根据摄像头采集的数据产生报警信息时,立即响应异常情况非常重要。例如,如果仪表读数异常,则基于GPS位置传感器,云服务器能够获取异常仪表的位置信息。同时,系统可基于位置信息调度距离最近的维修人员到现场确认情况,从而使得智能监控过程形成闭环,及时处理报警信息。
应用层主要包括智能监控、空间感知以及智能管理等模块。主要完成不同仪表监控视频展示,位置标识(经纬度),以及遇到突发事件的预警提醒、维修人员调度等。
智能仪表监控系统原理如图2所示。系统在工作过程中,感知层中信息采集单元主要采集表盘信息。当信息采集完成后,图像将基于网络层将数据发送到云服务器。同时,系统基于深度学习的智能仪表检测模型执行目标检测。需注意,基于深度学习的智能仪表检测模型是智能仪表监控系统中最为重要的一环。
图2 智能仪表监控原理
此外,为提高系统工作效率,可利用多核、PC集群和GPU集群计算等并行计算技术[14-16],从而将云端的数据按需共享给多个计算单元。为了保证系统灵活性和可扩展性,通信或信息共享时采用HTTP传输协议,从而满足易于监控和维护需求。
本文所提基于深度学习的智能仪表检测模型如图3所示。模型可分为数字区域检测网络(DaNet,digital area detection network)和数字识别网络(DiNet,digital identification network)两大模块。首先,对原始图像进行预处理;其次,将RGB转换到YCbCr颜色,从而提出颜色干扰;再次,利用目标检测技术检测电力仪表读数区域,然后进行旋转校正以确定仪表类型。接着,针对不同类型的仪表采用不同的识别算法,最终得到并保存识别结果。
图3 智能仪表检测模型
为了对异常用电情况进行实时侦测,智能电表对用户的用电信息进行有规律地监测。设Dn为一维用电数据。则:
(1)
因为一维数据没有考虑当天用电量的变化,如果侦测天数多,那么Dn将不能反映不同时段电力数据间的深层联系。为提取不同时段、不同日期间的电力特征,文章给出了二维电力数据。其表达式为:
(2)
式中,列项表示单天的用电数据。在各种技术支持下,智能电表可对多种用电数据进行收集。比如,功率因数、三相电流与电压。考虑到篇幅限制,为简化运算,文章只讨论第Di天中所收集的数据量,其列向量为:
xdi={x1,x2,…,xj,…,xF}T
(3)
式中,智能电表收集的总的用电数据数表示为F。针对某一用户,其用电数据集公式是:
Dn={xd1,xd2,…,xdi}
(4)
最后,由于数字电表位于不同的环境条件下,拍摄距离不同,因此捕获的电表图像的大小也不同。为了在同一程序中处理所有捕获的电表图像,需要调整捕获的输入数字电表图像的大小。为此,将输入图像的大小调整为512×512。
由于RGB对照明变化敏感,因此原始图像可能存在一定照明干扰,为此,本文将原始RGB图像将转换为YCbCr图像。YCbCr颜色空间[17-18]是一种典型的线性亮度颜色空间。在YCbCr中,Y代表亮度,Cb和Cr分别是蓝色和红色的色度。通过转换过程,对RGB信息进行编码,并将Y的信息范围调整为16到235,Cb和Cr的信息范围调整为16到240。RGB图像转换为YCbCr颜色空间公式如下:
(5)
由于传统方法适应性差,本文采用DaNet来检测电力仪表数字读数区域。图4为DaNet网络模型结构。该网络模型共分为三层:特征提取、候补指针区域生成和区域检测。
图4 多层深度网络模型结构
2.3.1 特征提取
对于特征提取过程,本文通过多次卷积融合池化层进行处理,从而生成大小为原始图像八分之一的特征图。特征图将有助于获得电力抄表所需的细粒度细节。因此,经特征提取后,即使照明条件低,图像质量差,网络也可学习部分特征,从而在一定程度提高模型精度。特征提取网络相关配置如表1所示。其中Conv为卷积层,Max为最大池化层,Inception为GoogLeNet网络。
表1 特征提取网络相关配置
表2 MASK-RCNN网络中锚点框取
特征提取网络中卷积层主要利用一定大小的卷积滤波器来提取电力数据特征,因此卷积层是深度神经网络的基本算子。在前一层卷积核处理之后,可以基于如下激活函数获得卷积层的新层特征图:
(6)
卷积层之后的最大池化层主要进行下采样,从而使得特征提取网络具备抗过拟合和保持特征不变能力。最大池化层描述如下:
(7)
式中,dw(·)为下采样函数。
2.3.2 候补区域生成
本研究使用MASK-RCNN[19]完成候补指针区域生成过程。
MASK-RCNN是在FASTER RCNN的基础上添加了一个预测分割MASK的分支,其网络结构如图5所示。然而MASK-RCNN中特征金字塔网络(FPN,feature pyramid network)使用多出度特征作为输入,并使用全连接分类器生成候补框。对于电力仪表,一般情况下候补区域相对较固定,但是不同电表差异明显,因此需要对电力仪表候补指针区域生成中锚点框进行计算。
图5 MASK-RCNN网络结构
考虑到电力仪表的纵横比和比例大小,选取k=12个锚点框,并将其应用于输入特征图的每个位置。这些特征进一步与通道连接以形成512维特征向量。接着,将这些特征向量输入两个卷积层生成候补指针区域边界框。
对于神经网络中各层的输出,可由MASK-RCNN的前向传播加以运算。设C是卷积层输出特征映射,有:
C=φ(H(x,y))
(8)
φ(H(x,y))≡max(0,H(x,y))
(9)
(10)
式中,卷积层的输入/输出分别为x、y;映射函数为f(·);卷积核权重矩阵为W,值为m×n;ReLU激活函数为φ(·);偏置为b。实践证明,ReLU函数能弥补梯度消失缺陷,促进网络收敛,且极大程度地减少了输出计算量,这是sigmoid、tanh等函数所不具有的优势。
池化层能避免出现过拟合现象,用于控制网络的参数数量,减小空间面积。文中将所提网络设置核为2×2。以P作为输出映射,其方程为:
P=g(C)
(11)
式中,g(·)函数的功能是求解最大值。如果C中有池化层窗口穿过,那么g(·)会直接摈弃其它小值,而选定最大的窗口值。根据已有研究经验,文章在优化过拟合时采用了Dropout操作,且设置了0.5的更新概率。Dropout之所以能预防过度拟合,在于其不参与正向、反向传输。
设Fq为神经元在q位置的全连接输出:
(12)
设L为网络softmax损失函数,并在训练中应用MBGD法。在该方法下,每次迭代的样本数量相同,且每次迭代的梯度方向由每个小批量中的全部样本决定,即可控制随机性,还能防止训练跑偏。L函数公式:
(13)
式中,每次迭代的样本数量设为M,M=64;神经元在q位置的网络输出为pq;神经元总量表示为J。
进一步,使用反向传播算法更新权重w,更新规则如下:
(14)
wt=wt-1+Δvt
(15)
式中,μ表示可以加速收敛的动量系数(本研究令μ=0.9),Δvt-1表示之前更新的权重值,wt表示迭代t时的当前权重,α表示学习率(本研究取α=0.01)。α更新规则如下:
αt=αt-1×γt/u
(16)
式中,γ表示gamma函数(本研究令γ=0.1);u为最大迭代步长(本研究令u=150)。
2.3.3 区域检测
数字区域检测指将检测出的候补区域分为数字区域和非数字区域。因此,这一部分为前面执行的最终优化结果,即试图最小化误报和错报情况。为此,本文利用RoI池化层进行预测,并将池化层设置为8×7。
此外,为了充分提取识别特征,本文使用了包含2 048个神经元的全连接层,并设置丢失率为0.1。然后将这些特征平铺展开为向量并通过全连接层输出。最终,该层产生两个输出,指示每个RoI检测/未检测到数字区域的概率。
当检测到数字区域后,接下来进行数字分割识别。数字分割[20]是促进识别过程的一个重要阶段,主要指从电力仪表图像中提取数字。现实环境存在许多因素使数字识别过程复杂化,例如噪声、模糊、污垢、碎玻璃、反射、旋转数字、低分辨率、不同的颜色和编号系统等使得数字有遮挡或不清晰。为此,训练时本文对数据进行数据增强,从而提高样本多样性,增强模型鲁棒性。测试时,首先对检测出数字区域的图片进行截取,并进行旋转校正,最后带入网络进行识别,从而增加识别精度。
2.4.1 旋转校正
理想的电力仪表识别场景为相机垂直拍照,然而由于实际安装现场的限制,很多时候无法直接获取垂直照片。为此,本文通过投影变换对旋转或扭曲的原始图像进行校正,以减少随后的读数误差。投影变化规则定义如下:
(x,y,w′)=(u,v,w)×T=
(17)
(18)
(19)
式中,(U,V)为原始图像中某个点的坐标;(X,Y)为变换后图像平面中点的坐标;(u,v,w)和(x,y,w′)分别是(U,V)和(X,Y)的齐次坐标系表达式;w和w′通常取1;T为从原始图像平面到新图像平面的变换矩阵,A为其元素值。
2.4.2 图像增强
为提高识别精度,本文收集了10类(0~9)不同电力仪表数字从而训练模型。为了增加类别的数量,提高模型鲁棒性,同时对数据进行增强操作,如添加随机高斯噪声、改变亮度、应用中值滤波器、并以多个角度(10,-10,+25,-25,+30和-30)旋转数字等。
此外,部分电力抄表数字图片经干扰后成为有部分遮挡的字符。然而,这种数字识别准确率远远低于完全字符。分析原因,由于原始字符数据集中遮挡字符数量较小,网络训练掌握特征严重不足。因此,本文提出了一种遮挡字符数据增强方法。具体过程如图6所示。首先取n组0~9个数字,在垂直方向上随机组合,形成0~9的垂直长图像。然后,在组合图像自上向下移动滑动窗口,且每次以0~15°随机角度旋转滑动窗口中的图片,从而生成最终数据图像。需注意,上下字符和旋转角度选取时都是随机的,因此可以有效地提高数据集的多样性。
图6 遮挡字符数据增强方法
2.4.3 数字识别
本文将数字识别分为两个阶段。在第一阶段,利用DiNet对数字和非数字进行排序,从而检测电力抄表图像中的每个数字,并对数字和非数字进行预测。在第二阶段中,删除太小或太宽的数字。数字识别CNN网络相关配置如表3所示。
表3 数字识别网络相关配置
结合完整模型,电力抄表系统最终得到4种不同的损失:RPN(背景)、RPN(前景)、RCNN(最终类输出)和RCNN(边界框回归)。因此整个模型总损失计算如下:
Lt=(Lcls+Lb)RPN+(Lcls+Lb)RCNN
(20)
其中:(Lcls+Lb)RPN表示区域检测损失,分别描述背景和前景分类损失。(Lcls)RCNN表示不同类别之间的损失。(Lb)RCNN为边界框的损失。
在仿真中,所使用的数据集均来自12 000张真实拍摄的电力仪表图片,数据集大小约为8 GB。首先,将原始数据进行清洗,剔除一些质量极差的图片。剔除后,数据集约有10 000张可用图像。根据前述内容,所提模型主要包含两个网络:数字区域检测网络和数字识别网络。在训练数字区域检测网络时,使用数据集中的9 000张图像进行训练,使用1 000张图像进行测试。对于数字识别网络,该网络以RCNN为基础,使用预先准备的200张数字基本图片,并根据所提图像增强方法生成干扰数据和遮挡数据。进一步,将增强后的数据集按照8:2的比例分为训练集和测试集。
仿真时硬件环境为:8核酷睿 i7CPU,主频3.60 GHz,内存为64 GB,2块GEFORCE GTX1080 Ti显卡,显存为11 G。模型运行在操作系统为Win10×64为联想工作站。仿真时软件以python中pytorch模块搭建,并基于openCV3.1实现图像处理。
为了验证所提出方法的稳健性和有效性,将所提出的方法与VGG16和Fast Yolo方法进行了比较。仿真仿真运行过程描述如下:首先,对所有数据集中输入数字电表图像的大小调制为512×512。其次,由于RGB对照明变化敏感,因此原始图像可能存在一定照明干扰。数据集中所有RGB图像将转换为YCbCr图像。再次,将数据分别带入数字区域检测网络(DaNet)和数字识别网络(DiNet)进行训练,并根据识别结果进行验证,从而调整模型参数。最后,输出仿真结果并预主流模型进行对比与分析。
训练时采用SGD优化器训练模型,仿真时部分参数定义如下:批量大小设置为16,初始学习率为10-2,学习率衰减率为10-1,学习率衰减周期设置为10,最大迭代次数设置为150,每次迭代训练100次。
3.3.1 DaNet仿真结果与分析
所提数字区域检测网络(DaNet)识别结果如图7所示。可以看出所提模型能够有效识别数字区域。表5为不同方法区域识别准确率、召回率和F分数对比结果。可以看出,所提方法区域识别准确率为97.84%,召回率为92.65%,F分数为95.17%。8因此,本文方法较VGG16和Fast Yolo相比,准确率分别提升12.5%和5.21%。
表5 不同方法区域识别性能对比结果
图7 数字区域检测网络识别结果
3.3.2 DiNet仿真与分析
本节研究了数据增强对数字识别的影响。首先,使用原始数字图片数据对不同模型进行训练。然后,使用所提出的数据增强方法,分别进行了4组数据增强仿真,每个仿真数据集分别扩充为1 000、2 000、5 000和10 000。最终,所提数字识别网络(DiNet)在不同曾广数据集下识别准确率统计结果如表6所示。
表6 不同数据集下数字识别统计结果
可以看出,在不使用数据增强的情况下,有遮挡数字的识别率较低,仅为85.21%;执行数据增强后,准确度显著提高。当数据扩增至5 000时,识别准确率达到99.387%。然而数据扩充至10 000时,准确率增加已经不明显。分析原因,DiNet网络已基本学习到数字特征,因此数据即使再扩增也无法改善网络性能。为提高计算效率,仿真将数据增强数量最终选取为5 000。仿真充分说明了数据增强方法的有效性,可以大大提高遮挡数字识别的准确率。
仿真设置数据增强阶段的旋转角度r和滑动窗口t,并取值1、5、10进行对比仿真。最终识别准确率统计结果如表7所示。可以看出,旋转步长越大,滑动窗口越大,识别精度越低。随着滑动和旋转步长的减小,精度将逐渐提高。然而步长越小,数据越容易受到干扰。故最终选取r=t=5为参数取值。
表7 不同旋转角度和滑动窗口识别结果
最后,将所有网络连接,并在测试集进行了整体网络验证,测试结果如图8所示。表8所示为所提整体网络(DaNet+DiNet)性能统计。可以看出,经过遮挡数据增强与旋转滑动窗口数据增强后,模型性能明显改善,最终识别准确率达到94.96%。
表8 网络整体性能统计结果
图8 测试结果
本文对电力系统中智能仪表监控进行了研究与分析,根据已有文献的指导,作者进行了详细的建模,并提出了一种电力智能仪表监控系统。在设计了系统结构以及系统工作过程基础上,提出了基于深度学习的智能仪表识别模型。该模型首先了基于数字区域检测网络对电力仪表数字区域进行提取,有效识别各种电表数字读数区域。同时,通过数据增强技术改善数字识别网络识别性能,提高了数字识别精度。该模型对远程自动电力仪表读取研究提供了一定借鉴作用。