[PYTHON] Bilderkennung mit Keras

Letztes Mal Erstellen Sie ein Bilderkennungsprogramm, das Affen, Inoshi und Krähen anhand der erstellten Trainingsdaten unterscheidet.

Was ist Keras?

https://keras.io/ja/

Keras ist eine in Python geschriebene übergeordnete neuronale Netzwerkbibliothek, die auf TensorFlow, CNTK oder Theano ausgeführt werden kann.

Quellcode

importieren

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras.utils import np_utils
import keras
import numpy as np

Hauptfunktion

Der allgemeine Ablauf ist wie folgt:

  1. Laden Sie das zuvor gespeicherte animal.npy
  2. Übergeben Sie die Trainingsdaten an die Trainingsfunktion, um ein Modell zu erstellen
  3. Übergeben Sie das erstellte Modell an die Bewertungsfunktion, um die Klassifizierungsgenauigkeit zu überprüfen.
classes = ["monkey", "boar", "crow"]
num_classes = len(classes)
image_size = 50

def main():
    X_train, X_test, y_train, y_test = np.load("./animal.npy", allow_pickle=True)
    X_train = X_train.astype("float") / 256
    X_test = X_test.astype("float") / 256
    y_train = np_utils.to_categorical(y_train, num_classes)
    y_test = np_utils.to_categorical(y_test, num_classes)

    model = model_train(X_train, y_train)
    model_eval(model, X_test, y_test)

To_categorical hat ein Array von [0, 1, 2]

[[1, 0, 0]
 [0, 1, 0]
 [0, 0, 1]]

Konvertieren Sie also in ein Array, das 1 nur im Index der richtigen Antwort und 0 an anderen Stellen enthält.

Ausbildung

Beziehen Sie sich auf die 34. Zeile und danach auf den folgenden Code Referenz: https://github.com/keras-team/keras/blob/master/examples/cifar10_cnn.py

def model_train(X, y):
    model = Sequential()
    model.add(Conv2D(32, (3,3), padding='same', input_shape=X.shape[1:]))
    model.add(Activation('relu'))
    model.add(Conv2D(32, (3,3)))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2,2)))
    model.add(Dropout(0.25))

    model.add(Conv2D(64, (3,3), padding='same'))
    model.add(Activation('relu'))
    model.add(Conv2D(64, (3,3)))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2,2)))
    model.add(Dropout(0.25))

    model.add(Flatten())
    model.add(Dense(512))
    model.add(Activation('relu'))
    model.add(Dropout(0.5))
    model.add(Dense(3))
    model.add(Activation('softmax'))

    opt = keras.optimizers.rmsprop(lr=0.0001, decay=1e-6)

    model.compile(loss='categorical_crossentropy',
                    optimizer=opt, metrics=['accuracy'])

    model.fit(X, y, batch_size=32, epochs=100)

    #Modell speichern
    model.save("./animal_cnn.h5")

    return model

model = Sequential() Erstellen Sie ein Modellobjekt

model.add(Conv2D(...)) Fügen Sie eine Ebene hinzu

model.add(Activation('relu')) Fügen Sie eine Ebene hinzu, die "ReLU (Rectified Linear Unit)" als Aktivierungsfunktion verwendet

model.add(MaxPooling2D(pool_size=(2,2))) Fügen Sie eine Ebene für maximales Pooling hinzu (Teilen Sie die Eingabe in vorgegebene Bereiche und geben Sie den Maximalwert für jeden Bereich aus).

model.add(Dropout(0.25)) 25% verwerfen (was?) Um Datenverzerrungen zu beseitigen

opt = keras.optimizers.rmsprop(lr=0.0001, decay=1e-6) Optimierungserklärung. Mit der Methode "optimizers.rmsprop" beträgt die Lernrate 0,0001 und die Rate zum Verringern der Lernrate beträgt jedes Mal 0,000001.

model.compile() Modell kompilieren.

model.fit(X, y, batch_size=32, epochs=100) Trainiere mit X und y. batch_size ist die Anzahl der Daten, die in einem Training verwendet werden. Wie viele Sätze von "Epochen" trainieren?

