国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于深度學習的手寫數字識別項目GUI(Deep Learning Project – Handwritten Digit Recognition using Python)

這篇具有很好參考價值的文章主要介紹了基于深度學習的手寫數字識別項目GUI(Deep Learning Project – Handwritten Digit Recognition using Python)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一步一步教你建立手寫數字識別項目,需要源文件的請可直接跳轉下邊的鏈接:All project

本文摘要

在本文中,我們將使用MNIST數據集實現(xiàn)一個手寫數字識別應用程序。我們將使用一種特殊類型的深度神經網絡,即卷積神經網絡。最后,我們將構建一個GUI,您可以在其中繪制數字并立即識別它。
實現(xiàn)效果:
基于深度學習的手寫數字識別項目GUI(Deep Learning Project – Handwritten Digit Recognition using Python)

運行項目的需求

這個有趣的Python項目要求你具備Python編程的基本知識,使用Keras庫和Tkinter庫進行深度學習,以構建GUI。

使用下面的命令為這個項目安裝必要的庫:

pip install numpy, tensorflow, keras, pillow,

MNIST 數據集

這可能是機器學習和深度學習愛好者中最受歡迎的數據集之一。MNIST數據集包含60,000張從0到9的手寫數字的訓練圖像和10,000張用于測試的圖像。MNIST數據集有10個不同的類。手寫數字圖像表示為28×28矩陣,其中每個單元格包含灰度像素值。

建立基于深度學習的手寫數字識別項目

以下是實現(xiàn)手寫數字識別項目的步驟:

1、導入庫并加載數據集

首先,我們將導入訓練模型所需的所有模塊。Keras庫已經包含了一些數據集,MNIST就是其中之一。所以我們可以很容易地導入數據集并開始使用它。mnist.load_data()方法返回訓練數據及其標簽以及測試數據及其標簽。

import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras import backend as K

# the data, split between train and test sets
(x_train, y_train), (x_test, y_test) = mnist.load_data()

print(x_train.shape, y_train.shape)

2、處理數據集

圖像數據不能直接輸入到模型中,所以我們需要對數據進行一些操作和處理,使其為神經網絡做好準備。訓練數據的維數為(60000,28,28)。CNN模型將需要多一個維度,因此我們將矩陣重塑為形狀(60000,28,28,1)。

x_train = x_train.reshape(x_train.shape[0], 28, 28, 1)
x_test = x_test.reshape(x_test.shape[0], 28, 28, 1)
input_shape = (28, 28, 1)

# convert class vectors to binary class matrices
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)

x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
print('x_train shape:', x_train.shape)
print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')

3、建立模型

現(xiàn)在我們將在Python數據科學項目中創(chuàng)建CNN模型。CNN模型通常由卷積層和池化層組成。它對于表示為網格結構的數據效果更好,這就是為什么CNN在圖像分類問題上效果很好的原因。dropout層用于使一些神經元失活,在訓練時,它減少了模型的擬合。然后,我們將使用Adadelta優(yōu)化器編譯模型。

batch_size = 128
num_classes = 10
epochs = 10

model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),activation='relu',input_shape=input_shape))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))

model.compile(loss=keras.losses.categorical_crossentropy,optimizer=keras.optimizers.Adadelta(),metrics=['accuracy'])

4、訓練模型

Keras的model.fit()函數將開始模型的訓練。它需要訓練數據、驗證數據、epoch和批大小。

訓練模型需要一些時間。訓練完成后,我們將權值和模型定義保存在“mnist.h5”文件。

hist = model.fit(x_train, y_train,batch_size=batch_size,epochs=epochs,verbose=1,validation_data=(x_test, y_test))
print("The model has successfully trained")

model.save('mnist.h5')
print("Saving the model as mnist.h5")

5、評估模型

我們的數據集中有10,000張圖像,這些圖像將用于評估我們的模型工作的好壞。測試數據沒有參與數據的訓練,因此是我們模型的新數據。MNIST數據集很好地平衡了,所以我們可以得到大約99%的準確率。

score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])

6、建立GUI界面預測數字

現(xiàn)在對于GUI,我們已經創(chuàng)建了一個新文件,我們在其中構建了一個交互式窗口,用于在畫布上繪制數字,并且通過一個按鈕,我們可以識別數字。Tkinter庫包含在Python標準庫中。我們已經創(chuàng)建了一個函數predict_digit(),它將圖像作為輸入,然后使用訓練好的模型來預測數字。

