In diesem Blogbeitrag erkunden wir die faszinierende Welt der Bildverarbeitung und tauchen in die Welt des maschinellen Lernens ein, indem wir einen einfachen Ziffernerkenner entwickeln. Wir werden die Schritte der Vorbereitung unseres Datensatzes, des Trainings eines Modells und der Implementierung der Erkennungsfunktionalität durchgehen. Am Ende verfügen Sie über ein praktisches Verständnis dafür, wie Sie Python-Bibliotheken nutzen können, um Ihre eigenen bildbasierten Klassifikatoren zu erstellen.
Um unsere Ziffernerkennung zu erstellen, benötigen wir einen Datensatz mit beschrifteten Bildern. Es stehen verschiedene Datensätze zur Verfügung, z. B. MNIST oder benutzerdefinierte Datensätze, die Sie erstellen können. Der Einfachheit halber verwenden wir den MNIST-Datensatz, der aus 60.000 Trainingsbildern und 10.000 Testbildern besteht, die jeweils eine handgeschriebene Ziffer von 0 bis 9 darstellen.
Beginnen wir mit dem Laden des MNIST-Datensatzes in unsere Python-Umgebung. Wir werden das beliebte verwenden tensorflow
Bibliothek zum einfachen Zugriff und Bearbeiten des Datensatzes:
import tensorflow as tf# Load the MNIST dataset
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
Vor dem Coaching unseres Modells ist es wichtig, die Bilder vorzuverarbeiten. Wir werden die Pixelwerte auf einen Bereich von 0 bis 1 normalisieren, um das Lernen des Modells zu erleichtern. Zusätzlich formen wir die 2D-Bilder in 1D-Vektoren um:
# Normalize pixel values
x_train, x_test = x_train / 255.0, x_test / 255.0# Reshape pictures to 1D vectors
x_train = x_train.reshape(-1, 28 * 28)
x_test = x_test.reshape(-1, 28 * 28)
Für unsere Ziffernerkennung verwenden wir ein einfaches Feed-Ahead-Neuronales Netzwerk. Der tensorflow.keras
Mit der API können Sie unser Modell bequem definieren und trainieren:
mannequin = tf.keras.fashions.Sequential([
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10)
])mannequin.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
mannequin.match(x_train, y_train, epochs=10, validation_data=(x_test, y_test))
Nachdem unser Modell nun trainiert ist, implementieren wir die Erkennungsfunktion. Wir können unserem Modell ein Bild zur Verfügung stellen und die vorhergesagte Ziffernbezeichnung erhalten:
import numpy as np
from PIL import Picturedef recognize_digit(image_path):
# Load and preprocess the picture
picture = Picture.open(image_path).convert('L').resize((28, 28))
image_array = np.array(picture) / 255.0
image_vector = image_array.reshape(1, 28 * 28)
# Make the prediction
prediction = mannequin.predict(image_vector)
predicted_label = np.argmax(prediction)
return predicted_label
Glückwunsch! Sie haben mithilfe von Bildverarbeitungstechniken und maschinellem Lernen erfolgreich einen einfachen Ziffernerkenner erstellt. Wir haben die Schritte des Ladens und Vorverarbeitens des Datensatzes, des Erstellens und Trainierens des Modells sowie der Implementierung der Erkennungsfunktionalität behandelt. Jetzt können Sie dieses Wissen erweitern, um andere Bildtypen zu erkennen oder komplexere Modelle zu untersuchen, um die Genauigkeit zu verbessern.
Denken Sie daran, dass dies nur die Spitze des Eisbergs im riesigen Bereich der Pc Imaginative and prescient und des maschinellen Lernens ist. Durch kontinuierliches Lernen und Erkunden können Sie unzählige Möglichkeiten erschließen und noch fortschrittlichere Bilderkennungssysteme erstellen.
Viel Spaß beim Codieren!