Auswertung der Trainingsergebnisse

Überprüfen Sie das Modell, das mit der Evaluierungsmethode erstellt wurde.

def model_eval(model, X, y):
    scores = model.evaluate(X, y, verbose=1)
    print('test Loss: ', scores[0])
    print('test Accuracy: ', scores[1])

Recommended Posts

Bilderkennung mit Keras
Bilderkennung mit Keras + OpenCV
Bilderkennung
Gesichtserkennung von Anime-Charakteren mit Keras
Ich habe mit Jupyter eine einfache Bilderkennung versucht
Bildverarbeitung mit MyHDL
Ich habe versucht, Bilder mit CIFAR-10 mit Keras-Learning- zu erkennen.
Gesichtserkennung mit Edison
Ich habe versucht, Bilder von CIFAR-10 mit Keras-Bilderkennung zu erkennen.
CIFAR-10-Tutorial mit Keras
Bilderkennung mit Caffe Model Chainer Yo!
Pfeffer-Tutorial (7): Bilderkennung
Bildverarbeitung mit Python
Multivariates LSTM mit Keras
Grundlagen der CNN 1-Bilderkennung
Bildverarbeitung mit PIL
Deep Learning Bildanalyse beginnend mit Kaggle und Keras
Identifizieren Sie den Namen aus dem Blumenbild mit Keras (Tensorfluss)
Fordern Sie die Bildklassifizierung mit TensorFlow2 + Keras 3 heraus ~ Visualisieren Sie MNIST-Daten ~
Bis Sie mit Jupyter eine einfache Bilderkennung durchführen können
Bild herunterladen mit Flickr API
Bildverarbeitung mit Python (Teil 2)
Lesen Sie die Bildkoordinaten mit Python-matplotlib
Bildverarbeitung mit PIL (Pillow)
Gesichtserkennung mit OpenCV von Python
Keras-Installation (von Anaconda verwendet)
Bildbearbeitung mit Python OpenCV
Deep Learning Bilderkennung 1 Theorie
AutoEncodder-Notizen mit Keras
Gesichtserkennung durch Amazon Rekognition
Word2vec mit Theano + Keras implementiert
Satzerzeugung mit GRU (Keras)
Hochladen und Anpassen von Bildern mit django-ckeditor
Optimieren von Keras-Parametern mit Keras Tuner
Sortieren von Bilddateien mit Python (2)
Sortieren von Bilddateien mit Python (3)
Erstellen Sie den Image Viewer mit Tkinter
Bildverarbeitung mit Python (Teil 1)
Tweet mit Bild in Python
Bilddateien mit Python sortieren
Anwendung der CNN2-Bilderkennung
Erstellen Sie einfach CNNs mit Keras
Bildverarbeitung mit Python (3)
Bildunterschriftengenerierung mit Chainer
Holen Sie sich Bildfunktionen mit OpenCV
Effizientes GAN mit Keras implementiert
Gesichtserkennung / Schneiden mit OpenCV
Versuchen Sie die Gesichtserkennung mit Python
[Python] Bildverarbeitung mit Scicit-Image
CNN mit Keras Versuchen Sie es mit dem Bild, das Sie aufgenommen haben
Bildklassifizierung mit selbst erstelltem neuronalen Netzwerk von Keras und PyTorch
Bilderkennung mit API aus null Wissen mit AutoML Vision
Echtzeit-Bilderkennung auf Mobilgeräten mithilfe des TensorFlow-Lernmodells
Ich habe versucht, die handschriftliche Zeichenerkennung von Runenzeichen mit CNN mithilfe von Keras zu erkennen
Zahlenerkennung in Bildern mit Python
MNIST (DCNN) mit Keras (TensorFlow-Backend)
Schneiden Sie ein Bild mit Python aus
Grundlagen der Echtzeit-Bildverarbeitung mit opencv
Fordern Sie die Bildklassifizierung mit TensorFlow2 + Keras 4 heraus. ~ Lassen Sie uns mit dem trainierten Modell ~ vorhersagen
[Python] Verwenden von OpenCV mit Python (Bildfilterung)