Lorsque vous commencez à vous intéresser à l'apprentissage en profondeur et à l'IA et que vous essayez de déplacer l'exemple de code, de nombreux exemples utilisant un ensemble de données appelé MNIST apparaissent. MNIST est un ensemble de données de caractères manuscrits classés par des étiquettes de 0 à 9 et est une image en échelle de gris avec une résolution de 28x28.
L'exemple de code lui-même peut être exécuté tant que l'environnement peut être généré. Je veux utiliser l'ensemble de données d'origine que j'ai créé moi-même, et quand je regarde le code MNIST, la création de l'ensemble de données est presque terminée avec la ligne suivante.
(x_train, y_train), (x_test, y_test) = mnist.load_data()
Créer soudainement votre propre ensemble de données à partir d'ici est un obstacle très important. Donc, dans cet article, au lieu de mnist.load_data, nous allons implémenter une fonction pour créer votre propre jeu de données au format mnist.
mnist.load_data() Les spécifications MNIST sont également introduites dans la documentation officielle. https://keras.io/ja/datasets/
L'utilisation est la même que celle de l'exemple ci-dessus. x_train, y_train stocke les données d'entraînement et les étiquettes, x_test et y_test stockent également un ensemble de données de vérification.
En ce qui concerne les données d'entraînement, cet article est très facile à comprendre, je vais donc le partager. Division des données de formation au machine learning et apprentissage / prédiction / vérification
Préparatifs pour la gestion des load_data que je fais cette fois -Enregistrer les images séparément pour chaque dossier Seulement ça!
Voici une liste des importations et du code source.
import.txt
from PIL import Image
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder
import pandas as pd
import os, glob
my_load_data().py
def my_load_data(folder_str, size):
print('load_dataset...')
folders = folder_str.split('__')
X = []
Y = []
for index, fol_name in enumerate(folders):
files = glob.glob(fol_name + '/*.jpg')
for file in files:
image = Image.open(file)
image = image.resize((size, size))
image = image.convert('L')
data = np.asarray(image)
X.append(data)
Y.append(index)
X = np.array(X)
Y = np.array(Y)
oh_encoder = OneHotEncoder(categories='auto', sparse=False)
onehot = oh_encoder.fit_transform(pd.DataFrame(Y))
X_train, X_test, y_train, y_test = train_test_split(X, onehot, test_size=0.2)
return X_train, X_test, y_train, y_test
L'argument formel folder_str spécifie le dossier dans lequel l'image est divisée. Lorsque vous attachez une étiquette, plusieurs dossiers sont nécessaires, spécifiez donc les noms de dossier séparés par «__». L'exemple de code a une extension de jpg, mais vous pouvez la modifier. la taille est la résolution. Puisque MNIST est 28x28, spécifiez 28. L'étiquette semble être très chaude, je vais donc la convertir pour le moment. C'est la fonction principale lors de l'utilisation de la fonction ci-dessus.
sample.py
import argparse
def main():
parser = argparse.ArgumentParser(description='sample')
parser.add_argument('--folder', '-i')
parser.add_argument('--size', '-s', type=int, default=28)
args = parser.parse_args()
X_train, X_test, y_train, y_test = my_load_data(args.folder, args.size)
#Vérification
print('X_train',X_train)
print('y_train',y_train)
Exemple de commande d'exécution
python sample.py --folder f1__f2__f3 -s 28
f1, f2 et f3 supposent le dossier contenant les images dans le répertoire courant.
Cette fois, j'ai créé my_load_data afin que je puisse essayer MNIST load_data avec mes propres données. Nous espérons que vous apprécierez de déplacer l'échantillon MNIST. Si vous rencontrez des problèmes avec l'opération ou si vous avez des questions, n'hésitez pas à commenter.
En écrivant cet article, j'ai emprunté la sagesse de divers ancêtres. Je vais l'écrire à la fin. Merci pour la lecture. Si vous aimez LGTM, s'il vous plaît!
[Comment convertir les données d'image au format numpy](https://newtechnologylifestyle.net/%E7%94%BB%E5%83%8F%E3%83%87%E3%83%BC%E3%82%BF % E3% 81% 8B% E3% 82% 89 numpy% E5% BD% A2% E5% BC% 8F% E3% 81% AB% E5% A4% 89% E6% 8F% 9B% E3% 81% 99% E3 % 82% 8B% E6% 96% B9% E6% B3% 95 /)
Comprendre la détection d'anomalies d'image Keras VAE
Reproduction d'image avec encodeur automatique à convolution, suppression du bruit, segmentation
Recommended Posts