[PYTHON] Ich habe versucht, Oba Hanana und Otani Emiri durch tiefes Lernen zu klassifizieren

Einführung

Schön, euch alle zu treffen. Ich heiße Oboro. Kann ich, da ich dieses Mal das Klassifizierungsproblem durch Bilderkennung in der Schulung des Unternehmens gelöst habe, tatsächlich die gleiche Genauigkeit und das gleiche Ergebnis mit dem erzielen, was mir gefällt? Wenn die Genauigkeit nicht hoch ist, möchte ich auch überprüfen, welche Vorgehensweise zur Verbesserung der Genauigkeit gewählt werden kann. Ich habe den Artikel unter der Annahme geschrieben, dass Menschen, die nicht mit KI verwandt sind, den Artikel lesen werden. Ich denke, dass dies nicht für diejenigen ausreicht, die durch diesen Artikel tiefes Lernen lernen möchten. Der Inhalt der Implementierung ist jedoch einfach zu testen. Schauen Sie sich das bitte an.

Wer sind Hanana Oba und Emiri Otani?

Kana Oba ist Mitglied der Idolgruppe "= LOVE", die ich liebe. ** Wahnsinnig süß. ** **.

ELGnBcXUcAITFnN.jfif

Unten ist ein Twitter-Account. Bitte folgen Sie uns. Hanana Oba (https://twitter.com/hana_oba) Emiri Otani ist auch Mitglied der Idolgruppe "= LOVE". Dieses Kind ist auch süß.

EI7phQSUYAEtZfv.jfif

Emiri Otani (https://twitter.com/otani_emiri)

Unterschied zum Trainingsauftrag

Im Training habe ich das Problem der Klassifizierung von Hunden und Katzen gelöst. Ich denke, die Genauigkeit war ungefähr 95% korrekte Antwortrate.

  1. Voraussetzungen für die Aufgabe
  1. Bedingungen für dieses Experiment

――Die Anzahl der Proben beträgt jeweils 300 (Es ist ein Geheimnis, dass ich mich gefreut habe, als ich 300 Bilder auf Twitter gespeichert habe, um Proben zu sammeln).

Vorlesung im Klassenzimmer

Bevor ich es implementiere, werde ich ein wenig über die Theorie der Bildverarbeitung durch tiefes Lernen erklären. Wenn Sie nicht sowohl an Implementierungs- als auch an Vorlesungen im Klassenzimmer interessiert sind, fahren Sie bitte mit dem Ende fort.

Was ist tiefes Lernen?

Vor dem tiefen Lernen Ich denke, es gibt viele Menschen, die nicht verstehen, was KI, maschinelles Lernen und tiefes Lernen bedeuten. Lassen Sie mich dies kurz erklären, einschließlich dieser. Es tut mir leid, wenn ich einen Fehler gemacht habe ...

――AI ist künstliche Intelligenz, die buchstäblich künstlich erzeugte Intelligenz ist.

――Maschinenlernen ist eine der Technologien, die derzeit für die Realisierung von KI unverzichtbar sind. Derzeit ist es der Mainstream, maschinelles Lernen zur Realisierung von KI zu verwenden.

――Tiefes Lernen ist eine der Methoden des maschinellen Lernens. Sie können anhand einer großen Datenmenge beurteilen, welche Daten wichtig und wie wichtig sie sind, und eine Lösung ableiten.

Umgang mit Bilddaten

Ein Pixel Bilddaten kann durch die Helligkeit (Helligkeit 0-255) für jedes RGB (Rot, Grün, Blau) ausgedrückt werden, sodass es als numerische Daten behandelt werden kann, indem es in diese Form gebracht wird. Beispiel) Bei 22 * 224 Bildern Dies kann durch eine Matrix von 224 * 224 * 3 (vertikal * horizontal * drei Primärfarben) dargestellt werden, also img.shape = (224,224,3).

Über neuronale Netze

Unten sehen Sie ein einfaches Bild des neuronalen Netzwerks.

ニューラルネットワーク.jpg

z1 wird nach folgender Formel berechnet.

z_1  = w_{31} y_1 + w_{32} y_2

Da y1 und y2 ebenfalls auf die gleiche Weise berechnet werden, kann die Ausgabe für jede Eingabe und jedes Gewicht berechnet werden. Vergleichen Sie Ausgabe und Antwort und passen Sie das Gewicht versehentlich an Außerdem wird der Ausgang mit einem anderen Eingang ausgegeben und so weiter und so fort. Deep Learning soll sehr ausdrucksstark sein, da diese Zwischenschicht mehrschichtig ist. Ich denke, das ist leicht zu verstehen, wenn Sie denken, dass die gewünschte Ausgabe durch verschiedene Eingaben und Gewichte ausgedrückt werden kann.

So bauen Sie ein neuronales Netzwerk in der Bildverarbeitung auf

Bei der Bildverarbeitung bilden die obigen Gewichte ein neuronales Netzwerk mit einem Filter. Wenden Sie den Filter (rot) auf den grünen Teil des Bildes an, wie im Bild unten gezeigt. Dies gibt Ihnen schließlich die Ausgabe "6" (blau). Dies hängt davon ab, wie Sie den Filter anwenden. Sie können jedoch eine neue Matrix durch Ausgabe erhalten, indem Sie diese um ein Quadrat nach rechts verschieben und dasselbe tun. Nachdem wir diesen Vorgang wiederholt haben, klassifizieren wir nach dem Wert, zu dem wir gekommen sind.

フィルタ.jpg

Implementierung

Lassen Sie es uns implementieren. Die Umgebung ist Google Colaboratory

idol.ipynb


from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import cv2
import matplotlib.pyplot
import numpy  as np
from glob import glob
import pandas as pd
%cd /content/drive/My Drive/

%tensorflow_version 2.x
from tensorflow.keras.preprocessing import image
from tensorflow.python.client import device_lib
#Modell definieren
from tensorflow.keras import models, layers
from tensorflow.python.keras.layers import Dropout
from tensorflow.keras import utils
import tensorflow as tf
from google.colab import drive
drive.mount('/content/drive')

Ich rufe diesen Bereich bei Tekito an, unabhängig davon, ob ich ihn benutze oder nicht. Rufen Sie den Pfad des Ordners ab, in dem jedes zuvor in Google Drive vorbereitete Bild erfasst wird.

idol.ipynb


%cd /content/drive/My Drive/DATA/IDOL
hana_filepaths = glob('OBA_HANA/*')
emiri_filepaths = glob('OTANI_EMIRI/*')

Da die Größe des gespeicherten Bildes variiert, werden wir die Größe auf 224 * 224 vereinheitlichen und das Bild digitalisieren.

idol.ipynb


image_size = 224
x, t =[],[]
for i in range(0,np.array(emiri_filepaths).size):
  hana_filepath = hana_filepaths[i]
  emiri_filepath = emiri_filepaths[i]
  img = image.load_img(hana_filepath, target_size=(image_size, image_size))
  img = np.array(img)
  x.append(img)
  t.append(0)
  img = image.load_img(emiri_filepath, target_size=(image_size, image_size))
  img = np.array(img)
  x.append(img)
  t.append(1)
x = np.array(x)/255.0 #Standardisierung
t = np.array(t)

Lass uns jetzt lernen.

idol.ipynb


K.clear_session()
reset_seed(0)

#nas_mobile_conv = keras.applications.nasnet.NASNetMobile(weights = 'imagenet', include_top = False, input_shape = (x_train.shape[1:]), classes=2)
nas_mobile_conv = NASNetMobile(weights = 'imagenet', include_top = False, input_shape = (x_train.shape[1:]), classes=2)

x = nas_mobile_conv.layers[-1].output
x = layers.Flatten()(x) #Entfernen Sie die letzte Ausgabeebene und fügen Sie eine neue hinzu
x = layers.Dense(1024, activation = 'relu')(x)
x = layers.BatchNormalization()(x)
x = layers.Dense(516, activation = 'relu')(x)
x = layers.BatchNormalization()(x)
x = layers.Dense(2, activation = 'softmax')(x)

model = models.Model(nas_mobile_conv.inputs, x)
model.summary()

optimizer = tf.keras.optimizers.Adam(lr=1e-4)

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

batch_size = 32
epochs = 100

history = model.fit(x_train, t_train,
                   batch_size = batch_size,
                   epochs = epochs,
                   verbose=1,
                   validation_data=(x_test, t_test))


Mit Epochen = 100 (Anzahl der Wiederholungen) kann der Genauigkeitsübergang für jede Zahl unten grafisch dargestellt werden.

idol.ipynb


result = pd.DataFrame(history.history)
result[['accuracy','val_accuracy']].plot()

ダウンロード.png

Blau sind Trainingsdaten und Orange sind Verifizierungsdaten. (Hana-chans Flohsamenfarbe) Sie können sehen, dass die Genauigkeit der Unschärfe mit zunehmender Häufigkeit zunimmt. Es steigt immer noch, also werde ich versuchen, die Anzahl zu erhöhen.

Ich habe es auf 200 erhöht.

ダウンロード (1).png

Die Genauigkeit hat sich etwas verbessert und die korrekte Antwortrate liegt bei etwa 90%.

Ich bin heute müde, also möchte ich es bis jetzt beenden und beim nächsten Mal möchte ich sehen, wie das Bild durch Ausprobieren und Fehler aussieht, um die Genauigkeit zu verbessern.

Recommended Posts

Ich habe versucht, Oba Hanana und Otani Emiri durch tiefes Lernen zu klassifizieren
Ich habe versucht, Hanana Oba und Emiri Otani durch tiefes Lernen zu klassifizieren (Teil 2)
[Deep Learning von Grund auf neu] Ich habe versucht, Sigmoid Layer und Relu Layer zu implementieren
Ich habe versucht, tief zu lernen
Ich habe versucht, die Anzahl der Mnisten durch unbeaufsichtigtes Lernen zu klassifizieren [PCA, t-SNE, k-means]
Ich habe versucht, Drachenkugeln nach Adalin zu klassifizieren
Ich habe versucht, Dropout zu erklären
Ich habe versucht, Pferderennen vorherzusagen, indem ich alles von der Datenerfassung bis zum tiefen Lernen getan habe
Ich habe versucht, die Erkennung von Anomalien durch spärliches Strukturlernen zu implementieren
Ich habe versucht, MNIST nach GNN zu klassifizieren (mit PyTorch-Geometrie).
Ich habe versucht, Perceptron Teil 1 [Deep Learning von Grund auf neu] zu implementieren.
Ich habe versucht, in einem tief erlernten Sprachmodell zu schreiben
Ich habe versucht, Deep VQE zu implementieren
Ich habe versucht, die Yin- und Yang-Klassifikation hololiver Mitglieder durch maschinelles Lernen zu überprüfen
Ich habe versucht, Othello AI zu machen, dass ich 7,2 Millionen Hände durch tiefes Lernen mit Chainer gelernt habe
Ich habe versucht, mit Theano tief zu lernen
Ich habe versucht, die Shogi-Spieler Takami 7th Dan und Masuda 6th Dan von CNN zu klassifizieren [Für CNN-Anfänger]
Ich habe versucht, Deep Learning mit Spark × Keras × Docker skalierbar zu machen
Einführung in Deep Learning ~ Falten und Pooling ~
Ich habe versucht, Text mit TensorFlow zu klassifizieren
Ich habe versucht, Deep Learning zu implementieren, das nicht nur mit NumPy tiefgreifend ist
Ich habe versucht, das Bild durch Klicken mit der rechten und linken Maustaste in den angegebenen Ordner zu verschieben
Ich habe versucht, Kanas handschriftliche Zeichenerkennung durchzuführen. Teil 2/3 Datenerstellung und Lernen
Ich habe die übliche Geschichte ausprobiert, Deep Learning zu verwenden, um den Nikkei-Durchschnitt vorherzusagen
Ich habe versucht, die Blasensortierung nach Sprache zu programmieren
Chainer und Deep Learning durch Funktionsnäherung gelernt
Ich habe DCGAN implementiert und versucht, Äpfel zu generieren
Ich habe versucht, durch Schaben ein Bild zu bekommen
[Python] Deep Learning: Ich habe versucht, Deep Learning (DBN, SDA) ohne Verwendung einer Bibliothek zu implementieren.
Ich habe versucht, die Strichzeichnung mit Deep Learning aus dem Bild zu extrahieren
Ich habe versucht, das Vorhandensein oder Nichtvorhandensein von Schnee durch maschinelles Lernen vorherzusagen.
Paralleles Lernen von Deep Learning durch Keras und Kubernetes
Einführung in Deep Learning ~ Lokalisierungs- und Verlustfunktion ~
Ich habe versucht, die Veränderung der Schneemenge für 2 Jahre durch maschinelles Lernen vorherzusagen
Ich habe versucht, das Bild zu verarbeiten und zu transformieren und die Daten für maschinelles Lernen zu erweitern
Ich habe versucht, Cifar10 mit der SONY Deep Learning Library NNabla [Nippon Hurra] zu implementieren.
Ich habe versucht, den G-Test und die E-Qualifikation durch Training ab 50 zu bestehen
[Einführung in PID] Ich habe versucht, ♬ zu steuern und zu spielen
Ich habe versucht, Deep Learning mit Spark × Keras × Docker 2 Multi-Host-Edition skalierbar zu machen
[Keras] Ich habe versucht, das Problem der Klassifizierung des Donut-Typ-Bereichs durch maschinelles Lernen zu lösen. [Studie]
Ich habe versucht, Mr. Hanyu und Mr. Hanyu mit dem Verarbeiter der Verarbeitung natürlicher Sprache × Naive Bayes zu klassifizieren
"Deep Learning from Grund" Memo zum Selbststudium (Nr. 16) Ich habe versucht, SimpleConvNet mit Keras zu erstellen
"Deep Learning from Grund" Memo zum Selbststudium (Nr. 17) Ich habe versucht, DeepConvNet mit Keras zu erstellen
Ich habe versucht, maschinelles Lernen (Objekterkennung) mit TouchDesigner zu verschieben
Ich habe den Deep Learning Library Chainer installiert und verwendet
Ich habe versucht, DCGAN mit PyTorch zu implementieren und zu lernen
Ich habe versucht, CPython ein Post-Inkrement hinzuzufügen. Übersicht und Zusammenfassung
Ich habe versucht, mit VOICEROID2 automatisch zu lesen und zu speichern
Ich habe versucht, Linux Systemaufrufe und Scheduler hinzuzufügen
Künstliche Intelligenz, maschinelles Lernen, tiefes Lernen zu implementieren und zu verstehen
Ich habe versucht, Grad-CAM mit Keras und Tensorflow zu implementieren
Ich habe versucht, Scrapy auf Anaconda zu installieren und konnte es nicht
Ich habe versucht, die Stimmen der Sprecher zu klassifizieren
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
Ich habe versucht zu debuggen.
[Deep Learning von Grund auf neu] Ich habe versucht, die Gradientenbestätigung auf leicht verständliche Weise zu erklären.
Ich habe versucht, Discord Bot und Gesichtserkennung für LT zu kombinieren.
Ich habe versucht, die Videoerstellung durch parallele Verarbeitung zu beschleunigen
Ich habe versucht, die Informationen des Webs mit "Requests" und "lxml" abzurufen.