呂永庭,張 濤
(東南大學儀器科學與工程學院,江蘇南京 210096)
隨著國內(nèi)工業(yè)化智能化進程不斷推進,智能電表檢定流水線也在朝著自動化智能化發(fā)展。我國每年都需要采購更換大批智能電表,在智能電表更換技術(shù)標準時期更替的電表數(shù)量更大[1]。因此一套高效的智能電表外觀缺陷檢測系統(tǒng)在智能電表檢定流水線上至關重要。目前對于電表外觀的檢測大都依靠傳統(tǒng)檢定算法,其效率低且存在很多漏檢和誤檢現(xiàn)象,難以滿足工業(yè)上批量化生產(chǎn)的需要。
目前,國內(nèi)外有大量的學者將計算機視覺技術(shù)運用在缺陷檢測上。文獻[2-6]利用傳統(tǒng)圖像處理方法對智能電表進行預處理,然后根據(jù)模板匹配計算缺陷,但是這類方法計算效率普遍較低,檢測精度也不高,難以達到工業(yè)上實時性的要求。S.Jain等[7]將數(shù)據(jù)增強用在缺陷圖片上,從而緩解正負樣本不均衡的問題。吳先鋒[8]使用深度學習方法對電表區(qū)域進行劃分,根據(jù)不同區(qū)域使用對應改進版模板匹配方法進行電表缺陷檢測。趙衛(wèi)東等[9]將電表屏幕分為9個區(qū)域,利用深度學習算法直接檢測出屏幕區(qū)域;收集含缺陷的電表圖片并進行標注,然后經(jīng)過深度學習的方法直接檢測缺陷。但是大量含缺陷的電表數(shù)據(jù)集較難獲得,該方法適用性有限。陳昕等[10]融合圖像特征矩用來描述圖像,并與圖像模板的特征矩做對比,判斷目標字符是否有缺陷。裴寶瑩[11]則認為傳統(tǒng)模板匹配的方法魯棒性低、可移植性差、檢測效率低,因此使用深度學習方法直接對整張電表圖片檢測。張紀峰[12]提出了基于CNN的電表顯示缺陷的檢測方法,在不依賴模板的前提下達到較高的精確度。
現(xiàn)實中很難去收集大量有屏幕缺陷的電表圖片,即使使用相關的數(shù)據(jù)增強的方法,對模型性能的提升也有限。并且智能電表的字符存在字號多樣、字符緊密以及電表類型繁多等問題。為解決上述研究存在的問題,本文提出了一個基于OCR(optical character recognition)的智能電表缺陷檢測系統(tǒng),具體做法為先使用文本檢測算法對智能電表屏幕字符粗提取,再利用標準模板信息對遺漏的字符區(qū)域進行精準提取。然后將待檢測字符區(qū)域送入文字識別模型檢測正確字符。通過設立置信度閾值將識別置信度較低的文字區(qū)域過濾出來,最后用本文設計的缺陷檢測算法判斷是否存在缺陷。實驗結(jié)果表明:相對于通過傳統(tǒng)方法提取屏幕區(qū)域再檢測,本文提出的方法在檢測精度與檢測速度上都有顯著的提升,魯棒性和泛化能力也有較大提升。能夠滿足工業(yè)檢定流水線中對智能電表的檢測效率需求。
如圖1所示,以單相表為例,在電表全顯時僅屏幕區(qū)域就包含85個字符,其中還包括25個難辨別的電氣符號。
在缺陷數(shù)據(jù)集偏少的情況下直接使用深度學習的方法很難準確對每個字符進行缺陷檢測。而實際上,在檢定流水線中,外觀含有缺陷的電表也占少數(shù)。于是本文利用OCR系統(tǒng)檢測正常字符,將置信度低于閾值的結(jié)果當作疑似錯誤字符,最后利用模板對疑似缺陷字符做比對,進而判斷是否為真缺陷。整個系統(tǒng)分2個部分:第一部分為OCR系統(tǒng),將整個電表的文字提取出來,得到文本行的位置坐標以及文字內(nèi)容。由于直接使用OCR檢測得到的結(jié)果往往存在錯誤或遺漏,因此本文設計了字符區(qū)域精確切分算法,利用先驗知識對目標區(qū)域精確切分。第二部分為缺陷檢測,首先將疑似缺陷文本行切分成單個字符,然后將切分的單字符依次送入缺陷檢測算法,判斷是否存在缺陷。實驗表明:此方法能極大提升缺陷檢測的效率,處理圖1這樣的全顯電表圖片,本文的方法僅需0.5 s,比文獻[11-12]的方法有更高的檢測效率。
本文采用二階段的OCR算法,即將文字檢測和文字識別2個算法模型串聯(lián),分別得到字符區(qū)域和字符結(jié)果。其中文字檢測模型是基于DBNet[13]模型改進得到,而文字識別模型則是基于CRNN[14]模型改進得到,為了均衡檢測精度與檢測速度,2個網(wǎng)絡模型改進策略如下。
1.1.1 文字檢測模型優(yōu)化策略
1.1.1.1 輕量級主干網(wǎng)絡
主干網(wǎng)絡的大小很大程度上決定著模型的大小,不同的主干網(wǎng)絡對圖像特征提取的精度與算法執(zhí)行效率有較大影響。為了平衡檢測檢測精度與速度,本文使用MobileNetV3_large--_x0.5[15]作為基礎主干網(wǎng)絡,并對其進行優(yōu)化。
1.1.1.2 去除SE模塊
SE模塊在MobileNetV3中可以用做顯式地建模通道之間的相互依賴關系,并自適應地重新校準通道特征響應。當圖片尺寸大于640像素×640像素時,SE模塊則很難去估計通道級的特征響應。而實際處理智能電表的圖片時,電表圖片的尺寸在2 380像素×2 948像素左右,因此SE模塊帶來的性能提升有限,將其去除也不會影響精度。
1.1.1.3 減少特征通道數(shù)
如圖2所示,在DBNet中采用了FPN[16](feature pyramid networks)特征金字塔結(jié)構(gòu)用于融合各層網(wǎng)絡特征,提升融合特征的表達能力。有FPN的存在,特征通道數(shù)可以不用那么多,可以通過減小通道數(shù)減小模型尺寸,從而提升模型檢測速度。
圖2 FPN結(jié)構(gòu)
1.1.2 文字識別模型優(yōu)化策略
1.1.2.1 輕量級主干網(wǎng)絡
與文字檢測模型不同,在實驗中發(fā)現(xiàn),以ResNet系列作為主干網(wǎng)絡取得的效果比MobileNet系列好。K.He[17]的研究表明:隨著ResNet層數(shù)增加,網(wǎng)絡能獲取的特征更加有效,同時算法耗時也會增加。因此為了均衡識別的精度與速度,本文采用ResNet34作為識別網(wǎng)絡的主干網(wǎng)絡。
1.1.2.2 輕量級解碼結(jié)構(gòu)
在CRNN中用于解碼的頭部結(jié)構(gòu)將主干網(wǎng)絡提取的序列特征解碼為文字序列。其中序列特征的維數(shù)對模型的大小影響較大。文獻[18]的實驗結(jié)果表明,減小輸出的特征序列維度可以提升檢測速度、縮小模型尺寸,經(jīng)過實驗發(fā)現(xiàn)可將特征維度設置成48以平衡精度與效率。
1.1.2.3 正則化
由于訓練數(shù)據(jù)中包含大量重復的電氣符號,為了避免模型過擬合,在損失函數(shù)中添加了L2正則化。在L2正則化的約束下,網(wǎng)絡的權(quán)重傾向于選擇一個較小值,從而整個網(wǎng)絡中的參數(shù)趨向于0,緩解模型過擬合,提升模型泛化性能。
由于電表屏幕中字符較緊密,字號差別較大,因此文字檢測模型在檢測屏幕區(qū)域的字符經(jīng)常出現(xiàn)漏檢誤檢,這在工業(yè)檢定流水線上不允許出現(xiàn)。而且在檢定流水線上往往有多種電表同時需要檢測,在測試集中表現(xiàn)好的模型在處理新電表時也容易出現(xiàn)漏檢的現(xiàn)象。基于此,本文利用電表的先驗知識獲取準確的文本區(qū)域,具體實現(xiàn)方法如下。
(1)
將式(1)記作:
dY=A0dX
(2)
利用最小二乘法求出狀態(tài)微分并迭代求取4個參數(shù)。
dX=(ATA)-1ATdY
(3)
X1=X0+dX
(4)
不斷迭代執(zhí)行式(3)、式(4)直到變量dX小于給定閾值0.01或者達到最大迭代次數(shù)200。最后求得的X就是所求的4個參數(shù),未被正確切分的字符區(qū)域可表示為:
(5)
由于待檢測區(qū)域可能是文本行,長文本不利于缺陷的檢測與定位,因此還需對得到的字符區(qū)域進行切分。具體做法為:對待檢測字符圖片使用大津法[19]進行二值化處理,然后統(tǒng)計二值化圖片水平與豎直方向上的像素值,根據(jù)統(tǒng)計的像素和信息求取字符區(qū)域。如圖3所示,大津法能夠自適應選擇二值化閾值,從而減少固定閾值及光照對二值化圖像的影響。
圖3 大津法圖像二值化結(jié)果圖
圖4展示圖像不同方向像素分布,橫坐標表示單軸像素坐標,縱軸表示像素值。本文通過控制閾值實現(xiàn)圖像分割。經(jīng)過多次實驗,發(fā)現(xiàn)設定閾值為方向像素均值的1/4、區(qū)域長度大于10像素,這2個條件能夠自適應的對字符進行切分。如圖5所示,本文提出的方法能夠很好的完成字符切分,經(jīng)過切分后,很多干擾信息都被切除,更有利于圖像匹配算法的檢測。切分好的圖像與模板圖縮放到相同尺寸,再利用缺陷檢測算法判斷是否存在缺陷。
圖4 x、y方向像素值統(tǒng)計圖
圖5 切分結(jié)果圖
本文采取的缺陷檢測算法是3種計算圖像相似度方法的串聯(lián),通過各自設定閾值過濾判斷缺陷,當3種方法都驗證通過后才認定為合格字符。
第1種方法利用圖像矩計算相似度[10],即提取圖像的Hu矩、Zernike矩、顏色矩以及亮度矩共同作為圖像特征。將4類圖像矩擴展為圖像特征矩,對其進行PCA降維,然后計算歐式距離去衡量相似度。
第2種方法為計算2個圖片相似度函數(shù)的ORB(oriented fast and rotated brief)算法[20]。首先利用FAST算法計算圖像特征點,然后利用BRIEF算法為特征點計算二元描述子,最后利用描述子進行匹配。
第3種方法為計算圖片局部敏感的哈希算法[21]?;舅悸肥怯嬎銉蓤D像的哈希值并對哈希值進行相似性計算。
通過3種圖像相似度的檢測算法串聯(lián),可以實現(xiàn)不同維度的圖像相似度計算,能夠顯著提升檢測精確度。
本文模型訓練所用的深度學習開發(fā)框架為paddlepaddle,GPU采用RTX3060,CPU版本為Intel(R)Core(TM)i7-12700H。CUDA版本為11.2,cudnn版本為8.2.0。為了加快模型訓練進程,每個模型的訓練都在GPU環(huán)境下進行。
2.1.1 數(shù)據(jù)集的制作與增強
由于智能電表中包含大量的電氣符號,常用的數(shù)據(jù)集都不包含電氣符號這類數(shù)據(jù),因此針對電表場景拍攝一組電表照片并利用標注工具對電表圖片進行標注。
除了常規(guī)的圖像標注外,本文還使用數(shù)據(jù)增強策略,進一步提升樣本多樣性。針對文字檢測算法的特性使用CopyPaste[22]的數(shù)據(jù)增強策略。該方法將標注的文本行隨機復制粘貼到另一張圖片上,增加文本行的數(shù)量。文字識別數(shù)據(jù)集的增強策略比較多,如添加噪聲、仿射變換、旋轉(zhuǎn)等。此外,本文還采取了C. J. Luo提出的TIA[23]數(shù)據(jù)增強方法。相關數(shù)據(jù)增強方法示意圖如圖6所示。
圖6 數(shù)據(jù)增強示例
本次實驗共采集800張左右智能電表圖片,并將所有數(shù)據(jù)按9∶1比例劃分訓練集和測試集,具體數(shù)據(jù)規(guī)模見表1。
表1 數(shù)據(jù)集規(guī)模
2.1.2 文字識別模型字典制作
由于待識別字符包含大量電氣符號,為了識別過程能順利進行,本文對智能電表中出現(xiàn)的所有電氣符號都進行了轉(zhuǎn)義標注,再結(jié)合通用中英文字符字典,制作成本次實驗測試時使用的字典。由于電氣符號的真實含義通常比較冗長,為了結(jié)果顯示的簡潔性,對這些電氣符號采用了日文標注,制作成訓練用字典。兩份字典順序一致,可以互相轉(zhuǎn)換,電氣符號含義標簽(部分)如表2所示。
表2 電氣符號標注表
2.1.3 模型訓練與評價指標
文字檢測與文字識別預訓練模型均采用預訓練模型,使用預訓練模型可大幅提升模型收斂速度,提升模型準確率。模型訓練過程均使用Adam優(yōu)化器進行優(yōu)化,初始學習率設置為0.001、使用cosine衰減學習率策略。一共訓練200個批次,每個批次大小設置為8,在訓練過程中每隔5個epoch保存一次模型參數(shù),同時更新檢測效果最好的模型以及保留當前訓練的參數(shù)。
文字檢測模型的評估指標有精確率(Precision)、召回率(Recall)和F1-score。文字識別模型的評估指標有準確率(Acc)、歸一化的編輯距離(Norm_edit_dis)。GPU執(zhí)行時間是在單塊RTX3060上測得的。
2.2.1 文字檢測模型分析
表3比較了3項模型優(yōu)化策略對文字檢測模型表現(xiàn)的消融實驗。將頭部通道數(shù)從256減少到96,模型精確率下降了1.8%,但檢測效率提升37%左右。由于檢測圖片的尺寸較大,MobileNetV3的SE模塊對模型精度的提升很小,但其卻增加了大約16%的模型檢測時間。數(shù)據(jù)增強策略大約提升1%的模型精確率。綜上,3種模型優(yōu)化策略對模型檢測精度和檢測速度的提升都有效。
表3 文字檢測模型3種優(yōu)化策略的消融實驗
2.2.2 文字識別模型分析
表4展現(xiàn)了文字識別模型優(yōu)化策略的消融研究,實驗結(jié)果表明減少CRNN頭部用于文字識別的特征通道數(shù)對精度的影響很小,但將通道數(shù)減少到48可使檢測效率提升近36%。數(shù)據(jù)增強對模型精度的提升明顯,提升約3.3%,可見數(shù)據(jù)增強對深度學習模型的影響很大。由于文中文字識別的數(shù)據(jù)集比較小、重復字符數(shù)量多,容易出現(xiàn)過擬合的現(xiàn)象,為了避免模型過擬合,加入正則化策略。實驗結(jié)果表明,正則化略微提升了模型的精度。
表4 文字識別模型消融實驗
直接應用OCR檢測電表圖片會存在漏檢的情況。經(jīng)實驗統(tǒng)計,漏檢率的范圍為0~22%,受圖像質(zhì)量以及電表類型影響,文字檢測模型在測試集上表現(xiàn)較好,但檢測新電表時則容易出現(xiàn)較高的漏檢率。應用遺漏文字檢測算法則可以保證所有字符區(qū)域均被檢出并進行缺陷檢測。本文多次實驗表明:即便檢測圖像質(zhì)量較差的新類型電表,本文提出的漏檢算法仍然能達到百分百的文本框提取準確率。本文缺陷檢測算法的誤檢率低于2%,屬于合理誤差范圍,并且能檢測出微小缺陷。應用OCR檢測正常字符至少可以減少90%的缺陷檢測工作量,因此在檢測效率上相對其他算法有明顯的提升。
由于缺少真實的缺陷電表樣本,本文應用圖像處理技術(shù)、物理破壞、物理遮擋等方法制造了一批測試數(shù)據(jù)集。其規(guī)模為:正常電表288張,含缺陷電表36張。檢測結(jié)果與其他論文方法的對比如表5所示??梢钥闯霰疚乃岱椒ㄔ跍蚀_度上與文獻[4]的方法很接近,但在檢測速度上有很大的提升。
表5 缺陷檢測算法比較
本文針對智能電表的缺陷檢測,提出了一套多重檢測的方法。首先利于OCR技術(shù)對智能電表的正常字符進行檢測,并將OCR檢測結(jié)果中置信度低于0.9的字符視為疑似缺陷字符,再通過缺陷檢測器完成缺陷字符的檢測。本文方法具有良好的可移植性,檢測內(nèi)容可控、執(zhí)行效率高、檢測精度高等優(yōu)點。利用OCR系統(tǒng)可以過濾90%以上的正常字符并獲得全部的文本框,設置多重檢驗降低誤檢率。本文的缺點在于需要模板才能進行準確檢測。實驗結(jié)果表明,本文設計的漏檢字符檢索算法能有效檢出遺漏字符。缺陷檢測算法也從傳統(tǒng)的單一模板匹配算法變成3種方法的串聯(lián),進一步提升缺陷檢測魯棒性。本文方法在缺陷檢測的準確率和檢測速度上都達到了較高的水準,能夠滿足工業(yè)檢定流水線的需求。