Dernière fois Créez des données d'entraînement à l'aide des données d'image collectées. Si vous transmettez les données d'image à Tensol Flow telles quelles, le calcul prendra beaucoup de temps, alors convertissez-les au format de tableau numpy pour raccourcir le temps de calcul.
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 = []
Cette fois, nous classerons «singe», «sanglier» et «corbeau», nous allons donc stocker les mots-clés. La taille de l'image est unifiée à 50x50. «X» et «Y» sont des étiquettes qui indiquent les données d'image et si l'image est respectivement un singe (0), un alésage (1) ou un corbeau (2).
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,corbeau Ajuster au nombre minimum de données pour chaque
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 ()
est une méthode qui peut obtenir une liste de fichiers en faisant correspondre des modèles génériques, et les données suivantes sont stockées dans des fichiers.
['./monkey\\49757184328.jpg',
'./monkey\\49767449258.jpg',
...
Pour chaque image, ouvrez l'image, convertissez-la au format de gradation RVB 256 et redimensionnez-la à 50x50. Ensuite, convertissez-le au format de tableau numpy (qui semble être plus rapide que la liste Python).
Les "X" et "Y" créés de cette manière contiennent les données suivantes
X
(423, 50, 50, 3)Tableau de
[[[[ 89 92 60]
[ 85 84 52]
[ 91 84 51]
...
[177 178 24]
[142 145 15]
[231 219 35]]
...
Y
423 baie
[0 0 ... 1 1 ... 2 2 ...]
Deux méthodes sont utilisées pour passer à un tableau numpy, comme data = np.asarray (image)
et X = np.array (X)
. Le comportement est le même lors de la conversion d'une liste en un tableau numpy, mais le comportement est différent lors de la conversion d'un tableau numpy en un tableau numpy.
Référence: https://punhundon-lifeshift.com/array_asarray
Utilisez la méthode train_test_split
pour diviser X
et Y
en données d'entraînement et en données de validation de modèle et enregistrez-les sous le nom de fichier" animal.npy ".
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
et y_train
sont dans un tableau de 317,
«X_test» et «y_test» sont dans un tableau de 106.
C'est-à-dire qu'environ 75% des données de "X" et "Y" sont divisées en train, et environ 25% des données sont divisées en test.
Recommended Posts