基于深度神经网络的电气元件符号识别算法
2022-03-15江再玉石文娟程瑛颖
江再玉,石文娟,马 晶,程瑛颖
(1.北京中电普华信息技术有限公司,北京 100085;2.国网重庆市电力公司营销服务中心,重庆 401121)
图纸中电气符号识别的主体是以电气设施原理图为主要形式的电气图纸,识别对象主要是图纸中的电气元件,例如主变压器、电流互感器、电压互感器和电能表等。目前,在电网公司业扩报装的过程中,设计图纸的审查环节需要对电气图纸中的元件以及标注信息进行识别,但是人工识别工作流程周期长,方案及设计审查依赖于业务人员对专业知识和经验的掌握,效率低下。因此,急需一种高效的自动化识别算法。
现阶段对于电气元件符号的识别方法主要有2种方法:一种方法是通过图元分割的方式对电气元件进行分割和匹配[1-4],这类方法的局限性在于会混淆具有相似的图元构成的电气符号;另一种方法是通过计算电气符号的局部特征来识别电气符号的类型[5-7],例如 SIFT[8]、LBP[9]和 HOG[10]。但上述方法都存在一个共同的问题,同种电气元件可能会存在多种表示形式,另外技术人员在绘制图纸时也会有不同的习惯,这就会造成同一类电气元件会衍生出多种类型的表示方式,而上述方法对于同类电气符号的不同表示形式的泛化能力较弱,很大程度上限制了算法在工程场景中的性能。卷积神经网络因其可以自主完成对目标特征的提取和学习,具有较强的鲁棒性和泛化能力,成为目标检测领域的主流算法。有学者应用LeNet-5、AlexNet、GoogLeNet和VggNet等网络对手写符号分类,相比于使用HOG等基于手工特征提取的识别算法,在缺乏色彩特征和纹理特征的手写符号上具有很大的优势[11-12]。
近年来,以 Fast R-CNN[13]、Faster R-CNN[14-15]、SSD[16]、YOLOv3[17]等算法作为典型代表的深度卷积神经网络发展迅速,其中YOLOv3因兼具精度与速度优势,在工业界得到了广泛应用。因此,本文提出一种基于YOLOv3的电气符号识别算法和基于冗余的图像预处理算法,能够对电气元件符号进行高精度的识别。
本文的主要贡献在于提出了使用深度卷积神经网络进行电气图纸中元件识别的新思路,搭建了全新的特征融合网络,并且采用K-means++聚类算法优化了网络参数。另外,还提出了一种针对于任意大尺寸图片分割的预处理算法以及对应的非极大值抑制NMS(non-maximum suppression)算法[18]。
1 相关工作
1.1 传统电气符号识别算法
早期对于电气图纸中电气符号的识别主要是通过将电气符号抽象成各种几何图元,建立对应的拓扑,将目标元件的拓扑与标准拓扑进行比对来实现电气符号的识别。文献[1]中所述方法将几何图元归为一个集合{圆,水平线,垂直线,斜线,矩形,半圆,文字},图元之间的关系也归为一个集合{包含,相交,贯穿,分离},之后将元件抽象成图元和图元间关系的链表,通过判断拓扑是否存在同构关系来进行分类,但所提方法对于图元的划分较为粗糙,对于结构复杂的元件进行图元提取时容易损失关键信息;在此基础上,文献[2]对图元关系之间的分类进行了细化,增强了图元对于元件的表示能力,同时采用Ullman算法来进行图元拓扑的图元计算;而文献[3]在图元拓扑的匹配上提出更加细粒度的方法,提出了基于图元数目、图元类型、图元交点数目、图元交角、图元交点位置和图元位置关系的多角度相似度计算方法,很大程度地增强了图元拓扑的匹配精度;文献[4]则使用决策树来对元件类型进行分类,集成了基于特征分类和基于相似性识别方法的优点。但是对于结构复杂的元件,所抽象出的元件拓扑规模变大,在进行图元的同构判别是会带来很大的计算量,识别速度明显下降,同时这种方法只能识别单个独立的原件,无法在整幅图纸上进行识别,较难进行实际应用。文献[5-6]则提出了另外一种不同的思路,采用计算机视觉中所用的一种局部特征描述子HOG来进行电气元件的判别。HOG特征是通过计算局部在各个方向上的梯度来提取局部信息构建成特征向量,采用SVM对特征进行分类。文献[7]则采用了分层梯度方向直方图PHOG(pyramid histogram of oriented gradient)来提取局部特征,主体方法是利用Canny算子提取图像的边缘信息,在提取到的边缘区域来提取HOG特征。这种方法预选对提取特征的区域进行了筛选,集中注意到边缘区域,既减少了无关区域的特征提取,减少了计算量,同时融入了边缘信息,增强了空间表示能力。但HOG和PHOG描述子提取的特征向量维度较大,在识别大尺寸图片是时间成本高,同时在多尺度上的识别能力较弱。
文献[11]考虑到手写符号图像具有缺乏色彩特征和纹理特征的特性,在浅层卷积中使用了大尺寸的卷积核来提取结构特征,相比于原有的小尺寸卷积核,减少了卷积过程中的信息损失;文献[12]则对比了多种主流的卷积神经网络,验证了其在手写字符分类任务上的可行性。虽然文献[11-12]只针对于手写符号的分类任务,但电气符号与手写符号类似,同样缺乏色彩和纹理特征,因此对于本文所针对的电气符号识别具有借鉴意义。
1.2 YOLOv3目标检测算法
相比于第1.1节中所提到的传统方法,基于深度卷积神经网络的YOLOv3在特征提取和多尺度检测上具有很大的优势。YOLOv3是在YOLOv2的基础上进行改进的单阶段目标检测算法,使用了Darknet-53作为骨干网络。应用了大量3×3和1×1的卷积层来代替原有的全连接层和池化层,有效减少了参数规模,同时为了避免过深的网络结构会产生梯度爆炸的现象,在网络中添加了大量的残差块,网络结构如图1所示。
图1 Darknet-53网络结构Fig.1 Structure of Darknet-53 network
为了提升在多尺度目标上的检测精确度,YOLOv3在生成特征图进行预测时吸取了特征金字塔网络FPN(feature pyramid network)[19]的思想来实现多尺度检测,在大、中、小3种尺度(P1:52×52,P2:26×26,P3:13×13)的特征图上进行预测,能够兼顾大尺寸特征图中的低层语义信息和小尺寸特征图中的高层语义信息,其网络结构如图2所示。同时在每个特征图上都预选设置3种不同的锚框,共9种不同的尺寸匹配可能出现的各种大小的目标。
图2 特征金字塔网络Fig.2 Feature pyramid network
YOLOv3算法会将输入的图像划分为S×S的网格,每个网格预测B个边界框来对C类目标进行预测,网络会对预测出每一个边界框置信度,置信度由网格中包含目标的概率和边界框的准确度两部分组成,表示为
式中:rconf为边界框的置信度;Pr(obj)为网格中包含目标的概率;为边界框的准确度,即预测边界与真实边界的交并比。
每一个网格中预测的类别置信度为
式中,i=1,2,…,t,t为检测类别数。
在经过设定阈值过滤和非极大值抑制后,预测网络最终输出预测框的5个预测参数中心点坐标(x,y)、预测框的宽高(w,h)和rconf,以及C个类别标签,因此网络的输出大小为SSB(5+C)。
YOLOv3的损失函数主要由3部分组成,分别为位置坐标损失、置信度损失和类别损失,计算公式为
2 基于YOLOv3的电气符号识别算法
相比于传统电气符号识别算法,基于深度神经网络的方法提取特征的能力优势明显,但针对本文所提出的场景,YOLOv3在网络超参数的设置、特征融合网络以及数据预处理方面仍有不足。因此,对于基准算法存在的这些问题,本文做出了针对性改进,包括对训练数据标签进行聚类来优化训练过程,构建了新的特征融合网络,基于数据冗余的图片预处理算法,以及与之相应的改进NMS筛选算法。
2.1 锚框尺寸先验值聚类
在YOLOv3中,FPN会输出3种不同尺寸的特征图,每一种特征图设置3种锚框,共设置了9种不同尺寸和比例的锚框来预测目标的位置,为了使网络在训练时能够平稳快速地收敛,需要为锚框的尺寸设置一个初始值,初始值设置的与实际识别目标的尺寸吻合程度越高,网络训练的效果就会越好。YOLOv3中原有的锚框是根据公开数据集VOC Pascal来设置的,并不适合本文中所针对的电气符号数据集。因此本文采用K-means++聚类算法[20]对训练集标签进行聚类的办法来确定网络中锚框的尺寸。
原有的K-means聚类算法随机选取9个点作为聚类中心,这种方法存在较大的偶然性,无法保证得到的聚类结果是最优解。K-means++聚类算法在聚类中心的选取上进行了优化,降低了聚类结果的随机性,选取方法步骤如下。
步骤1从候选数据集中随机选取1个数据点作为第一个初始聚类中心c1。
步骤2计算其他每一个样本点(xi,yi)与聚类中心(xc,yc)的欧氏距离D(x)和每一个样本点被选为聚类中心的概率P(x),即
选取概率最大的点作为下一个聚类中心。
步骤3重复步骤2,直到选择出9个初始聚类中心。
步骤4选取初始聚类中心后的过程与K-means聚类算法一致,将每一个样本点分配给距其最近的聚类中心,划分成初始簇,之后重新计算每个簇的质心作为新的聚类中心,不断迭代,直到簇不再发生变化或者达到最大迭代次数为止。
经过K-means++聚类算法得到9个聚类中心点后,按照聚类中心点长和宽的乘积从小到大进行排序,并按照大小分为3组,分别对应FPN中、大、小不同的3种特征图。
2.2 自下而上的特征融合网络
在电气符号数据集中,很多不同类型的符号具有相似的边缘轮廓特征,但内部细节特征存在差异,一些典型的电气符号如图3所示。以电流互感器、电压互感器以及变压器为例,这3类符号都是有多个圆形部分组成,在排列方式以及内部特征上略有不同。所以在这类元件中存在部分误识别的情况。
图3 电气符号示例Fig.3 Examples of electrical symbols
在YOLOv3中,应用了特征金字塔网络来实现多尺度特征融合,构建了“自下而上”和“自上而下”2条路径的网络结构,将深层特征经过上采样与浅层特征进行融合,丰富浅层特征的语义信息。对P1、P2、P3所输出预测框的数量进行统计,P2和P3分别贡献了32%和42%的预测框。但P3只包含C3的特征,P2只包含P3和C2的特征,没有使用到C1中所包含的浅层细节信息,无法考虑到不同类别的元件之间产生误识别的情况。
针对原有模型中存在的问题,本文提出了一种全新的特征金字塔网络,构建了2条“自下而上”的路径,网络结构如图4所示。
图4 自下而上的特征金字塔网络Fig.4 Feature pyramid network with bottom-up pathway
自下而上的路线将包含更多细节信息的浅层特征图进行下采样,然后与深层特征图进行合并,来丰富深层特征中的细节信息,强化深层特征中的细节信息,有利于提升网络的分类精度。具体来说,首先使用3×3、步长为2的卷积操作来实现下采样,再使用1×1卷积进行通道对齐。特征图合并则是采用像素点相加的方式,即
式中:down(Pi-1,size)为下采样函数;size为输出尺寸;conv(Ci)中卷积核大小为1×1、步长为1;θ为特征图的权重因子,一般情况下取0.5[19]。
2.3 基于数据冗余的图像分割算法
深度神经网络对于输入数据的尺寸有固定限制,虽然可以通过图像的放缩和比例修正使图片的尺寸满足网络的输入要求,但会引起原有图像比例的改变和数据损失。本文所使用的电气元件数据集与传统的图像数据集不同,电气元件在图纸上不存在由于透视导致的形态变化和遮挡重叠等特殊情况,而图像比例的改变可能会对目标的识别和类别判断产生影响。
为了解决大尺寸图纸的识别问题,本文提出了一种基于数据冗余的图片切割算法[21],在不改变网络输入且不改变图片原有比例的条件下,将输入图片切割成多张子图,分别进行识别以提升检测器的识别精度。而简单的切割图片容易将识别目标切割成两部分,不完整的元件有可能会造成误识别、漏识别或重复识别,因此采用冗余分割的方法对输入数据进行预处理,可以保证任何一个目标元件都至少完整地出现在一张子图中。
算法实现细节如下。原图片尺寸为W×H,子图尺寸等于网络输入尺度为w×h,在本文所提出方法中为512×512。对于横向切割次数Cx(Cx>0)、纵向切割次数Cy(Cy>0)和冗余宽度Rw、冗余高度Rh,为了尽可能保证每一个目标元件都被完整地分割到一张子图中,Rw、Rh需要尽可能地大于所有目标的尺寸,因此本文应用到第2.1节中的标签聚类结果,取聚类得到的9个锚框中尺寸最大值(Aw,Ah),冗余切割方式如图5所示。
冗余宽度和冗余高度的取值范围满足
式中,Cx和Cy分别为横向切割次数和纵向切割次数。计算流程如下。
(1)以横向切割次数Cx为例,Cx的初值取,代入式(9)求得 Rw。若 Rw满足式(7),则输出Cx和Rw;若不满足式(7),则Cx=Cx+1,再次代入式(9),直到 Rw满足式(7)。
(3)将每一张子图分别输入到网络中进行识别,得到初始识别结果集
对于从各子图得到的检测结果集合S,还需要筛选其中重复的检测框,本文使用改进的非极大值抑制算法来筛选的重复检测框。传统的非极大值抑制算法只需要计算两个候选框的交并比IOU(intersection over union),计算公式为
当两候选框的IOU大于阈值y1(y1=0.7) 时,保留其中得分较高的候选框,但在本文所使用的基于冗余的数据分割预处理算法中,会出现如图6所示的情况。
图6 筛选候选框Fig.6 Filter bounding box
在图6所示的情况中,显然候选框a与候选框b的IOU小于阈值y1,但实际上,两候选框只应保留候选框a,因此在计算两候选框IOU符合条件y1>IOU>0时,进一步计算其IOE(intersection over each),即
设置阈值y2(y2=0.8) ,若 IOUa>y2,则剔除候选框a;若IOUb>y2,则剔除候选框b,如图5所示的情况,IOU≈0.3,IOEa≈0.3,IOEb=1,那么根据本文提出的改进NMS算法,候选框b将会被剔除。
3 实验结果分析
3.1 数据预处理
在使用实验数据进行模型训练之前,首先要对数据集进行预处理,避免无关因素对于模型训练的干扰。由于在识别电气符号时,只需考虑符号的形态特征,而不关心其色彩特征,因此为了消除色彩特征的干扰,本文首先将彩色图转化成灰度图,再采用二值化的方式对原始数据进行去噪,设置阈值C=155,将灰度值小于阈值的像素点都置为0,灰度值大于阈值的像素点都置为255。
3.2 数据及实验参数设置
在使用基于深度学习的算法来解决目标检测问题的过程中,训练集的选择与标签的制作对于模型的训练效果影响巨大。本文在实验中所使用的数据来自于国网某地区部分变电站的电气图纸。数据集中包含原始图纸共276张,共提取到图片3 453张,其中3 108张作为训练集,345张作为测试集。
本文所述实验的实验环境使用Intel Xeon(R)E5 2678 v3处理器、NVIDIA GeForce RTX 2080Ti显卡,在Ubuntu 18.04系统下进行实验,使用CUDA10.0、cuDNN7.2调用显卡进行加速。
模型的输数据尺寸设置为640×640;训练时将16个样本作为一个batch,在每一次更新权重时使用BN(batch normalization)进行正则化,降低模型训练的复杂度,模型训练初始学习率设置为0.000 1。
3.3 实验评价指标
本文采用客观实验指标来评估算法的性能,使用准确率(precision)和召回率(recall)以及平均AP值mAP(mean average precision)来评估实验结果。另外对于不同聚类方法采用输出正确预测框与真实标签的平均交并比TPAIOU(true positive average intersection over union)来进行评估,计算公式为
式中:TP为识别正确的预测框数量;IOU(pi,G) 为识别正确的预测框pi与其对应的真实标签的交并比,用于衡量预测框与真实标签的吻合程度。
3.4 实验结果对比
为进一步验证本文提出方法的有效性,需要在对比实验结果的基础上分析。首先对先验锚框的聚类结果进行实验,在相同的训练参数下,分别采用机器学习中常用的谱聚类(spectral clustering)[22]、层次聚类(hierarchical clustering)[23],利用层次方法的平衡迭代规约和聚类(BIRCH clustering)[24]、混合高斯模型聚类(Gaussian mixture model clustering)、K-means聚类算法与本文所使用的K-means++聚类算法的聚类结果进行对比。使用不同聚类方法得到的锚框作为预测框回归时的初始大小,分别计算准确率、召回率和TPAIOU,结果如表1所示。
表1 不同聚类方法的实验结果Tab.1 Experimental results of different clustering methods
通过对比不同聚类算法的实验结果分析,锚框的优化可以在一定程度上提升检测算法的精度,而更加重要的贡献在于有效地提升了预测框与真实标签的吻合程度。
本文统计了改进特征融合网络中各层特征图所提供的预测框的占比,与原始FPN的对比结果如表2所示。
表2 FPN中各层提供的预测框比例Tab.2 Proportion of prediction boxes provided by each layer in FPN
从统计结果可知,P2和P3层对于网络的预测起到主要作用,将浅层特征图中的信息融合到深层特征中后,能够有效地提升P2和P3层中所提取到的特征质量,相比于原始FPN,P2和P3所提供预测框的比例分别提高5%和7%,mAP提升了2%,这一结果印证了深层特征在融合浅层信息之后具有更强的特征提取能力。
表3对比了不进行图片分割、无冗余分割以及冗余分割的识别结果。不进行分割的识别结果明显低于图片分割的识别精度,原因是直接将原始图片下采样到网络输入的尺度,会损失原图中很多信息。而在进行冗余分割之后,会避免因为目标被分割所引起的误识别、漏识别以及重复识别的出现。
表3 不同分割方式的实验结果Tab.3 Experimental results of different segmentation methods
本文还对比了一些传统方法以及主流的单阶段方法,如表4所示,可见在不同指标上都有所提升。
从表4中的结果可以看出,传统图像识别算法在这项工作的表现上存在较大缺陷,尤其是在识别准确率上,难以达到一个较高的水平。这一问题的原因主要在于目标数据集中的图片主要由单色线条组成,而且图片中存在大量空白区域,基于局部特征的传统方法无法提取到足够的特征,提取到的特征向量也不具有足够的区分度,因此才会有较多误识别出现。而本文提出的算法具有更加优秀的特征提取能力,弥补了传统方法在这方面的不足,同时,传统图像识别算法通过滑动窗口的方式遍历整张图片,只能在单一尺度上检测目标,因此对于目标的回归精度较低,而本文提出的方法应用了锚框机制以及特征金字塔网络,因此在多尺度预测上具有很大的改进。也可以看到与SSD、YOLOv3等基准模型相比,本文所提出的模型针对于数据集优化了模型超参数,使得预测框的回归精度要高于基准模型的预测精度。而针对数据的特性以及基准模型的上的表现,重构了特征融合网络,并针对性地进行了数据预处理,进一步提升了网络的性能。
表4 本文方法与其他方法对比Tab.4 Comparison between the proposed method and other methods
4 结语
本文针对于传统图像识别算法对于电气元件符号的鲁棒性差的缺点,提出了一种基于深度卷积神经网络的电气符号识别算法,在对训练标签进行聚类来优化训练过程、构建了新的特征融合网络、基于数据冗余的图片预处理算法三个方面进行了针对性的改进,在仿真实验中,本文提出的算法取得了远优于传统方法和基准方法的效果,具有很大的应用价值。目前文中提到的仿真的实验还只针对于几类有代表性的元件,在以后的工作中还会在有更多数据的支撑下实现更多元件类型的识别。