然后我們創(chuàng)建App類,它負責為我們的應用程序構建GUI。我們創(chuàng)建一個畫布,我們可以通過捕獲鼠標事件和按鈕來繪制,我們觸發(fā)predict_digit()函數并顯示結果。

下面是我們的gui_digit_recognizer.py文件的完整代碼:

from keras.models import load_model
from tkinter import *
import tkinter as tk
import win32gui
from PIL import ImageGrab, Image
import numpy as np

model = load_model('mnist.h5')

def predict_digit(img):
    #resize image to 28x28 pixels
    img = img.resize((28,28))
    #convert rgb to grayscale
    img = img.convert('L')
    img = np.array(img)
    #reshaping to support our model input and normalizing
    img = img.reshape(1,28,28,1)
    img = img/255.0
    #predicting the class
    res = model.predict([img])[0]
    return np.argmax(res), max(res)

class App(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)

        self.x = self.y = 0

        # Creating elements
        self.canvas = tk.Canvas(self, width=300, height=300, bg = "white", cursor="cross")
        self.label = tk.Label(self, text="Thinking..", font=("Helvetica", 48))
        self.classify_btn = tk.Button(self, text = "Recognise", command =         self.classify_handwriting) 
        self.button_clear = tk.Button(self, text = "Clear", command = self.clear_all)

        # Grid structure
        self.canvas.grid(row=0, column=0, pady=2, sticky=W, )
        self.label.grid(row=0, column=1,pady=2, padx=2)
        self.classify_btn.grid(row=1, column=1, pady=2, padx=2)
        self.button_clear.grid(row=1, column=0, pady=2)

        #self.canvas.bind("<Motion>", self.start_pos)
        self.canvas.bind("<B1-Motion>", self.draw_lines)

    def clear_all(self):
        self.canvas.delete("all")

    def classify_handwriting(self):
        HWND = self.canvas.winfo_id() # get the handle of the canvas
        rect = win32gui.GetWindowRect(HWND) # get the coordinate of the canvas
        im = ImageGrab.grab(rect)

        digit, acc = predict_digit(im)
        self.label.configure(text= str(digit)+', '+ str(int(acc*100))+'%')

    def draw_lines(self, event):
        self.x = event.x
        self.y = event.y
        r=8
        self.canvas.create_oval(self.x-r, self.y-r, self.x + r, self.y + r, fill='black')

app = App()
mainloop()

截屏結果

基于深度學習的手寫數字識別項目GUI(Deep Learning Project – Handwritten Digit Recognition using Python)
基于深度學習的手寫數字識別項目GUI(Deep Learning Project – Handwritten Digit Recognition using Python)
基于深度學習的手寫數字識別項目GUI(Deep Learning Project – Handwritten Digit Recognition using Python)

總結

在本文中,我們成功地在手寫數字識別應用程序上構建了一個Python深度學習項目。我們構建并訓練了卷積神經網絡,它對于圖像分類非常有效。稍后,我們構建GUI,在畫布上繪制數字,然后對數字進行分類并顯示結果。文章來源地址http://www.zghlxwxcb.cn/news/detail-504175.html

