?

基于深度學習的水表示數檢測與識別

2023-05-29 09:24孫躍文李修治鮑喜榮
電子技術與軟件工程 2023年7期
關鍵詞:水表角點準確率

孫躍文 李修治 鮑喜榮

(東北大學 計算機科學與工程學院 遼寧省沈陽市 110169)

機械水表字輪區域的信息識別主要可分為字輪區域文本檢測和文本識別兩個任務。文本檢測指在水表圖片中消除背景干擾準確定位字輪框;文本識別指將文本行旋轉矯正并識別出文本字符?,F有的水表圖像識別方法一般采用特征提取的方式進行字輪框的檢測定位,然后采用模板匹配、特征分類等方法對文本行進行文本識別?,F有方法對背景簡單呈水平排列的檢測場景具備一定的適用性,但也易受環境干擾出現較大面積的背景殘留,影響后續的文本識別工作。

深度學習的文本檢測算法主要分為基于回歸的文本檢測算法和基于分割的文本檢測算法兩類?;诨貧w的文本檢測算法是直接面對整張圖像進行預測,可以提取到更深層次的特征信息,在檢測速度上存在較大優勢,但是這類方法由于預設了文本框形狀,所以無法對彎曲文本和不規則文本進行檢測?;诜指畹奈谋緳z測算法對圖像的像素進行分類判別像素點是否屬于文本目標,計算出文本概率圖后通過復雜的后處理操作得到文本框,此類算法解決了彎曲文本和不規則文本的檢測問題,但是復雜的后處理操作也大大的增加了計算開銷。

水表字輪區域的形狀一般為矩形,不存在彎曲文本和不規則文本的情況,這一特點降低了識別的難度。然而自然場景下采集的水表圖像存在其特殊性,往往背景復雜、旋轉角度不一。綜上,本文使用輕量化的YOLOv5 模型完成水表字輪區的文本檢測,結合YOLOv5 可以同時完成目標檢測與分類的優勢,改變了常規的目標檢測策略,提出了一種基于角點定位的檢測方法。文本識別模型采用CRNN+CTC 的網絡結構,可以處理檢測到的文本行,完成文本識別任務。

1 基于深度學習的水表示數檢測與識別模型

本文所提出的水表示數檢測與識別模型包括字輪檢測和文本識別兩個部分。首先采用合適的目標檢測模型對字輪區域進行定位,將字輪圖像進行裁剪,經過旋轉校正后作為文本識別模型的輸入進行文本識別,最終輸出水表示數,整個過程如圖1。

圖1:模型整體流程

1.1 基于YOLOv5的水表字輪檢測模型

1.1.1 YOLOv5 網絡結構

YOLO(You Only Look Once)[1]是一種基于深度卷積神經網絡的目標檢測模型,模型的優點是擁有更快的檢測速度,并且降低了背景誤檢率,YOLOv5 常用的模型結構有s,m,l,x 四種,本文使用的是YOLOv5s(下文統一簡稱“YOLOv5”)。

YOLOv5[2-3]的輸入端采用馬賽克數據增強將四張圖進行隨機拼接。同時,輸入端采用了自適應縮放,可以將輸入圖像統一到網絡需要的尺寸。并且自適應錨框計算可以在預設的錨框基礎上輸出預測框并與真實框對比,計算差值再反向迭代更新網絡參數。如圖2 所示。

圖2:Mosaic 數據增強

YOLOv5 的損失函數由三部分組成,分別是分類損失(Classes loss),置信度損失(Objectness loss)以及定位損失(Location loss),如公式(1)。

式中λ1,λ2,λ3為平衡系數。

1.1.2 字輪框直接定位算法

直接定位是直接將水表字輪框作為目標進行檢測,由于在自然場景下拍攝的圖像存在較大的旋轉角度,模型檢測的區域往往有較大面積的背景殘留。對文本識別模型造成干擾,導致文本識別準確率大大降低。如圖3所示。

圖3:直接定位檢測結果

1.1.3 改進的YOLOv5 目標檢測模型

結合YOLO 算法在多類別檢測時準確效果優于單類別這一特點,設計將定位字輪框轉變為定位矩形框角點,并將以順時針順序將左上、右上、右下、左下角點分別設置為類別0、1、2、3,對這四個類別進行檢測和模型訓練。如圖4 所示。

圖4:檢測字輪框角點

對于能夠檢測出全部角點的情況可以直接計算中心點坐標,用于字輪框的定位與裁剪。對于只能檢測出三個角點的情況,可以根據三點坐標計算出第四個角點的坐標。

式中Point0[x]表示類別“0”的x 軸坐標。

