1. 程式人生 > >Mnist手寫字型檔的圖片轉換及lenet網路模型測試

Mnist手寫字型檔的圖片轉換及lenet網路模型測試

已經訓練了mnist的網路和配置了caffe的python介面,
訓練和測試
caffe的python介面
接下來就是學會怎麼用這個訓練好的模型和python介面。

很自然的想法就是直接輸入一個手寫數字的圖片,通過訓練好的模型之後,給反饋一個分類的結果。

這樣就手寫需要把手寫數字的.gz格式轉換成統一的.bmp格式,或者也可以用自己製作的圖片,但是得滿足一定的要求,比如:

  • 必須是黑白256位黑白色
  • 必須是黑底白字
  • 畫素大小是28*28
  • 數字在圖片中間,上下沒有過多的空白

這樣的要求還是比較多的,不如直接把已有的格式轉換一下,轉換python指令碼如下:

#coding = utf-8

import numpy as np
import struct
import matplotlib.pyplot as plt
from PIL import Image   #載入圖片庫

filename = 't10k-images-idx3-ubyte'   #壓縮格式的樣本庫
binfile = open(filename,'rb')
buf = binfile.read()       #讀取到快取buf裡

index = 0
magic,numImages,numRows,numColumns = struct.unpack_from('>IIII',buf,index)  # 指定型別讀取資料,得到圖片總數
index += struct.calcsize('>IIII')

for image in range(0,numImages):    #迴圈讀取圖片
    im = struct.unpack_from('>784B',buf,index)    #讀一個圖片
    index +=struct.calcsize('>784B')

    im = np.array(im,dtype = 'uint8')
    im = im.reshape(28,28)   #畫素大小
#    fig = plt.figure()
    
#    plotwindow = fig.add_subplot(111)
#    plt.imshow(im,cmap = 'gray')
#    plt.show()

    im = Image.fromarray(im)
    im.save('mnist_test/train_%s.bmp'%image,'bmp')  #儲存轉換後的圖片格式

很明顯,在mnist資料夾裡執行,即可得到一個新的資料夾mnist_test/裡面就是我們想要的測試圖片了。
這裡寫圖片描述

接下來就是使用caffe的python介面來進行分類測試。程式碼及執行結果如下:
這裡寫圖片描述

我用的是jupyter notebook。測試了好幾個圖片,分類效果都還不錯。

歡迎關注公號,加好友:
在這裡插入圖片描述