【《基于神經(jīng)網(wǎng)絡(luò)的手寫體識(shí)別系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》18000字】_第1頁(yè)
【《基于神經(jīng)網(wǎng)絡(luò)的手寫體識(shí)別系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》18000字】_第2頁(yè)
【《基于神經(jīng)網(wǎng)絡(luò)的手寫體識(shí)別系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》18000字】_第3頁(yè)
【《基于神經(jīng)網(wǎng)絡(luò)的手寫體識(shí)別系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》18000字】_第4頁(yè)
【《基于神經(jīng)網(wǎng)絡(luò)的手寫體識(shí)別系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》18000字】_第5頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

[11]:本次實(shí)驗(yàn)中沒有像之前實(shí)驗(yàn)中使用的Keras進(jìn)行模型的搭建,因?yàn)镽esnet不像是Lenet-5那樣簡(jiǎn)單的模型堆積起來,它涉及到一個(gè)塊和塊之間的聯(lián)絡(luò)問題,于是本文使用了Pytorch輔助進(jìn)行代碼的編寫。圖3-27本文采取的buildingblock圖3-28ResNet模型實(shí)驗(yàn)結(jié)果圖3-29ResNet模型實(shí)驗(yàn)結(jié)果在這樣的四個(gè)buildingblock之后是一個(gè)全連接層,進(jìn)行分類和預(yù)測(cè)。實(shí)驗(yàn)中我們同樣采用10輪訓(xùn)練的方法,可以發(fā)現(xiàn)它的收斂速度極快,在前幾輪的準(zhǔn)確率就已經(jīng)達(dá)到了相當(dāng)高的水準(zhǔn)。同時(shí)筆者還沒有使用更高級(jí)的ResNet50甚至ResNet101進(jìn)行訓(xùn)練,我們也知道因?yàn)镽esNet本身的特性不會(huì)因?yàn)閷訑?shù)的增加而讓準(zhǔn)確率下降,所以我們可以推測(cè)隨著ResNet層數(shù)的增加,識(shí)別的準(zhǔn)確率最少也是和目前這個(gè)網(wǎng)絡(luò)模型的準(zhǔn)確率持平,很大概率上會(huì)進(jìn)一步增加。3.7?本章小結(jié)本章節(jié)中使用了兩種經(jīng)典的卷積網(wǎng)絡(luò)結(jié)構(gòu)模:LeNet-5模型和ResNet模型來對(duì)手寫體數(shù)字識(shí)別進(jìn)行研究。首先介紹了LeNet-5模型和ResNet模型的細(xì)節(jié)和它們的種種特點(diǎn),其中ResNet模型是業(yè)界最新的目前處理圖像識(shí)別的主流型。然后基于這兩種模型進(jìn)行了改進(jìn)完成了試驗(yàn)。在LeNet-5模型中主要是從卷積核大小,卷積核個(gè)數(shù),激勵(lì)函數(shù)和優(yōu)化器進(jìn)行改善,實(shí)驗(yàn)發(fā)現(xiàn)卷積核大小對(duì)于識(shí)別的準(zhǔn)確率影響不太大,卷積核的個(gè)數(shù)對(duì)于準(zhǔn)確率和收斂速度的影響很大,且在一定范圍內(nèi)是正相關(guān),當(dāng)大于一定的范圍就是負(fù)相關(guān)。激勵(lì)函數(shù)對(duì)于該模型的影響巨大,Relu函數(shù)對(duì)比Sigmoid函數(shù)而言有無可比擬的優(yōu)勢(shì),但是因?yàn)樵撃P捅旧淼慕Y(jié)構(gòu)問題,無法使準(zhǔn)確率進(jìn)一步突破所以采用了新的模型ResNet模型,在介紹完該模型之后實(shí)驗(yàn)的結(jié)果的準(zhǔn)確率也來到了99.20%左右,有了一定的提升。4.?基于Flask搭建的手寫數(shù)字識(shí)別系統(tǒng)至此前文中已經(jīng)得到了卷積神經(jīng)網(wǎng)絡(luò)的若干個(gè)針對(duì)不同點(diǎn)改善的網(wǎng)絡(luò)結(jié)構(gòu)模型,本章利用深層的網(wǎng)絡(luò)結(jié)構(gòu)模型對(duì)手寫數(shù)字的識(shí)別實(shí)現(xiàn)一個(gè)手寫體字符的識(shí)別系統(tǒng)。因?yàn)楸疚闹惺褂玫木矸e神經(jīng)網(wǎng)絡(luò)網(wǎng)絡(luò)都是使用的Python語言所以我們優(yōu)先考慮使用基于Python語言實(shí)現(xiàn)的Web開發(fā)應(yīng)用框架。Python中常用的Web框架有三種:Flask,Django,Tornado,但是相比于Flask而言,Django框架過于笨重,龐大,自由靈活度不夠高,在開發(fā)一些簡(jiǎn)單的網(wǎng)頁(yè)和應(yīng)用的時(shí)候,使用Django會(huì)有一種大材小用的感覺,它本身更適用于去開發(fā)企業(yè)級(jí)別的網(wǎng)絡(luò)開發(fā)和應(yīng)用。因?yàn)楸敬蜗到y(tǒng)比較簡(jiǎn)單所以不打算使用Django。Torando框架的主要特點(diǎn)是原生帶有異步非阻塞,它適用于I/O密集型的應(yīng)用和有多任務(wù)高并發(fā)處理的需求的場(chǎng)景,它雖然也是一種輕量級(jí)別的框架,但是它本質(zhì)上是一種更專注于性能和速度的專注性框架,并不適合于本次設(shè)計(jì)要做的系統(tǒng),對(duì)于本文的系統(tǒng)而言也是大材小用。本文的系統(tǒng)采用是基于Python的Flask框架下面我們介紹一下Flask4.1?關(guān)于Flask的介紹Flask出生于2010年。這個(gè)輕量級(jí)的web框架玲瓏,靈活,通常一個(gè)腳本就可以啟動(dòng)一個(gè)Web項(xiàng)目。Flask本身其實(shí)相當(dāng)于一個(gè)內(nèi)核,其他的巨大多數(shù)的功能實(shí)現(xiàn)都需要使用到擴(kuò)展,這其中包括有數(shù)據(jù)庫(kù)Flask-SQLAIchemy,用戶認(rèn)證Flask-Login,郵件擴(kuò)展Flask-Mail等諸多功能拓展。4.2?本文Flask系統(tǒng)的介紹本文Flask框架只需要用戶與瀏覽器進(jìn)行簡(jiǎn)單的操作交互,就可以實(shí)現(xiàn)功能。主要功能就是實(shí)現(xiàn)手寫輸入數(shù)字的實(shí)時(shí)識(shí)別,用戶在規(guī)定的頁(yè)面的區(qū)域通過手寫數(shù)字,不需要用戶再進(jìn)行額外的格式轉(zhuǎn)換,通過這用戶在頁(yè)面規(guī)定區(qū)域手寫的最原始的圖片信息就可以傳入到后臺(tái),再調(diào)用通過Tensorflow已經(jīng)訓(xùn)練好的模型就可以進(jìn)行數(shù)字識(shí)別。然后將結(jié)果返回到瀏覽器端,用戶就可以查看結(jié)果。所以我們將系統(tǒng)分為以下幾個(gè)模塊:輸入模塊、模型加載模塊、暴露接口模塊、前端調(diào)用、返回結(jié)果。圖4-1本文系統(tǒng)的設(shè)計(jì)流程1.輸入模塊:進(jìn)行輸入的模塊的主要功能就是通過它可以負(fù)責(zé)用戶的輸入,使用者通過網(wǎng)頁(yè)在瀏覽器網(wǎng)頁(yè)進(jìn)行手寫輸入,用戶只需要拖動(dòng)鼠標(biāo)在規(guī)定的區(qū)域內(nèi)寫下他的數(shù)字就可以完成基本的輸入。在這里我們主要使用的HTML中的Canvas來處理前端的一個(gè)請(qǐng)求。Canvas類似于一個(gè)矩形區(qū)域的一張畫布,擁有多種繪制路徑、矩形等圖形的方法,用戶可以在這上面控制每一個(gè)像素。我們?cè)贖TML中添加Canvas元素即可。但是Canvas本身是不具備繪圖能力,也不具備和后端進(jìn)行交互處理數(shù)據(jù)的能力,所以我們所有的繪制工作都將在JAVAScirpt內(nèi)部完成。然后我們使用Ajax請(qǐng)求調(diào)用接口,就可以把數(shù)據(jù)傳入。2.型加載模塊:在前文中我們通過使用Tensorflow搭建的卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行了訓(xùn)練,并得到了一個(gè)ckpt模型,這個(gè)模型的用處就是在模型加載模塊使用。該模塊的主要工作就是預(yù)測(cè)分類前的模型加載,為后面的暴露接口模塊以及返回結(jié)果做好了準(zhǔn)備工作。3.暴露接口模塊:在這里我們需要將我們寫的前后端的接口連接起來。這個(gè)傳遞接口有兩種方式,一種是谷歌grpc的模式調(diào)用,二是通過外部web框架進(jìn)行接口暴露。接口將這些數(shù)據(jù)傳給模型,模型返回過來得到的結(jié)果。這里我們使用第二個(gè)方式。不同于傳統(tǒng)的MVC模式的控制器(Controller),Flask框架在這里使用的是Flask路由規(guī)則。在Flask路由規(guī)則中,客戶端要將請(qǐng)求發(fā)送給web服務(wù)端,再由服務(wù)端將請(qǐng)求發(fā)送給Flask的程序。Flask程序需要知道這些被請(qǐng)求運(yùn)行的代碼是由哪些URL請(qǐng)求運(yùn)行的,所以他需要保存一個(gè)URL映射,這個(gè)URL映射就是用來保存與python函數(shù)的映射關(guān)系的,而處理URL與函數(shù)之間關(guān)系的程序我們就叫做路由。4.前端調(diào)用:接口暴露完我們就可以前端調(diào)用,傳數(shù)據(jù)拿到數(shù)據(jù)。在這里我們通過Flask進(jìn)行調(diào)用。通過情況下這里的我還包括們通過端進(jìn)行傳參,這里的端傳參不僅僅是指前端頁(yè)面,包括繪圖儀,手寫板等等。但是本文中使用的主要是前端頁(yè)面進(jìn)行傳參以及調(diào)用。5。返回結(jié)果:這里是系統(tǒng)的返回結(jié)果并且展示結(jié)果的主要部分。在顯示端有是個(gè)數(shù)字的每個(gè)數(shù)字的出現(xiàn)概率,通過從后臺(tái)得到由訓(xùn)練模型預(yù)測(cè)出的結(jié)果,我們將這些結(jié)果反饋到網(wǎng)頁(yè)的顯示界面上。通過用戶手寫的數(shù)字實(shí)時(shí)反饋出用戶手寫數(shù)字可能為哪一個(gè)值的概率。這里我們將最有可能的兩個(gè)也就是概率的最大兩個(gè)數(shù)字通過高亮顯示來展示結(jié)果。4.3?系統(tǒng)的簡(jiǎn)易演示以及測(cè)試我們將手寫數(shù)字寫入網(wǎng)頁(yè)進(jìn)行演示。首先我們要通過運(yùn)行main.py啟動(dòng)服務(wù)器,在控制臺(tái)會(huì)顯示出如下字樣即意味著服務(wù)器啟動(dòng)。圖4-2系統(tǒng)使用簡(jiǎn)易演示接著我們打開這個(gè)頁(yè)面。為了突出神經(jīng)網(wǎng)絡(luò)尤其是卷積神經(jīng)網(wǎng)絡(luò)的改善算法在圖像識(shí)別中手寫數(shù)字識(shí)別的優(yōu)越性,我們將傳統(tǒng)的機(jī)器學(xué)習(xí)算法線性回歸算法的結(jié)果顯示在一旁。因?yàn)楸疚闹饕茄芯可窠?jīng)網(wǎng)絡(luò)中卷積神經(jīng)網(wǎng)絡(luò),所以線性回歸算法的講解和一些細(xì)節(jié)我們就不再本文中贅述。使用者在左邊規(guī)定的地方通過鼠標(biāo)或者觸摸板進(jìn)行手寫,手寫的過程中,右邊的結(jié)果顯示會(huì)實(shí)時(shí)反饋出結(jié)果出來。以下將是一些結(jié)果展示。圖4-3數(shù)字0的識(shí)別結(jié)果圖4-4數(shù)字1的識(shí)別結(jié)果圖4-5數(shù)字2的識(shí)別結(jié)果圖4-6數(shù)字8的識(shí)別結(jié)果這里全部10個(gè)數(shù)字均可以識(shí)別出來。同時(shí)因?yàn)榫矸e神經(jīng)網(wǎng)絡(luò)本身的特性,這個(gè)系統(tǒng)識(shí)別數(shù)字還具有一定的魯棒性。下面我們對(duì)這個(gè)簡(jiǎn)易的系統(tǒng)進(jìn)行一定的測(cè)試。例如這里的2假設(shè)因?yàn)槟撤N原因?qū)е聸]有筆跡粘連,但是系統(tǒng)任然能夠識(shí)別出數(shù)字2。同樣的4因?yàn)槟撤N原因識(shí)別圖像的時(shí)候某些部分缺損,但是系統(tǒng)任然可以識(shí)別出來。圖4-7缺失數(shù)字2的識(shí)別結(jié)果圖4-8缺失數(shù)字4的識(shí)別結(jié)果圖4-9缺失數(shù)字6的識(shí)別結(jié)果以上這些均能證明在數(shù)字書寫不完整的情況下進(jìn)行測(cè)試,均能通過一定的測(cè)試,反應(yīng)了一定的魯棒性。但是在另外一種情況下,測(cè)試的結(jié)果就不盡如人意。圖4-10偏置數(shù)字4的識(shí)別結(jié)果在偏置寫4的時(shí)候,系統(tǒng)雖然還可以識(shí)別出4為最大的可能的結(jié)果,但是他給出的概率已經(jīng)不是很大的概率表示。這證明了一定情況下,偏置寫可能會(huì)導(dǎo)致識(shí)別結(jié)果出現(xiàn)問題,下面我們進(jìn)行更多的偏置寫的試驗(yàn)。圖4-11偏置數(shù)字2的識(shí)別結(jié)果在這個(gè)2的偏置寫的試驗(yàn)中,2的識(shí)別結(jié)果不準(zhǔn)確。這些通過在畫布上偏置寫數(shù)字的測(cè)試則反映了在偏置寫的情況下,測(cè)試結(jié)果不盡如人意,經(jīng)過一定的思考,筆者覺得這時(shí)候的測(cè)試不準(zhǔn)不應(yīng)該歸因于神經(jīng)網(wǎng)絡(luò)的識(shí)別問題以及網(wǎng)絡(luò)的魯棒性,而是應(yīng)該歸因于Canvas畫布在處理圖像輸入的時(shí)候的問題,因?yàn)樵诶硐氲那闆r下,從畫布輸入的時(shí)候即使是通過偏置寫的情況也可以通過某種處理方法將偏置寫的數(shù)字放到相對(duì)中間的位置,也就是經(jīng)過一定的圖像預(yù)處理,可是在目前的Canvas情況下無法進(jìn)行相關(guān)操作,或者說涉及到一定的圖形識(shí)別和圖像切割的知識(shí)。真因?yàn)檫@些原因?qū)е缕脤懙南袼攸c(diǎn)輸入導(dǎo)致了相對(duì)不穩(wěn)定的識(shí)別結(jié)果。4.4?本章小結(jié)本章節(jié)主要首先是對(duì)本文要使用何種語言的何種框架做了介紹和解釋,接著進(jìn)一步對(duì)要用的Flask框架進(jìn)行了更為詳細(xì)的介紹說明。然后介紹了本文所寫的系統(tǒng)的設(shè)計(jì)構(gòu)成和說明,以及每一個(gè)部分的功能說明,然后通過實(shí)例進(jìn)行了使用的簡(jiǎn)易演示。并且通過實(shí)例演示了卷積神經(jīng)網(wǎng)絡(luò)確實(shí)具有一定的魯棒性,也通過偏置寫的測(cè)試發(fā)現(xiàn)了一定的漏洞。5.?總結(jié)與展望5.1?本文工作總結(jié)神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)是目前深度學(xué)習(xí)技術(shù)中十分重要的技術(shù)組成部分。手寫體數(shù)字的識(shí)別具有一定的難度,因?yàn)閿?shù)字的形狀和每個(gè)人的書寫習(xí)慣等問題都給數(shù)字識(shí)別帶來了一定的困難。本實(shí)驗(yàn)基于卷積神經(jīng)網(wǎng)絡(luò)網(wǎng)絡(luò)中LeNet-5模型和ResNet模型,進(jìn)行算法改善,完成了手寫體數(shù)字的識(shí)別。(1)本實(shí)驗(yàn)的完成是基于Tensorflow框架,代碼基本上LeNet-5使用keras,實(shí)現(xiàn),ResNet使用Pytorch實(shí)現(xiàn)。(2)本實(shí)驗(yàn)主要是對(duì)于手寫數(shù)字進(jìn)行識(shí)別,使用的是Mnist數(shù)據(jù)集,通過改善使用了LeNet-5模型,并引入ResNet模型進(jìn)行手寫體數(shù)字識(shí)別。(3)通過搭建Flask前端,使用者可以在前端頁(yè)面手寫數(shù)字進(jìn)行識(shí)別,驗(yàn)證了卷積神經(jīng)網(wǎng)絡(luò)在手寫數(shù)字識(shí)別方面的可行性以及改善以后算法的優(yōu)越性。5.2?存在不足與展望本實(shí)驗(yàn)實(shí)現(xiàn)了卷積神經(jīng)網(wǎng)絡(luò)對(duì)于手寫數(shù)字的識(shí)別,并且完成了對(duì)現(xiàn)有模型的改善,也實(shí)現(xiàn)了一定的不錯(cuò)的準(zhǔn)確率,但是本實(shí)驗(yàn)還是存在著許多不足,還可以有許多需要改進(jìn)的地方。(1)由于自身設(shè)備的原因,沒有能夠?qū)τ跐h字?jǐn)?shù)據(jù)集識(shí)別辨認(rèn),理論上漢字?jǐn)?shù)據(jù)集HWDB1.1的數(shù)據(jù)是和MNIST數(shù)據(jù)集里面的數(shù)據(jù)格式一樣,完全是可以通過本文中已經(jīng)搭建的網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練識(shí)別,但是因?yàn)闈h字?jǐn)?shù)據(jù)集中的數(shù)據(jù)實(shí)在是太多,每個(gè)樣本數(shù)量也實(shí)在是太多,本次試驗(yàn)的電腦曾經(jīng)試過對(duì)漢字手寫體的訓(xùn)練,但是運(yùn)行了將近20個(gè)小時(shí)依舊沒有完成訓(xùn)練,所以本次設(shè)計(jì)放棄了對(duì)手寫體漢字的識(shí)別。但是我相信在算力條件和時(shí)間條件允許的情況下,本文中的卷積神經(jīng)網(wǎng)絡(luò)模型在漢字識(shí)別上也會(huì)有不錯(cuò)的表現(xiàn)。(2)在前端的實(shí)現(xiàn)上本次試驗(yàn)使用了HTML的canvas作為畫布去輸入用戶的手寫輸入,但是有一個(gè)很明顯的問題就是假如某位用戶寫的0和正常的9上半部分大小一樣大且位置就處于正常9上半部分的位置,這次識(shí)別一定會(huì)識(shí)別為9而不是0,或許我們可以解釋為用戶寫的本身就是9下半部分有了缺失,但也可以理解為用戶本身寫的就是0而不是9,這方面的問題一方面出于卷積神經(jīng)網(wǎng)絡(luò)的問題,一方面也是用來輸入canvas畫布問題,但目前尚不知道該如何解決這個(gè)問題。(3)此次實(shí)驗(yàn)主要是驗(yàn)證了卷積神經(jīng)網(wǎng)絡(luò)在手寫數(shù)字識(shí)別方面的可行性,并且通過改善算法模型進(jìn)行多次的對(duì)比實(shí)驗(yàn),來觀察在不同的條件下卷積神經(jīng)網(wǎng)絡(luò)的表現(xiàn)情況。Tensorflow完成了對(duì)于很多函數(shù)和訓(xùn)練數(shù)據(jù)集的封裝,像是keras更是將卷積神經(jīng)網(wǎng)絡(luò)的搭建變成像是搭積木一樣的游戲。這讓我們沒有對(duì)算法內(nèi)部源代碼有深入的研究,如果我能夠?qū)@些代碼有更深的了解和研究,我相信我可以更好的完成這次畢業(yè)設(shè)計(jì)。參考文獻(xiàn)VantruongNguyen;JuepingCai;JieChu.HybridCNN-GRUModelforHighEfficientHandwrittenDigitRecognition[C],20192ndInternationalConferenceonArtificialIntelligenceandPatternRecognition(AIPR2019),2019言俐光.閱卷系統(tǒng)中手寫體字符的提取與識(shí)別[D].蘇州大學(xué),2019朱賀.基于機(jī)器視覺的快遞單地址自動(dòng)識(shí)別研究[D].長(zhǎng)春理工大學(xué),2018HailongXi;HaiyanLiu;YuZhang.RecognitionandOptimizationAlgorithmofMNISTDatasetBasedonLeNet5NetworkStructure[C].The2018InternationalConferenceonTransportation&Logistics,Information&Communication,SmartCity(TLICSC2018),2018劉欣.基于卷積神經(jīng)網(wǎng)絡(luò)的聯(lián)機(jī)手寫漢字識(shí)別系統(tǒng)[D].哈爾濱工業(yè)大學(xué),2015NaigongYu;PannaJiao;YulingZheng.HandwrittenDigitsRecognitionBaseonImprovedLeNet5[C].第27屆中國(guó)控制與決策會(huì)議,2015陳庭軒.基于集成卷積神經(jīng)網(wǎng)絡(luò)的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論