朱傳浩,歐陽(yáng)八生
(南華大學(xué)機(jī)械工程學(xué)院,湖南衡陽(yáng) 421001)
印刷標(biāo)簽主要用來(lái)介紹生產(chǎn)廠家的有關(guān)信息,標(biāo)明產(chǎn)品參數(shù)。在產(chǎn)品發(fā)生故障的過(guò)程中,便于對(duì)產(chǎn)品進(jìn)行追蹤。由于現(xiàn)在不同產(chǎn)品所需標(biāo)簽不同,同種標(biāo)簽所需型號(hào)不同等,標(biāo)簽類(lèi)型也變得各式各樣。目前針對(duì)字符識(shí)別研究方法,主要分為人工檢測(cè)和機(jī)器視覺(jué)檢測(cè)[1]。人工在長(zhǎng)時(shí)間檢測(cè)過(guò)程下容易對(duì)標(biāo)簽的識(shí)別產(chǎn)生誤判,且檢測(cè)的效率低、成本較高。而機(jī)器視覺(jué)在光照環(huán)境、字符缺陷、標(biāo)簽種類(lèi)多樣的影響下,檢測(cè)與分類(lèi)結(jié)果也會(huì)產(chǎn)生較大誤差。因此,針對(duì)標(biāo)簽印刷過(guò)程中產(chǎn)生的字符缺失、印刷不清、字符連接等原因造成的識(shí)別問(wèn)題,提出了一種基于機(jī)器視覺(jué)的多種類(lèi)標(biāo)簽識(shí)別的改進(jìn)方法,可以有效提高標(biāo)簽字符識(shí)別的準(zhǔn)確性,降低時(shí)間成本。
在字符識(shí)別的相關(guān)研究中,馬玲等[2]提出了基于模板匹配和支持向量機(jī)的點(diǎn)陣字符識(shí)別方法,字符識(shí)別率達(dá)到96.10%。靳彩園等[3]選用一種自適應(yīng)調(diào)節(jié)學(xué)習(xí)率和動(dòng)態(tài)調(diào)整S 型激勵(lì)函數(shù)相結(jié)合的改進(jìn)BP 算法對(duì)字符進(jìn)行精確識(shí)別。楊桂華等[4]利用機(jī)器視覺(jué),設(shè)計(jì)了一種基于生成基準(zhǔn)圖像的電表銘牌視覺(jué)檢測(cè)方法,結(jié)果表明該方法對(duì)電表銘牌印刷缺陷檢測(cè)有較好的魯棒性,能準(zhǔn)確檢測(cè)出電表銘牌的多種印刷缺陷。
傳統(tǒng)基于模板匹配和字符分割識(shí)別方法雖然識(shí)別效率較高,但對(duì)于字跡模糊和字符粘連標(biāo)簽的識(shí)別準(zhǔn)確率有所欠缺。而改進(jìn)BP算法由于較深的網(wǎng)絡(luò)結(jié)構(gòu),識(shí)別效率相對(duì)較低。針對(duì)這個(gè)為問(wèn)題,本文首先對(duì)傾斜、彎曲字符進(jìn)行畸變矯正[5],對(duì)圖像進(jìn)行灰度化處理,通過(guò)高斯濾波降噪,最后對(duì)圖像進(jìn)行Otsu 算法二值化得到預(yù)處理結(jié)果,再基于一種改進(jìn)的CRNN+CTC 算法進(jìn)行識(shí)別。
標(biāo)簽字符識(shí)別方法由硬件系統(tǒng)和軟件系統(tǒng)兩部分組成。硬件系統(tǒng)為工業(yè)相機(jī)、50 mm FA 鏡頭、120 mm 30°的環(huán)形光源和標(biāo)簽識(shí)別工件,其采樣平臺(tái)結(jié)構(gòu)如圖1所示。
圖1 采樣平臺(tái)結(jié)構(gòu)
硬件系統(tǒng)參數(shù)配置如圖2 所示。相機(jī)視野為71 mm×60 mm,分辨率為0.029 mm/pixel。
圖2 硬件系統(tǒng)參數(shù)配置
軟件系統(tǒng)由圖像信息采集模塊、圖像預(yù)處理模塊、標(biāo)簽字符算法識(shí)別模塊組成。標(biāo)簽字符識(shí)別軟件系統(tǒng)的流程如圖3所示。
圖3 字符識(shí)別系統(tǒng)流程
由于印刷標(biāo)簽的材質(zhì)較軟,某些標(biāo)簽的表面有弧度,所以需要對(duì)圖像進(jìn)行畸變矯正。選取標(biāo)簽字符的最小外接矩形與標(biāo)準(zhǔn)標(biāo)簽?zāi)0暹M(jìn)行比較,并對(duì)最小外接矩形進(jìn)行穩(wěn)健回歸[6]。然后利用標(biāo)簽字符的最小外接矩形對(duì)字符的外邊框進(jìn)行擬合,計(jì)算出字符區(qū)域的4個(gè)頂點(diǎn)坐標(biāo);最后,運(yùn)用透視變換對(duì)字符進(jìn)行畸變矯正。該方法計(jì)算復(fù)雜度較低,對(duì)于解決標(biāo)簽邊緣信息缺失、字符粘連等情況,有良好的修復(fù)效果。
2.2.1 圖像灰度化
灰度化[7]的過(guò)程就是把彩色圖像轉(zhuǎn)化為灰度圖像,將一般格式的圖像轉(zhuǎn)化為灰度圖可以減少后續(xù)圖像的計(jì)算量?;叶葓D像描述反映了整幅圖像的整體和局部的色度和亮度等級(jí)的分布和特征。不同種類(lèi)標(biāo)簽灰度化效果如圖4所示。
圖4 標(biāo)簽灰度圖
2.2.2 圖像增強(qiáng)
圖像增強(qiáng)的主要目的是提高圖像的質(zhì)量和可辨識(shí)度,有利于進(jìn)一步分析和處理圖像特征。為了減少在圖像邊緣和圖像輪廓模糊的情況出現(xiàn),就需要利用二階微分拉普拉斯算子進(jìn)行圖像銳化。其公式如下:
通過(guò)圖5的對(duì)比可發(fā)現(xiàn),拉普拉斯算子補(bǔ)償了圖像的輪廓,圖像的邊緣有所增強(qiáng),字符的對(duì)比度變得清晰。
圖5 Laplacian算子處理對(duì)比
2.2.3 濾波
圖像濾波[8]的目的是消除圖像中參雜的噪聲,為圖像的識(shí)別抽取圖像特征。本文選用高斯濾波,首先圖像的逐個(gè)像素是由高斯核進(jìn)行卷積,得出每個(gè)像素值。然后利用周?chē)袼氐闹?,將距離作為權(quán)重計(jì)算卷積核中心位置的像素。N維空間正態(tài)分布方程和二維空間正態(tài)分布分別為:
式中:(u,v)為點(diǎn)坐標(biāo),在圖像中為整數(shù);σ為標(biāo)準(zhǔn)差,標(biāo)準(zhǔn)差代表著數(shù)據(jù)的離散程度,σ越大,高斯函數(shù)越平滑,數(shù)據(jù)的離散程序越大。
構(gòu)建一個(gè)5×5 的卷積層,對(duì)電機(jī)牽引器字符進(jìn)行高斯濾波處理,如圖6 所示。實(shí)驗(yàn)證明,高斯濾波能夠較好地去除圖像上隨機(jī)出現(xiàn)的高斯噪聲,但是在去除噪聲的同時(shí),也會(huì)使圖像變得模糊。
圖6 高斯濾波處理對(duì)比
2.2.4 二值化
圖像二值化[9]就是對(duì)圖像上的像素點(diǎn)的灰度值設(shè)置為0或255,將整個(gè)圖像表現(xiàn)出明顯的黑白效果。閾值的選取有以下兩種方法:固定閾值法和Otsu法。
固定閾值法是將輸入圖像的所有像素點(diǎn)進(jìn)行統(tǒng)一,固定使用同一個(gè)閾值。其基本思想如下:
式中:T為全局閾值。
Otsu 算法又稱(chēng)為最大類(lèi)間方差法,該方法主要是通過(guò)閾值進(jìn)行前后背景分割,使類(lèi)間方差最大,錯(cuò)分概率最小。本文采用Otsu 法求閾值二值化,結(jié)果如圖7所示。
圖7 Otsu法求閾值的二值化結(jié)果圖
式中:w0為前景點(diǎn)所占比例;w1為背景點(diǎn)所占比例,w1= 1-w0;u0為前景灰度均值;u1為背景灰度均值,u=w0·u0+w1·u1為全局灰度均值。
目標(biāo)函數(shù)g越大,t就是越好的閾值。
本文改進(jìn)的CRNN+CTC 多種類(lèi)標(biāo)簽識(shí)別算法是由一個(gè)多層次網(wǎng)絡(luò)模型構(gòu)成,主要包含CNN、RNN 和CTC 三個(gè)網(wǎng)絡(luò)模型。使用深度CNN 提取輸入圖像的特征來(lái)得到特征圖;再使用雙向RNN(BLSTM)對(duì)特征序列進(jìn)行預(yù)測(cè),學(xué)習(xí)序列中的每一個(gè)特征向量,最終輸出預(yù)測(cè)標(biāo)簽分布;使用CTC 損失,把從循環(huán)層獲取的一系列標(biāo)簽分布轉(zhuǎn)換成最終的標(biāo)簽序列。能夠有效解決基于字符分割的識(shí)別方法在復(fù)雜環(huán)境下識(shí)別準(zhǔn)確率不高的問(wèn)題。
2.3.1 CNN模塊
一般的CNN 網(wǎng)絡(luò)模型是采用VGG-16[10-11],模型是由若干卷積層和池化層堆疊(stack)的方式構(gòu)成,比較容易形成較深的網(wǎng)絡(luò)結(jié)構(gòu),在字符識(shí)別過(guò)程中會(huì)影響算法的效率。本文選擇在VGG-16模型的基礎(chǔ)上進(jìn)行改進(jìn)。
(1)VGG-16 的卷積層是用來(lái)設(shè)計(jì)光學(xué)圖像的,而本文灰度圖的信息量較少,減少了網(wǎng)絡(luò)的特征提取能力,所以適當(dāng)刪減模型的卷積層數(shù)量,提升模型的運(yùn)算速度。
(2)在VGG-16模型中加入BN 算法[12]和Adam 算法。BP 算法能夠提高模型的泛化能力和增強(qiáng)參數(shù)的歸一化處理;而Adam 算法能幫助加強(qiáng)CNN 模型更新方向的收斂速度。
2.3.2 RNN模塊
傳統(tǒng)RNN 在進(jìn)行反向傳播的時(shí)候,過(guò)長(zhǎng)的序列導(dǎo)致梯度的計(jì)算異常, 發(fā)生梯度消失或爆炸。為減低這種影響,本文采用了深層雙向BLSTM 網(wǎng)絡(luò)[13],如圖8 所示。雙向LSTM 就是在隱層里面分別有一個(gè)正向和反向LSTM,來(lái)捕捉上文和下文的信息特征,對(duì)比于單向LSTM來(lái)說(shuō),能夠獲取更多的其他特征信息。
圖8 深層雙向BLSTM網(wǎng)絡(luò)結(jié)構(gòu)
處理流程:采用兩層各256 單元的雙向LSTM 網(wǎng)絡(luò),將CNN 模型中得到的40 個(gè)特征向量傳入LSTM 中,則有40個(gè)時(shí)間步分別對(duì)40個(gè)特征向量進(jìn)行分類(lèi)。RNN的目標(biāo)就是根據(jù)輸入的特征向量預(yù)測(cè),獲取所有字符的softmax概率分布,這是一個(gè)長(zhǎng)度為字符類(lèi)別數(shù)的向量,作為CTC 層的輸入。將每個(gè)時(shí)間步輸入的特征向量xT進(jìn)行輸出,得到一個(gè)所有字符的概率分布yT,后驗(yàn)概率矩陣則是由40個(gè)長(zhǎng)度為字符類(lèi)別數(shù)的向量構(gòu)成。
2.3.3 CTC損失函數(shù)
輸入的各種類(lèi)標(biāo)簽字符中,由于字符間隔、圖像變形、字符模糊等問(wèn)題,導(dǎo)致同個(gè)字符會(huì)錯(cuò)誤地呈現(xiàn)出其他形式,相鄰字符可能會(huì)被重復(fù)識(shí)別。常見(jiàn)的交叉熵函數(shù)[14]網(wǎng)絡(luò),對(duì)這種標(biāo)簽字符長(zhǎng)度及數(shù)量識(shí)別效果不夠理想。在CRNN 模型中將一個(gè)CTC[15]模型連接在雙向LSTM網(wǎng)絡(luò)層上,完成了端對(duì)端字符序列識(shí)別。解決了輸入數(shù)據(jù)與給定標(biāo)簽的對(duì)齊問(wèn)題,可用于執(zhí)行端到端的訓(xùn)練,輸出不定長(zhǎng)的序列結(jié)果。
CTC 模型訓(xùn)練過(guò)程中,對(duì)于LSTM 給定輸入x情況下,輸出的l率為:
式中S為訓(xùn)練集。
實(shí)驗(yàn)選用的軟件系統(tǒng)為Windows10,型號(hào)為64 位。軟件運(yùn)行環(huán)境為64位操作系統(tǒng)下搭建的Halcon 深度學(xué)習(xí)框架。硬件平臺(tái)選用Intel(R)Core(TM)i5-9400 型號(hào)的計(jì)算機(jī),其處理器的主頻大小為2.9 GHz。對(duì)基于機(jī)器視覺(jué)的多種類(lèi)標(biāo)簽識(shí)別系統(tǒng)進(jìn)行設(shè)計(jì)。
對(duì)某公司生產(chǎn)標(biāo)簽進(jìn)行數(shù)據(jù)采集,選取2 000張圖片進(jìn)行識(shí)別測(cè)試。其中1 000張為正常的字符圖像,命名為T(mén)est1;500張為字符斷裂、字符連接缺陷的圖像,命名為T(mén)est2;500張為光照不同,字跡模糊的圖像,命名為T(mén)est3。
3.3.1 實(shí)驗(yàn)結(jié)果
本文主要從字母數(shù)字字符識(shí)別率(ACRR)、漢字識(shí)別率(CCRR)、標(biāo)簽識(shí)別準(zhǔn)確度(RA)和字符識(shí)別準(zhǔn)確度(CRA)4個(gè)方面對(duì)算法進(jìn)行評(píng)估,如表1所示。其中ACRR 和CCRR 主要是分析模糊字符、字符粘連等識(shí)別率低的原因。RA 和CRA 主要是分析改進(jìn)算法性能,是否能夠達(dá)到工業(yè)要求。
表1 改進(jìn)CRNN+CTC網(wǎng)絡(luò)實(shí)驗(yàn)結(jié)果
由表1可以得出4種評(píng)估方法在Test1上都擁有較高的準(zhǔn)確率,說(shuō)明此算法對(duì)于完整標(biāo)簽圖像能夠較好識(shí)別。CCRR在3種測(cè)試集種識(shí)別率為99.2%、95.3%和96.4%,均低于其他評(píng)估方法,可得知漢字的識(shí)別率是影響標(biāo)簽識(shí)別準(zhǔn)確度的主要原因。Test2測(cè)試集的綜合評(píng)估指標(biāo)低于Test3,說(shuō)明字符斷裂和粘連的影響要大于光照和字符模糊的影響。
3.3.2 對(duì)比與分析
為比較改進(jìn)CRNN+CTC算法的識(shí)別效果,本文與傳統(tǒng)的字符分割法和原CRCC+CTC共3種進(jìn)行實(shí)驗(yàn)效果對(duì)比分析。主要分析標(biāo)簽識(shí)別準(zhǔn)確度、字符識(shí)別準(zhǔn)確度以及檢測(cè)速度(T),分析結(jié)果如表2所示。由表可以得出,本文改進(jìn)的CNCC+CTC算法相較于傳統(tǒng)分割字符識(shí)別算法,在Test2和Test3中RA識(shí)別準(zhǔn)確率分別提升了6.0%和6.4%,CRA識(shí)別準(zhǔn)確度上分別提升了11.4%和10.1%,對(duì)于模糊字符和字符粘連的情況,滿足了工業(yè)的需求;原CRNN+CTC算法在3種測(cè)試中識(shí)別準(zhǔn)確率均在96.5%以上,但是在檢測(cè)速度上消耗時(shí)間較長(zhǎng)。本文改進(jìn)算法在Test2和Test3中檢測(cè)速度上分別提升了19 ms和23 ms,識(shí)別效率有大幅度提高。
表2 實(shí)驗(yàn)對(duì)比結(jié)果
通過(guò)改進(jìn)的CRNN+CTC 算法,解決了在各種類(lèi)印刷字符識(shí)別過(guò)程中準(zhǔn)確率低、分類(lèi)難的問(wèn)題。在CRNN 算法中減少模型的卷積層數(shù)量,加入BN 算法和Adam 算法,提升了對(duì)模型的收斂速度。改進(jìn)的CRNN+CTC 算法相較于傳統(tǒng)字符分割算法解決了識(shí)別階段累計(jì)誤差的現(xiàn)象,識(shí)別的準(zhǔn)確率有較大提升;相較于原CRNN+CTC 加強(qiáng)了CNN模型更新方向的收斂速度,使識(shí)別速度更快。
目前主要是在印刷標(biāo)簽的字符上進(jìn)行識(shí)別方法的研究,對(duì)于標(biāo)簽的識(shí)別比較單一,未來(lái)可以加入模板匹配的算法來(lái)對(duì)標(biāo)簽的圖畫(huà)進(jìn)行識(shí)別,不僅可以篩選出符合工業(yè)生產(chǎn)的標(biāo)簽進(jìn)行分類(lèi),而且兩者的結(jié)合能夠更有效地提高識(shí)別的準(zhǔn)確率。