[PYTHON] [Für Anfänger im Deep Learning] Implementierung einer einfachen binären Klassifizierung durch vollständige Kopplung mit Keras

Überblick

Mit dem Aufkommen des tiefen Lernens ist es möglich geworden, KI-Aufgaben genauer als herkömmliches maschinelles Lernen auszuführen. Deep Learning befindet sich jedoch noch in der Entwicklungsphase, und es gibt keine etablierte Methode, um dies zu tun. Da es sich in der Forschungsphase befindet, sind viele Dinge kompliziert zu implementieren und zu steuern.

Dieses Mal werde ich eine einfache binäre Klassifizierung einführen, um die Implementierung so einfach wie möglich zu gestalten und das tiefe Lernen voranzutreiben.

├── data 
└── exe.py

├── test
│   ├── 00_apple
│   └── 01_orange
└── train
    ├── 00_apple
    └── 01_orange

Konfiguration des Umgebungsverzeichnisses Bereiten Sie ein Ausführungsmodul und ein Verzeichnis zum Speichern von Daten vor. Bereiten Sie im Datenverzeichnis einen Trainingsdatenzug und einen Testdatentest vor und speichern Sie Bilder von Äpfeln bzw. Orangen. Die Daten in jedem Verzeichnis sehen so aus.

Lernen

from keras.utils.np_utils import to_categorical
from keras.optimizers import Adagrad
from keras.optimizers import Adam
import numpy as np
from PIL import Image
import os

#Lesen Sie die Lehrerdaten

train_path="./data/train/"
test_path="./data/test/"

xsize=25
ysize=25

image_list = []
label_list = []


for dataset_name in os.listdir(train_path):

    dataset_path = train_path + dataset_name
    label = 0

    if dataset_name == "00_apple":
        label = 0
    elif dataset_name == "01_orange":
        label = 1

    for file_name in sorted(os.listdir(dataset_path)):
        label_list.append(label)
        file_path = dataset_path + "/" + file_name
        image = np.array(Image.open(file_path).resize((xsize, ysize)))
        print(file_path)

        #In der Reihenfolge von RGB konvertieren,[[Rotes Array],[Grünes Array],[Blaues Array]]
        image = image.transpose(2, 0, 1)

        #In ein eindimensionales Array konvertieren(25*25*3) Red,Green,Die Elemente von Blau sind in der richtigen Reihenfolge angeordnet.
        image = image.reshape(1, image.shape[0] * image.shape[1] * image.shape[2]).astype("float32")[0]

        #Konvertieren Sie in den Bereich 0 bis 1
        image_list.append(image / 255.)


#numpy Umwandlung.
X = np.array(image_list)

# label=0 -> [1,0], label=1 -> [0,1]Umstellung auf
Y = to_categorical(label_list)

#Modelldefinition
model = Sequential()
model.add(Dense(200, input_dim=xsize*ysize*3))
model.add(Activation("relu"))
model.add(Dropout(0.2))

model.add(Dense(200))
model.add(Activation("relu"))
model.add(Dropout(0.2))

model.add(Dense(2))
model.add(Activation("softmax"))

model.compile(loss="categorical_crossentropy", optimizer=Adam(lr=0.001), metrics=["accuracy"])
model.summary()

#Lernen
model.fit(X, Y, nb_epoch=1000, batch_size=100, validation_split=0.1)

CNN wird häufig bei der Klassifizierung von Bildern verwendet, der Einfachheit halber wurde diesmal jedoch nur die vollständige Kombination verwendet. Wenn Sie Formmerkmale aus einem Bild extrahieren, wird es häufig grau skaliert, sodass keine unnötigen Informationen enthalten sind. Es wird jedoch beurteilt, dass Farbinformationen wichtig sind, da es sich um eine Klassifizierung von Äpfeln und Orangen handelt. Alle RGB-Informationen werden jedoch ohne Graustufen an den Eingang des neuronalen Netzes übergeben.

Inferenz