到了這里,關于基于深度學習的手寫數字識別項目GUI(Deep Learning Project – Handwritten Digit Recognition using Python)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 深度學習實驗:Softmax實現(xiàn)手寫數字識別

    深度學習實驗:Softmax實現(xiàn)手寫數字識別

    文章相關知識點:???????AI遮天傳 DL-回歸與分類_老師我作業(yè)忘帶了的博客-CSDN博客 ? MNIST數據集 ? MNIST手寫數字數據集是機器學習領域中廣泛使用的圖像分類數據集。它包含60,000個訓練樣本和10,000個測試樣本。這些數字已進行尺寸規(guī)格化,并在固定尺寸的圖像中居中

    2023年04月08日
    瀏覽(22)
  • 【深度學習】2-4 神經網絡-手寫數字識別

    在實現(xiàn)對手寫數字圖像的分類,可以先假設學習已經全部結束,我們使用學習到的參數,先實現(xiàn)神經網絡的“推理處理”。該處理也稱為神經網絡的 前向傳播 。 和求解機器學習問題的步驟(分成學習和推理兩個階段進行)一樣 使用神經網絡解決問題時,也需要 首先使用訓練數

    2024年02月09日
    瀏覽(23)
  • python與深度學習(一):ANN和手寫數字識別

    python與深度學習(一):ANN和手寫數字識別

    神經網絡是學者通過對生物神經元的研究,提出了模擬生物神經元機制的人工神經網絡的數學模型,生物神經元的模型抽象為如圖所示的數學結構。 神經元輸入向量?? = [??1, ????2, ??3, … , ????]T,經過函數映射:??: ?? → ??后得到輸出??。 考慮一種簡化的情況,

    2024年02月16日
    瀏覽(17)
  • python與深度學習(六):CNN和手寫數字識別二

    python與深度學習(六):CNN和手寫數字識別二

    本篇文章是對上篇文章訓練的模型進行測試。首先是將訓練好的模型進行重新加載,然后采用opencv對圖片進行加載,最后將加載好的圖片輸送給模型并且顯示結果。 在這里導入需要的第三方庫如cv2,如果沒有,則需要自行下載。 把MNIST數據集進行加載,并且把訓練好的模型也

    2024年02月15日
    瀏覽(25)
  • 從手寫數字識別入門深度學習丨MNIST數據集詳解

    從手寫數字識別入門深度學習丨MNIST數據集詳解

    就像無數人從敲下“Hello World”開始代碼之旅一樣,許多研究員從“MNIST數據集”開啟了人工智能的探索之路。 MNIST數據集(Mixed National Institute of Standards and Technology database)是一個用來訓練各種圖像處理系統(tǒng)的二進制圖像數據集,廣泛應用于機器學習中的訓練和測試。 作為一

    2024年02月03日
    瀏覽(21)
  • 深度學習:使用卷積神經網絡CNN實現(xiàn)MNIST手寫數字識別

    深度學習:使用卷積神經網絡CNN實現(xiàn)MNIST手寫數字識別

    本項目基于pytorch構建了一個深度學習神經網絡,網絡包含卷積層、池化層、全連接層,通過此網絡實現(xiàn)對MINST數據集手寫數字的識別,通過本項目代碼,從原理上理解手寫數字識別的全過程,包括反向傳播,梯度下降等。 卷積神經網絡是一種多層、前饋型神經網絡。從功能上

    2024年02月13日
    瀏覽(19)
  • 基于python的Keras庫構建的深度神經網絡手寫數字識別模型

    基于python的Keras庫構建的深度神經網絡手寫數字識別模型

    目錄 模型訓練過程 ①導入所需的庫 ②加載手寫體數據集,將數據集分為訓練集和測試集 ③數據預處理 ④構建模型 ⑤編譯模型 ⑥訓練模型 ⑦使用測試集進行驗證 ⑧輸出模型準確率和時間消耗 完整代碼如下: 模型訓練過程 使用到的數據集為IMDB電影評論情感分類數據集,該

    2024年02月09日
    瀏覽(30)
  • 【10個適合新手的人工智能項目 - 02】手寫數字識別:使用Python和機器學習算法,編寫一個手寫數字識別程序,能夠識別手寫數字圖像并將其轉換為數字。

    為了編寫一個手寫數字識別程序,我們需要使用Python編程語言和一些機器學習算法。在這個項目中,我們將使用深度學習神經網絡模型,它被廣泛應用于圖像識別任務。 以下是手寫數字識別程序的基本步驟: 首先,我們需要一個數據集,用于訓練和測試我們的模型。一個常

    2024年02月03日
    瀏覽(91)
  • 機器學習實戰(zhàn) | MNIST手寫數字分類項目(深度學習初級)

    機器學習實戰(zhàn) | MNIST手寫數字分類項目(深度學習初級)

    準備寫個系列博客介紹機器學習實戰(zhàn)中的部分公開項目。首先從初級項目開始。 本文為初級項目第二篇:利用MNIST數據集訓練手寫數字分類。 項目原網址為:Deep Learning Project – Handwritten Digit Recognition using Python。 第一篇為:機器學習實戰(zhàn) | emojify 使用Python創(chuàng)建自己的表情符號

    2024年02月15日
    瀏覽(27)
  • (九)人工智能應用--深度學習原理與實戰(zhàn)--前饋神經網絡實現(xiàn)MNST手寫數字識別

    (九)人工智能應用--深度學習原理與實戰(zhàn)--前饋神經網絡實現(xiàn)MNST手寫數字識別

    目標: 識別手寫體的數字,如圖所示: 學習內容: 1、掌握MNIST數據集的加載和查看方法 2、熟練掌握Keras建立前饋神經網絡的步驟【重點】 3、掌握模型的編譯及擬合方法的使用,理解參數含義【重點】 4、掌握模型的評估方法 5、掌握模型的預測方法 6、掌握自定義圖片的處理與

    2024年02月13日
    瀏覽(38)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包