Letztes Mal Erstellen Sie Trainingsdaten mit den gesammelten Bilddaten. Da die Berechnung, ob die Bilddaten unverändert an Tensol Flow übergeben werden, sehr lange dauert, werden sie in das Numpy-Array-Format konvertiert, um die Berechnungszeit zu verkürzen.
from PIL import Image
import os, glob
import numpy as np
from sklearn import model_selection
classes = ["monkey", "boar", "crow"]
num_classes = len(classes)
image_size = 50
X = []
Y = []
Dieses Mal werden wir "Affe", "Eber" und "Krähe" klassifizieren, damit wir die Schlüsselwörter speichern. Die Bildgröße ist auf 50x50 vereinheitlicht. "X" und "Y" sind Beschriftungen, die die Bilddaten angeben und angeben, ob das Bild Affe (0), Bohrung (1) oder Krähe (2) ist.
for index, classlabel in enumerate(classes):
photos_dir = "./" + classlabel
files = glob.glob(photos_dir + "/*.jpg ")
for i, file in enumerate(files):
if i >= 141: break # monkey,boar,Krähe Stellen Sie jeweils die Mindestanzahl von Daten ein
image = Image.open(file)
image = image.convert("RGB")
image = image.resize((image_size, image_size))
data = np.asarray(image)
X.append(data)
Y.append(index)
X = np.array(X)
Y = np.array(Y)
glob ()
ist eine Methode, mit der eine Liste von Dateien abgerufen werden kann, indem Platzhaltermuster abgeglichen werden. Die folgenden Daten werden in Dateien gespeichert.
['./monkey\\49757184328.jpg',
'./monkey\\49767449258.jpg',
...
Öffnen Sie für jedes Bild das Bild, konvertieren Sie es in das RGB 256-Abstufungsformat und ändern Sie die Größe auf 50 x 50. Konvertieren Sie es dann in das Numpy-Array-Format (das schneller zu sein scheint als die Python-Liste).
Das auf diese Weise erstellte "X" und "Y" enthält die folgenden Daten
X
(423, 50, 50, 3)Anordnung von
[[[[ 89 92 60]
[ 85 84 52]
[ 91 84 51]
...
[177 178 24]
[142 145 15]
[231 219 35]]
...
Y
423 Array
[0 0 ... 1 1 ... 2 2 ...]
Zwei Methoden werden verwendet, um zu einem Numpy-Array zu wechseln, z. B. "data = np.asarray (image)" und "X = np.array (X)". Das Verhalten ist beim Konvertieren von einer Liste in ein Numpy-Array dasselbe, beim Konvertieren von einem Numpy-Array in ein Numpy-Array ist das Verhalten jedoch anders. Referenz: https://punhundon-lifeshift.com/array_asarray
Verwenden Sie die Methode "train_test_split", um "X" und "Y" in Trainingsdaten und Modellvalidierungsdaten aufzuteilen und unter dem Dateinamen "animal.npy" zu speichern.
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, Y)
xy = (X_train, X_test, y_train, y_test)
np.save("./animal.npy", xy)
X_train
und y_train
befinden sich in einem Array von 317,
"X_test" und "y_test" befinden sich in einem Array von 106.
Das heißt, ungefähr 75% der Daten von "X" und "Y" sind in Züge unterteilt, und ungefähr 25% der Daten sind in Tests unterteilt.
Recommended Posts