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.
Kana Oba ist Mitglied der Idolgruppe "= LOVE", die ich liebe. ** Wahnsinnig süß. ** **.
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üß.
Emiri Otani (https://twitter.com/otani_emiri)
Im Training habe ich das Problem der Klassifizierung von Hunden und Katzen gelöst. Ich denke, die Genauigkeit war ungefähr 95% korrekte Antwortrate.
Die Anzahl der Proben beträgt 100 für jeden Hund und jede Katze
Die Bildgröße beträgt 224 * 224
Trainingsdaten machen 70% der Gesamtzahl aus (Verifizierungsdaten machen 30% der Gesamtzahl aus)
――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).
Die Bildgröße beträgt 224 * 224
Trainingsdaten machen 70% der Gesamtzahl aus (Verifizierungsdaten machen 30% der Gesamtzahl aus)
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.
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.
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).
Unten sehen Sie ein einfaches Bild des neuronalen Netzwerks.
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.
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.
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()
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.
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