Personligt projekt

Juli 2021

Keras Deep-Learning

Vision baseret maskinelæring som kan læse håndskrevne tal

Jeg har udforsket en del i maskine læring, og har lavet min egen maskine lærings model. Jeg brugte keras som er googles deep learning API til at lave en model som kan klassificere håndskrevne numre. Projektet er lavet i vs code og skrevet i python. Daten er importen fra keras.datasets.mnist og har over 10'000 billeder til at træne en model med.

Keras Deep-Learning

01

Preprocessing

Først skal billederne hentes fra serveren. Billederne er sort/hvis på en scala fra 0-255 og hver pixel i billedet er udskiftet med et tal.

import keras
import keras.datasets.mnist
import keras.layers
 
data = keras.datasets.mnist 
(train_images, train_labels), (test_images, test_labels) = data.load_data()
train_images = train_images/255.0
train_images = train_images/255.0
Preprocessing

02

Create & compile model

Jeg brugte keras. Sequential til at lave en model med 3 lag. Første lag er til inputs. der er 784 inputs (28*28). Det midterste lag (hidden layer) har 128 neuroner. Det sidste lag har 10 output neuroner. fra 0 til 9.

model = keras.Sequential([
# input layer 784/28*28 neurons
keras.layers.Flatten(input_shape=(28, 28)),
# hidden layer 128 neurons
keras.layers.Dense(128, activation=“relu”),
# output layer 10 neurons
keras.layers.Dense(10, activation=“softmax”) ])
# configures the model for training
model.compile(optimizer=“Adam", loss=“sparse_categorical_crossentropy”, metrics=[“accuracy”])
Create & compile model

03

Train the model

Modellen skal nu tilpasse sig dataen. Flere tusinde billeder bliver vist til modellen sammen med resultatetat billedets Verdi. Det er også 15 epochs, hvilket vil sige at den ser alting 15 gange I tilfældig rækkefølge.

# train model
model.fit(train_images, train_labels, epochs=15)
# evaluate model
test_loss, test_acc = model.evaluate(test_images, test_labels)
# save model
model.save(“digit_classifier.h5”)
Train the model

04

Use the model

Nu hvor modellen er gemt som en fil, er det nemt importere den I en ny fil, og bruge den til til at klassificere nye tal. Først importer jeg et billede af et tal. Billedet skal derefter gøres sort/hvis og eskaleres ned til en størrelse på 28 * 28 pixels. Jeg importere modellen som tidligere blev gemt og bruger den til at klassificere det nye billede.

import cv2
file = r"image.png"
image = cv2.imread(file, cv2.IMREAD_GRAYSCALE)
img_resized = cv2.resize(image, (28, 28), interpolation=cv2.INTER_LINEAR)
img_resized = cv2.bitwise_not(img_resized)
 
model_digit = keras.models.load_model("digit_classifier.h5")
predection = model.predict(img_resized)
print(class_names[predection])
Use the model

Kenni-kollemorten.dk © All rights reaerved