對于只檢測出兩個點的情況,一般是圖片表面存在水霧或污點,可以根據缺失點的類別分情況對原始圖片進行旋轉,再次進行檢測得到最終結果。首先在檢測出的兩點中確定一個點為中心點,以x 軸正方向為起始方向,另一點以逆時針作為基本旋轉方向,實際情況中旋轉角度范圍為[-90°,90°]。

當“0”點和“1”點已知時,分為圖5 所示兩種情況。

圖5:角點的旋轉情況

將“1”點作為中心點,坐標設為(xo,yo),“0”點坐標設為(xr,yr),根據公式(4)計算逆時針旋轉角度。對于另外三種情況,分別以2 點、1 點和0 點作為中心點,分析過程相同。對于檢測出0 個或1 個角點的情況,此類圖像存在較大面積“灰霧”或字輪框被嚴重遮擋。

1.2 基于CRNN的文本識別模型

1.2.1 CRNN 網絡結構

CRNN 是一種集特征提取、序列建模和轉錄于一體的神經網絡結構[4],包括卷積層(Convolutional Layers)、循環層(Recurrent Layers)、轉錄層(Transcription Layer)。

卷積層CNN 用于提取特征圖、輸出特征序列。首先將輸入水表圖像轉變為灰度圖并縮放處理,將所有圖像縮放到固定高度,本文選擇默認高度32??s放后圖像的寬度可以是任意值,文中選取寬度為100。接著卷積層進行一系列卷積、最大池化、批量歸一化操作,最后得到512 個特征圖,高度變為原來的1/32,寬度變為原來的1/4,輸出特征圖像尺寸為(512,1,25)。

循環層由一個深度雙向LSTM[5]循環神經網絡構成,為特征序列X=x1,…,xT中的每一特征向量xt預測其標簽分布yt。將兩個相向的LSTM 組合成一個雙向長期短記憶網絡(Bi-LSTM),同時將多個雙向LSTM 堆疊形成深度雙向LSTM 網絡。在 LSTM 中一個時間序列就傳入一個特征向量進行分類,本文中卷積層每張圖像會生成25 個特征向量,即時間序列長度T 為25。每輸入一個特征向量xt進入循環從都會輸出其標簽分布yt,所以循環層的輸出為25 個長度為字符類別數的向量yt構成的概率矩陣。

轉錄層使用了聯結時間分類器(CTC)將Bi-LSTM生成的特征序列標簽分布重新整合轉換成標簽序列進行輸出。

2 實驗過程

2.1 YOLOv5模型

2.1.1 數據集

本文研究所用到的數據集來源于中國計算機學會所創辦的CCF 大數據與計算智能大賽,共計1500 張水表圖像。

數據集標簽按照[index, cx, cy, w, h]的格式進行標注。其中index 為類別索引,下標從0 開始,每個水表圖像的字輪區均有4 個角點,共4 種類別。

2.1.2 數據擴充

為了提高模型的文本檢測效果,對訓練集進一步擴充以增加不同情況的圖像數據。選擇角度旋轉作為數據擴充方法。設旋轉角度為[5, 30, 60, 90],同時改變labels 中的標注的數據集坐標信息,經過角度旋轉后訓練集擴增了5 倍,共計5000 張圖像,按照4:1 的比例劃分為訓練集與驗證集。如圖6 所示。

圖6:數據擴充——圖像旋轉

2.1.3 模型訓練

YOLOv5 模型訓練樣本的batch_size 設置為4,訓練迭代次數epoch 設定為100。YOLOv5 采用warm-up的方式調整學習率,初始學習率設置為0.001。模型訓練過程中損失值變化曲線如圖7 所示。

圖7:YOLOv5 模型的損失曲線

由圖7 可知,隨著訓練迭代次數增加,各類損失函數均在訓練的過程中不斷減小并最終收斂到較小的值,雖然驗證集的損失曲線幅度波動較大,但隨著迭代次數增加最終也趨于收斂,說明YOLOv5 模型在訓練集和驗證集中的檢測效果趨于穩定。

2.2 CRNN模型

2.2.1 數據集

對原始數據集經過裁剪、透射變換后,獲得一套具有1500 張字輪區域圖像的數據集。同時在訓練集中增加著名的SCUT-WMN 的數據集[6]中的簡單樣本進行擴容,增加訓練集至2000 張圖像,其中每張圖像包含5個字符。如圖8 所示。

圖8:文本識別模型數據集

對于半字符的情況,使用大寫英文字母表示。投入CRNN 網絡中進行識別后再轉換為兩個半字符中數字較大的輸出。

