江再玉,石文娟,馬 晶,程瑛穎
(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]中所述方法將幾何圖元歸為一個集合{圓,水平線,垂直線,斜線,矩形,半圓,文字},圖元之間的關系也歸為一個集合{包含,相交,貫穿,分離},之后將元件抽象成圖元和圖元間關系的鏈表,通過判斷拓撲是否存在同構關系來進行分類,但所提方法對于圖元的劃分較為粗糙,對于結構復雜的元件進行圖元提取時容易損失關鍵信息;在此基礎上,文獻[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.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部分組成,分別為位置坐標損失、置信度損失和類別損失,計算公式為

相比于傳統電氣符號識別算法,基于深度神經網絡的方法提取特征的能力優勢明顯,但針對本文所提出的場景,YOLOv3在網絡超參數的設置、特征融合網絡以及數據預處理方面仍有不足。因此,對于基準算法存在的這些問題,本文做出了針對性改進,包括對訓練數據標簽進行聚類來優化訓練過程,構建了新的特征融合網絡,基于數據冗余的圖片預處理算法,以及與之相應的改進NMS篩選算法。
在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種特征圖。
在電氣符號數據集中,很多不同類型的符號具有相似的邊緣輪廓特征,但內部細節特征存在差異,一些典型的電氣符號如圖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]。
深度神經網絡對于輸入數據的尺寸有固定限制,雖然可以通過圖像的放縮和比例修正使圖片的尺寸滿足網絡的輸入要求,但會引起原有圖像比例的改變和數據損失。本文所使用的電氣元件數據集與傳統的圖像數據集不同,電氣元件在圖紙上不存在由于透視導致的形態變化和遮擋重疊等特殊情況,而圖像比例的改變可能會對目標的識別和類別判斷產生影響。
為了解決大尺寸圖紙的識別問題,本文提出了一種基于數據冗余的圖片切割算法[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將會被剔除。
在使用實驗數據進行模型訓練之前,首先要對數據集進行預處理,避免無關因素對于模型訓練的干擾。由于在識別電氣符號時,只需考慮符號的形態特征,而不關心其色彩特征,因此為了消除色彩特征的干擾,本文首先將彩色圖轉化成灰度圖,再采用二值化的方式對原始數據進行去噪,設置閾值C=155,將灰度值小于閾值的像素點都置為0,灰度值大于閾值的像素點都置為255。
在使用基于深度學習的算法來解決目標檢測問題的過程中,訓練集的選擇與標簽的制作對于模型的訓練效果影響巨大。本文在實驗中所使用的數據來自于國網某地區部分變電站的電氣圖紙。數據集中包含原始圖紙共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。
本文采用客觀實驗指標來評估算法的性能,使用準確率(precision)和召回率(recall)以及平均AP值mAP(mean average precision)來評估實驗結果。另外對于不同聚類方法采用輸出正確預測框與真實標簽的平均交并比TPAIOU(true positive average intersection over union)來進行評估,計算公式為

式中:TP為識別正確的預測框數量;IOU(pi,G) 為識別正確的預測框pi與其對應的真實標簽的交并比,用于衡量預測框與真實標簽的吻合程度。
為進一步驗證本文提出方法的有效性,需要在對比實驗結果的基礎上分析。首先對先驗錨框的聚類結果進行實驗,在相同的訓練參數下,分別采用機器學習中常用的譜聚類(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
本文針對于傳統圖像識別算法對于電氣元件符號的魯棒性差的缺點,提出了一種基于深度卷積神經網絡的電氣符號識別算法,在對訓練標簽進行聚類來優化訓練過程、構建了新的特征融合網絡、基于數據冗余的圖片預處理算法三個方面進行了針對性的改進,在仿真實驗中,本文提出的算法取得了遠優于傳統方法和基準方法的效果,具有很大的應用價值。目前文中提到的仿真的實驗還只針對于幾類有代表性的元件,在以后的工作中還會在有更多數據的支撐下實現更多元件類型的識別。