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