2.2.2 模型訓練

在訓練過程,設置最大迭代次數max_epoch 為200,初始學習率為1.0,在第50 個和80 個epoch 訓練時降低學習率,訓練樣本的batch_size 設置為16。

由圖9 可知,隨著訓練迭代次數增加,損失曲線呈下降趨勢,在第120 個step 時CRNN 模型的損失值已收斂到0.005 左右,表明模型趨于穩定。

圖9:CRNN 模型的訓練損失曲線

3 實驗結果及分析

3.1 評價指標

常用的目標檢測評價指標包括平均召回率(mean Recalls)、平均準確率(mean Precision)以及均值平均精度(mAP),這三個評價標準建立在TP、FP、FN,TN 上。TP 表示正類數據被模型預測為正類的數量,TN 表示負類數據被模型預測為負類的數量,FP 表示負類數據被模型預測為正類的數量,FN 表示正類數據被模型預測為負類的數量。

召回率(Recalls)表示正類數據判定為正類的數量占實際該類全部數量的比例,見公式(5)。

準確率(Precision)表示正類數據判定為正類的數量占模型預測為正類的數量的比例,見公式(6)。

均值平均精度則建立在準確率和召回率上,見公式(7)。

其中p 表示準確率,r 表示召回率,平均精度p(r)表示當前的P-R 曲線。

3.2 YOLOv5算法實驗結果

將未進行數據擴充訓練的YOLOv5 模型記作YOLOv5 ①,經過數據擴充后重新訓練的YOLOv5 模型記作YOLOv5 ②,現將兩個模型的檢測結果進行對比。

如圖10 所示, 經過100 個epoch 迭代后,YOLOv5 ②的準確率和召回率變化曲線的波動幅度均小于YOLOv5 ①。隨著迭代次數增加,準確率和召回率呈上升趨勢,且YOLOv ②數值始終大于YOLOv5 ②,變化曲線更快趨于收斂,說明數據集擴充后訓練得到的YOLOv5 模型訓練效果更好。

圖10:準確率(上)與召回率(下)變化曲線

通過表1 可知,訓練100 個epoch 后,YOLOv5 ②的平均精度優于YOLOv5 ①,“0”、“1”、“2”、“3”四個類別的AP0.5 分別比YOLOv5 ①高3%、3%、3.1%、1.8%,均值平均精度比YOLOv5 ①高2.7%,說明經過數據集擴充后,指標mAP0.5 得到較大提升,模型預測定位更加準確。

表1:mAP0.5 結果對比

在測試集上檢測模型性能,對于測試集中只能檢測出0 個、1 個或2 個角點的圖像將按照1.1.3 的方法進行圖像旋轉后再次進行檢測,檢測結果如表2 所示。

表2:測試集檢測結果

對于檢測到3 個和4 個角點的圖像可認為模型檢測正確,正確率為97.4%;其他情況則需要按照1.1.3 方法圖像旋轉校正后進行二次檢測。經過二次檢測后,各個角點類別的檢測準確率均有所提升,檢測正確率由97.4%提高到99.0%,檢測精度提高了1.6%。

將測試集水表圖像字輪區域裁剪并進行透射變換后生成文本框切片,輸入CRNN 網絡進行文本識別。在500 張圖像共計2500 個字符中,2462 個字符正確識別,38 個字符未正確識別,單字符識別準確率達到98.48%,共計26 張圖像未正確識別,完整字輪區文本行識別準確率達到94.80%,基本實現了對機械式水表圖像的檢測識別。

4 結束語

本文提出了基于YOLOv5 與CRNN 模型的水表讀數識別算法,設計了一種字輪區角點定位方法,獲取角點位置后即可裁剪出字輪區域,同時采用圖像旋轉擴充數據集提高模型魯棒性,改進的文本檢測模型的準確率、召回率和mAP 值分別達到98.50%、97.68%和98.00%,各項指標均得到明顯提升,克服了自然場景下水表圖像識別難題。文本識別模型中添加SCUT-WMN數據集進行訓練后,在測試集上單字符識別準確率未98.48%,文本行識別準確率達到94.80%,滿足水表讀數檢測識別需求。

猜你喜歡
水表角點準確率
不同序列磁共振成像診斷脊柱損傷的臨床準確率比較探討
水表普查與水表掛接子系統建設
水表檢定裝置不確定度分析計算的相關思考
高速公路車牌識別標識站準確率驗證法
基于邊緣的角點分類和描述算法
基于圓環模板的改進Harris角點檢測算法
水表在檢定周期內超差原因與解決措施
基于Harris角點和質量評價的圖像篡改檢測
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合