汪 愿
(三峽大學 電氣與新能源學院,湖北宜昌 443000)
自動識別和人工智能技術(shù),特別是數(shù)字自動識別技術(shù)在人類日常生活中發(fā)揮著重要作用。人工神經(jīng)網(wǎng)絡(luò)是由大量的、簡單的處理單元組成的相對復雜的網(wǎng)絡(luò)系統(tǒng)。人工神經(jīng)網(wǎng)絡(luò)具有大規(guī)模并行,分布式存儲和處理,自組織和自主學習的許多功能。神經(jīng)網(wǎng)絡(luò)的自動識別技術(shù)發(fā)展與神經(jīng)科學、數(shù)學科學、計算機科學、人工智能和信息科學密切相關(guān)。神經(jīng)網(wǎng)絡(luò)獨特的非線性自適應信息處理能力彌補了人類先前的直覺、語言識別和非線性自適應信息處理能力的人工智能方法的一些缺點。它在神經(jīng)科學系統(tǒng)、智能控制、組合優(yōu)化、模式識別和預測等領(lǐng)域得到了很好的應用。近年來,人工神經(jīng)網(wǎng)絡(luò)正在模擬人類認知的道路上進一步發(fā)展。現(xiàn)在人們將遺傳算法。模糊系統(tǒng)和進化機制結(jié)合起來形成智能計算,成為人工智能的重要研究方向。MATLAB軟件包含用于解決各種應用問題的Toolbox工具,可以根據(jù)自己的需要調(diào)用與神經(jīng)網(wǎng)絡(luò)設(shè)計和培訓相關(guān)的工具箱,不需要那些繁瑣的編程,可以省去很多麻煩,更好地集中精力去思考和解決設(shè)計者需要的一些問題。通過MATLAB軟件,可實現(xiàn)BP神經(jīng)網(wǎng)絡(luò)實現(xiàn)手寫數(shù)字圖像的識別[1-10]。本研究采用仿真獲取大量手寫數(shù)字的識別正確概率,為其他手寫數(shù)字識別系統(tǒng)設(shè)計和實際應用方案選取時提供參考。
圖像二值化是按照一定的標準將圖像分為黑白兩種顏色。二值化處理將圖像上的點的灰度值進行設(shè)置。將手寫數(shù)字圖像的黑白效果明顯呈現(xiàn)出來,這方便對數(shù)字圖像在技術(shù)上進行下一步處理。圖像像素值的點的位置與圖像集合性質(zhì)有關(guān),這里對像素的多級值不需要進行過多處理,圖像數(shù)據(jù)和壓縮量大大減小。為了二值圖像更方便處理,這里判定像素灰度值大于等于閾值認定是特定物體,255為其灰度值,否則這些像素點被排除在物體區(qū)域以外,灰度值為0,表示背景或者例外的物體區(qū)域。
有些特定的物體其有均勻的灰度值在內(nèi)部,當這些物體在具有其他等級灰度值的均勻區(qū)域背景條件下,要得到較好的分割圖像效果需要通過閾值法。遇到物體和背景在灰度值沒有差別表現(xiàn)出來的時候,可以轉(zhuǎn)化為灰度上的差別,分割數(shù)字圖像時通過閾值選取技術(shù)來實現(xiàn)。動態(tài)觀察分割圖像的具體結(jié)果可以通過動態(tài)調(diào)節(jié)閥值實現(xiàn)。數(shù)字字符圖像二值化后,需要真實再現(xiàn)原始數(shù)字及其基本要求,筆畫中不出現(xiàn)空白點,要保持原來筆畫結(jié)構(gòu)特征,可以在要顯示的圖像中看到更多細節(jié)。
由于二值化圖像字體模糊,需要進行漸變銳化。漸變銳化在消除噪聲方面也起著重要作用,其中使用Roberts算子銳化圖像,可以清楚模糊邊緣,選擇適當?shù)拈撝悼梢詼p少和消除小噪聲。經(jīng)過預處理后,不同大小和不規(guī)則分布的原始字符變成相同大小和整齊排列的字符。每個功能都有其自身的局限性,所有這些都旨在突出顯示圖像的某些功能,簡化甚至忽略其他方面的功能,導致信息丟失。只要能夠提及具體的、客觀的和現(xiàn)實的特征,那些丟失的二級信息對于某些問題(如指紋識別和文字識別)的影響可以忽略不計。這里采用逐個像素的特征提取方法,遇到白色像素時,其特征值為0。在完成掃描之后,形成具有與圖像中的像素數(shù)量相同的像素數(shù)的特征向量矩陣。特征提取是系統(tǒng)設(shè)計的重點和難點,與整個設(shè)計方案的成敗有關(guān)。
在神經(jīng)網(wǎng)絡(luò)中,應用較多的是多層感知器。三層感知器中,b為偏值,輸入向量為X=(x1,x2,…xi,…xn)T;輸出層輸出向量為Y=(y1,y2,…yj,…yi)T;隱藏層輸出向量為O=(o1,o2,…ok,…ot)T;期望輸出向量為D=(d1,d2,...dk,...dt)T;輸入層到輸出層的權(quán)值為V1=(v11,v12,...v1j,...v1m)T,V2=(v21,v22,...v2j,...v2m)T。
對隱藏層有:
對輸出層有:
式中,變換函數(shù)f(x)均為單極性sigmoid函數(shù)f(x)=具有連續(xù)可導特點 ,f'(x)=f(x)[1-f(x)],以上共同構(gòu)成三層感知器的數(shù)學模型。
本設(shè)計采用將輸出值作為線性方程組,對訓練樣本任意選定一組自由權(quán)值,作為輸入層,與隱藏層之間的固定自由權(quán)。通過傳遞函數(shù)計算隱藏層的實際輸出,再將輸出層與隱藏層間的權(quán)值作為待求量,直接將目標輸出作為等式的右邊建立方程組來求解。BP算法包含兩個過程:第一是正向輸入過程,將采樣信息從第一層輸入層輸入,然后一層一層地逐層處理并將信息傳遞下去,直到最后的輸出層,當輸出層的輸出信息和需要的預期值不一致時,就會進入第二個過程;第二過程是將第一過程最后實際輸出反向傳播,通過隱藏層將輸出信息傳到輸入層,并將誤差信息分發(fā)下去給其他單元層,因此,這些誤差信號將作為校正的權(quán)值基礎(chǔ)。輸入信號在正方向傳播過程中循環(huán),不斷調(diào)整權(quán)值和減少誤差的過程就是神經(jīng)網(wǎng)絡(luò)的學習和訓練過程,直到最終訓練結(jié)果誤差達到可以接受的水平。該過程是輸入一個學習樣本,并使用反向傳播算法重復訓練和調(diào)整網(wǎng)絡(luò)的權(quán)重和偏差,以便目標盡可能接近預期目標。其主要目的是回退輸出誤差,并將誤差分布到每一層的所有單元,以獲得每層單元的誤差信號并校正每個單元的權(quán)重。當網(wǎng)絡(luò)輸出層錯誤小于指定值時,訓練完成。
BP網(wǎng)絡(luò)的設(shè)計主要包括輸入層和隱含層,輸出層和各層之間的傳遞函數(shù)關(guān)系。大多數(shù)神經(jīng)網(wǎng)絡(luò)具有預定義的網(wǎng)絡(luò)層,并且BP神經(jīng)網(wǎng)絡(luò)可以包含不同的隱藏層。多層神經(jīng)網(wǎng)絡(luò)至少有一層或多層,每層神經(jīng)元的數(shù)目有一個或多個。構(gòu)建一個訓練樣本集,一些網(wǎng)站也有經(jīng)過訓練的數(shù)據(jù)集供實驗使用。然后構(gòu)造訓練t所需的輸入向量p和目標向量。實際上,它是調(diào)整這兩個參數(shù)的權(quán)重和偏移量。正向傳輸,輸出值的逐層傳輸。反向反饋,將層中的權(quán)重和偏差值向后調(diào)整。
MATLAB的圖像處理和工具箱能支持的圖像形式有RGB圖像、二進制圖像、灰度圖像等并且能夠處理BMP、JPG、TIFD等不同格式文件。程序完成以后就是GUI界面設(shè)計,設(shè)計的界面盡量以簡潔為主,能夠?qū)崿F(xiàn)所有功能的分布執(zhí)行,按照順序依次進行。GUI設(shè)計主要利用GUIDE編輯器進行。GUIDE編輯器可以快捷地進行GUI界面設(shè)計卻不需要那些復雜的函數(shù),GUIDE是以對象為主體的思想,使GUI設(shè)計更加方便靈活。
測試以20組0到9的50個阿拉伯手寫數(shù)字,只對手寫數(shù)字的圖像進行處理,不進行其他的前期處理。通過前期實驗準備步驟,將準備好的手寫數(shù)字圖像進行多次的訓練,直到達到我們需要的權(quán)值要求和誤差精度。將準備好的手寫數(shù)字圖片放入測試集中,通過仿真軟件處理圖像。逐一測試每一張手寫數(shù)字圖片,記錄下每一次測試結(jié)果。經(jīng)過多次的實驗,數(shù)字識別率高達99%,達到了預期,仿真實驗結(jié)果見表1。
表1 實驗仿真結(jié)果
通過實驗仿真得到手寫數(shù)字圖像的基本特征。通過大量的訓練次數(shù)與權(quán)值優(yōu)化保證識別正確率。仿真結(jié)果表明,該方法可實現(xiàn)手寫數(shù)字圖像的快速識別,且有效消除圖片嘈雜等干擾因素對識別產(chǎn)生的負面影響,從而為手寫數(shù)字識別系統(tǒng)設(shè)計和實際應用方案選取時提供參考。