王雪冰,姜道義,張海洋
(中國石油大學勝利學院 基礎(chǔ)科學學院,山東 東營 257061)
從1958年感知器提出后,人們對于神經(jīng)網(wǎng)絡(luò)的探索進入一個新的時代。但是感知器只能進行線性分類,不能應用于復雜的模式識別領(lǐng)域。1985年BP(back propagation)神經(jīng)網(wǎng)絡(luò)的提出,系統(tǒng)解決了多層神經(jīng)網(wǎng)絡(luò)隱含層連接權(quán)中的學習問題。但是在文字識別方面都沒有取得突破性的進展,直到第一個二維卷積神經(jīng)網(wǎng)絡(luò)SIANN的出現(xiàn)才真正打開神經(jīng)網(wǎng)絡(luò)在圖像識別領(lǐng)域的大門。文字識別的基本原理為將輸入文字與經(jīng)神經(jīng)網(wǎng)絡(luò)訓練的模型進行模式匹配,計算類似度,將具有最大類似度的文字作為識別結(jié)果[1]。計算機視覺在手寫數(shù)字識別中第一個取得巨大成就的是Yann LC等(1998)提出的LeNet-1卷積神經(jīng)網(wǎng)絡(luò)系統(tǒng),包含了兩個卷基層、兩個全連接層、六萬個學習參數(shù)。
人工神經(jīng)網(wǎng)絡(luò)的發(fā)明起源于生物神經(jīng)網(wǎng)絡(luò),是一種模仿生物神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)及功能的數(shù)學模型和計算模型,可以根據(jù)外界的輸入信息改變內(nèi)部神經(jīng)節(jié)點的參數(shù),具備學習功能。
人工神經(jīng)網(wǎng)絡(luò)中由大量神經(jīng)元相連接,能夠模仿人腦的信息處理功能對高復雜性信息進行處理,同時可以抽象出同類信息的模型,對新接收的信息進行分類。
第一個卷積神經(jīng)網(wǎng)絡(luò)是由Alexander W等(1987)提出的時間延遲網(wǎng)絡(luò)(time delay meural network, TDNN),主要應用于語音識別。Yann LC等(1998)提出的LeNet-5,實現(xiàn)手寫字體識別的功能,并且定義了現(xiàn)代卷積神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)。CNN結(jié)構(gòu)包括采樣層與卷積層,兩者交替而成[2]。
卷積神經(jīng)網(wǎng)絡(luò)屬于前饋型神經(jīng)網(wǎng)絡(luò),具有平移旋轉(zhuǎn)不變性,所以非常適合圖片識別,能夠?qū)⒉煌较虻奈淖謭D像準確地識別出來。使用卷積神經(jīng)網(wǎng)絡(luò)進行識別的處理過程包括輸入、預處理、識別和后處理幾個過程[3]。
卷積神經(jīng)網(wǎng)絡(luò)主要包含輸入層、卷積層層、Inception模塊、全連接層、輸出層。輸入層可以輸入多維數(shù)據(jù),卷積層中包含卷積層和池化層,是進行計算的主要部分,全連接層競爭對輸出的響應機會,輸出層由邏輯函數(shù)輸出分類標簽。
將需要識別的單字圖像輸入神經(jīng)網(wǎng)絡(luò),大小為64×64像素的灰度文字圖片,文字顏色為白色,文字背景為黑色。
64×64對應著神經(jīng)網(wǎng)絡(luò)初始計算時圖像矩陣的大小;使用灰度圖是因為文字的表示不需要過多的參數(shù),過多的顏色便會增加過多的影響因素,而灰度圖只有一個0~255的色階,大大降低了顏色給文字識別帶來的困難;本試驗只做文字的識別,所以在前期處理圖像時只將圖片中的文字凸顯出來,而其他的因素歸為噪聲全部被過濾。
隱藏層由3個卷積層和3個池化層交替組成,負責對圖片進行網(wǎng)絡(luò)計算分析。
第一層卷積層使用64個5×5的卷積核對輸入的64×64像素的圖像進行卷積運算,設(shè)輸入的圖片矩陣為A,并使用ai,j(i=0,1,…,63;j=0,1,…,63)表示A中的對應元素;設(shè)由第一層卷積層輸出的矩陣為B,并使用bi,j(i=0,1,…,59;j=0,1,…,59)表示經(jīng)歷本次卷積輸出B的元素,由卷積的運算公式將A經(jīng)運算轉(zhuǎn)換為B,輸入層和輸出層的各參數(shù)如表1所示,
(1)
表1 第一層卷積尺寸計算
第一層池化層使用64個2×2的池化器對第一層卷積層輸出的60×60像素的圖像進行最大池化運算,輸入的是由第一層卷積后的矩陣B,設(shè)由第一層池化層輸出的矩陣為C,并使用Ci,j(i=0,1,…,29;j=0,1,…,29)表示經(jīng)歷本次卷積輸出的元素。使用最大池化運算公式將計算第一次池化結(jié)果,
ci,j=max(bi+m,j+n),m=0,1;n=0,1.
(2)
池化運算各參數(shù)如表2所示。第二層卷積層使用128個5×5的卷積核對第一層池化層輸出的30×30像素的圖像進行卷積運算,第二層池化層使用128個2×2的池化器對第二層卷積層輸出的26×26像素的圖像進行最大池化運算,第三層卷積層使用256個4×4的卷積核對輸入的13×13像素的圖像進行卷積運算,第三層池化層使用256個2×2的池化器對第三層卷積層輸出的10×10像素的圖像進行最大池化運算。
表2 第二層池化尺寸計算
接收由隱藏層輸出的參數(shù),并且通過ReLU函數(shù)計算神經(jīng)元的興奮度。
激活函數(shù)公式為
(3)
激活函數(shù)圖像[4]如圖1所示。
圖1 激活函數(shù)
由圖1可以看出ReLU函數(shù)是分段函數(shù),把小于零的部分映射成為零,大于零的部分保持不變,這樣為單向抑制函數(shù)。
輸出層一共有3 755個結(jié)點,分別對應3 755個漢字,通過分析全連接層輸入的興奮度,輸出識別出的相應漢字。
3.1.1 數(shù)據(jù)集的分類
數(shù)據(jù)集包含3 755個常用漢字,每個漢字有60張不同方向并且漢字大小不一的灰度圖,每張圖片大小為64×64像素。數(shù)據(jù)集又分為訓練集和測試集,訓練集由48張圖片組成,測試集由12張圖片組成。每張圖片以.jpg形式存儲,圖片像素點為漢字筆畫則其像素為0像素值,背景圖部分為255像素值。
3.1.2 數(shù)據(jù)集的生成
數(shù)據(jù)集由自定義生成模塊生成,在生成模塊中可自動讀取不同字體的TTF文件來確定生成的字體類型,還可自定義生成數(shù)據(jù)集圖片的寬度、高度。并且默認每種字體下,每個字的數(shù)據(jù)圖片共生成不同的30張,這個生成數(shù)量限制為每個字最多45張。
每個漢字數(shù)據(jù)集圖片的數(shù)量可通過增加TTF字體文件個數(shù)來解決,本試驗默認使用方正宋體和黑體來建立數(shù)據(jù)集。
圖像去噪是文字識別必不可少的環(huán)節(jié),在此環(huán)節(jié)中需要將待識別圖像(圖2)轉(zhuǎn)化為計算機易于處理形式,并消除與識別內(nèi)容無關(guān)的噪點(水印)。
文字識別的圖像不需要保留RGB顏色特征,灰度圖像即可以完整顯示文字特征,又能降低計算難度。在對圖片進行灰化處理的過程中,還需對顏色進行反轉(zhuǎn),目的是使文字的顏色為淺色,背景為深色(圖3)。
圖2 待識別的文字圖像
圖3 二值化后的文字圖像
將圖片轉(zhuǎn)化為灰度圖以后,需要對圖像進行去燥處理。因為截取的圖片是文檔,所以不存在光線對文字色澤的影響,而圖片中以文字的淺色為主?;一瓿珊?需要對圖片進行二值化處理,二值化的目的就是去除灰度處理后圖像殘存的模糊背景[5]??梢韵葘π∮?25以下的色階進行計數(shù),然后取數(shù)量對多的色階為峰值,并向右取大于峰值百分之十的數(shù)值k為整個圖片進行分化的界限。以灰度像素值k為分界線,大于k的像素值轉(zhuǎn)化為255,小于k像素值轉(zhuǎn)化為0,此處理目的是增強圖像的對比度并且去除圖像噪聲對識別的影響(圖4)。
圖4 去燥后的文字圖像
(4)
M′=MG(gi∈G,gi=1).
(5)
借用光伏識別理論將圖片進行二值化,因為二值化后的圖像每個像素只包含一個灰度值,可以將圖片按照公式(4)轉(zhuǎn)化為二維矩陣M。
對矩陣依照求和公式(5)進行按行求和,因為含有漢字筆畫的每一行求和后的數(shù)值均不為零,只需確定映射后不為零的行便可以將圖片中每一行的漢字提取出來(圖5)。
同理每一行中也可以按照以上方法提取出單個文字(圖6)。但是有些漢字是左右結(jié)構(gòu),可能將一個字分成左右兩個漢字,需進一步判斷文字是否被分割成兩個。
如圖7所示,已經(jīng)識別出需要分割的文字,但是可看出“別”字、“門”字被分割為兩個漢字,識別完后需要對分割出的字符進一步確認。取識別后行高的中位數(shù)為ptModeY,取識別后字寬的中位數(shù)為ptModeX。如果分割出圖片的寬度值比ptModeX大于20%,則將分割的結(jié)果舍棄;如果分割出圖片的寬度值不小于ptModeX的75%,則判斷此次分割正確,存儲分割后文字;如果分割出的圖片以及它之后圖片的寬度值的和小于ptModeX,則判斷這兩個分割圖片為一個字,并進行儲存。
圖5 提取行的文字圖像
圖6 識別出的文字
切割完的文字大小與輸入層需要的大小不一,需要經(jīng)過歸一化處理。歸一化處理分為位置歸一化處理和大小歸一化,位置歸一化處理需要將文字的位置定位于圖片的中間,大小歸一化處理需要將圖像大小存儲為64×64像素[6]。
特征提取是文字識別中最根本的一步,利用建立的卷積神經(jīng)網(wǎng)絡(luò)對分割后的單字圖片做特征值提取,對已有的模型進行比對,識別出文字的結(jié)果(圖7)。
圖7 文字識別結(jié)果
(1)基于卷積神經(jīng)網(wǎng)絡(luò)的漢字識別在常規(guī)理論條件下,準確率較高。但是本試驗針對數(shù)據(jù)集中每種文字圖片取樣數(shù)據(jù)偏少,圖片質(zhì)量偏差的特殊情況,通過增加不同字體以增加數(shù)據(jù)集的方法研究,進一步優(yōu)化識別的準確率和系統(tǒng)能力。
(2)文字的分割也是影響文字識別的重要因素,使用映射函數(shù)可以將排序整齊的文字切割,但對于多種復雜的情況卻束手無策。將識別-分割進行結(jié)合,針對識別相識度低,通過再將此部分文字進行組合識別模型構(gòu)建研究,從而優(yōu)化文字識別的等級。