




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優質文檔-傾情為你奉上 計算機與信息工程學院本科生畢業論文基于BP神經網絡的手寫數字識別算法的設計與實現班 級: 13漢班 學 號: 姓 名: 江曉雪 指導教師: 李艷玲 2017 年 3 月 31 日畢 業 論 文 目 錄 全文共 13 頁 4834 字專心-專注-專業基于BP神經網絡的手寫數字識別算法的設計與實現計算機與信息工程學院 2013級漢班 江曉雪 指導教師 李艷玲 副教授 摘要 本文實現了基于MATLAB關于神經網絡的手寫數字識別算法的設計過程,采用神經網絡中反向傳播神經網絡(即BP神經網絡)對手寫數字的識別,由MATLAB對圖片進行讀入、灰度化以及二值化等處理,通過神經網絡
2、進行訓練和測試。實驗證明:該神經網絡對手寫數字的識別可以達到95.65%。關鍵詞 手寫數字識別;BP神經網絡;MATLAB語言1 緒論1.1 圖像識別的提出圖像識別在信息技術發達的今天已經占據了很重要的地位,在我們實際生活中也有很多應用。所謂的圖像識別,就是指通過計算機對圖像進行相應的處理、分析,來達到識別不同模型的目標和任務的一種技術。對于它的提出,簡單的來說,它的發展經歷了三個階段:第一個是文字識別 、第二個是數字圖像處理與識別、第三個是物體識別。第一種相對來說比較簡單,它的研究是從1950年開始的,一般情況是識別字母、符號和數字,無論是印刷體識別還是手寫體識別,它的應用都非常廣泛,但是也
3、伴隨著,這個識別的過程會更加的耗時、費力,無論是人力還是物力,都會有很大的損失;第二種就是我們所說的數字圖像處理與識別,在圖片的識別過程中,圖片識別會有一定的誤差,也會帶來小小的麻煩;第三就是物體識別,而物體的識別主要指的是:在三維世界中,對于個體、環境的感知和認識進行識別,這不同于二維世界的認知,相對來說是更高級的計算機圖像識別,它是以二維世界中對數字圖像和模擬圖像處理的辦法為依據,進行更高一級的,并且結合了現代人工智能技術等學科的研究目標,研究成果已經被廣泛的應用在各種工業探測機器人上,為人們的安全提供了很大的幫助。1.2 圖像識別的現狀與發展趨勢 隨著網絡的發達、電子的信息化,圖像識別的
4、應用已經非常廣泛,而主要的研究工作也包括各行各業,整理以下幾點對其應用的廣泛度進行說明:在生物學中,對生物的原型進行研究。從生物的腦細胞結構、物體解剖等其他科學研究的方向對生物的體系結構、神經結構、神經細胞組織等生物的原型結構及其功能機理進行研究,增強對生物學更加全面的理解。 在實際應用中,建立我們需要的理論模型。根據需要應用的信息在生物學中的應用,建立需要的生物原型,也可以建立類似神經元、神經網絡這樣不可見的理論模型,以便可以讓其更加有效的應用在生活中。建立我們生活中不能直觀表現的事物模型,以便我們可以更方便的、更直觀的理解事物的本質。在信息時代中,建立以及算法研究。就是通過上面所說的,建立
5、相應的理論模型,在這個基礎上加以理解,建立我們所需要的網絡模型,實現計算機應用,主要應用在網絡學習算法的研究,這方面的研究工作也被人們稱為技術模型研究。信息時代的發展,讓我們在生活中有很多的應用,例如:完成某種函數圖像的繪制以及對其變化的形式進行分析、對圖片信號的處理、模式識別等功能,建立需要的應用系統、制造機器人等等。 通過上面的說明,也就是說從開始根據生物學原理的應用,直到建立需要的神經網絡模型,最后應用到圖像識別當中,可以看出其模型的建立是在生活中實例的基礎上,其可靠性和準確性是顯而易見的,這樣就大大的增加了可信度,與此同時,也減少了工作中不必要的麻煩與困擾。而在網絡信息發達的今天,人類
6、在基本粒子、宇宙空間、生命起源等科學領域方面都已經顯現出很高的興趣度,而這其中難免會有圖像提取后的處理工作,所以圖像識別的應用就會越來越廣泛。2 BP神經網絡的概述反向傳播(Back-Propagation,BP)學習算法簡稱BP算法,采用BP算法的前饋型神經網絡簡稱BP網絡。BP網絡是多層感知器的一種,它具備多層感知器的特點,同時也有自己的特點。多層感知器包括輸入層、隱藏層、輸出層,其中隱藏層可以有多個,而我們BP網絡中隱藏層只有一個,其簡單構造如圖所示:圖1 多層感知器結構圖而我們用到的BP網絡中的具體信號流如圖所示,它有一個反向傳播的過程,這也是對傳播進行調整,使精確度更高的一種辦法。如
7、圖所示,其中有兩種信號流通:圖2 多層感知器的信號流 第一:函數信號 簡單來說就是信號進入輸入層,然后通過隱藏層到達輸入層,通過輸出層輸出所得值,就可以完成一個函數信號。 第二:誤差信號誤差信號就是在逆向的傳播的過程中傳輸的信號。其中,有兩個重要參數。一個是函數信號即sigmoid函數,還有一個就是權值的梯度運算即梯度向量。(注:sigmoid函數、權重的修正函數,如圖所示。) (1) (2) 通過對兩個參數的調整,完成整個算法的應用。3 手寫體數字識別的實現過程3.1 整體線路圖 整體流程圖如圖3所示:圖像測試損失函數的設計與應用可視化測試數據神經網絡的設計與訓練sigmoid函數圖3 整體
8、流程圖部分文件調用流程圖如圖4所示:sigmoid checkNNGradientsnnCostFunction第八部分:實現正規化第八部分:訓練NNfmincgnnCostFunctionsigmoidGradientsigmoidnnCostFunctionsigmoidGradient randInitializeWeights checkNNGradients debugInitializeWeightsnnCostFunction computeNumericalGradient第五部分:sigmoid函數第六部分:初始化參數第七部分:實現反向傳播第三部分:前饋網絡第四部分:前饋正規
9、化圖4 整體流程圖3.2 算法流程 圖片識別要經過訓練好的模型來提取我們要得到的手寫數字,而模型是經過多次的訓練得到的,為了提高程序的準確度、增加可信度的一種數據集,所以,程序的開始,我們設計了多個可用的數據,來訓練我們的神經網絡。如圖3所示,一開始可視化我們的手寫體測試數據,每個數字都保存在20*20的像素里,其中設置25個隱藏單位,0到9共10個數字標簽。將我們需要的參數保存到需要的函數中,也就是我們用到的1和2中。也就是保存在我們用的.mat文件中的數據,如圖5所示。圖5 手寫體訓練數據圖6 數據保存文件 注:其中,.mat文件中保存的是二位數組,用來保存我們測試需要的數據。其次,使用前
10、饋神經網絡,當參數=0時,運行nnCostFunction.m文件,而文件再調用sigmoidGradient.m、sigmoid.m兩個參數文件(其中,sigmoid-GradiEnt.m文件,就是對sigmoid函數的求導,為得就是得到sigmoid函數的梯度值,以便更好的了解數值變化的程度。而sigmoid.m文件中保存的就是sigmoid函數)。運行結果是損失函數J=0.。其中也會實現損失函數的正規化和梯度。而為了檢測它的正確性,又使=1進行測試,調式,看結果是否符合要求,來檢測正確性,得到的結果如圖8所示,也是通過兩組數據的對比,讓我們更加清晰的體會它的不同之處。圖7 實驗數據對比圖
11、 (3) (4) 第三,sigmoid函數的運行。運行文件ex4.m文件中,提到函數g = sig-moidGradient(),是指調用sigmoidGradient.m文件,文件中寫了sigmoid函數的梯度表達式,而其中的g(z)函數,是sigmoid函數的方程式, (5) (6)通過對文件的調用,輸入測試值1、-0.5、0、0.5、1,可以得到輸出的梯度數,而當z=0時,可以得到導數值為0.25。越接近于0,它的變化越明顯。sigmoid函數梯度指的是標量場中變化的方向,而梯度值的大小就是用來表示變化的大小,簡單來說就是我們數學中的斜率,而這么說也只是為了讓人們更好的接受。對于sigm
12、oid函數的測試,我們用一組數據對它進行測試,得到的結果如圖 8所示: 圖8 梯度函數測試值初始化參數(權重W文件的調用說明),文件中使用randInitializeWei-ghts.m文件,來初始化1,2,產生隨機變量,為下邊的調用起到很重要的作用。上文BP神經網絡中也曾提到過,權重值是整個過程中很重要的一個參數。而我們的randInitializeWeights.m文件中,也對其進行了新的定義,給定一個較小的值,計算出新的W值。這個文件的作用是為了讓我們打破對稱而訓練神經網絡。其中初始化W的一部分代碼如圖所示: 圖9 初始化權重值其中,L_out,L_in是ex4.m文件中傳輸的數據。 最
13、后,就是這個程序最重要的部分,神經網絡的應用。而神經網絡的形成與訓練又被分為以下幾個部分來實現:初始化神經網絡、實現反向傳播、實現正則化、訓練NN。而具體的函數調用部分可以從圖3代碼調用流程圖看見,初始化神經網絡用randInitializeWeights.m文件進行數據初始化。而我們的顯示界面并沒有顯示初始化以后的數據,這部分是不可見的。通過文件調用圖可見,實現反向傳播和正規化都是運用了同一個文件,也就是說,內部調用的文件也是相同的,只是值不同,實現反向傳播時=0,寫在函數內部,進行數據判斷,正則化則定義好了值,即=3,可以看到,因為值得不同,運行結果的輸出情況也有所不同。在checkNNG
14、radients.m文件中,還引用了三個.m文件。運行后得到兩列相似的數列,如圖10所示。圖10 檢查神經網絡這就是用于檢測神經網絡正確性的測試數據,通過測試數據得到相對偏差,即數字輸出是產生的偏差值。這個數值小于1e-9,則可以使用于數字識別的過程中,得到的結果如圖11所示,可以看出,相對偏差小于要求值,則可以進行接下來的運行。圖11相對偏差 文件中通過對nnCostFunction.m文件的調用,可得到相應的測試數據,如圖12所示:圖12 成本函數的調試參數 訓練神經網絡,給出訓練循環次數,本次循環次數為50,調用fmincg.m文件。得到下列一組訓練次數為50的數字,得到如圖13所示。圖
15、13 神經網絡的訓練 通過這整個的實驗,我們就可以得到自己想要的數據訓練集。3.3 圖像預處理 我們都知道,手寫體的圖片底色可以有很多種,而我們要做的就是將圖片處理成我們需要的大小樣子,放到訓練集里運行,以便得到我們需要的圖片信息。這整個過程又會被分為很多小的地方。過程可以大致分為以下幾個步驟:引入圖片灰度處理索引處理二值化 其中,所需要的程序代碼部分為: 1、引入圖片:imread函數,可以引用多種類型的圖片。不會因為圖片的格式不同而影響程序的運行。 2、用matlab中使用rgb2gray函數將彩色圖片轉化為灰度圖像。 3、Graythresh函數是將圖片閾值法,將灰度圖片轉化為索引圖。
16、4、im2bw函數將索引圖片二值化 5、用邊緣切割算法,對圖片進行切割細化。 最后得到的圖片矩陣就是我們用到的樣式,如果整個過程你還想區別不同樣式的圖片有什么變化,還可以用圖片顯示函數imshow進行顯示,可以更加詳細、明確地觀察圖片的變化。3.4 結果分析 結果由圖片引入到程序中,經過神經網絡的訓練識別,成為數字顯示在MATLAB的command Window工作區中。顯示準確度以及數字結果。如圖所示:圖14 準確度顯示4 結論 在信息發達的今天,圖像識別已經占據了我們生活中很重要的一部分,其中包括遙感應用,礦物的勘探,監測火災,交通智能化,視頻檢測跟蹤等等。而我這次的實驗,只是其中的冰山一
17、角,或許對這方面不會有太大的影響,但是對我自己的影響是很明顯的,圖形識別的學習讓我自己受益匪淺。這整個實驗下來,既鍛煉了我的耐力和意志力,又增強了自己迅速提取信息的能力,整個學習的過程,既枯燥又乏味,就提高了自己的修養,雖然過程很艱辛,但結果總歸是好的。其實,當開始寫論文的時候,我還在不斷的調試著自己的程序代碼,對自己的程序進行更改修正,讓它可以更完美的出現在人們的視野里面,達到自己滿意的效果。而我通過這次圖像識別的學習也增強了自己的知識領域、擴充了自己的知識儲備。在整個代碼的撰寫過程中,需要查閱大量和實驗相關的資料,這樣也就會涉及到各種各樣的知識,雖然學到了各種知識,但同時也增加了自己的工作
18、量,因為面對同一類書籍,就會有很多不同的版本以及名稱,需要一本本的查閱、檢驗,找到自己需要的信息,而這整個過程枯燥、乏味,這就鍛煉了自己的耐力和信息提取的能力,讓自己如何在眾多的信息里面提取自己需要的信息,可以更加高速有效的完成任務。對于MATLAB這個軟件,之前一點都沒有接觸過,所以學習起來就會遇到各種想象不到的問題,而這些困難會讓你整體的思路停滯不前,讓你整個人都會很暴躁,明明就在眼前,卻找不到的感覺就是那么讓人抓狂,這時候,你覺得調整好自己的情緒、整理好自己的思路,然后重新出發,在一步一步的捋順自己的思路想法。這個過程中,我們要不斷的讓自己變得更有耐心。這次實驗中積累的知識和方法,是我一生的收獲和財富,相信我會終生受益。在本文的寫作過程中得到了李艷玲老師的精心指導,在此表示衷心的感謝。參考文獻1 魏晗 陳剛主編.MATLAB數字信號與圖像處理范例實戰速查寶典.北京:清華大學出版社.2 焦里程主編.神經網絡系統理論.西安:西安電子科技大學出版社.3 Stormy Attaway主編.MATLAB編程與工程應用(第二版).北京:電子工業
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論