孫躍文 李修治 鮑喜榮
(東北大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院 遼寧省沈陽(yáng)市 110169)
機(jī)械水表字輪區(qū)域的信息識(shí)別主要可分為字輪區(qū)域文本檢測(cè)和文本識(shí)別兩個(gè)任務(wù)。文本檢測(cè)指在水表圖片中消除背景干擾準(zhǔn)確定位字輪框;文本識(shí)別指將文本行旋轉(zhuǎn)矯正并識(shí)別出文本字符?,F(xiàn)有的水表圖像識(shí)別方法一般采用特征提取的方式進(jìn)行字輪框的檢測(cè)定位,然后采用模板匹配、特征分類等方法對(duì)文本行進(jìn)行文本識(shí)別?,F(xiàn)有方法對(duì)背景簡(jiǎn)單呈水平排列的檢測(cè)場(chǎng)景具備一定的適用性,但也易受環(huán)境干擾出現(xiàn)較大面積的背景殘留,影響后續(xù)的文本識(shí)別工作。
深度學(xué)習(xí)的文本檢測(cè)算法主要分為基于回歸的文本檢測(cè)算法和基于分割的文本檢測(cè)算法兩類。基于回歸的文本檢測(cè)算法是直接面對(duì)整張圖像進(jìn)行預(yù)測(cè),可以提取到更深層次的特征信息,在檢測(cè)速度上存在較大優(yōu)勢(shì),但是這類方法由于預(yù)設(shè)了文本框形狀,所以無(wú)法對(duì)彎曲文本和不規(guī)則文本進(jìn)行檢測(cè)?;诜指畹奈谋緳z測(cè)算法對(duì)圖像的像素進(jìn)行分類判別像素點(diǎn)是否屬于文本目標(biāo),計(jì)算出文本概率圖后通過(guò)復(fù)雜的后處理操作得到文本框,此類算法解決了彎曲文本和不規(guī)則文本的檢測(cè)問(wèn)題,但是復(fù)雜的后處理操作也大大的增加了計(jì)算開(kāi)銷。
水表字輪區(qū)域的形狀一般為矩形,不存在彎曲文本和不規(guī)則文本的情況,這一特點(diǎn)降低了識(shí)別的難度。然而自然場(chǎng)景下采集的水表圖像存在其特殊性,往往背景復(fù)雜、旋轉(zhuǎn)角度不一。綜上,本文使用輕量化的YOLOv5 模型完成水表字輪區(qū)的文本檢測(cè),結(jié)合YOLOv5 可以同時(shí)完成目標(biāo)檢測(cè)與分類的優(yōu)勢(shì),改變了常規(guī)的目標(biāo)檢測(cè)策略,提出了一種基于角點(diǎn)定位的檢測(cè)方法。文本識(shí)別模型采用CRNN+CTC 的網(wǎng)絡(luò)結(jié)構(gòu),可以處理檢測(cè)到的文本行,完成文本識(shí)別任務(wù)。
本文所提出的水表示數(shù)檢測(cè)與識(shí)別模型包括字輪檢測(cè)和文本識(shí)別兩個(gè)部分。首先采用合適的目標(biāo)檢測(cè)模型對(duì)字輪區(qū)域進(jìn)行定位,將字輪圖像進(jìn)行裁剪,經(jīng)過(guò)旋轉(zhuǎn)校正后作為文本識(shí)別模型的輸入進(jìn)行文本識(shí)別,最終輸出水表示數(shù),整個(gè)過(guò)程如圖1。
圖1:模型整體流程
1.1.1 YOLOv5 網(wǎng)絡(luò)結(jié)構(gòu)
YOLO(You Only Look Once)[1]是一種基于深度卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)模型,模型的優(yōu)點(diǎn)是擁有更快的檢測(cè)速度,并且降低了背景誤檢率,YOLOv5 常用的模型結(jié)構(gòu)有s,m,l,x 四種,本文使用的是YOLOv5s(下文統(tǒng)一簡(jiǎn)稱“YOLOv5”)。
YOLOv5[2-3]的輸入端采用馬賽克數(shù)據(jù)增強(qiáng)將四張圖進(jìn)行隨機(jī)拼接。同時(shí),輸入端采用了自適應(yīng)縮放,可以將輸入圖像統(tǒng)一到網(wǎng)絡(luò)需要的尺寸。并且自適應(yīng)錨框計(jì)算可以在預(yù)設(shè)的錨框基礎(chǔ)上輸出預(yù)測(cè)框并與真實(shí)框?qū)Ρ?,?jì)算差值再反向迭代更新網(wǎng)絡(luò)參數(shù)。如圖2 所示。
圖2:Mosaic 數(shù)據(jù)增強(qiáng)
YOLOv5 的損失函數(shù)由三部分組成,分別是分類損失(Classes loss),置信度損失(Objectness loss)以及定位損失(Location loss),如公式(1)。
式中λ1,λ2,λ3為平衡系數(shù)。
1.1.2 字輪框直接定位算法
直接定位是直接將水表字輪框作為目標(biāo)進(jìn)行檢測(cè),由于在自然場(chǎng)景下拍攝的圖像存在較大的旋轉(zhuǎn)角度,模型檢測(cè)的區(qū)域往往有較大面積的背景殘留。對(duì)文本識(shí)別模型造成干擾,導(dǎo)致文本識(shí)別準(zhǔn)確率大大降低。如圖3所示。
圖3:直接定位檢測(cè)結(jié)果
1.1.3 改進(jìn)的YOLOv5 目標(biāo)檢測(cè)模型
結(jié)合YOLO 算法在多類別檢測(cè)時(shí)準(zhǔn)確效果優(yōu)于單類別這一特點(diǎn),設(shè)計(jì)將定位字輪框轉(zhuǎn)變?yōu)槎ㄎ痪匦慰蚪屈c(diǎn),并將以順時(shí)針順序?qū)⒆笊稀⒂疑?、右下、左下角點(diǎn)分別設(shè)置為類別0、1、2、3,對(duì)這四個(gè)類別進(jìn)行檢測(cè)和模型訓(xùn)練。如圖4 所示。
圖4:檢測(cè)字輪框角點(diǎn)
對(duì)于能夠檢測(cè)出全部角點(diǎn)的情況可以直接計(jì)算中心點(diǎn)坐標(biāo),用于字輪框的定位與裁剪。對(duì)于只能檢測(cè)出三個(gè)角點(diǎn)的情況,可以根據(jù)三點(diǎn)坐標(biāo)計(jì)算出第四個(gè)角點(diǎn)的坐標(biāo)。
式中Point0[x]表示類別“0”的x 軸坐標(biāo)。
對(duì)于只檢測(cè)出兩個(gè)點(diǎn)的情況,一般是圖片表面存在水霧或污點(diǎn),可以根據(jù)缺失點(diǎn)的類別分情況對(duì)原始圖片進(jìn)行旋轉(zhuǎn),再次進(jìn)行檢測(cè)得到最終結(jié)果。首先在檢測(cè)出的兩點(diǎn)中確定一個(gè)點(diǎn)為中心點(diǎn),以x 軸正方向?yàn)槠鹗挤较?,另一點(diǎn)以逆時(shí)針作為基本旋轉(zhuǎn)方向,實(shí)際情況中旋轉(zhuǎn)角度范圍為[-90°,90°]。
當(dāng)“0”點(diǎn)和“1”點(diǎn)已知時(shí),分為圖5 所示兩種情況。
圖5:角點(diǎn)的旋轉(zhuǎn)情況
將“1”點(diǎn)作為中心點(diǎn),坐標(biāo)設(shè)為(xo,yo),“0”點(diǎn)坐標(biāo)設(shè)為(xr,yr),根據(jù)公式(4)計(jì)算逆時(shí)針旋轉(zhuǎn)角度。對(duì)于另外三種情況,分別以2 點(diǎn)、1 點(diǎn)和0 點(diǎn)作為中心點(diǎn),分析過(guò)程相同。對(duì)于檢測(cè)出0 個(gè)或1 個(gè)角點(diǎn)的情況,此類圖像存在較大面積“灰霧”或字輪框被嚴(yán)重遮擋。
1.2.1 CRNN 網(wǎng)絡(luò)結(jié)構(gòu)
CRNN 是一種集特征提取、序列建模和轉(zhuǎn)錄于一體的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)[4],包括卷積層(Convolutional Layers)、循環(huán)層(Recurrent Layers)、轉(zhuǎn)錄層(Transcription Layer)。
卷積層CNN 用于提取特征圖、輸出特征序列。首先將輸入水表圖像轉(zhuǎn)變?yōu)榛叶葓D并縮放處理,將所有圖像縮放到固定高度,本文選擇默認(rèn)高度32??s放后圖像的寬度可以是任意值,文中選取寬度為100。接著卷積層進(jìn)行一系列卷積、最大池化、批量歸一化操作,最后得到512 個(gè)特征圖,高度變?yōu)樵瓉?lái)的1/32,寬度變?yōu)樵瓉?lái)的1/4,輸出特征圖像尺寸為(512,1,25)。
循環(huán)層由一個(gè)深度雙向LSTM[5]循環(huán)神經(jīng)網(wǎng)絡(luò)構(gòu)成,為特征序列X=x1,…,xT中的每一特征向量xt預(yù)測(cè)其標(biāo)簽分布yt。將兩個(gè)相向的LSTM 組合成一個(gè)雙向長(zhǎng)期短記憶網(wǎng)絡(luò)(Bi-LSTM),同時(shí)將多個(gè)雙向LSTM 堆疊形成深度雙向LSTM 網(wǎng)絡(luò)。在 LSTM 中一個(gè)時(shí)間序列就傳入一個(gè)特征向量進(jìn)行分類,本文中卷積層每張圖像會(huì)生成25 個(gè)特征向量,即時(shí)間序列長(zhǎng)度T 為25。每輸入一個(gè)特征向量xt進(jìn)入循環(huán)從都會(huì)輸出其標(biāo)簽分布yt,所以循環(huán)層的輸出為25 個(gè)長(zhǎng)度為字符類別數(shù)的向量yt構(gòu)成的概率矩陣。
轉(zhuǎn)錄層使用了聯(lián)結(jié)時(shí)間分類器(CTC)將Bi-LSTM生成的特征序列標(biāo)簽分布重新整合轉(zhuǎn)換成標(biāo)簽序列進(jìn)行輸出。
2.1.1 數(shù)據(jù)集
本文研究所用到的數(shù)據(jù)集來(lái)源于中國(guó)計(jì)算機(jī)學(xué)會(huì)所創(chuàng)辦的CCF 大數(shù)據(jù)與計(jì)算智能大賽,共計(jì)1500 張水表圖像。
數(shù)據(jù)集標(biāo)簽按照[index, cx, cy, w, h]的格式進(jìn)行標(biāo)注。其中index 為類別索引,下標(biāo)從0 開(kāi)始,每個(gè)水表圖像的字輪區(qū)均有4 個(gè)角點(diǎn),共4 種類別。
2.1.2 數(shù)據(jù)擴(kuò)充
為了提高模型的文本檢測(cè)效果,對(duì)訓(xùn)練集進(jìn)一步擴(kuò)充以增加不同情況的圖像數(shù)據(jù)。選擇角度旋轉(zhuǎn)作為數(shù)據(jù)擴(kuò)充方法。設(shè)旋轉(zhuǎn)角度為[5, 30, 60, 90],同時(shí)改變labels 中的標(biāo)注的數(shù)據(jù)集坐標(biāo)信息,經(jīng)過(guò)角度旋轉(zhuǎn)后訓(xùn)練集擴(kuò)增了5 倍,共計(jì)5000 張圖像,按照4:1 的比例劃分為訓(xùn)練集與驗(yàn)證集。如圖6 所示。
圖6:數(shù)據(jù)擴(kuò)充——圖像旋轉(zhuǎn)
2.1.3 模型訓(xùn)練
YOLOv5 模型訓(xùn)練樣本的batch_size 設(shè)置為4,訓(xùn)練迭代次數(shù)epoch 設(shè)定為100。YOLOv5 采用warm-up的方式調(diào)整學(xué)習(xí)率,初始學(xué)習(xí)率設(shè)置為0.001。模型訓(xùn)練過(guò)程中損失值變化曲線如圖7 所示。
圖7:YOLOv5 模型的損失曲線
由圖7 可知,隨著訓(xùn)練迭代次數(shù)增加,各類損失函數(shù)均在訓(xùn)練的過(guò)程中不斷減小并最終收斂到較小的值,雖然驗(yàn)證集的損失曲線幅度波動(dòng)較大,但隨著迭代次數(shù)增加最終也趨于收斂,說(shuō)明YOLOv5 模型在訓(xùn)練集和驗(yàn)證集中的檢測(cè)效果趨于穩(wěn)定。
2.2.1 數(shù)據(jù)集
對(duì)原始數(shù)據(jù)集經(jīng)過(guò)裁剪、透射變換后,獲得一套具有1500 張字輪區(qū)域圖像的數(shù)據(jù)集。同時(shí)在訓(xùn)練集中增加著名的SCUT-WMN 的數(shù)據(jù)集[6]中的簡(jiǎn)單樣本進(jìn)行擴(kuò)容,增加訓(xùn)練集至2000 張圖像,其中每張圖像包含5個(gè)字符。如圖8 所示。
圖8:文本識(shí)別模型數(shù)據(jù)集
對(duì)于半字符的情況,使用大寫(xiě)英文字母表示。投入CRNN 網(wǎng)絡(luò)中進(jìn)行識(shí)別后再轉(zhuǎn)換為兩個(gè)半字符中數(shù)字較大的輸出。
2.2.2 模型訓(xùn)練
在訓(xùn)練過(guò)程,設(shè)置最大迭代次數(shù)max_epoch 為200,初始學(xué)習(xí)率為1.0,在第50 個(gè)和80 個(gè)epoch 訓(xùn)練時(shí)降低學(xué)習(xí)率,訓(xùn)練樣本的batch_size 設(shè)置為16。
由圖9 可知,隨著訓(xùn)練迭代次數(shù)增加,損失曲線呈下降趨勢(shì),在第120 個(gè)step 時(shí)CRNN 模型的損失值已收斂到0.005 左右,表明模型趨于穩(wěn)定。
圖9:CRNN 模型的訓(xùn)練損失曲線
常用的目標(biāo)檢測(cè)評(píng)價(jià)指標(biāo)包括平均召回率(mean Recalls)、平均準(zhǔn)確率(mean Precision)以及均值平均精度(mAP),這三個(gè)評(píng)價(jià)標(biāo)準(zhǔn)建立在TP、FP、FN,TN 上。TP 表示正類數(shù)據(jù)被模型預(yù)測(cè)為正類的數(shù)量,TN 表示負(fù)類數(shù)據(jù)被模型預(yù)測(cè)為負(fù)類的數(shù)量,F(xiàn)P 表示負(fù)類數(shù)據(jù)被模型預(yù)測(cè)為正類的數(shù)量,F(xiàn)N 表示正類數(shù)據(jù)被模型預(yù)測(cè)為負(fù)類的數(shù)量。
召回率(Recalls)表示正類數(shù)據(jù)判定為正類的數(shù)量占實(shí)際該類全部數(shù)量的比例,見(jiàn)公式(5)。
準(zhǔn)確率(Precision)表示正類數(shù)據(jù)判定為正類的數(shù)量占模型預(yù)測(cè)為正類的數(shù)量的比例,見(jiàn)公式(6)。
均值平均精度則建立在準(zhǔn)確率和召回率上,見(jiàn)公式(7)。
其中p 表示準(zhǔn)確率,r 表示召回率,平均精度p(r)表示當(dāng)前的P-R 曲線。
將未進(jìn)行數(shù)據(jù)擴(kuò)充訓(xùn)練的YOLOv5 模型記作YOLOv5 ①,經(jīng)過(guò)數(shù)據(jù)擴(kuò)充后重新訓(xùn)練的YOLOv5 模型記作YOLOv5 ②,現(xiàn)將兩個(gè)模型的檢測(cè)結(jié)果進(jìn)行對(duì)比。
如圖10 所示, 經(jīng)過(guò)100 個(gè)epoch 迭代后,YOLOv5 ②的準(zhǔn)確率和召回率變化曲線的波動(dòng)幅度均小于YOLOv5 ①。隨著迭代次數(shù)增加,準(zhǔn)確率和召回率呈上升趨勢(shì),且YOLOv ②數(shù)值始終大于YOLOv5 ②,變化曲線更快趨于收斂,說(shuō)明數(shù)據(jù)集擴(kuò)充后訓(xùn)練得到的YOLOv5 模型訓(xùn)練效果更好。
圖10:準(zhǔn)確率(上)與召回率(下)變化曲線
通過(guò)表1 可知,訓(xùn)練100 個(gè)epoch 后,YOLOv5 ②的平均精度優(yōu)于YOLOv5 ①,“0”、“1”、“2”、“3”四個(gè)類別的AP0.5 分別比YOLOv5 ①高3%、3%、3.1%、1.8%,均值平均精度比YOLOv5 ①高2.7%,說(shuō)明經(jīng)過(guò)數(shù)據(jù)集擴(kuò)充后,指標(biāo)mAP0.5 得到較大提升,模型預(yù)測(cè)定位更加準(zhǔn)確。
表1:mAP0.5 結(jié)果對(duì)比
在測(cè)試集上檢測(cè)模型性能,對(duì)于測(cè)試集中只能檢測(cè)出0 個(gè)、1 個(gè)或2 個(gè)角點(diǎn)的圖像將按照1.1.3 的方法進(jìn)行圖像旋轉(zhuǎn)后再次進(jìn)行檢測(cè),檢測(cè)結(jié)果如表2 所示。
表2:測(cè)試集檢測(cè)結(jié)果
對(duì)于檢測(cè)到3 個(gè)和4 個(gè)角點(diǎn)的圖像可認(rèn)為模型檢測(cè)正確,正確率為97.4%;其他情況則需要按照1.1.3 方法圖像旋轉(zhuǎn)校正后進(jìn)行二次檢測(cè)。經(jīng)過(guò)二次檢測(cè)后,各個(gè)角點(diǎn)類別的檢測(cè)準(zhǔn)確率均有所提升,檢測(cè)正確率由97.4%提高到99.0%,檢測(cè)精度提高了1.6%。
將測(cè)試集水表圖像字輪區(qū)域裁剪并進(jìn)行透射變換后生成文本框切片,輸入CRNN 網(wǎng)絡(luò)進(jìn)行文本識(shí)別。在500 張圖像共計(jì)2500 個(gè)字符中,2462 個(gè)字符正確識(shí)別,38 個(gè)字符未正確識(shí)別,單字符識(shí)別準(zhǔn)確率達(dá)到98.48%,共計(jì)26 張圖像未正確識(shí)別,完整字輪區(qū)文本行識(shí)別準(zhǔn)確率達(dá)到94.80%,基本實(shí)現(xiàn)了對(duì)機(jī)械式水表圖像的檢測(cè)識(shí)別。
本文提出了基于YOLOv5 與CRNN 模型的水表讀數(shù)識(shí)別算法,設(shè)計(jì)了一種字輪區(qū)角點(diǎn)定位方法,獲取角點(diǎn)位置后即可裁剪出字輪區(qū)域,同時(shí)采用圖像旋轉(zhuǎn)擴(kuò)充數(shù)據(jù)集提高模型魯棒性,改進(jìn)的文本檢測(cè)模型的準(zhǔn)確率、召回率和mAP 值分別達(dá)到98.50%、97.68%和98.00%,各項(xiàng)指標(biāo)均得到明顯提升,克服了自然場(chǎng)景下水表圖像識(shí)別難題。文本識(shí)別模型中添加SCUT-WMN數(shù)據(jù)集進(jìn)行訓(xùn)練后,在測(cè)試集上單字符識(shí)別準(zhǔn)確率未98.48%,文本行識(shí)別準(zhǔn)確率達(dá)到94.80%,滿足水表讀數(shù)檢測(cè)識(shí)別需求。