廖家威, 周勇, 方夏, 王玫, 羅彬豪, 朱高義
(四川大學機械工程學院, 成都 610065)
隨著社會經濟快速發(fā)展,用電信息采集普及,電網規(guī)模不斷發(fā)展,電網公司管理的智能電表數(shù)量飛速增長,四川省目前在運行的智能電表數(shù)量超過3 200萬。自2019年起,每年有大約300萬只各種廠家和型號電表因故障、功能性升級和更換、政策變化等情況而需要拆除回收和進行數(shù)據(jù)提取及建檔管理。拆回電表的射頻識別(radio frequency identification, RFID)可能失效,因此不能直接檢測RFID錄入電表信息,而人工分揀電表面臨人力物力不足,準確性和效率不足,安全管控難等問題。
在電力領域,機器視覺和人工智能已得到廣泛應用,如輸電線路巡檢[1-2]、設備維護[3]、電力儀器儀表讀數(shù)[4]等,而實現(xiàn)拆回電表自動分揀的關鍵是自動提取電表的廠家和型號信息。文獻[5-6]通過傳統(tǒng)圖像處理、文本分割獲取單個文本再使用分類器識別的方法提取電表信息,然而其研究的電表類別少,不能涵蓋多種布局的電表,且關鍵參數(shù)需要手動設置,難以廣泛應用。近年來深度學習飛速發(fā)展,在文本檢測和識別方面取得很多成果。連接文本提議網絡[7](connectionist text proposal network,CTPN)能學習大量數(shù)據(jù)獲得高魯棒性,準確定位文本。密集連接卷積網絡[8](dense convolutional network, DenseNet)和連接時序分類(connectionist temporal classification,CTC)算法能識別整行文本,避免文本分割帶來的誤差累計,文獻[9]融合以上算法成功檢測作業(yè)現(xiàn)場設備的銘牌信息。
識別廠家文本或檢測廠家商標都能提取廠家信息,而商標具有類內差異小,類間差異大,和信息密度大的優(yōu)勢,因此應通過檢測商標提取廠家信息。常用目標檢測網絡有Faster-RCNN[10](faster-region convolutional neural network)、SSD[11](single shot multibox detector)和YOLO[12-14](you only look once)系列,但以上網絡模型復雜,參數(shù)量大,存在算力過剩的問題,而YOLOv4-Tiny[15]作為YOLOv4的簡化版,參數(shù)量更小,已被廣泛應用[16-19]。
上述型號文本識別和商標檢測方法相互獨立,忽略了電表型號的設計代號與廠家唯一對應這一信息關聯(lián)。而文獻[20]基于視覺語義關聯(lián),將中文語言的語義關系融合至卷煙零售終端店招牌文字和許可證文字識別的模型中,取得了良好識別效果。
綜上所述,為準確提取拆回電表廠家和型號信息,基于關聯(lián)系數(shù)網絡的電表異構信息提取方法,現(xiàn)利用型號與廠家之間的語義關聯(lián)進行關聯(lián)識別,與主流方法相比具有更高的準確率,能夠應用于拆回電表的自動化流水線分揀,促進電表管理的智能化發(fā)展。
拆回電表的型號文本、商標、廠家文本位置如圖1所示。電表型號由類別代號、組別代號、設計序號、派生號構成,以“DDZY71C”和“DDZY71C-Z”為例,第一個D為類別代號,代表電表;DZY為組別代號,3個字母分別代表單相、智能型、預付費;71為設計代號,與某廠家對應;C-Z和C為派生號,C表示CPU卡費控,-Z表示載波通信。同一廠家的電表的派生號可能不同,但設計代號相同。
由圖1可知,拆回電表存在3種布局,型號文本可能在上、中、下3個區(qū)域,且缺少明顯的參照物,導致型號文本定位困難。而廠家和型號眾多,使電表字體差異大,部分字體間距不一,導致投影法、聯(lián)通域法等傳統(tǒng)圖像處理方法不能準確分割文本。如圖2所示,部分拆回電表存在模糊、簽字筆筆劃、遮掩等干擾因素,導致難以直接識別型號文本。
圖1 拆回電表圖像Fig.1 Images of dismantled electric meter
圖2 存在干擾因素的電表型號圖像Fig.2 Images of electric meters’ model with interference factors
如圖3所示,文中方法主要包括型號初步識別、廠家商標初步識別、關聯(lián)識別3部分,其中關聯(lián)識別部分的關聯(lián)系數(shù)利用驗證集進行測試的方式自適應獲取。
2.1.1 CTPN文本定位
CTPN之前的文本檢測和定位方法通常自上而下,首先檢測低級字符(如單個字母)或筆畫,隨后進行非文本過濾、文本行構造及驗證等后處理,這些方法復雜且魯棒性差、可靠性低。CTPN借鑒了Faster-RCNN的錨框,使用了寬度為16像素而高度可變的垂直錨框。
CTPN模型的計算步驟如下。
步驟1使用VGG16主干網絡對輸入圖像進行特征提取,將大小為C×H×W的conv5_3卷積層作為特征圖輸出,其中C、H、W分別為特征圖通道數(shù)、高和寬。
步驟2在特征圖上用3×3的窗口做滑窗,將3×3的窗口區(qū)域拼接為1×9的向量,得到9C×W×H的特征圖。
步驟3對特征圖調整維度至H×W×9C,輸入雙向長短期記憶網絡(bi-directional long short-term memory, BiLSTM),得到長度為H×W×256的特征向量,并調整維度至256×H×W,然后連接長度為512的全連接層。
步驟4經過類似于Faster-RCNN的區(qū)域提議網絡生成k個文本提議錨框,每個錨框的信息包括
圖3 總體流程Fig.3 Overall flow chart
中心y坐標值、高度、有和無文本的概率分數(shù)、水平偏置量。
步驟5使用非極大值抑制過濾多余錨框。
步驟6將得到的多個錨框合并為文本行。
CTPN的損失函數(shù)為
(1)
2.1.2 DenseNet-CTC文本識別
DenseNet模型借鑒了ResNet[21]“連接跳躍”的思路,ResNet和DenseNet的公式分別為
Xl=Hl(Xl-1)+Xl-1
(2)
Xl=Hl([X0,X1,…,Xl-1])
(3)
式中:Xl為第l層的輸入;Hl(·)為非線性轉換結構,包括卷積、批標準化、激活及池化等操作。
由式(2)和式(3)可知,ResNet將上一層和再上一層輸出通過非線性變換結構后一起輸入到下一層,而DenseNet將每層都與后面所有層連接。圖4為DenseNet的基本組成部分Dense_block的結構示意圖,可知,L個特征層之間有L(L+1)/2個連接通道,網絡結構稠密,減輕了梯度消失,增強了特征傳播和特征重用性。
DenseNet-CTC模型結構如圖5所示,激活函數(shù)為ReLU激活函數(shù),使用3個Dense_block模塊提取特征,每個Dense_block模塊有8層特征層,特征層之間共有36個連接通道,Dense_block模塊之間為過渡層,通過1×1卷積、2×2平均池化改變特征層維度以滿足Dense_block模塊的輸入維度要求。將經過Dense_block模塊得到的特征圖經過一次卷積后重新排列維度并展平,再經過全連接層和Softmax分類器后得到維度為60×31的概率向量,60表示將圖像沿水平方向60等分,31為字典大小,表示每1/60對應圖像是字典中所有文本的分類概率。
圖4 Dense_block結構示意圖Fig.4 Schematic of dense block
圖5 DenseNet結構Fig.5 Structure of DenseNet
概率向量需要轉錄為文本,CTC損失函數(shù)可解決不定長時序數(shù)據(jù)分類問題。轉錄前概率向量的長度大于輸出文本的長度,因此轉錄后的文本序列存在重復現(xiàn)象,如all對應概率向量可能轉錄為a-a-l-l-l-l,直接刪除重復文本會誤識別為al,為解決此問題,CTC引入占位符,該占位符在去重后刪除,all對應概率向量轉錄結果可能為a-a-l-l--l-l-l-,去重后刪除占位符就能得到正確結果all。
CTC損失函數(shù)將DenseNet生成的概率向量轉錄為文本序列,輸出長度為T的文本結果。
利用YOLOv4-Tiny檢測電表商標從而提取廠家信息。YOLOv4-Tiny的結構如圖6所示,與YOLOv4相比,YOLOv4-Tiny在特征提取、特征融合、特征輸出等方面均做了簡化。
YOLOv4-Tiny的主干網絡為CSPDarknet53-Tiny,由YOLOv4主干網絡CSPDarknet53輕量化而來,包含21個卷積層、3個最大池化層,激活函數(shù)為LeakyReLU。CSPDarknet53-Tiny中有3個Resblock模塊,結構如圖7所示,包括跨階段部分(cross stage partial, CSP)結構和最大池化層,經過1次卷積后,分離特征圖的通道,取第二部分(通道數(shù)已減半)進行卷積和殘差計算,最后使用最大池化壓縮尺寸。Resblock模塊中有2個殘差計算以加強特征提取能力并重復利用特征。第3個Resblock模塊的第4個卷積層輸出大小分為26×26的特征圖,最大池化層的輸出再經過一次卷積輸出大小為13×13的特征圖,用特征金字塔(feature pyramid networks, FPN)對2個特征圖進行特征融合,然后輸入到2個檢測頭(YOLO Head)進行目標框的預測和目標的分類,輸出目標類別、位置和置信度。
圖6 YOLOv4-Tiny結構Fig.6 Structure of YOLOv4-Tiny
圖7 Resblock_body結構Fig.7 Structure of Resblock_body
電表型號的設計代號和廠家唯一對應,利用此信息關聯(lián)可以對型號文本和廠家商標兩種不同結構的信息進行關聯(lián)識別,具體步驟如圖3關聯(lián)識別部分所示。
對于型號文本識別結果、商標檢測結果(商標類別和置信度)以及關聯(lián)系數(shù),分如下4種情況。
(1)商標檢測結果和型號文本識別結果匹配(商標對應廠家和型號中設計代號對應廠家一致),則直接輸出商標對應廠家和型號初步識別結果。
(2)商標檢測結果和型號文本識別結果不匹配,商標識別置信度高于關聯(lián)系數(shù),則假設商標識別正確,校正型號的設計代號,輸出商標對應廠家和校正后的型號。
(3)商標檢測結果和型號文本識別結果不匹配,商標識別置信度低于關聯(lián)系數(shù),而存在設計代號對應廠家,則假設型號識別正確,輸出型號初步識別結果和設計代號對應廠家。
(4)商標檢測結果和型號文本識別結果不匹配,商標識別置信度低于關聯(lián)系數(shù),且不存在設計代號對應廠家,則型號識別結果和商標檢測結果矛盾且都不正確,輸出“無法識別”。
上述4種情況下正確提取電表信息或判斷為“無法識別”的概率為式(4),關聯(lián)識別前后正確提取電表信息的概率分別為
(4)
PPI=P1
(5)
PCI=P1+P2+P3
(6)
關聯(lián)系數(shù)應合理選取,若選擇過低,則商標置信度很容易高于關聯(lián)系數(shù),不能區(qū)分出錯誤識別的商標并錯誤地修改原本識別正確的型號文本信息;選擇過高,則商標置信度難以高于關聯(lián)系數(shù),會將置信度稍低商標標識別正確的電表信息錯誤提取,或者導致輸出“無法識別”。
關聯(lián)系數(shù)在驗證集進行測試獲得。設定關聯(lián)系數(shù)初始值c0為0.9,初始步長Δc=0.1。訓練100個回合,前70回合不進行關聯(lián)識別驗證,之后每回合訓練后根據(jù)在驗證集上測試結果進行調整以自適應地獲取到合適的關聯(lián)系數(shù)。測試方法如下:在第i回合,比較ci-Δc、ci和ci+Δc作為關聯(lián)系數(shù)在驗證集的測試結果,取準確率最高的關聯(lián)系數(shù)(若相等,則取較大的關聯(lián)系數(shù))作為ci+1下回合進行測試,每過5回合Δc減半,通過此方法自適應獲取合理的關聯(lián)系數(shù),不需要手動設置。
數(shù)據(jù)集為電網公司電表回收機構的拆回電表圖像,圖像寬高為1 929×2 654像素,選擇45個電表數(shù)量大于600的廠家,每個廠家隨機選600張拆回電表照片,標注其廠家商標和型號,按4∶1∶1比例劃分,得到數(shù)量分別為18 000、4 500、4 500的訓練集、驗證集、測試集。
模型訓練和測試環(huán)境配置如下:操作系統(tǒng)為Windows10 64位系統(tǒng),Intel CPU i5 7500,主頻3.4 GHz,內存16 G,GPU為RTX2080Ti,Pycharm集成開發(fā)平臺,Python版本3.6,框架為TensowFlow,版本為tensorflow-gpu1.12.0,OpenCV版本為4.1.2.30。
3.1.1 CTPN型號文本定位
圖8所示為CTPN網絡的文本框檢測結果,可知,CTPN能準確定位電表上的文本。
得到一系列文本框的位置后,設置長寬閾值過濾無關的符號、圖案,再對文本框中心高度排序,得到型號文本框。調整圖像角度保證文本框水平后剪裁獲得型號文本圖像。將型號文本圖像按原比例縮放至長寬分別為480、32像素(不足480或32的方向用灰色填充)以滿足DenseNet-CTC的輸入要求,然后使用DenseNet-CTC識別。
圖8 CTPN文本定位Fig.8 CTPN text localization
3.1.2 DenseNet-CTC型號文本識別
目前另一種主流的基于深度學習的文本識別模型是卷積循環(huán)神經網絡(convolutional recurrent neural network, CRNN)[22]。CRNN在使用CNN提取特征后,使用BiLSTM循環(huán)網絡進行時序訓練得到概率向量,最后輸入CTC損失函數(shù)進行不定長序列識別。將CRNN-CTC和DenseNet-CTC應用于測試集的結果作對比,如表1所示,可得DenseNet-CTC精度更高。
CRNN-CTC的誤識別集中在序列,如DDZY88C誤識別為DDZY566C、DDZY699C(存在設計代號566、3699的電表)。原因以下3點:①CRNN中,CNN特征提取能力不足,且加入BiLSTM,使模型更加關注文本的上下文關系,依靠推斷進行識別;②文中識別對象為型號文本,識別關鍵是設計代號和派生號,與型號文本其他部分無上下文關聯(lián),而設計代號自身最多4個文本,文本之間關聯(lián)性不強,不適合通過推斷進行識別;③這種整行文本識別的方式在每個位置識別的對象可能是半個字符,且與其他字符片段相似,使該位置識別為那相似字符的概率增大,下一個位置同理,如果這段可能錯誤的文本序列恰好屬于某設計代號,則可能誤識別(如代號8識別為代號56或69)。而DenseNet不依靠上下文關系,且通過特征層之間稠密連接的方式增強了特征提取能力,更專注于識別某位置本身的文本,因此DenseNet識別精度更高。
表1 文本識別模型性能對比Table 1 Performance comparison of text recognition models
將YOLOv4-Tiny和其他主流目標檢測算法,包括Faster-RCNN、SSD、YOLOv3、YOLOv4、YOLOX,應用于測試集,以準確數(shù)、推理速度(frame per second, fps)、模型參數(shù)量為評價指標比較檢測結果,如表2所示。從表2可知,6種模型準確率接近且超過99%,原因在于與一般目標檢測任務相比,商標檢測難度更低,體現(xiàn)在以下4點:①每張電表圖片只有一個商標;②商標無遮掩,且即使商標出現(xiàn)部分污損,圖像特征仍比較明顯;③同種商標無形態(tài)、尺度變化,且位置變化??;④不同類別的商標差異大。這種情況下,除了評價模型的準確率,還應關注模型的獲得高準確率的成本,包括每秒鐘檢測的幀數(shù)(fps)和計算資源成本(模型參數(shù)量),而YOLOv4-Tiny的推理速度比其他模型更快,參數(shù)量比其他模型更少,因此選擇YOLOv4-Tiny模型檢測拆回電表的商標。
表2 不同目標檢測模型對比Table 2 Comparison of different target detection models
雖然YOLOv4-Tiny檢測廠家商標準確率達99.60%,但型號識別的準確率僅為97.16%,而只有型號和廠家同時識別正確才能正確提取電表信息,關聯(lián)識別前信息提取準確數(shù)為4 354,準確率為96.75%,對于每年數(shù)量達到300萬的拆回電表,仍會有大約10萬只電表的信息提取錯誤,因而仍然需要提高提取準確率,減少誤提取。本文研究基于電表型號和廠家之間的信息關聯(lián)進行關聯(lián)識別以提高提取準確率,降低誤提取率。
利用型號文本和廠家信息初步識別結果和利用測試集自適應學習得到的關聯(lián)系數(shù)進行關聯(lián)識別,將得到結果與對3.1節(jié)和3.2節(jié)中的識別方法的結果作對比,如表3所示。由表3可知,文中方法提取準確率最高,且關聯(lián)識別將電表信息提取準確率從96.75%提升至98.71%,使誤提取率降低60.31%,可將信息被誤提取的電表數(shù)量從10萬降低至4萬左右。
同時,挑選出測試集中的852張污損照片進行測試,結果如表4所示,可知針對污損電表,所提方法提取準確率達93.31%,相比其他方法,能更有效提取電表信息。
表3 測試集上識別結果Table 3 Identification results on the test set
表5所示為識別一張拆回電表圖像的型號和廠家信息的平均用時,可知,識別平均耗時0.406 s,其中大部分時間花費在CTPN型號文本定位階段,DenseNet-CTC和YOLOv4-Tiny耗時較少。
針對拆回電表信息識別所面臨的布局不一、字體不一、存在污損的問題,提出了一種基于改進關聯(lián)系數(shù)神經網絡,提取電表的廠家和型號信息。與主流文本識別和目標檢測算法應用于拆回電表數(shù)據(jù)集作對比后得到如下結論。
表4 污損樣本識別結果Table 4 Identification results of stained samples
表5 單張圖片識別用時Table 5 Time-consuming to identify a single image
(1)CTPN能克服電表布局不一的問題,準確定位型號文本。比較CRNN-CTC和DenseNet-CTC的識別結果和錯誤識別樣本可知,對于此類長度小、自身關聯(lián)性弱的文本識別任務,DenseNet精度更高。
(2)檢測商標是可行且簡單的獲取廠家信息的方法,且使用輕量化的目標檢測網絡就能準確識別,從而節(jié)約算力資源。
(3)選擇合理的關聯(lián)系數(shù)進行關聯(lián)識別能有效提高電表信息提取的準確率,降低誤提取率,針對拆回電表,能將誤提取率降低60.31%,對于每年300萬只拆回電表,誤提取數(shù)能從10萬降至4萬。