#Inferenz
total = 0.
ok_count = 0.

for testset_name in os.listdir(test_path):

    testset_path = test_path + testset_name

    label = -1

    if testset_name == "00_apple":
        label = 0
    elif testset_name == "01_orange":
        label = 1
    else:
        print("error : label not exist")
        exit()

    for file_name in os.listdir(testset_path):
        label_list.append(label)
        file_path = testset_path + "/" + file_name
        image = np.array(Image.open(file_path).resize((25, 25)))
        print(file_path)
        image = image.transpose(2, 0, 1)
        image = image.reshape(1, image.shape[0] * image.shape[1] * image.shape[2]).astype("float32")[0]
        result = model.predict_classes(np.array([image / 255.]))
        print("label:", label, "result:", result[0])

        total += 1.

        if label == result[0]:
            ok_count += 1



print("accuracy: ", ok_count / total * 100, "%")

Ergebnis

accuracy:  100.0 %

Obwohl Deep Learning sehr genau ist, beträgt die Genauigkeitsrate nicht ganz 100%. Diesmal war es jedoch eine einfache Klassifizierung von Äpfeln und Orangen, sodass die richtige Antwortrate 100% betrug.

Recommended Posts

[Für Anfänger im Deep Learning] Implementierung einer einfachen binären Klassifizierung durch vollständige Kopplung mit Keras
Abnormalitätserkennung durch Auto-Encoder mit Keras [Implementierungsbeispiel für Anfänger]
Implementierungsbeispiel für das Hostile Generation Network (GAN) von Keras [Für Anfänger]
Deep Learning 2 durch Implementierung gelernt (Bildklassifizierung)
Paralleles Lernen von Deep Learning durch Keras und Kubernetes
Implementierung eines Deep Learning-Modells zur Bilderkennung
Tiefes Lernen durch Implementierung (Segmentierung) ~ Implementierung von SegNet ~
Tiefes Lernen der Verstärkung 2 Implementierung des Lernens der Verstärkung
[Python Machine Learning] Empfehlung zur Verwendung von Spyder für Anfänger (Stand August 2020)
Deep Learning durch Implementierung 1 gelernt (Return Edition)
Deep Learning-Anfänger versuchten die Wettervorhersage aus meteorologischen Satellitenbildern mit Keras
Othello-Aus der dritten Zeile von "Implementation Deep Learning" (3)
Algorithmus für maschinelles Lernen (Implementierung einer Klassifizierung mit mehreren Klassen)
Implementierung und Beschreibung mit XGBoost für Anfänger
Objekterkennung durch tiefes Lernen, Keras tief zu verstehen
[Deep Learning] Nogisaka Gesichtserkennung ~ Für Anfänger ~
Othello-Aus der dritten Zeile von "Implementation Deep Learning" (2)
[Für Anfänger künstlicher Intelligenz] Maschinelles Lernen / Deep Learning Programming Lernpfad und Nachschlagewerke
[Super Einführung] Maschinelles Lernen mit Python - Von der Umgebungskonstruktion bis zur Implementierung von Simple Perceptron-
Ein Memorandum über Methoden, die häufig beim maschinellen Lernen mit Scikit-Learn (für Anfänger) verwendet werden.
Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 1
Empfohlene Studienreihenfolge für Anfänger des maschinellen Lernens / Deep Learning
Tiefes Lernen durch Implementierung gelernt ~ Erkennung von Abnormalitäten (Lernen ohne Lehrer) ~
[Lernnotiz] Deep Learning von Grund auf ~ Implementierung von Dropout ~
Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 2
Techniken zum Verständnis der Grundlagen von Deep-Learning-Entscheidungen
Othello ~ Aus der dritten Zeile von "Implementation Deep Learning" (4) [Ende]
[Linux] Grundlagen der Berechtigungseinstellung von chmod für Anfänger
Implementierung des Chainer-Serienlernens mit Mini-Batch variabler Länge
Sammlung und Automatisierung erotischer Bilder durch Deep Learning