徐 劍,張 皓,徐 航,解 凱
(1.國(guó)網(wǎng)北京市電力公司,北京 100031; 2.南京南瑞繼保電氣有限公司,江蘇 南京 211102)
工程圖紙是當(dāng)今眾多工程行業(yè)內(nèi)日常交流的重要媒介。在計(jì)算機(jī)出現(xiàn)以前,人們通過制定相關(guān)的標(biāo)準(zhǔn)和規(guī)則來手工繪圖,形成指導(dǎo)各行業(yè)工程開發(fā)的大量紙質(zhì)工程圖。隨著計(jì)算機(jī)技術(shù)的發(fā)展和各工程行業(yè)數(shù)字化轉(zhuǎn)型的需要,人們借助工程圖紙矢量化技術(shù)將大量傳統(tǒng)工程圖紙高效轉(zhuǎn)換為矢量格式的標(biāo)準(zhǔn)圖。早在20世紀(jì)90年代末,國(guó)外的Yu等[1]學(xué)者已開展了工程圖紙自動(dòng)識(shí)別系統(tǒng)的研究。同期,國(guó)內(nèi)西北工業(yè)大學(xué)張樹生教授團(tuán)隊(duì)較早針對(duì)工程圖紙矢量化中的自動(dòng)識(shí)別、集成處理和后處理等問題開展了一系列的系統(tǒng)性研究工作[2-5],南京大學(xué)蔡士杰教授團(tuán)隊(duì)也在工程圖紙質(zhì)量化的模型和算法上取得了突出成果[6-8]。這些早期的研究工作在很大程度上促進(jìn)了工程圖紙矢量化系統(tǒng)的研發(fā)和實(shí)際應(yīng)用。近年來,這種工程圖紙矢量化需求仍然不斷增加[9-12]。通過工程圖紙矢量化不僅可以恢復(fù)老舊的圖紙,同時(shí)也可以為存儲(chǔ)和檢索圖紙?zhí)峁┓奖鉡13]。特別在電網(wǎng)領(lǐng)域,大多數(shù)廠家希望使用圖紙自動(dòng)生成施工連接線圖,因此,如何將電網(wǎng)圖紙轉(zhuǎn)換為結(jié)構(gòu)化數(shù)據(jù)有重要的應(yīng)用價(jià)值[14-18]。然而,由于電氣元件的多樣性和輸入的圖紙角度的不確定性,目前為止,很多電網(wǎng)工程圖矢量化方法都是針對(duì)特定圖元并使用傳統(tǒng)模式識(shí)別方法進(jìn)行處理和識(shí)別,這類方法的識(shí)別通用性差,通常只能識(shí)別特定圖元,識(shí)別效果也不理想。
本文結(jié)合實(shí)際工程應(yīng)用場(chǎng)景,提出一種基于Faster RCNN[19]的電網(wǎng)圖元檢測(cè)方法,將需要訓(xùn)練的樣本數(shù)據(jù)進(jìn)行預(yù)處理和特征提取,其中預(yù)處理包括平滑去噪、二值化、分割等,然后采用VGG16網(wǎng)絡(luò)提取特征,并利用Faster RCNN深度學(xué)習(xí)框架對(duì)電網(wǎng)圖元進(jìn)行識(shí)別。結(jié)果表明,本文方法對(duì)電網(wǎng)工程圖紙中的電氣元件的識(shí)別和檢測(cè)具有較好效果。
圖像預(yù)處理可以排除或者降低電網(wǎng)工程圖紙的數(shù)字圖像中存在的部分干擾元素,去掉圖片中多余的信息,使得下一步的圖元識(shí)別和檢測(cè)工作更容易進(jìn)行[20]。圖像預(yù)處理不光可以提高識(shí)別正確率,并且可以提高系統(tǒng)性能和識(shí)別速度[21-22]。本文涉及的預(yù)處理流程包括對(duì)圖像的平滑去噪、二值化、分割處理。本文所采用的數(shù)據(jù)來源于真實(shí)場(chǎng)景中的9種標(biāo)準(zhǔn)圖元,并根據(jù)這些圖元,通過隨機(jī)抽取和人工標(biāo)注,生成了包含1萬張圖像的數(shù)據(jù)集,其中,7000張用于訓(xùn)練,3000張用于測(cè)試。此外,圖元大小和位置則以結(jié)構(gòu)化信息的形式記錄,即數(shù)據(jù)集保存了圖片寬度和長(zhǎng)度、圖元的左上角(x1,y1)和右下角(x2,y2)、圖元類別等信息。
本文采用中值濾波的方式對(duì)圖像去噪,由于中值濾波不是線性變換的過程,所以可以降低甚至消除大噪聲的干擾,而且不會(huì)破壞原圖像的輪廓。具體方法為采用3×3的中值濾波窗口,取9個(gè)點(diǎn)像素值的中值作為中心點(diǎn)變化之后的像素值。在具體實(shí)現(xiàn)中,首先對(duì)圖像人為加入2%脈沖噪聲干擾模擬圖像噪聲干擾,然后對(duì)受噪聲干擾的圖像進(jìn)行中值濾波。平滑去噪前后的處理效果如圖1所示。
(a) 去噪前
二值化處理旨在將圖像轉(zhuǎn)化為僅用0和1表示的二值像素矩陣形式,最簡(jiǎn)單方法是將圖像所在的區(qū)域用m×n網(wǎng)格劃分,然后將圖元通過的網(wǎng)格填入1,沒有通過的網(wǎng)格填入0,這樣就構(gòu)成了二值像素矩陣。設(shè)圖片中的一個(gè)像素點(diǎn)(i,j)的灰度為g(i,j),當(dāng)有圖元經(jīng)過時(shí),經(jīng)過的部分的像素的灰度g(i,j)小,沒有經(jīng)過的灰度g(i,j)大。實(shí)現(xiàn)中,通過灰度閾值T來完成二值化處理,當(dāng)g(i,j)值比設(shè)定的閾值大時(shí),用“0”表示,當(dāng)g(i,j)值比設(shè)定的閾值小時(shí),以“1”表示。電網(wǎng)工程圖紙的圖像二值化效果如圖2所示。
圖2 圖像二值化效果
在電網(wǎng)工程圖紙中,大量的線路是以水平線或垂直線的形式表示,這些線路對(duì)于電網(wǎng)圖元的識(shí)別和檢測(cè)具有幫助作用。在水平線和垂直線檢測(cè)中,本文進(jìn)一步采用文獻(xiàn)[15]和文獻(xiàn)[21]中提出的直線檢測(cè)方法來實(shí)現(xiàn)。首先,對(duì)整幅圖進(jìn)行從左到右,從上到下進(jìn)行掃描,獲取圖像中直線的寬度信息,從掃描結(jié)果獲取得到圖像的中寬度的直方圖,取最大值作為直線的寬度。然后,通過形態(tài)學(xué)分析,獲取直線的水平和垂直的線段。通過Hough直線檢測(cè)算法[23],可以將直線段保存到文本中。垂直線和水平線提取效果如圖3所示。
(a) 水平線提取效果
經(jīng)過上述預(yù)處理,最后將二值化后的圖像減去水平和垂直方向的線段,得到圖元符號(hào)特征圖,簡(jiǎn)稱圖元圖。由于預(yù)處理中可能存在殘余的像素點(diǎn),會(huì)造成圖元圖不完整,所以接下來再對(duì)圖元圖采用形態(tài)學(xué)中的閉操作進(jìn)行修復(fù),得到提取后的初步圖元信息。修復(fù)操作后的效果如圖4所示。
圖4 經(jīng)過預(yù)處理和修復(fù)的圖元圖
本文采用VGG16網(wǎng)絡(luò)提取圖像特征,形成特征向量。輸入層為寬度×高度×3,經(jīng)過2層相同的卷積,卷積filter為3×3,stride為1,filter數(shù)為64,然后經(jīng)過一層2×2的最大池化。接著,按照相同的方式,讓寬和高越來越小,而filter數(shù)逐倍增加,直到512,同時(shí)層數(shù)增加到13層,最后連接3層全連接層,共同構(gòu)成16層網(wǎng)絡(luò)架構(gòu)。這樣簡(jiǎn)化了卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),隨著網(wǎng)絡(luò)層數(shù)加深,圖像的寬度和高度都不斷縮小,每次池化后剛好縮小一半,通道數(shù)增加一倍。
由于全連接層主要用來匯總信息,對(duì)特征的提取作用不大,所以采用VGG16中前13層提取特征,不包括全連接層。輸入任意寬度和高度的圖片,對(duì)輸入圖像長(zhǎng)寬做規(guī)整化操作,設(shè)定圖片寬度不超過600,長(zhǎng)度不超過1024。具體的神經(jīng)網(wǎng)絡(luò)參數(shù)設(shè)置為:1)13個(gè)卷積層的kernel_size=3×3,pad=1,stride=1;2)13個(gè)ReLU函數(shù)為激活函數(shù);3)4個(gè)池化層的kernel_size=2,stride=2,每層pooling使圖片大小縮小一半。卷積層圖片提取了圖片特征,但是圖片的大小沒有變化,同時(shí)圖片通道數(shù)增加一倍。每次經(jīng)過池化層圖像大小變?yōu)樵瓉淼?/2。所以3通道的長(zhǎng)寬為3×m×n,經(jīng)過卷積和池化操作后圖片變?yōu)?12× (m/8)×(n/8)=8×m×n。
Faster RCNN[19]是目前工業(yè)界目標(biāo)識(shí)別中廣泛應(yīng)用的神經(jīng)網(wǎng)絡(luò)模型,它將特征提取、區(qū)域框提取、區(qū)域框回歸和目標(biāo)分類都整合到一個(gè)深度網(wǎng)絡(luò)架構(gòu)中,候選框提取和分類都放在GPU上訓(xùn)練,在檢測(cè)速度方面相比之前的算法提升比較明顯。在本文的電網(wǎng)圖元識(shí)別中,基于Faster RCNN的識(shí)別過程包括2個(gè)部分:首先,通過預(yù)訓(xùn)練的VGG16網(wǎng)絡(luò)來提取圖像中的特征,然后,這些特征供后續(xù)的區(qū)域提取層和目標(biāo)分類使用。在區(qū)域提取層中,通過二分類判讀前景和背景框,然后通過回歸獲取相對(duì)精確的候選框。在ROI層中,統(tǒng)一處理大小不同的候選框,獲取候選框的特征值,將這些送入全連接層,最后獲取電網(wǎng)圖元的最終坐標(biāo)信息和相應(yīng)類別信息。具體識(shí)別的過程如下:
Step1設(shè)置網(wǎng)絡(luò)的變量和參數(shù)(如VGG16)、訓(xùn)練樣本、學(xué)習(xí)速率和權(quán)值學(xué)習(xí)矩陣。
Step2網(wǎng)絡(luò)初始化。
Step3輸入網(wǎng)絡(luò)的訓(xùn)練樣本。
Step4候選區(qū)域生成。通過特征提取后,對(duì)特征向量中每個(gè)像素點(diǎn)取9個(gè)不同的矩形框,將其與標(biāo)簽信息做回歸處理得到初步的候選框,并判斷該候選框是前景還是背景。
Step5通過ROI層,將大小不同的特征圖轉(zhuǎn)換為特征向量統(tǒng)一處理。
Step6通過回歸進(jìn)一步計(jì)算圖元的相對(duì)精確位置和通過多分類對(duì)圖元的類別進(jìn)行判定,并分別設(shè)置損失函數(shù)。
Step7觀察網(wǎng)絡(luò)的學(xué)習(xí)是否達(dá)到設(shè)定的次數(shù)。
Step8觀察所有樣本是否都已經(jīng)學(xué)習(xí)完畢,若學(xué)習(xí)完則訓(xùn)練完成,重新開始新一輪的批次訓(xùn)練,直到合適的精度為止。
上述電網(wǎng)圖元識(shí)別流程如圖5所示。
圖5 基于Faster RCNN的圖元識(shí)別流程
本文的電網(wǎng)圖元識(shí)別模型訓(xùn)練分為4個(gè)階段:
Step1首先通過預(yù)訓(xùn)練好的VGG16模型來對(duì)網(wǎng)絡(luò)初始化,使得網(wǎng)絡(luò)可以產(chǎn)生候選區(qū)域提取框,接下來把訓(xùn)練好的區(qū)域提取層(RPN層)模型保存下來。
Step2通過預(yù)訓(xùn)練好的VGG16模型訓(xùn)練Faster RCNN網(wǎng)絡(luò),同時(shí)將Step1中RPN層輸出的候選區(qū)域提取框作為輸入數(shù)據(jù)。
Step3將Step2中的Faster RCNN模型訓(xùn)練參數(shù)初始化RPN層,固定網(wǎng)絡(luò)中公共部分參數(shù),只更新RPN的參數(shù),將訓(xùn)練模型結(jié)果保存。
Step4使用Step3中RPN層初始化Faster RCNN模型,并生成候選提取框作為輸入數(shù)據(jù),固定兩者公共部分參數(shù),微調(diào)Faster RCNN參數(shù),實(shí)現(xiàn)模型訓(xùn)練的統(tǒng)一。
上述具體過程如圖6所示。
圖6 基于Faster RCNN的圖元識(shí)別訓(xùn)練過程
接下來,在電網(wǎng)圖元檢測(cè)階段,直接將圖片輸送到Faster RCNN框架中。檢測(cè)階段需要整合區(qū)域提取層和Faster RCNN,所以需要將圖片的長(zhǎng)寬調(diào)整為統(tǒng)一規(guī)格大小輸入。這里,選取了長(zhǎng)寬分別為128×128、256×256和512×512,長(zhǎng)寬比例分別為0.5、1和2,在用RPN層訓(xùn)練圖片上,使用ROI層將之前的結(jié)果做進(jìn)一步的分類和回歸,得到目標(biāo)的位置和分類信息。
在本文使用的方法中,學(xué)習(xí)速率與權(quán)值變化相關(guān)。如果學(xué)習(xí)速率大,權(quán)值每次的變化也會(huì)變大,導(dǎo)致系統(tǒng)不穩(wěn)定;學(xué)習(xí)速率小,則每次權(quán)值改變量也會(huì)減小,導(dǎo)致網(wǎng)絡(luò)訓(xùn)練的時(shí)間變長(zhǎng),不能夠很快收斂。為了均衡兩者,既保持系統(tǒng)的穩(wěn)定性,又可以使網(wǎng)絡(luò)快速收斂,一般在選取速率時(shí),取值在0.01~0.8范圍內(nèi)。
最后,本文采用的模型在選取激活函數(shù)時(shí)一般要選擇在區(qū)間內(nèi)連續(xù)且可微的函數(shù),其中經(jīng)常作為激活使用的有對(duì)數(shù)型激活(sigmoid函數(shù))、雙曲正切型激活(tanh函數(shù))、非線性激活(ReLU函數(shù))。sigmoid型激活函數(shù)的特點(diǎn)是輸入可以為任意值,輸出保持在0到1之間;tanh型激活函數(shù)的輸入輸出保持在-1和+1之間;ReLU型激活函數(shù)的輸入大于0則輸出的是本身,小于0則輸出的是0。在本文中,隱含層的激活函數(shù)為ReLU型。
為驗(yàn)證本文所提方法,在真實(shí)的應(yīng)用場(chǎng)景下,人工構(gòu)建了包含9種標(biāo)準(zhǔn)圖元的共1萬張電網(wǎng)工程圖紙的圖像數(shù)據(jù)集。9種圖元分別為:變電站(e1, station)、斷路器(e2, breaker)、變壓器(e3, transformer)、閘刀(e4, knife)、地閘(e5, groundknife)、充電器(e6, changer)、電容表(e7, capacitable)、充電變壓器(e8, changetransformer)、充電電壓表(e9, changeV)。
首先,在數(shù)據(jù)集上驗(yàn)證所提方法對(duì)不同電網(wǎng)圖元的識(shí)別準(zhǔn)確率。實(shí)驗(yàn)中,選取一張測(cè)試圖像,對(duì)圖像進(jìn)行平滑去噪、二值化、分割等操作,然后進(jìn)行特征提取,并將提取到的數(shù)據(jù)作為輸入數(shù)據(jù),輸入訓(xùn)練好的Faster RCNN中進(jìn)行識(shí)別驗(yàn)證。9種圖元的識(shí)別準(zhǔn)確率(P)、召回率(R)和F1值如表1所示。從結(jié)果可見,本文方法能實(shí)現(xiàn)較好的電網(wǎng)圖元識(shí)別效果,識(shí)別準(zhǔn)確率達(dá)到87.5%~95.0%,召回率達(dá)到85.5%~92.3%,綜合F1值達(dá)到86.4%~93.6%。上述結(jié)果的綜合性能已能滿足實(shí)際工程應(yīng)用需要,并可以減少大量的人工校正工作。
表1 電網(wǎng)圖元識(shí)別性能 單位:%
然后,進(jìn)一步通過具體實(shí)例分析對(duì)各種電網(wǎng)圖元的識(shí)別效果,識(shí)別效果如圖7所示,其中,不同的電網(wǎng)圖元識(shí)別結(jié)果用帶顏色的框標(biāo)識(shí)(因印刷原因,文中為黑白色),并在框的旁邊給出了圖元類型和識(shí)別概率,從圖中可見,本文所提方法能夠正確識(shí)別示例中的全部電網(wǎng)圖元。同時(shí),本文經(jīng)過大量的實(shí)驗(yàn),觀察到當(dāng)圖片的噪聲比較小或者沒有噪聲時(shí),本文所提方法的識(shí)別正確率平均為91.4%;當(dāng)圖片受噪聲干擾較大,正確率會(huì)降低,對(duì)噪聲較大的圖像識(shí)別正確率平均為82.5%。因此,識(shí)別效果達(dá)到了預(yù)期的要求。
圖7 電網(wǎng)圖元識(shí)別效果
最后,實(shí)驗(yàn)中還發(fā)現(xiàn),模型對(duì)于一些相似圖元識(shí)別率不高。例如,嘗試增加對(duì)相似的三相線圈和兩相線圈的圖元識(shí)別,結(jié)果發(fā)現(xiàn)這類較相似的圖元識(shí)別準(zhǔn)確率不高,這說明模型設(shè)計(jì)中需要考慮增加相似圖元之間的區(qū)分度。同時(shí),對(duì)于圖中面積比較小的圖元,由于分辨率問題,模型對(duì)這些樣本識(shí)別率也不高,后期可以考慮對(duì)小物體識(shí)別率,比如采用不同分辨率特征圖元,或者采用識(shí)別準(zhǔn)確率更先進(jìn)的如Mask RCNN模型訓(xùn)練圖元,進(jìn)一步提高訓(xùn)練精度。最后,在訓(xùn)練過程中,提供更多的訓(xùn)練樣本或者設(shè)置更小的訓(xùn)練誤差,可以進(jìn)一步地提高電網(wǎng)圖元的識(shí)別正確率,但同時(shí)會(huì)導(dǎo)致訓(xùn)練的時(shí)間變長(zhǎng)。
本文提出了一種基于Faster RCNN的電網(wǎng)圖元識(shí)別方法,包括預(yù)處理、特征提取、圖元識(shí)別等過程。首先,進(jìn)行預(yù)處理,包含平滑去噪、二值化、直線檢測(cè)等步驟;然后,采用Faster RCNN模型實(shí)現(xiàn)電網(wǎng)圖元的通用特征提?。蛔詈?,設(shè)計(jì)網(wǎng)絡(luò)架構(gòu)和模型訓(xùn)練過程,并優(yōu)化模型參數(shù)對(duì)識(shí)別效果的影響。實(shí)驗(yàn)結(jié)果表明,本文提出的電網(wǎng)圖元識(shí)別方法具有較好的識(shí)別效果。