第10講--統(tǒng)計模式識別--手寫數(shù)字識別_第1頁
第10講--統(tǒng)計模式識別--手寫數(shù)字識別_第2頁
第10講--統(tǒng)計模式識別--手寫數(shù)字識別_第3頁
第10講--統(tǒng)計模式識別--手寫數(shù)字識別_第4頁
第10講--統(tǒng)計模式識別--手寫數(shù)字識別_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、統(tǒng)計模式識別手寫數(shù)字識別第10講模式識別模式識別的關鍵的關鍵模式準確表達模式準確表達手寫數(shù)字的模式如何表達?手寫數(shù)字的模式如何表達?采取的模式是一個小圖形中含有的點,與數(shù)字之間的是一個小圖形中含有的點,與數(shù)字之間的一個模型。一個模型。線性的?還是非線性的?線性的?還是非線性的?非線性模型的典型算法人工神經網絡人工神經網絡ANN Artificial Neural NetworkANN 由輸入層由輸入層 input layer隱含層:隱含層:hidden layer 可以多層可以多層輸出層:輸出層:output layer輸入層輸入層 -輸出層輸出層 每個節(jié)點間,有權重每個節(jié)點間,有權重w計算計

2、算 s=xiwi ,再取函數(shù)值,得到輸出值,但,再取函數(shù)值,得到輸出值,但型函數(shù)型函數(shù) sigmoid O=1/(1+e(-s) Back propogation 手寫數(shù)字圖像處理將每個數(shù)字的小圖像整理出來將每個數(shù)字的小圖像整理出來將每個整理的數(shù)字小圖像轉換為一個向量,將每個整理的數(shù)字小圖像轉換為一個向量,輸入神經網絡,訓練建模型輸入神經網絡,訓練建模型預測預測Python圖像處理包PIL包from PIL import Image加載圖像:im = Image.open(rE:pyteachdigit.jpg)去除背景灰度im = im.convert(“L”) # 轉換為灰度8位圖像im

3、= im.point(lambda x: 255if x 196 else 0) #代表數(shù)字的圖像的像素值是0im = im.convert(1) #1位像素,黑和白im.save(sample_1.bmp)小數(shù)字方塊的“挖出來”畫圖中找出行列的大致位置畫圖中找出行列的大致位置 xs = 0, 45, 88, 125, 170, 213, 251, 289, 324, 364, w ys = 0, 39, 89, 135, 183, h10Python挖小圖像塊挖小圖像塊box = (x, y, xsi+1, ysj+1) # 一個字符所在圖像的位置 t = im.crop(box).copy

4、() # 將字符挖出來11挖小數(shù)字的程序挖小數(shù)字的程序def split(im): # im為去除背景后的整個圖像為去除背景后的整個圖像 assert im.mode = 1 result = w, h = im.size xs = 0, 45, 88, 125, 170, 213, 251, 289, 324, 364, w ys = 0, 39, 89, 135, 183, h for i, x in enumerate(xs): if i + 1 = len(xs): break for j, y in enumerate(ys): if j + 1 = len(ys): break b

5、ox = (x, y, xsi+1, ysj+1) # 一個字符所在圖像的位置一個字符所在圖像的位置 t = im.crop(box).copy() # 將字符挖出來將字符挖出來 t.save(e:pyteach+str(i + 1) % 10)+_+str(j)+.bmp)12標準化標準化提取出來的每個字符圖像,大小不一,字符在小圖像中的位置不居中每個小圖像的大小都是32*32,且字符的上下、左右邊距一樣小圖像的標準化小圖像的標準化def to_32_32(im,ii,jj):# 參數(shù)im是待處理的小圖像,ii,jj的結合形成圖像文件的名字# 圖像分割時保存的文件名0_1.bmp,代表字符0

6、的第二個小圖像 im = im.convert(L) # 轉灰度 im = im.point(lambda x: 255 if x 196 else 0) w,h=im.size xrow= ycol= for i in range(w): # 找字符在圖像中最左右、上下的起始位置 for j in range(h): pixel=im.getpixel(i,j) if (pixel 196 else 0) y=np.array(0,1) # 縱向,y軸,第一個2*2小塊的上下像素位置 features= for j in range(16): x=np.array(0,1) # 橫向,x軸,

7、第一個2*2小塊的左右像素位置 for i in range(16): 提取特征的函數(shù)提取特征的函數(shù)box = (x0, y0, x1+1, y1+1) # box是每個2*2的小塊的矩形,+1的原因是crop函數(shù)認定右側為開區(qū)間 t = im.crop(box).copy() count=0.0 for ii in range(2): # 統(tǒng)計2*2小矩形中的黑色像素點的個數(shù) for jj in range(2): pixel = t.getpixel(ii,jj) #提取像素值 if (pixel1): count +=1.0 features.append(count) # 將計算得到的

8、特征追加到列表中 x=x+2 # 水平方向,下一個小2*2矩形的左、右邊距位置 y=y+2 # 垂直方向,下一個小2*2矩形的上、下邊距位置 return features #feature就是一個小圖像的特征神經網絡模型的設計神經網絡模型的設計輸入層:向量的長度,256最后輸出層:一般采用正交編碼中間層:64,注意過擬合神經網絡神經網絡算法算法http:/ 下載拷貝到C:Anaconda3Libsite-packages即可(是2.x版本,需要小修改,進入3.x)拷貝到 Anaconda3Libsite-packages目錄下使用from pyneurgen.neuralnet import NeuralNet神經網絡代碼神經網絡代碼#整理訓練集數(shù)據netTrainDataInput= # 存儲輸入數(shù)據,XnetTrainDataoutput= # 存儲輸出點的真值,Yfor i in range(10): outNode=0.0*10 # 訓練集的函數(shù)真值,每種模式對應的位置數(shù)字為1 outNodei=1.0 for j in range(5): im = Image.open(e:pyteach+str(i)+_+st

溫馨提示

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

評論

0/150

提交評論