李少輝,周 軍,劉 波,錢俞好,吳閩儀
(河海大學(xué) 機(jī)電工程學(xué)院,江蘇 常州 213000)
近年來,為了進(jìn)一步提升生產(chǎn)車間流水線的自動(dòng)化水平,提高生產(chǎn)效率,大部分流水線開始采用機(jī)器視覺產(chǎn)品代替人眼來識別產(chǎn)品上的文本信息,如生產(chǎn)日期、產(chǎn)品批號、條形碼等[1]。傳統(tǒng)的文字識別分類器有模板匹配、支持向量機(jī)等,早在20世紀(jì)80年代,OCR技術(shù)就已進(jìn)入商用階段,但是對文字背景的要求很高,需要很好的成像質(zhì)量;近年來,隨著人工神經(jīng)網(wǎng)絡(luò)技術(shù)在很多問題上有著突破性進(jìn)展,該技術(shù)也被引入文本識別領(lǐng)域中。2014年ICPR會議上,微軟亞洲研究院團(tuán)隊(duì)訓(xùn)練的一個(gè)淺層BP神經(jīng)網(wǎng)絡(luò)在自然場景文字檢測的標(biāo)準(zhǔn)數(shù)據(jù)集上取得了92.1%的檢測精度,讓自然場景圖像中的文字檢測實(shí)現(xiàn)了突破[2];谷歌公司2015年發(fā)布的tensorflow深度學(xué)習(xí)框架中,深度卷積神經(jīng)網(wǎng)絡(luò)對手寫數(shù)字圖片集MNIST的識別準(zhǔn)確率達(dá)到了99%以上[3]。
由于大部分產(chǎn)品的文本信息是印刷體字符,包含較多的噪聲和缺陷,且文本背景比較復(fù)雜,本文采用傳統(tǒng)的圖像處理方法和一種改進(jìn)BP神經(jīng)網(wǎng)絡(luò)對流水線產(chǎn)品上的文本信息進(jìn)行識別。
圖片預(yù)處理過程包括彩色圖像灰度化、二值化、傾斜矯正等[4]。由于產(chǎn)品的文本圖片由于放置問題可能出現(xiàn)傾斜現(xiàn)象,對后續(xù)的字符分割和識別產(chǎn)生影響,本文提出了基于仿射變換的傾斜校正方法。
大部分彩色圖片采用RGB系統(tǒng),所包含的信息量巨大。為了減少運(yùn)算量,需要將彩色圖像轉(zhuǎn)換為灰度圖像,即圖像的每一個(gè)像素顏色RGB各個(gè)分量的值都相等[5]。
灰度化處理后,將圖像二值化變成只有黑和白兩色圖像的過程稱為二值化處理。二值化可以在簡單的場景中通過閾值化處理得到。閾值化是輸入圖像f到輸出圖像g的變換,即:
(1)
式中:T—閾值;g(i,j)—二值化后的圖像像素;f(i,j)—原始圖像像素,當(dāng)f(i,j)≥T時(shí)為前景圖像,否則為背景圖像。
在工業(yè)環(huán)境光照不均勻的情況下圖像的灰度變化較大,整幅圖像不存在合適的單一閾值,因此可采用多閾值法進(jìn)行二值化處理,但其算法時(shí)間和空間復(fù)雜度較大。本文先采用均值濾波的方法對圖像做整體濾波處理,然后使用Ostu自適應(yīng)閾值法選取二值化閾值。其基本思想是:對于圖像f(i,j),前景(即目標(biāo))和背景的分割閾值記作T,則類間方差可表述為:
g=?0?1(μ0-μ1)^2
(2)
式中:g—類間方差;?0—前景的像素點(diǎn)數(shù)占整幅圖像的比例;?1—背景像素點(diǎn)數(shù)占整幅圖像的比例;μ0—前景的像素點(diǎn)的平均灰度;μ1—背景的像素點(diǎn)的平均灰度。
采用遍歷的方法得到使類間方差g最大的閾值T,即為所求閾值。
流水線上某產(chǎn)品的標(biāo)簽圖像,以及采用自適應(yīng)閾值法將標(biāo)簽二值化后的圖像如圖1所示。
圖1 原始圖像和二值化后的圖像
由圖1可以很清楚地看到白色區(qū)域是文本區(qū)域。
圖片傾斜會影響后續(xù)字符的分割和識別[6],圖片傾斜校正的過程如圖2所示。
圖2 傾斜校正流程
1.2.1 形態(tài)學(xué)處理與輪廓檢測
形態(tài)學(xué)變換膨脹采用向量加法對兩個(gè)集合進(jìn)行合并[7]:
X⊕B={P∈ε2,P=x+b,x∈X且b∈B}
(3)
式中:X—原始圖像;B—膨脹元素結(jié)構(gòu);P—合并后的圖像。
將二值化后的圖像分別采用30×20,50×40的結(jié)構(gòu)元素膨脹,結(jié)果如圖3所示。
圖3 采用不同膨脹核膨脹后的結(jié)果
圖像處理中用canny,sobel等算子進(jìn)行圖像的邊緣檢測[7],該過程通過圖片中像素值的不同可以將圖片的邊界檢測出來,但在處理中,并沒有把邊界被當(dāng)做一個(gè)整體。輪廓檢測過程正是將所檢測出來的邊緣像素進(jìn)行整合,將其組裝在一起。具體實(shí)現(xiàn)過程如下:掃描圖像中的全部像素,當(dāng)掃描到連通域中的一個(gè)像素點(diǎn)時(shí),從該像素點(diǎn)開始,對邊界上的像素點(diǎn)進(jìn)行記錄,當(dāng)邊界輪廓是一個(gè)整體的時(shí)候,回到前一個(gè)位置,進(jìn)行新的掃描過程。
1.2.2 創(chuàng)建最小包圍矩形并計(jì)算傾斜角度
為了獲取文本區(qū)域的傾斜角度,需要做輪廓的最小外接矩形。最小包圍矩形的寬、高及傾斜角度如圖4所示。
圖4 最小包圍矩形及其傾斜角度
1.2.3 仿射變換
仿射變換[8]保持了二維圖形的“平直性”和“平行性”。本研究采用的變換形式是旋轉(zhuǎn)。變換后的圖像坐標(biāo)為:
(4)
旋轉(zhuǎn)后的圖像如圖5所示。
圖5 旋轉(zhuǎn)后的圖像
文字的切分是文字識別的很重要的一個(gè)環(huán)節(jié)[9]。目前主要的切分方法有經(jīng)典切分法、連通區(qū)域切分法、基于識別的切分法、投影法等。這里采用投影法。
圖像的投影一般情況下是沿著垂直或者水平的方向,即沿著列或者行的方向,這樣得到的投影被稱作為豎直和水平投影。圖像I(x,y)在x軸和y軸上的投影表示為:
(5)
(6)
式中:I(x)—垂直投影圖;I(y)—水平投影圖;I(x,y)—原始圖像;W—圖像寬度;H—圖像的高。
筆者利用水平投影將文本的每一行分割出來,然后再采用垂直投影將每個(gè)字符分割開來。為了將分割出來的字符尺寸統(tǒng)一到標(biāo)準(zhǔn)模板大小,需要將字符進(jìn)行歸一化處理[10]。
目前用于字符識別的方法已經(jīng)有很多種,如模板匹配、支持向量機(jī)算法等。由于大多數(shù)流水線產(chǎn)品上的印書體字符噪點(diǎn)和缺陷較多,以上幾種文字方法識別準(zhǔn)確率較低。BP神經(jīng)網(wǎng)絡(luò)[11]結(jié)構(gòu)簡單、可操控性好,因此在實(shí)際應(yīng)用中廣受歡迎。
筆者將每一個(gè)字符種類的模板庫作為神經(jīng)網(wǎng)絡(luò)的一個(gè)輸入神經(jīng)元,建立三層BP神經(jīng)網(wǎng)絡(luò)模型,如圖6所示。
在網(wǎng)絡(luò)如此發(fā)達(dá)的今天,應(yīng)鼓勵(lì)學(xué)生充分利用網(wǎng)絡(luò)視頻,視頻中圖文并茂的講解,可以使學(xué)生一下子明白操作的要點(diǎn),比起看課本來說,效率要高很多,收到事半功倍的結(jié)果。比如在百度視頻輸入“水蒸氣蒸餾”,就可以了解水蒸氣蒸餾的原理、要求條件、儀器的安裝及注意的要點(diǎn)。這樣,學(xué)生不僅學(xué)習(xí)了具體的知識,更重要的是培養(yǎng)了他們的自學(xué)能力,而這種自學(xué)能力的培養(yǎng),在以后的學(xué)習(xí)和科研工作中發(fā)揮著重要的作用;再則,學(xué)生在網(wǎng)絡(luò)上學(xué)習(xí)時(shí),會感知自身知識的不足,從而進(jìn)一步激發(fā)他們的求知欲,取得更大的進(jìn)步。
圖6 神經(jīng)網(wǎng)絡(luò)模型
輸入層到隱含層采用RELU非線性激活函數(shù)為;
X2=max(0,θ1X1+b)
(7)
隱含層到輸出層采用softmax激活函數(shù)為:
(8)
式中:h(x)—訓(xùn)練獲得的輸出層結(jié)果;θ2—隱含層到輸出層權(quán)值。
由代價(jià)函數(shù)獲得輸出層誤差,即:
(9)
式中:J(θ)—訓(xùn)練誤差;m—樣本數(shù)量;y—網(wǎng)絡(luò)輸出值。
反向傳播采用梯度下降法不斷更新權(quán)值,即:
(10)
式中:η—學(xué)習(xí)速率;θj—最小誤差下的權(quán)值θj(j=0,1,…n)。
在BP神經(jīng)網(wǎng)絡(luò)參數(shù)中,學(xué)習(xí)速率η(0<η<1)的取值直接影響到學(xué)習(xí)網(wǎng)絡(luò)的收斂速度。為了提高學(xué)習(xí)速度,應(yīng)選用較大的η值,而η太大卻可能導(dǎo)致在穩(wěn)定點(diǎn)附近振蕩,甚至不收斂。因此,學(xué)習(xí)速率必須小于某一上限,這就使得BP算法的收斂速度受到影響。
自適應(yīng)學(xué)習(xí)速率算法通過檢查網(wǎng)絡(luò)權(quán)值的修正值是否降低了誤差函數(shù)來自動(dòng)調(diào)節(jié)學(xué)習(xí)速率大小,使得網(wǎng)絡(luò)總是以最大的可接受學(xué)習(xí)速率進(jìn)行訓(xùn)練[12]。當(dāng)觀測到連續(xù)兩次訓(xùn)練的網(wǎng)絡(luò)誤差值減小時(shí),則增大學(xué)習(xí)速率,以期縮短學(xué)習(xí)時(shí)間;此時(shí),若誤差的反彈在允許的范圍內(nèi),則保持學(xué)習(xí)速率;而當(dāng)誤差增大時(shí),則及時(shí)減小學(xué)習(xí)速率值,直至網(wǎng)絡(luò)誤差收斂為止。常見的自適應(yīng)學(xué)習(xí)速率調(diào)整公式為:
(11)
式中:β1,β2—學(xué)習(xí)速率調(diào)整比例因子;ξ—允許反彈誤差系數(shù);E(t)—網(wǎng)絡(luò)誤差;β1>1,0<β2<1,ξ通常略大于1。
3.2.2 附加動(dòng)量法
BP神經(jīng)網(wǎng)絡(luò)算法的反向傳播實(shí)質(zhì)上是采用隨機(jī)梯度下降法,從隨機(jī)起點(diǎn)沿代價(jià)函數(shù)梯度方向逐漸使代價(jià)函數(shù)的值達(dá)到最小的過程。代價(jià)函數(shù)為一個(gè)凹凸不平的多維空間的超曲面,存在較多的局部極小值點(diǎn),因此訓(xùn)練網(wǎng)絡(luò)時(shí)可能陷入某一極小值,使訓(xùn)練出的網(wǎng)絡(luò)模型失去泛化能力。
附加動(dòng)量法是在每個(gè)權(quán)值的變化上加上一項(xiàng)正比于前次權(quán)值變化的值,并根據(jù)反向傳播法產(chǎn)生新的權(quán)值變化。該方法使模型在更新梯度時(shí),不僅考慮了誤差在梯度上的作用,而且考慮了誤差曲面上變化趨勢的影響。帶有動(dòng)量因子的權(quán)值更新公式為:
(12)
本研究以Visual studio和Opencv為實(shí)驗(yàn)平臺,采用三層改進(jìn)BP神經(jīng)網(wǎng)絡(luò)對5 000張字符圖片(含100種字符,每種字符含50張不同的圖片)進(jìn)行學(xué)習(xí),其中隱含層神經(jīng)元個(gè)數(shù)為128,學(xué)習(xí)速率取η=0.01,動(dòng)量因子α取0.9,學(xué)習(xí)速率衰減系數(shù)取0.1,最終模型的訓(xùn)練精度為94.6%,測試精度為93.8%。本研究調(diào)用訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型,將訓(xùn)練集中沒有出現(xiàn)過的新字符圖片輸入訓(xùn)練好的模型中。無噪聲和缺陷的字符圖片在不同識別方法下的識別正確率和模型的訓(xùn)練時(shí)間如表1所示。
表1 無噪聲和缺陷的字符圖片識別結(jié)果
有噪聲和缺陷的字符圖片中不同識別方法識別正確率和模型的訓(xùn)練時(shí)間如表2所示。
表2 有噪聲和缺陷的字符圖片識別結(jié)果
對比分析實(shí)驗(yàn)結(jié)果:表1表明改進(jìn)的神經(jīng)網(wǎng)絡(luò)方法對于訓(xùn)練集的依賴性較小,適用于訓(xùn)練集中沒有出現(xiàn)的新圖片。傳統(tǒng)的模板匹配方法對模板的依賴度較高,對新圖片的適應(yīng)能力較弱;而基于支持向量機(jī)的方法在訓(xùn)練大型樣本時(shí),時(shí)間代價(jià)高且準(zhǔn)確率較低,與之相比,本文采用的方法有較強(qiáng)的魯棒性和識別率;表2表明傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)泛化能力較弱,在含有噪聲和缺陷的字符圖片中識別準(zhǔn)確率明顯降低,而改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)不易陷入局部極小值,使網(wǎng)絡(luò)具有了一定的穩(wěn)定性,在含有噪聲和缺陷的低質(zhì)量文本圖片中仍能保持較高的識別準(zhǔn)確率,且有效縮短了網(wǎng)絡(luò)模型的訓(xùn)練時(shí)間。
本文詳細(xì)論述了一種基于改進(jìn)BP神經(jīng)網(wǎng)絡(luò)的流水線產(chǎn)品上的低質(zhì)量文本識別的全過程,包括了圖像的預(yù)處理、文本字符的切分與歸一化和字符識別方法等,主要結(jié)果有:
(1)解決了由于圖片傾斜而不能進(jìn)行精確字符分割的問題;
(2)使用學(xué)習(xí)速率自適應(yīng)調(diào)整策略和附加動(dòng)量法改進(jìn)了BP神經(jīng)網(wǎng)絡(luò),顯著提高了網(wǎng)絡(luò)模型的識別準(zhǔn)確率并有效縮短了神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練時(shí)間。與傳統(tǒng)的模板匹配、支持向量機(jī)和傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)相比,模型的泛化能力和魯棒性較強(qiáng)。