赵开开,刘兆祥,廉士国
(联通数字科技有限公司-AI创新应用中心,北京 100176)
电力是现代社会不可或缺的资源,在发电、用电的过程中需要使用大量结构简单、成本低廉、抗干扰能力强的电流表、温度表、压力表等监测类指针式仪表仪器[1]。现有的自动远程读数系统主要分为两大类,一类是改造现有仪表或设计全新仪表,直接获取仪表信号并转换为数字信号,对仪表读数进行统计[2-4],实施难度大,不利于推广;另一类是基于现有的仪表使用机器视觉算法对指针读数进行识别,不影响现有仪表系统,可扩展性强。
主流的机器视觉仪表自动远程读数方法主要分为基于霍夫变换的方法,基于关键点检测的方法和基于图像分割的方法。基于霍夫变换的方法使用霍夫变换检测圆和直线来确定表盘区域和指针区域,进而计算指针读数[5]。虽然该方法被不断改进[6],但霍夫变换法存在预处理复杂、人工阈值多等问题,使得该类方法难以处理复杂背景、光照变化大、多类型表盘等场景下的自动读数问题。基于关键点检测的方法中,文献[7-10]使用模板匹配定位表盘区域或指针区域,文献[11-12]提取模板图像和待识别图像中的SIFT、ORB等特征点进行表盘区域或指针区域的匹配,文献[13]人为设计了指针上的数个显著关键点,用于指针的定位;此类方法基本都需要提前设定模板图像,环境的变化易使模板和关键点失效,在实际使用过程中效果不稳定。基于图像分割的方法中,文献[14]使用深度学习语义分割网络U-Net对表盘中的刻度线和指针进行提取,进而计算出读数值;语义分割是像素级的分类任务,需要输入图像的分辨率较高且仪表占整幅图像主体部分,同时需要腐蚀、拟合等后处理对分割后的结果进行修正和细化,计算复杂度高,运行效率低。
为了解决电力系统等仪表广泛使用的场景中人工读表效率低、成本高、安全性低等问题,本文提出一种基于机器视觉的远程智能读表系统,该系统只需在现有的仪表基础上非接触地添加图像采集设备、网络传输设备、边缘计算设备,便可稳定、高效、准确地完成远程读表任务。
本文提出的指针式仪表远程读数系统主要由网络摄像机、5G-CPE、MEC服务器构成。
1.1.1 网络摄像机
网络摄像机(IP camera, IPC)可以通过网络将待识别的仪表画面传输至远程控制中心。
1.1.2 5G-客户端终端设备
客户端终端设备(customer premise equipment,CPE)可以对运营商基站发出的4G或5G信号进行中继,以无线或宽带的形式提供给其他网络设备使用,5G-CPE便是可以接收5G网络信号,建立无线或有线网络的设备。
1.1.3 边缘计算服务器
边缘计算(mobile edge computing,MEC)服务器在5G网络的加持下,可以将高密度计算、大流量和低时延需求的业务就近部署,满足安全、速率及可靠性的多重要求。
在现有的待识别仪表基础上,使用IPC、CPE、MEC和客户端监控中心构建的指针式仪表远程读数系统如图1所示。
图1中摄像机使用可变焦可转动的球机,由于很多仪表并不需要每时每刻监测,因此可以使用一台球机轮询监控多组仪表,降低成本;5G-CPE-a表示第一台5G-CPE,它接入运营商基站,接收5G信号并通过有线网络与摄像机连接;MEC服务器从运营商基站接收相机画面数据,同时负责算法推理;5G-CPE-b负责基站与监控中心的通信。
在本文构建的仪表远程读数系统中,球机轮询拍摄仪表画面,通过5G-CPE-a发射的无线信号将图像传输至基站并由基站转发至MEC服务器,MEC服务器使用部署好的自动读数算法对输入图像进行运算推理,得到图像中所有仪表、所有指针的读数,并将读数结果和异常情况通过基站和5G-CPE-b发送至客户端的监控中心。
为了克服传统方法的不足,本文基于深度学习模型,提出了基于级联卷积神经网络的智能识别方法,可以实时对一幅图像中不同类型的多个指针式仪表的读数进行识别。
本文提出的基于深度学习的级联读数识别系统由两级目标检测器构成,示意图如图2所示。第一级使用常规目标检测模型,在输入图像中定位表盘位置,并从输入图像中裁剪出表盘子图;以表盘子图为输入,第二级使用旋转目标检测模型,得到子图中所有指针的位置、尺寸和角度,最后使用角度法换算出指针读数。
图像中表盘区域的定位可用机器视觉中的深度学习目标检测[15]算法来实现。在基于深度学习的目标检测模型中,YOLO系列是单阶段检测模型重要代表[16],YOLOv5是YOLO系列最新的进展,在维持单阶段模型速度优势的前提下也取得了优越的检测效果[17]。其骨干网络在Darknet53[18]的基础上使用了CSP跨空间局部结构和输入分块结构,可以由浅至深提取图像的深度特征;中间网络采用FPN和PAN结构[19],对图像特征进行融合,得到可用于识别图像中表盘区域的融合多尺度特征;头部采用全卷积网络输出图像中表盘区域的位置、尺寸和置信度。
本文以某电网供电系统的电表读数识别场景为例,使用YOLOv5完成图像中的表盘区域检测。
在数据采集阶段,首先使用本文构建的远程读数系统在现有的电网应用场景中轮询地以不同的距离、不同的时间、不同的位置采集得到不同光线、不同大小、不同角度、不同干扰的视频数据,然后对视频进行抽帧、去重等预处理得到当前应用场景下的图像数据共10000余张。为了增强表盘检测模型的泛化能力,提升模型的扩展性,使其在其他仪表场景中也能有效检测出各类表盘,本文又在互联网上收集了大约4000张各类指针式仪表的图像数据。
在数据集准备阶段,可以使用开源工具LabelImg对所有图像进行标注,在表盘区域的检测任务中,只需要标注出图像中所有表盘的最小外接矩形框即可。标注完成后按照8∶2的比例将数据集划分为训练集和验证集。
在模型训练阶段,首先使用Mosaic数据增强方法来对训练数据进行在线扩充,进一步增强模型的泛化能力。然后使用多尺度训练策略增强表盘检测模型对不同大小表盘的检测能力。最后使用余弦退火策略动态调整学习率,以增强模型训练的稳定性和收敛效果。本文在8张V100显卡上使用梯度下降法训练了2000epochs后得到的模型参数在验证集上的mAP@0.5∶0.95高达0.98。
在指针式仪表的读数识别任务中,指针区域检测的精度直接决定了识别结果的准确率。本文将指针读数任务定义为一个旋转目标检测问题,将表盘检测模型的输出子图作为输入,用深度卷积神经网络精准定位指针,进而得出读数结果。
2.3.1 目标检测器模型CenterNet
CenterNet[20]不使用锚框机制,把目标建模为该目标框的中心点,对应于特征图上的一个点,这种无锚框[21]的检测器直接检测目标中心点并回归其他属性,有效减少了计算量,且易于扩展。CenterNet网络结构示意图如下图3所示。
在图3的示意图中,CenterNet和YOLOv5模型类似,都需要使用全卷积网络对输入图像进行特征提取和特征融合,二者的区别在于CenterNet在输出时不再像YOLOv5那样输出目标的坐标信息,而是输出热力图表示目标出现的位置,并输出偏移图对目标位置进行修正,长宽图代表目标的尺寸信息。
2.3.2 旋转指针检测器模型
CenterNet和YOLOv5等常规目标检测器使用横平竖直的矩形框来表示目标的位置和尺寸,对于倾斜目标,其矩形框的边界为目标最边缘像素点的位置。旋转目标检测使用可倾斜的矩形框来表示目标的位置和尺寸,该矩形框是目标的最小外接矩形,矩形框边界可以不与图像边界平行,对于同一个目标,旋转矩形框包含的背景信息更少[22-25]。
图4 旋转指针检测器网络结构示意图Fig.4 Network structure diagram of rotated pointer detector
模型中添加的角度分支首先使用3×3卷积核从丰富的融合特征中提取出利于角度回归的相关特征,然后使用1×1卷积核对角度特征进行重组和重构,得到角度热图。角度热图的生成与长宽热图的生成是并行的、独立的,防止模型对目标长宽和角度进行预测时产生冲突和干扰。
以检测结果矩形框的左边界中点为极点,水平向右为极轴,构建极坐标系,图4中角度图中每个点的数值表示该点处指针在极坐标下的极角,由于仪表指针相反方向的读数是完全不同的,因此极角的范围为[0,2π]。
在数据收集和数据集生成阶段,首先使用2.3构建的表盘检测模型对数据集中的所有图片进行推理,并将推理得到的表盘子图进行抠图、保存。然后手工标注所有表盘图中指针的位置、尺寸和角度。为了增强指针检测模型对各个角度指针的检测精度和泛化能力,本文对所有标注后的表盘子图进行旋转,同时将对应的标注旋转矩形框进行相同角度的旋转,起到数据增强的作用[26]。同时,由于每一种表盘的刻度、量程不同且不一定是均匀的,因此需要记录电网场景中各类表盘中被标识的读数所对应的角度值,由于在特定场景中表盘的种类是有限的、数量较少的,且表盘上有读数标识的刻度也是稀疏的,因此这种标识方法的工作量可以忽略。
在模型训练阶段,在原始CenterNet的损失函数基础上,增加角度信息的损失函数,构成旋转目标检测器的损失函数,损失函数如下公式(1)所示。
LR=Lk+λsizeLsize+λoffLoff+λangleLangle
(1)
其中Lk为热力图损失函数,Lsize为目标尺寸损失函数,Loff为偏移量损失函数,Lk+λsizeLsize+λoffLoff为原始CenterNet目标检测器的损失函数;Langle为旋转指针检测模型增加的角度损失函数,本文使用Smooth L1[27]损失函数来度量,如下公式(2)所示。
(2)
其中p表示角度损失函数只在目标所在的特征点处进行监督,其他点处的角度损失为0。式(2)中的函数计算方式如式(3)所示。
(3)
由于在表盘指针读数识别任务中,指针的角度识别直接决定了读数结果,因此相对于指针的尺寸而言,角度更重要,本文使用权重参数λangle来控制角度损失项的重要程度。
在模型的推理阶段,输入阶段一得到的表盘子图,旋转指针检测模型能够给出指针的位置、尺寸、角度信息。
常用的指针式仪表读数计算方法有角度法和距离法,距离法根据指针和刻度线之间的距离来估算指针表示的读数,角度法根据指针和0刻度的夹角来计算指针读数。本文使用2.3.3的旋转目标检测模型得到指针的角度,因此可以使用角度法来计算指针读数。
2.4.1 坐标系转换
数据标注时,为了对所有类型的表盘都使用同样的标注规则,设定极轴正方向为图像水平向右方向,但每个表盘的零刻度位置不同,因此对于每一类表盘,先将极坐标系进行转换,转换后的极轴正方向为零刻度方向,转换方式如式(4)所示。
(4)
2.4.2 读数计算
输入图像经过2.2中表盘检测模型推理和2.3中旋转指针检测模型的推理后,得到每个表盘的位置、尺寸及表盘中每个指针的位置、尺寸、角度信息。由于每一类表盘的刻度可能不是均匀的,因此为了更准确地估算读数结果,先对读数的范围进行初步确定。确定方法如式(5)所示。
(5)
确定读数的初步范围后,使用式(6)计算该范围内的量程精度ρ。
(6)
最后使用式(7)计算指针所代表的读数np。
(7)
本文的表盘检测模型和旋转指针检测模型离线训练完成后,在实际使用阶段只进行前向推理即可。根据1.2中介绍的系统结构,相机获取图像后通过5G-CPE传输至基站,基站将输入图像转发至MEC服务器,在MEC服务器上完成表盘检测、表盘子图抠图、旋转指针检测、指针读数计算等前向推理计算,最后将推理结果通过基站和5G-CPE转发至电网监控中心。
以相机拍摄的图像为输入,使用本文2.2.2构建的YOLOv5表盘检测模型进行推理得到图中所有表盘的位置和尺寸,推理结果可视化如图5所示。
(a) 表盘检测结果(单类多表盘) (a) Dial detection result(multiple dial of one class)
其中图5(a)为单类别多个表盘的检测结果;图5(b)中图像边界处的表盘未完整出现在画面内;图5(c)中的第一类电表1个,抓拍时正在下雪,且图像较为模糊;图5(d)是该场景下视野最大时的抓拍图,画面内包含9个电表,其中第一类电表2个,第二类电表4个。
除了验证集数据外,又随机采集了1000张测试集图像,本文表盘检测具体实验结果如表1所示。
表1 不同方法的验证集表盘检测结果对比Tab.1 dial detection result of different methods in validation set
其中误检率表示误检表盘数量占实际总表盘数量的比例,漏检率表示未检测出的表盘占总表盘数量的比例。由于模板匹配和霍夫变换法无法事先确定图像中表盘的个数,因此漏检率很高。另外由于数据集中存在各种尺度、各种类型的表盘,这使得模板匹配和霍夫变换法的参数较难调整和确定,因此误检率也较高。
从实验结果可以看到,本文基于深度学习的目标检测模型能够在复杂多变的环境中稳定地准确检测出图像中的多尺度[28-30]、多类型、多数量表盘。
首先将3.1中YOLOv5表盘检测算法的检测结果图进行保存,作为所有模型指针区域检测和读数识别实验的数据。然后分别使用本文的旋转指针检测模型和读数计算方法进行自动识别,并与模板匹配法和霍夫变换法的指针检测及读数结果进行对比分析。指针检测结果和读数识别结果如表2所示。
表2 不同方法的仪表读数识别结果对比Tab.2 Meter reading recognition result of different methods
其表2中指针漏检率是漏检指针数量占总指针数量的比例,指针读数误差是指在检测到的指针中,算法识别读数和真实读数的差值除以真实读数的平均值。从表2的实验结果可知,本文深度学习指针检测模型在指针检测召回率和角度识别精度上都优于传统方法。
最后,图6展示了基于本文系统和方法识别的仪表读数结果可视化图。在图6中共包含2个第一类仪表(图6中蓝色矩形框,表盘内有一个指针),4个第二类仪表(图6中绿色矩形框,表盘内有两个指针),其中第二类仪表的红色指针代表该仪表的历史最大读数,白色指针代表该仪表当前读数。
图6 基于级联卷积神经网络的指针式仪表智能读数结果图Fig.6 Intelligent reading result of pointer type-meter based on cascaded convolution neural network
为了解决电力系统指针式仪表读数场景中人工读表费时、费力、存在安全隐患等问题,本文基于电力系统中现有的指针式仪表,添加图像采集设备、人工智能算法推理设备和数据传输设备构建远程仪表智能读数系统。
在电力系统远程读表方法中,传统的基于霍夫变换方法、基于模板匹配的方法在复杂背景变化、多仪表、多指针等场景中很难适用,本文基于深度学习目标检测算法构建的级联读数识别系统由两级目标检测器构成。第一级使用YOLOv5目标检测器为基准模型检测出图像中的所有表盘区域,第二级在CenterNet目标检测的基础上添加角度预测分支构成旋转目标检测器,检测出每个表盘中的所有指针,指针检测结果包含其角度信息,最后使用角度法换算出指针读数。本文构建的远程仪表智能读数系统和方法能够实时识别多类仪表、多个指针的读数,能够稳定、鲁棒、高效地完成远程读表任务。