唐銘豆,陶青川,馮謙
(四川大學(xué)電子信息學(xué)院,成都 610065)
當(dāng)前,在許多車(chē)間工廠需要對(duì)產(chǎn)品進(jìn)行測(cè)試,在生產(chǎn)、試驗(yàn)的各測(cè)試環(huán)節(jié),需要將產(chǎn)品編號(hào)與測(cè)試數(shù)據(jù)一一對(duì)應(yīng)地記錄保存,以滿足質(zhì)量控制、跟蹤管理等方面的要求。而往往進(jìn)行測(cè)試時(shí),由于產(chǎn)品數(shù)量巨大以及產(chǎn)品失效等客觀原因,產(chǎn)品編號(hào)和測(cè)試數(shù)據(jù)是分開(kāi)管理的,在對(duì)產(chǎn)品進(jìn)行測(cè)試前,需要先對(duì)產(chǎn)品進(jìn)行排序,產(chǎn)品編號(hào)的記錄工作通常采用人眼觀察排序的方式,效率低下并易出錯(cuò)。而通過(guò)計(jì)算機(jī)視覺(jué)技術(shù),利用模式識(shí)別及人工智能相關(guān)算法來(lái)實(shí)現(xiàn)器件編號(hào)的自動(dòng)識(shí)別與記錄,可以極大地提高測(cè)試效率,提高準(zhǔn)確率,減少人工,且實(shí)現(xiàn)產(chǎn)品編號(hào)和測(cè)試數(shù)據(jù)同時(shí)獲取與記錄保存,將非常有利于測(cè)試自動(dòng)化程度的提高,對(duì)生產(chǎn)測(cè)試過(guò)程的效率起到極大的改善作用,并降低人工失誤帶來(lái)的損失。
在利用計(jì)算機(jī)視覺(jué)和神經(jīng)網(wǎng)絡(luò)來(lái)進(jìn)行檢測(cè)和識(shí)別文字字符在近年來(lái)也取得了一些成果。在目標(biāo)檢測(cè)領(lǐng)域,S Ren等人在16年提出的Faster R-CNN[1]在ILS?VRC和COCO 2015比賽中檢測(cè)準(zhǔn)確率都取得了第一名的成績(jī),其檢測(cè)速度可以達(dá)到每秒5幀。而由J Redmon等人提出的YOLO[2]方法在檢測(cè)目標(biāo)時(shí)速度更快,可以達(dá)到每秒45幀,但付出的代價(jià)是準(zhǔn)確率會(huì)在一定程度上有所下降。而識(shí)別文字字符實(shí)際上是一個(gè)圖像分類的過(guò)程,利用圖像的HAAR,HOG,LBP特征來(lái)進(jìn)行SVM分類是一種成熟的圖像分類方法,但具體選取哪種特征需要人為選定,在場(chǎng)景遷移上魯棒性不高。在這個(gè)領(lǐng)域比較著名的是Ian J.Goodfellow在2013年提出的街景多位數(shù)識(shí)別[3],是基于CNN網(wǎng)絡(luò),可以實(shí)現(xiàn)多位數(shù)字符的識(shí)別,但需要預(yù)先給出待預(yù)測(cè)的字符序列的最大長(zhǎng)度。另外一種常用的方法是RNN結(jié)合CTC的方法,該方法不需要預(yù)先分割字符,直接對(duì)整行字符進(jìn)行識(shí)別,但它的計(jì)算效率沒(méi)有CNN高,并且還有潛在的梯度爆炸和梯度消失的問(wèn)題。無(wú)論是RCNN還是YOLO,在進(jìn)行檢測(cè)時(shí)依賴于GPU的計(jì)算能力,在實(shí)際工業(yè)生產(chǎn)領(lǐng)域,考慮低功耗且由于GPU的成本過(guò)高,而直接使用CPU利用RCNN或YOLO檢測(cè)又存在時(shí)間過(guò)長(zhǎng)的問(wèn)題,因此提出了一種在低配置下利用傳統(tǒng)方法分割字符,CNN網(wǎng)絡(luò)識(shí)別字符來(lái)進(jìn)行字符提取的方法。
識(shí)別系統(tǒng)由軟件和硬件兩大部分組成,硬件部分主要完成圖像采集與傳輸,軟件部分負(fù)責(zé)對(duì)圖像進(jìn)行處理,得到器件編號(hào)的識(shí)別結(jié)果,并將結(jié)果保存。硬件部分主要由相機(jī)、鏡頭、光源、支架、計(jì)算機(jī)組成。將相機(jī)固定于支架上,對(duì)器件(樣本)進(jìn)行成像,采集的圖像通過(guò)千兆網(wǎng)傳輸給計(jì)算機(jī)。識(shí)別軟件對(duì)采集的圖像進(jìn)行分析處理,輸出并保存識(shí)別結(jié)果。系統(tǒng)設(shè)計(jì)圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)示意圖
算法流程圖如圖2所示。
圖2 算法流程圖
當(dāng)計(jì)算機(jī)得到相機(jī)采集的圖片后,雖然相機(jī)的分辨率很高,能夠獲得高清的芯片字符,但由于現(xiàn)場(chǎng)燈光環(huán)境復(fù)雜,會(huì)有少量光照不均勻的現(xiàn)象,在一定程度上會(huì)影響后續(xù)檢測(cè)和識(shí)別結(jié)果,因而需要對(duì)圖像進(jìn)行預(yù)處理。
直方圖均衡化[4]在處理光照過(guò)亮或過(guò)暗時(shí)有很好的效果,其基本原理是將原圖的灰度直方圖進(jìn)行拉伸,將原來(lái)直方圖灰度覆蓋范圍擴(kuò)大,使得圖像局部的明暗對(duì)比度更大。首先根據(jù)式(1)求得圖像的灰度直方圖:
其中Pk是灰度的每一級(jí),即0-255,rk是每一級(jí)灰度所對(duì)應(yīng)的像素個(gè)數(shù),n是整副圖像對(duì)應(yīng)的所有像素個(gè)數(shù)總數(shù)。在均衡化時(shí)選取灰度的累積概率作為原圖到新圖的映射函數(shù),根據(jù)式(2)求得圖像的累積直方圖:
再根據(jù)式(3)求得變換后新圖像素:
其中M為最大灰度級(jí),Di為變換后新圖像素,F(xiàn)(Pk)代表灰度級(jí)為k時(shí)在原圖的累積概率。
預(yù)處理效果圖如圖 3(a)、圖 3(b)所示。
圖3
灰度直方圖對(duì)比效果如圖 4(a)、圖 4(b)所示:
圖4
由圖可見(jiàn),整幅圖像的清晰度得到了極大的提高,同時(shí)也消除了一些噪點(diǎn),有利于后續(xù)的檢測(cè)識(shí)別字符。
由于字符位于芯片區(qū)域內(nèi),所以在對(duì)字符進(jìn)行定位前先進(jìn)行對(duì)芯片區(qū)域的定位可以提高對(duì)單個(gè)字符定位的準(zhǔn)確度。根據(jù)芯片具有一定范圍內(nèi)的長(zhǎng)寬比,且是圖片中最大的連通區(qū)域這兩個(gè)特點(diǎn)可以很快定位出芯片區(qū)域。
首先對(duì)圖片進(jìn)行二值化操作,二值化是為了讓目標(biāo)跟背景分離,將圖片像素值與閾值進(jìn)行大小比較,使得圖片只有黑白兩種顏色,閾值大小的選取直接關(guān)系到二值化后的效果。人工選取閾值具有太多的不確定因素,而大津法二值化[5]可以自適應(yīng)的確定閾值即類間方差最大的閾值。設(shè)最終選取的閾值為T(mén),圖像的高為M,寬為N,令小于等于閾值的像素點(diǎn)為目標(biāo)像素點(diǎn),大于閾值的像素點(diǎn)為背景像素點(diǎn),設(shè)目標(biāo)點(diǎn)的個(gè)數(shù)為N1,背景點(diǎn)的個(gè)數(shù)為N2,目標(biāo)點(diǎn)占總像素點(diǎn)的比例為w1,目標(biāo)點(diǎn)的平均像素值為 p1,平均灰度值為背景點(diǎn)的比例為w2,背景點(diǎn)的平均像素值為p2,圖像的平均像素值為p,設(shè)類間方差為g,則有:
由式(4)-(7)可以推出:
對(duì)于閾值T均有對(duì)應(yīng)的類間方差值gt,若灰度級(jí)為255,則當(dāng)閾值T從0取至255時(shí),gt最大時(shí),此時(shí)閾值即為求得的閾值。二值化后效果圖如圖5所示。
圖5 二值化后效果圖
在二值化完畢后對(duì)圖像進(jìn)行查找連通區(qū)域[6]的操作,即查找像素值為255的連通區(qū)域。在查找連通區(qū)域時(shí),采用一種基于路程的標(biāo)記算法,只需遍歷一次圖像,相比輪廓搜索算法效率更高。
在定位出芯片區(qū)域之后重新對(duì)芯片區(qū)域進(jìn)行二值化,二值化后并查找連通區(qū)域,再求得正外接矩形即可定出若干個(gè)字符區(qū)域如圖6所示。
圖6 字符定位效果圖
對(duì)于字符中寬度異常的字符如圖中的629矩形框,需要進(jìn)行字符分割處理,分割時(shí),求得該區(qū)域的上下輪廓邊界,如圖7所示。
圖7 “629”外輪廓示意圖
在參照其他已定位字符寬度的同時(shí),對(duì)于上邊界輪廓,求得輪廓Y坐標(biāo)的極小值,對(duì)于下邊界輪廓,求得輪廓Y坐標(biāo)的極大值,而分割字符線就即為輪廓的極小極大值所在點(diǎn)的縱向切線,這樣就將原來(lái)的粘連字符分割為3個(gè)單獨(dú)的字符,通過(guò)以上方式即可完成字符的檢測(cè)定位。
在圖像分類和圖像識(shí)別領(lǐng)域,卷積神經(jīng)網(wǎng)絡(luò)已經(jīng)取得了許多突破性的研究成果。卷積神經(jīng)網(wǎng)絡(luò)[7](CNN)由生物學(xué)家Hubel和Wiesel于20世紀(jì)60年代在研究貓的腦皮層時(shí)發(fā)現(xiàn)在對(duì)于神經(jīng)元的選擇時(shí)具有獨(dú)特的網(wǎng)絡(luò)結(jié)構(gòu),并且可以使前反饋網(wǎng)絡(luò)的復(fù)雜性得到有效降低。卷積神經(jīng)網(wǎng)絡(luò)的最大優(yōu)勢(shì)是可以減少在前期對(duì)圖像的各種提取特征,而直接將原始圖像輸入到網(wǎng)絡(luò)中。用卷積神經(jīng)網(wǎng)絡(luò)來(lái)進(jìn)行識(shí)別和分類數(shù)字可以使得特征提取和模式識(shí)別兩個(gè)過(guò)程同時(shí)進(jìn)行,且提取的特征是非線性的,意味著特征更復(fù)雜更符合,另外,輸入圖像可以通過(guò)監(jiān)督自學(xué)習(xí)進(jìn)行特征的提取和計(jì)算。LeNet5[8]結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)是Yann LeCun設(shè)計(jì)的用于手寫(xiě)數(shù)字識(shí)別的卷積神經(jīng)網(wǎng)絡(luò),在圖像分類和識(shí)別方面效果顯著,利用其網(wǎng)絡(luò)來(lái)進(jìn)行手寫(xiě)體識(shí)別,準(zhǔn)確率可以達(dá)到99%以上,結(jié)構(gòu)圖如圖8所示。
圖8 結(jié)構(gòu)圖
LeNet5結(jié)構(gòu)由卷積層conv,池化層pool和全連接層組成。卷積層由多個(gè)特征平面組成,特征平面又稱作特征圖,特征平面里由一系列排列為矩形的神經(jīng)元構(gòu)成,權(quán)值由每個(gè)特征平面里所有神經(jīng)元共享,而這里共享的權(quán)值即為卷積核,卷積核初始化時(shí)會(huì)賦予隨機(jī)小數(shù)矩形,經(jīng)訓(xùn)練后得到合適的權(quán)值。池化層又稱作子采樣層,子采樣可以看作一種特殊的卷積過(guò)程,通常有均值子采樣和最大值采樣兩種形式,通過(guò)池化層可以簡(jiǎn)化模型復(fù)雜度,減少模型參數(shù)。卷積層和池化層并作一起,共同構(gòu)成了特征抽取層,從原始圖像中提取合適的特征。卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)類似,和普通神經(jīng)網(wǎng)絡(luò)類似,分為兩個(gè)階段。第一階段為向前傳播階段,首先從樣本集中取一個(gè)樣本(X,Yp),X為輸入向量,Yp為理想輸出結(jié)果,將X輸入網(wǎng)絡(luò),從輸入層經(jīng)過(guò)逐級(jí)的變換,傳送到輸出層。在這個(gè)過(guò)程中,網(wǎng)絡(luò)執(zhí)行的是輸入與每層的權(quán)值矩陣點(diǎn)乘,如式(9)所示:
其中Qp為實(shí)際輸出,訓(xùn)練的第二階段為向后傳播階段,當(dāng)算出實(shí)際結(jié)果后,計(jì)算Qp與Yp的差,再按極小化誤差的方法反向調(diào)整權(quán)值矩陣。
在卷積層中將卷積核與前一層的所有特征圖(Fea?tureMap)進(jìn)行卷積求和,再加上偏置量,輸入激活函數(shù)生成當(dāng)前層的神經(jīng)元,即構(gòu)成該層不同局部特征的特征圖。卷積層的計(jì)算公式如式(10)所示:
在式(10)中,?為卷積操作,l為當(dāng)前層,l-1為上一層,為第l層的第j個(gè)特征圖,為上一層的第i個(gè)特征圖,Wi,j為當(dāng)前層第j個(gè)特征圖與前一層第i個(gè)特征圖之間的卷積核,為當(dāng)前層的第j個(gè)特征圖的偏置量,M為當(dāng)前層所有特征圖的數(shù)量,θ(·)為激活函數(shù),這里可以使用Sigmoid或者ReLU來(lái)實(shí)現(xiàn),激活函數(shù)使得訓(xùn)練后得神經(jīng)網(wǎng)絡(luò)具有稀疏性,可以很好地解決參數(shù)調(diào)整過(guò)程中梯度消失的問(wèn)題,從而加速網(wǎng)絡(luò)收斂。
隨著層數(shù)增加,特征圖的個(gè)數(shù)也隨之增加,使得維度變大,網(wǎng)絡(luò)的計(jì)算成本增大,為了解決此問(wèn)題,通常對(duì)特征圖進(jìn)行下采樣降維,這就是池化層的作用,相當(dāng)于選取了部分具有代表性的特征來(lái)代替原來(lái)全部的特征,通常采用最大池化(Max-pooling)操作來(lái)進(jìn)行下采樣,若下采樣的窗口的大小為n×n,則經(jīng)過(guò)一次池化層后,特征圖大小為初始特征圖的1/n2,其計(jì)算公式如式(11)所示:
在經(jīng)過(guò)最后一次池化層后,接入全連接層,由于要求此時(shí)輸入必須是一維數(shù)組,在完成池化操作后的特征圖轉(zhuǎn)換為多個(gè)一維向量,再以串聯(lián)形式連接起來(lái),形成的特征向量作全連接層的輸入。全連接層上的每個(gè)神經(jīng)元的輸出計(jì)算公式如式(12)所示:
其中,hw,b(x)為神經(jīng)元的輸出,x為神經(jīng)元的輸入的特征向量,w為權(quán)值向量,b為加性偏置。
經(jīng)全連接層輸出后接入最后的分類層,在分類層中,每一個(gè)神經(jīng)元輸出待測(cè)樣本所屬類別的概率值,最終選取概率值最大的神經(jīng)元作為待測(cè)樣本的分類結(jié)果。
從以上可知,訓(xùn)練過(guò)程就是神經(jīng)網(wǎng)絡(luò)的向前傳播以及反向傳播過(guò)程,而測(cè)試過(guò)程就是只包括神經(jīng)網(wǎng)絡(luò)的向前傳播過(guò)程。
在定位字符時(shí),與掃描線檢測(cè)字符以及Faster RCNN定位方法進(jìn)行了對(duì)比,結(jié)果如表1所示:
表1
將CNN分類方法與利用LBP、HOG特征來(lái)進(jìn)行SVM分類方法進(jìn)行了對(duì)比,結(jié)果如表2所示:
表2
測(cè)試環(huán)境均為Windows 10操作系統(tǒng),CPU型號(hào)為Inter i5-4200U,內(nèi)存4G,樣本總數(shù)為33070個(gè),其中訓(xùn)練樣本為23149個(gè),待測(cè)試樣本為9921個(gè),將樣本分為37類,其中包括數(shù)字字符10類、英文字符26類以及其他字符1類。從表1、表2可以看出,連通區(qū)域法在時(shí)間性能上是較優(yōu)的,CNN在性能上是較優(yōu)的,兩者結(jié)合能達(dá)到快速且高精度的效果。當(dāng)字符歷經(jīng)檢測(cè)分割識(shí)別后,字符間根據(jù)坐標(biāo)對(duì)應(yīng)關(guān)系可整理成多行字符,并輸出結(jié)果。
OCR一直是圖像處理領(lǐng)域的熱點(diǎn),有著十分廣泛的應(yīng)用場(chǎng)景,本文采用輪廓方法檢測(cè)字符,用深度學(xué)習(xí)的方法識(shí)別字符,既保證了時(shí)間上的快速性,又保證了極高的準(zhǔn)確率。經(jīng)大量測(cè)試,在Intel i5處理器的計(jì)算機(jī)配置下,平均檢測(cè)識(shí)別準(zhǔn)確率大于95%,平均識(shí)別時(shí)間小于0.1秒,單個(gè)字符最小識(shí)別尺寸為1.5mm×1.5mm,能夠在實(shí)際生產(chǎn)線中穩(wěn)定工作運(yùn)行。
參考文獻(xiàn):
[1]Ren S,Girshick R,Girshick R,et al.Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks[J].IEEE Transactions on Pattern Analysis&Machine Intelligence,2017,39(6):1137.
[2]Redmon J,Divvala S,Girshick R,et al.You Only Look Once:Unified,Real-Time Object Detection[C].IEEE Conference on Computer Vision and Pattern Recognition.IEEE Computer Society,2016:779-788.
[3]Goodfellow I J,Bulatov Y,Ibarz J,et al.Multi-digit Number Recognition from Street View Imagery using Deep Convolutional Neural Networks[J].Computer Science,2013.
[4]任艷斐.直方圖均衡化在圖像處理中的應(yīng)用[J].科技信息,2007,(4):37-38.
[5]李了了,鄧善熙,丁興號(hào).基于大津法的圖像分塊二值化算法[J].微計(jì)算機(jī)信息,2005(24):76-77.
[6]高紅波,王衛(wèi)星.一種二值圖像連通區(qū)域標(biāo)記的新算法[J].計(jì)算機(jī)應(yīng)用,2007,27(11):2776-2777.
[7]周飛燕,金林鵬,董軍.卷積神經(jīng)網(wǎng)絡(luò)綜述[J].計(jì)算機(jī)學(xué)報(bào),2017,40(6):1229-1251.
[8]Zhao Z H,Yang S P,Zeng-Qiang M A.License Plate Character Recognition Based on Convolutional Neural Network LeNet-5[J].Journal of System Simulation,2010,22(3):638-641.