[PYTHON] Développez et gonflez votre propre ensemble de données Deep Learning

Étendre le jeu de données

Le Deep Learning est devenu plus facile à atteindre en raison de l'augmentation de la demande et de l'augmentation des cadres. mais, Il est difficile de préparer un ensemble de données!

Puisque des milliers ou des dizaines de milliers de données sont nécessaires, il est très difficile de les collecter à moins que quelqu'un ne les prépare comme des caractères manuscrits. Par conséquent, passez d'un petit nombre d'images à plusieurs images et augmentez-les! Il existe un mécanisme appelé.

J'ai également dû préparer moi-même l'ensemble de données, alors je l'ai étudié, je vais donc l'écrire sous forme de note de service. Si vous avez des erreurs ou de meilleurs moyens, veuillez nous en informer!

J'ai également eu du mal à tirer plus de 1000 de mes propres mains, En raison de l'augmentation du nombre à 54 000 en complétant avec cette expansion, l'intérieur du répertoire est un peu horrible. J'avais peur que ma connaissance ne soit malade. 手のデータセット.jpg

Environnement d'exécution

L'environnement de l'auteur est le suivant. Si vous voulez vous assurer que cela fonctionne, créez un environnement avec ʻanacondaoupyenv` et exécutez-le à partir de là.

Python 3.5.3
Keras==2.0.4
numpy==1.12.1
tensorflow==1.0.0

keras fonctionne sur le backend Tensor Flow.

Qu'est-ce que Keras?

Si vous voulez avoir une idée approximative de Keras, veuillez consulter les Articles précédents. C'est vraiment difficile, donc si vous voulez en savoir plus, veuillez vous référer au Document officiel etc.

J'utiliserai ce Keras cette fois, Comme c'est uniquement dans le but de préparer un ensemble de données, veuillez l'utiliser pour votre framework préféré tel que keras, machine learning, chainer, Tensor Flow et caffe. Peut-être que chaque framework a des fonctionnalités similaires, mais si vous trouvez qu'il est difficile de rechercher et que vous souhaitez l'augmenter rapidement, essayez simplement le code ci-dessous.

Code source

Déplacez-le simplement dans le répertoire de l'ensemble de données pour étendre l'ensemble de données et l'enregistrer dans un autre répertoire. Veuillez l'utiliser en fonction de l'objectif tel que le nombre de feuilles à développer à partir d'une feuille et le nom du répertoire de sortie.

Par défaut, tous les fichiers jpg du répertoire courant sont développés par 10 chacun et sortis vers. / Extened (s'ils ne sont pas créés).

dataset_generator.py


import os
import glob
import numpy as np
from keras.preprocessing.image import ImageDataGenerator, load_img, img_to_array, array_to_img

def draw_images(generator, x, dir_name, index):
    #Paramètres du fichier de sortie
    save_name = 'extened-' + str(index)
    g = generator.flow(x, batch_size=1, save_to_dir=output_dir, save_prefix=save_name, save_format='jpg')

    #Spécifiez le nombre d'images à développer à partir d'une image d'entrée
    # g.next()Est augmenté du nombre de fois
    for i in range(10):
        bach = g.next()


if __name__ == '__main__':

    #Paramètres du répertoire de destination de sortie
    output_dir = "extended"
    if not(os.path.exists(output_dir)):
        os.mkdir(output_dir)

    #Chargement des images développées
    images = glob.glob(os.path.join('./', "*.jpg "))

    #Paramètres d'extension
    generator = ImageDataGenerator(
                    rotation_range=90, #Rotation jusqu'à 90 °
                    width_shift_range=0.1, #Décaler horizontalement au hasard
                    height_shift_range=0.1, #Décalage aléatoire dans la direction verticale
                    channel_shift_range=50.0, #Changement de couleur aléatoire
                    shear_range=0.39, #Direction diagonale(pi/Jusqu'à 8)Tirer vers
                    horizontal_flip=True, #Retourné verticalement au hasard
                    vertical_flip=True #Retourner horizontalement au hasard
                    )

    #Développez les images chargées dans l'ordre
    for i in range(len(images)):
        img = load_img(images[i])
        #Organiser et déplacer les images a
        x = img_to_array(img)
        x = np.expand_dims(x, axis=0)
        #Extension d'image
        draw_images(generator, x, output_dir, i)

Personnalisons

  generator = ImageDataGenerator(
                  rotation_range=90,
                  width_shift_range=0.1,
                  height_shift_range=0.1,
                  channel_shift_range=50.0,
                  shear_range=0.39,
                  zoom_range=0.2,
                  horizontal_flip=True,
                  vertical_flip=True
                  )

En réécrivant cette partie, diverses extensions peuvent être faites. Veuillez le personnaliser en fonction de votre application.

Les types et explications des arguments sont les suivants. L'explication est presque la même que Document, je ne sais pas ...

finalement

Cela semble être persistant plusieurs fois, mais je suis toujours une personne inexpérimentée, alors apprenez-moi différentes choses!

Recommended Posts

Développez et gonflez votre propre ensemble de données Deep Learning
Créez votre propre PC pour un apprentissage en profondeur
Mettez vos propres données d'image dans Deep Learning et jouez avec
Reconnaissez votre patron avec Deep Learning et masquez l'écran
Apprentissage par renforcement 23 Créez et utilisez votre propre module avec Colaboratory
Organisez des plateformes d'apprentissage automatique et d'apprentissage en profondeur
Entraînez UGATIT avec votre propre jeu de données
Introduction au Deep Learning (2) - Essayez votre propre régression non linéaire avec Chainer-
[Renforcer l'apprentissage] DQN avec votre propre bibliothèque
Introduction au Deep Learning ~ Pliage et mise en commun ~
[Python] Empaquetez et distribuez vos propres modules
L'apprentissage en profondeur
Chainer et deep learning appris par approximation de fonction
Un mémorandum d'étude et de mise en œuvre du Deep Learning
Apprentissage parallèle du deep learning par Keras et Kubernetes
Introduction à l'apprentissage profond ~ Fonction de localisation et de perte ~
Mémorandum d'apprentissage profond
Commencer l'apprentissage en profondeur
Apprentissage en profondeur Python
Apprentissage profond × Python
J'ai installé et utilisé la bibliothèque Deep Learning Chainer
Analyse d'images par apprentissage profond à partir de Kaggle et Keras
J'ai essayé d'apprendre mon propre ensemble de données en utilisant Chainer Trainer
Prédire les tags en extrayant des fonctionnalités musicales avec Deep Learning
Bibliothèque DNN (Deep Learning): Comparaison de chainer et TensorFlow (1)
Intelligence artificielle, machine learning, deep learning pour mettre en œuvre et comprendre
Collecte et automatisation d'images érotiques à l'aide du deep learning
Personnalisez Jupyter Notebook: modifiez l'arrière-plan et les icônes
Jusqu'à ce que vous annotiez votre propre jeu de données et détectiez un objet avec EfficientDet ~ Détection de visage de personnage ~