Créer des données d'entraînement

introduction

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.

Code source

importer

from PIL import Image
import os, glob
import numpy as np
from sklearn import model_selection

Préparation au processus de conversion

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 ...]

De côté

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

Sauvegarde des données d'entraînement

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

Créer des données d'entraînement
Données de formation par CNN
Outil de création de données d'entraînement pour la détection d'objets OpenCV
Cours de formation Data Scientist Chapitre 2 Jour 2
Cours de formation Data Scientist Chapitre 3 Jour 3
Cours de formation Data Scientist Chapitre 4 Jour 1
Cours de formation Data Scientist Chapitre 3 Jour 1 + 2
Fractionnement des données de formation étiquetées sur le nettoyage des pandas
[Python] Chapitre 04-06 Différentes structures de données (création de dictionnaire)
Création d'un logiciel qui visualise la structure des données ~ Heap ~
Le traitement des données
Création d'une application d'analyse de données à l'aide de Streamlit
J'ai suivi une formation à l'analyse de données Python à distance
Créer une feuille de calcul Google à l'aide de l'API Python / Google Data
Données d'entraînement et données de test (Que sont X_train et y_train?) ①
Données d'entraînement et données de test (Que sont X_train et y_train?) ②
Division des données de formation en apprentissage automatique et apprentissage / prédiction / vérification