基于BP神经网络的数字识别
主要內(nèi)容
1.課題研究背景
- 2 圖像預(yù)處理
- 3 模式識別
- 4識別效果
- 5總結(jié)
? 近年來,人工神經(jīng)網(wǎng)絡(luò)技術(shù)取得了巨大的發(fā)展,它所具有的優(yōu)勢:固有的并行結(jié)構(gòu)和并行處理、知識的分布存儲、容錯性、自適應(yīng)性、模式識別能力,為手寫體數(shù)字識別開辟了新的途徑。
? 數(shù)字識別作為模式識別的一個重要分支,在郵政、稅務(wù)、交通、金融等行業(yè)的實踐活動中有著及其廣泛的應(yīng)用。
? 數(shù)字識別作為模式識別領(lǐng)域的一個重要問題,也有著重要的理論價值。一方面,阿拉伯?dāng)?shù)字是世界各國通用 的符號,因此,數(shù)字是一個重要樞紐。在符號識別領(lǐng)域, 數(shù)字識別為這一領(lǐng)域提供了一個算法研究的平臺。另一方 面,數(shù)字的識別方法很容易推廣到其它一些相關(guān)問題,特 別是對英文字母的識別,但到目前為止機器的識別本領(lǐng)還 無法與人的認知能力相比,這仍是一個有難度的開放問題。
1.1.數(shù)字識別的發(fā)展現(xiàn)狀
? 模式識別 (Pattern Recognition)是對表征事物或現(xiàn)象的各種形式的(數(shù)值的、文字的和邏輯關(guān)系的)信息進行處理和分析,以對事物或現(xiàn)象進行描述、辨認、分類和解釋的過程。它是信息科學(xué)和人工智能的重要組成部分。而數(shù)字識別作為模式識別的一個分支。在日常生活和科研中具有十分重要的作用。數(shù)字識別的算法一般是采用以知識、神經(jīng)網(wǎng)絡(luò)、人工智能為基礎(chǔ)的模板匹配法、輪廓多邊形相關(guān)、傅立葉系數(shù)法等方法來進行識別的。以上方法識別效率高,但是實現(xiàn)較為復(fù)雜。
圖像預(yù)處理
- (1)彩色圖像的灰度化,圖像輸入后一般都是256色彩色圖像,灰度化后灰度圖像的RGB值是相等的,灰度值為255的像素為白色,灰度值為0的像素為黑色。
- (2)灰度圖像的二值化,彩色圖像灰度化后每像素只有一個值,即灰度值,二值化就是根據(jù)一定標(biāo)準(zhǔn)將圖像分成黑白二色。
- (3)梯度銳化,梯度銳化同時對噪聲也起一定的去除作用,采取Roberts算子對圖像銳化,可以讓模糊的邊緣變清楚,同時選用合適閾值可以減弱和消除細小的噪聲。
- (4)去離散噪聲,掃描整個圖像,當(dāng)發(fā)現(xiàn)一個黑色像素就考察和它直接或間接相連的黑色像素有多少,如果大于一定值(具體數(shù)值視情況定),就可以認為它非離散點,否則就認為他是離散點,將其從圖像中去掉。
- (5)歸一化調(diào)整, 先得到原來字符的高度,并與系統(tǒng)要求的高度比較,得出高度變換系數(shù),然后根據(jù)這個系數(shù)得到變換后應(yīng)有的寬度,得出高度、寬度后,把新圖像里的點按照插值的方法映射到原圖像。
圖像輸入
灰度轉(zhuǎn)化
二值化
圖像銳化
歸一化
去除噪聲
圖1 圖像處理流程
模式識別
?3.1.特征提取
? 經(jīng)過預(yù)處理,把原來大小不同、分布不規(guī)律的各字符變成大小一樣、排列整齊的字符。下面要從預(yù)處理完的字符中提取最能體現(xiàn)這一個字符的特征向量,將提取出的訓(xùn)練樣本中的特征向量代入BP網(wǎng)絡(luò)中就可以對BP網(wǎng)絡(luò)進行訓(xùn)練。提取出待識別的樣本中特征向量代入訓(xùn)練好的BP網(wǎng)絡(luò)中就可以進行識別。在這里采取逐像素特征提取法,方法是對圖像進行逐行逐列掃描,當(dāng)遇到黑色像素時,取其特征值為1,當(dāng)遇到白色像素時,取其特征值為0。這樣掃描結(jié)束后就形成一個維數(shù)與圖像中像素點的個數(shù)相同的特征向量矩陣。
3.2. BP神經(jīng)網(wǎng)絡(luò)
3.2.1. BP算法的多層感知器
圖2 三層BP網(wǎng)
采用BP算法的多層感知器是至今為止應(yīng)用最廣泛的神
經(jīng)網(wǎng)絡(luò),在多層感知器的應(yīng)用中,一般習(xí)慣將單隱層感知器稱為三層感知器,所謂三層包括了輸入層、隱層和輸出層。
知器
反向傳播(Backpropagation)算法:從后向前
(反向)逐層“傳播”輸出層的誤差,以間接算出隱層誤差。分兩個階段:
- 正向過程:從輸入層經(jīng)隱層逐層正向計算各單元的輸出。
- 反向過程:由輸出層誤差逐層反向計算隱層各單元的誤差,并用此誤差修正當(dāng)前層的權(quán)值。
正向過程
- 正向過程:
a ( k ) ?
f ( n
BP
算法
( k ) )
j j
n ( k ) ?
i
w ( k
) a ( k
? 1 ) ? ?
w ( k ) a
( k ? 1 )
j j i j i
梯度下降(gradient decent)
BP
算法
法
- 準(zhǔn)則函數(shù): sum squared error, SSE
1 S 2 1 T
j
J ? s s e ?
2 S ?
( t j
- a j )
? ( t ?
2 S
a ) ( t ? a )
- 權(quán)值修正: 梯度下降法
? w ? ??
? J
? ?? ? J
? n j
? ?? ? J
a ( k
? 1 )
j ? w ? n ? w ? n
j j j j
Case 1: 輸出層權(quán)值修正
BP
算法
? ? ? J
局部梯度
? ? J ? a j
? ? ( t
? a ) f ' ( n )
j
j ? n
j
? a j ? n j
j j j
擴展delta 學(xué)習(xí)規(guī)則
? w j ? ??? j
a ( k ? 1 )
? ?( t j
- a j ) f
' ( n
) a ( k ? 1 )
1 ' e ? n
a ? f
( n ) ?
1 ? e ? n
f ( n ) ?
(1 ?
e ? n ) 2
? a (1 ? a )
? w j
? ?( t j
- a j ) a
j (1 ?
a j ) a
( k ? 1 )
Case 2:隱層權(quán)值修正 算法
BP
后層的全部單元
? J
i
? j ?
? ? ? J
? n ( k ? 1 )
? a j
都受nj的影響
? n j i ? n i
? ? ? w f ' ( n )
? a j
? n j
nj w ni i
i j i j
i
aj ji
? w ? ???
a ( k
? 1 )
? ??( ?
? w f
' ( n
) )a
( k ? 1 )
j j i j i j
i
δj δi
w
ji
局部梯度的反向傳播
BP
算法
初始值選擇
W ( 0 )
a k ( t )
對輸出層計算δ
? j ?
( t j
- a j ) a
j (1 ?
a j )
反向計算:從后向前計算各隱層δ
? j ?
a j (1 ?
a j ) ?
i
w j i?i
計算并保存各權(quán)值修正量:
? w i j
? ??? j a i
修正權(quán)值:
w i j ( t
? 1 ) ?
w i j ( t )
- ? w i j
判斷是否收斂,如果收斂則結(jié)束,不收斂則轉(zhuǎn)至Step 2
3.2.2.BP算法過程
圖3 BP學(xué)習(xí)算法的流程圖
3.3BP神經(jīng)網(wǎng)絡(luò)設(shè)計與訓(xùn)練
? (1)BP神經(jīng)網(wǎng)絡(luò)的設(shè)計方法
? 按照BP神經(jīng)網(wǎng)絡(luò)設(shè)計方法選用兩層BP網(wǎng)絡(luò)。采用newff函數(shù)來建立BP網(wǎng)絡(luò)。其輸入節(jié)點數(shù)為16×16=256,隱層傳輸函數(shù)為Sigmoid函數(shù)。假設(shè)用一個輸出節(jié)點表示10個數(shù)字,則輸出層傳輸函數(shù)為pureline,隱層節(jié)點數(shù)為 ,取25。
? (2)神經(jīng)網(wǎng)絡(luò)仿真程序設(shè)計
? 構(gòu)造訓(xùn)練樣本集,并構(gòu)成訓(xùn)練所需的輸入向量p和目標(biāo)向量t. 通過畫圖工具獲得數(shù)字。本例構(gòu)造了新宋體12號、8號字體各10 個,黑體12號、8號各10個,及宋體加粗18號字體。
? (3)神經(jīng)網(wǎng)絡(luò)測試。
? 由于圖像處理的復(fù)雜性,對于不同噪聲的污染選擇不同的方法,選擇沒有噪聲的數(shù)字進行測試。選擇訓(xùn)練樣本中的任意數(shù)據(jù)進行測試,結(jié)構(gòu)非常正確。選擇生成的新宋體8號大小的數(shù)字進行測試。結(jié)果正確,選擇其他類型的字體進行測試,則結(jié)果不是完全正確。
仿真實驗識別效果
圖4 數(shù)字0的識別效果 圖5 數(shù)字4的識別效果
總結(jié)
? 本課題結(jié)合神經(jīng)網(wǎng)絡(luò)技術(shù),對數(shù)字識別問題進行了探討和研究,主要研究成果如下:(1)針對數(shù)字數(shù)據(jù),首先進行了灰度化、二值化、平滑去噪、歸一化、細化等常規(guī)預(yù)處理,然后對處理完的數(shù)字圖像進行特征提取, 提取了能體現(xiàn)字符特點的特征向量。(2)針對數(shù)字識別問題,研究了BP神經(jīng)網(wǎng)絡(luò)分類器的建立和識別過程。
? 仿真結(jié)果表明,對于字體和字號與訓(xùn)練樣本集相同 的測試樣本,無論圖像中的數(shù)字在什么位置,都可以識 別出來,而對于字體和字號與訓(xùn)練樣本集不同的測試樣 本,只有一部分能正確識別。并且對于帶有噪聲的數(shù)字, 運行程序的實驗結(jié)果是不理想的,所以本課題程序有待 于進一步的整理和調(diào)試。為提高識別率,可以增加訓(xùn)練 樣本,或通過增加字體的特征向量等途徑來解決。
基于BP神經(jīng)網(wǎng)絡(luò)的數(shù)字識別
主要內(nèi)容
1.課題研究背景
- 2 圖像預(yù)處理
- 3 模式識別
- 4識別效果
- 5總結(jié)
? 近年來,人工神經(jīng)網(wǎng)絡(luò)技術(shù)取得了巨大的發(fā)展,它所具有的優(yōu)勢:固有的并行結(jié)構(gòu)和并行處理、知識的分布存儲、容錯性、自適應(yīng)性、模式識別能力,為手寫體數(shù)字識別開辟了新的途徑。
? 數(shù)字識別作為模式識別的一個重要分支,在郵政、稅務(wù)、交通、金融等行業(yè)的實踐活動中有著及其廣泛的應(yīng)用。
? 數(shù)字識別作為模式識別領(lǐng)域的一個重要問題,也有著重要的理論價值。一方面,阿拉伯?dāng)?shù)字是世界各國通用 的符號,因此,數(shù)字是一個重要樞紐。在符號識別領(lǐng)域, 數(shù)字識別為這一領(lǐng)域提供了一個算法研究的平臺。另一方 面,數(shù)字的識別方法很容易推廣到其它一些相關(guān)問題,特 別是對英文字母的識別,但到目前為止機器的識別本領(lǐng)還 無法與人的認知能力相比,這仍是一個有難度的開放問題。
1.1.數(shù)字識別的發(fā)展現(xiàn)狀
? 模式識別 (Pattern Recognition)是對表征事物或現(xiàn)象的各種形式的(數(shù)值的、文字的和邏輯關(guān)系的)信息進行處理和分析,以對事物或現(xiàn)象進行描述、辨認、分類和解釋的過程。它是信息科學(xué)和人工智能的重要組成部分。而數(shù)字識別作為模式識別的一個分支。在日常生活和科研中具有十分重要的作用。數(shù)字識別的算法一般是采用以知識、神經(jīng)網(wǎng)絡(luò)、人工智能為基礎(chǔ)的模板匹配法、輪廓多邊形相關(guān)、傅立葉系數(shù)法等方法來進行識別的。以上方法識別效率高,但是實現(xiàn)較為復(fù)雜。
圖像預(yù)處理
- (1)彩色圖像的灰度化,圖像輸入后一般都是256色彩色圖像,灰度化后灰度圖像的RGB值是相等的,灰度值為255的像素為白色,灰度值為0的像素為黑色。
- (2)灰度圖像的二值化,彩色圖像灰度化后每像素只有一個值,即灰度值,二值化就是根據(jù)一定標(biāo)準(zhǔn)將圖像分成黑白二色。
- (3)梯度銳化,梯度銳化同時對噪聲也起一定的去除作用,采取Roberts算子對圖像銳化,可以讓模糊的邊緣變清楚,同時選用合適閾值可以減弱和消除細小的噪聲。
- (4)去離散噪聲,掃描整個圖像,當(dāng)發(fā)現(xiàn)一個黑色像素就考察和它直接或間接相連的黑色像素有多少,如果大于一定值(具體數(shù)值視情況定),就可以認為它非離散點,否則就認為他是離散點,將其從圖像中去掉。
- (5)歸一化調(diào)整, 先得到原來字符的高度,并與系統(tǒng)要求的高度比較,得出高度變換系數(shù),然后根據(jù)這個系數(shù)得到變換后應(yīng)有的寬度,得出高度、寬度后,把新圖像里的點按照插值的方法映射到原圖像。
圖像輸入
灰度轉(zhuǎn)化
二值化
圖像銳化
歸一化
去除噪聲
圖1 圖像處理流程
模式識別
?3.1.特征提取
? 經(jīng)過預(yù)處理,把原來大小不同、分布不規(guī)律的各字符變成大小一樣、排列整齊的字符。下面要從預(yù)處理完的字符中提取最能體現(xiàn)這一個字符的特征向量,將提取出的訓(xùn)練樣本中的特征向量代入BP網(wǎng)絡(luò)中就可以對BP網(wǎng)絡(luò)進行訓(xùn)練。提取出待識別的樣本中特征向量代入訓(xùn)練好的BP網(wǎng)絡(luò)中就可以進行識別。在這里采取逐像素特征提取法,方法是對圖像進行逐行逐列掃描,當(dāng)遇到黑色像素時,取其特征值為1,當(dāng)遇到白色像素時,取其特征值為0。這樣掃描結(jié)束后就形成一個維數(shù)與圖像中像素點的個數(shù)相同的特征向量矩陣。
3.2. BP神經(jīng)網(wǎng)絡(luò)
3.2.1. BP算法的多層感知器
圖2 三層BP網(wǎng)
采用BP算法的多層感知器是至今為止應(yīng)用最廣泛的神
經(jīng)網(wǎng)絡(luò),在多層感知器的應(yīng)用中,一般習(xí)慣將單隱層感知器稱為三層感知器,所謂三層包括了輸入層、隱層和輸出層。
知器
反向傳播(Backpropagation)算法:從后向前
(反向)逐層“傳播”輸出層的誤差,以間接算出隱層誤差。分兩個階段:
- 正向過程:從輸入層經(jīng)隱層逐層正向計算各單元的輸出。
- 反向過程:由輸出層誤差逐層反向計算隱層各單元的誤差,并用此誤差修正當(dāng)前層的權(quán)值。
正向過程
- 正向過程:
a ( k ) ?
f ( n
BP
算法
( k ) )
j j
n ( k ) ?
i
w ( k
) a ( k
? 1 ) ? ?
w ( k ) a
( k ? 1 )
j j i j i
梯度下降(gradient decent)
BP
算法
法
- 準(zhǔn)則函數(shù): sum squared error, SSE
1 S 2 1 T
j
J ? s s e ?
2 S ?
( t j
- a j )
? ( t ?
2 S
a ) ( t ? a )
- 權(quán)值修正: 梯度下降法
? w ? ??
? J
? ?? ? J
? n j
? ?? ? J
a ( k
? 1 )
j ? w ? n ? w ? n
j j j j
Case 1: 輸出層權(quán)值修正
BP
算法
? ? ? J
局部梯度
? ? J ? a j
? ? ( t
? a ) f ' ( n )
j
j ? n
j
? a j ? n j
j j j
擴展delta 學(xué)習(xí)規(guī)則
? w j ? ??? j
a ( k ? 1 )
? ?( t j
- a j ) f
' ( n
) a ( k ? 1 )
1 ' e ? n
a ? f
( n ) ?
1 ? e ? n
f ( n ) ?
(1 ?
e ? n ) 2
? a (1 ? a )
? w j
? ?( t j
- a j ) a
j (1 ?
a j ) a
( k ? 1 )
Case 2:隱層權(quán)值修正 算法
BP
后層的全部單元
? J
i
? j ?
? ? ? J
? n ( k ? 1 )
? a j
都受nj的影響
? n j i ? n i
? ? ? w f ' ( n )
? a j
? n j
nj w ni i
i j i j
i
aj ji
? w ? ???
a ( k
? 1 )
? ??( ?
? w f
' ( n
) )a
( k ? 1 )
j j i j i j
i
δj δi
w
ji
局部梯度的反向傳播
BP
算法
初始值選擇
W ( 0 )
a k ( t )
對輸出層計算δ
? j ?
( t j
- a j ) a
j (1 ?
a j )
反向計算:從后向前計算各隱層δ
? j ?
a j (1 ?
a j ) ?
i
w j i?i
計算并保存各權(quán)值修正量:
? w i j
? ??? j a i
修正權(quán)值:
w i j ( t
? 1 ) ?
w i j ( t )
- ? w i j
判斷是否收斂,如果收斂則結(jié)束,不收斂則轉(zhuǎn)至Step 2
3.2.2.BP算法過程
圖3 BP學(xué)習(xí)算法的流程圖
3.3BP神經(jīng)網(wǎng)絡(luò)設(shè)計與訓(xùn)練
? (1)BP神經(jīng)網(wǎng)絡(luò)的設(shè)計方法
? 按照BP神經(jīng)網(wǎng)絡(luò)設(shè)計方法選用兩層BP網(wǎng)絡(luò)。采用newff函數(shù)來建立BP網(wǎng)絡(luò)。其輸入節(jié)點數(shù)為16×16=256,隱層傳輸函數(shù)為Sigmoid函數(shù)。假設(shè)用一個輸出節(jié)點表示10個數(shù)字,則輸出層傳輸函數(shù)為pureline,隱層節(jié)點數(shù)為 ,取25。
? (2)神經(jīng)網(wǎng)絡(luò)仿真程序設(shè)計
? 構(gòu)造訓(xùn)練樣本集,并構(gòu)成訓(xùn)練所需的輸入向量p和目標(biāo)向量t. 通過畫圖工具獲得數(shù)字。本例構(gòu)造了新宋體12號、8號字體各10 個,黑體12號、8號各10個,及宋體加粗18號字體。
? (3)神經(jīng)網(wǎng)絡(luò)測試。
? 由于圖像處理的復(fù)雜性,對于不同噪聲的污染選擇不同的方法,選擇沒有噪聲的數(shù)字進行測試。選擇訓(xùn)練樣本中的任意數(shù)據(jù)進行測試,結(jié)構(gòu)非常正確。選擇生成的新宋體8號大小的數(shù)字進行測試。結(jié)果正確,選擇其他類型的字體進行測試,則結(jié)果不是完全正確。
仿真實驗識別效果
圖4 數(shù)字0的識別效果 圖5 數(shù)字4的識別效果
總結(jié)
? 本課題結(jié)合神經(jīng)網(wǎng)絡(luò)技術(shù),對數(shù)字識別問題進行了探討和研究,主要研究成果如下:(1)針對數(shù)字數(shù)據(jù),首先進行了灰度化、二值化、平滑去噪、歸一化、細化等常規(guī)預(yù)處理,然后對處理完的數(shù)字圖像進行特征提取, 提取了能體現(xiàn)字符特點的特征向量。(2)針對數(shù)字識別問題,研究了BP神經(jīng)網(wǎng)絡(luò)分類器的建立和識別過程。
? 仿真結(jié)果表明,對于字體和字號與訓(xùn)練樣本集相同 的測試樣本,無論圖像中的數(shù)字在什么位置,都可以識 別出來,而對于字體和字號與訓(xùn)練樣本集不同的測試樣 本,只有一部分能正確識別。并且對于帶有噪聲的數(shù)字, 運行程序的實驗結(jié)果是不理想的,所以本課題程序有待 于進一步的整理和調(diào)試。為提高識別率,可以增加訓(xùn)練 樣本,或通過增加字體的特征向量等途徑來解決。
總結(jié)
以上是生活随笔為你收集整理的基于BP神经网络的数字识别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国象棋大战 瑞星杀毒软件序列号
- 下一篇: 适配器模式(Adapter模式)