[PYTHON] Erweitern und erweitern Sie Ihren eigenen Deep Learning-Datensatz

Erweitern Sie den Datensatz

Deep Learning ist aufgrund der steigenden Nachfrage und der zunehmenden Rahmenbedingungen leichter zu erreichen. aber, Es ist mühsam, einen Datensatz vorzubereiten!

Da Tausende oder Zehntausende von Daten erforderlich sind, ist es sehr schwierig, Daten zu sammeln, es sei denn, jemand bereitet sie wie handgeschriebene Zeichen vor. Erweitern Sie daher von einer kleinen Anzahl von Bildern auf mehrere Bilder und vergrößern Sie diese! Es gibt einen Mechanismus namens.

Ich musste den Datensatz auch selbst vorbereiten, also habe ich ihn mir angesehen und werde ihn als Memo aufschreiben. Wenn Sie Fehler oder bessere Möglichkeiten haben, lassen Sie es uns bitte wissen!

Es fiel mir auch schwer, mehr als 1.000 meiner eigenen Hände zu schießen. Aufgrund der Erhöhung der Anzahl auf 54.000 durch Auffüllen mit dieser Erweiterung ist das Innere des Verzeichnisses ein wenig entsetzlich. Ich hatte Angst, dass mein Bekannter krank sein könnte. 手のデータセット.jpg

Ausführungsumgebung

Die Umgebung des Autors ist wie folgt. Wenn Sie sicherstellen möchten, dass es funktioniert, erstellen Sie eine Umgebung mit anaconda oder pyenv und führen Sie sie von dort aus aus.

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

keras läuft im Tensor Flow Backend.

Was ist Keras?

Wenn Sie eine ungefähre Vorstellung von "Keras" erhalten möchten, lesen Sie bitte Frühere Artikel. Es ist wirklich rau. Wenn Sie weitere Details erfahren möchten, lesen Sie bitte Offizielles Dokument usw.

Ich werde dieses "Keras" dieses Mal verwenden, Da dies nur zum Erstellen eines Datensatzes dient, verwenden Sie ihn bitte für Ihr bevorzugtes Framework wie "Keras", "Maschinelles Lernen", "Chainer", "Tensor Flow" und "Caffe". Vielleicht hat jedes Framework ähnliche Funktionen, aber wenn Sie es umständlich finden, nachzuschlagen und es schnell zu erweitern, versuchen Sie einfach den folgenden Code.

Quellcode

Verschieben Sie es einfach in das Verzeichnis des Datasets, um das Dataset zu erweitern und in einem anderen Verzeichnis zu speichern. Bitte verwenden Sie es entsprechend dem Zweck, z. B. wie viele Blätter von einem Blatt erweitert werden sollen, und dem Namen des Ausgabeverzeichnisses.

Standardmäßig werden alle "jpg" -Dateien im aktuellen Verzeichnis um jeweils 10 erweitert und an ". / Extened" ausgegeben (andernfalls werden sie erstellt).

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):
    #Ausgabedateieinstellungen
    save_name = 'extened-' + str(index)
    g = generator.flow(x, batch_size=1, save_to_dir=output_dir, save_prefix=save_name, save_format='jpg')

    #Geben Sie an, wie viele Bilder von einem Eingabebild erweitert werden sollen
    # g.next()Wird um die Anzahl der Male erweitert
    for i in range(10):
        bach = g.next()


if __name__ == '__main__':

    #Ausgabeverzeichniseinstellungen ausgeben
    output_dir = "extended"
    if not(os.path.exists(output_dir)):
        os.mkdir(output_dir)

    #Laden erweiterter Bilder
    images = glob.glob(os.path.join('./', "*.jpg "))

    #Einstellungen für die Erweiterung
    generator = ImageDataGenerator(
                    rotation_range=90, #Bis zu 90 ° drehen
                    width_shift_range=0.1, #Nach dem Zufallsprinzip horizontal verschieben
                    height_shift_range=0.1, #Zufällige Verschiebung in vertikaler Richtung
                    channel_shift_range=50.0, #Zufällige Farbänderung
                    shear_range=0.39, #Diagonale Richtung(pi/Bis zu 8)Ziehen Sie zu
                    horizontal_flip=True, #Zufällig vertikal gedreht
                    vertical_flip=True #Nach dem Zufallsprinzip horizontal drehen
                    )

    #Erweitern Sie die geladenen Bilder der Reihe nach
    for i in range(len(images)):
        img = load_img(images[i])
        #Bilder anordnen und verschieben a
        x = img_to_array(img)
        x = np.expand_dims(x, axis=0)
        #Bilderweiterung
        draw_images(generator, x, output_dir, i)

Lassen Sie uns anpassen

  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
                  )

Durch Umschreiben dieses Teils können verschiedene Erweiterungen vorgenommen werden. Bitte passen Sie es entsprechend Ihrer Anwendung an.

Die Arten und Erklärungen der Argumente sind wie folgt. Die Erklärung ist fast die gleiche wie bei Dokument, ich weiß nicht ...

Schließlich

Es scheint viele Male hartnäckig zu sein, aber ich bin immer noch eine unerfahrene Person, also bringen Sie mir bitte verschiedene Dinge bei!

Recommended Posts

Erweitern und erweitern Sie Ihren eigenen Deep Learning-Datensatz
Machen Sie Ihren eigenen PC für tiefes Lernen
Fügen Sie Ihre eigenen Bilddaten in Deep Learning ein und spielen Sie damit
Erkennen Sie Ihren Chef mit Deep Learning und verbergen Sie den Bildschirm
Reinforcement Learning 23 Erstellen und verwenden Sie Ihr eigenes Modul mit Colaboratory
Organisation von Plattformen für maschinelles Lernen und tiefes Lernen
Trainiere UGATIT mit deinem eigenen Datensatz
Einführung in Deep Learning (2) - Versuchen Sie Ihre eigene nichtlineare Regression mit Chainer-
[Stärkung des Lernens] DQN mit Ihrer eigenen Bibliothek
Einführung in Deep Learning ~ Falten und Pooling ~
[Python] Packen und verteilen Sie Ihre eigenen Module
Tiefes Lernen
Chainer und Deep Learning durch Funktionsnäherung gelernt
Ein Memorandum zum Studieren und Implementieren von Deep Learning
Paralleles Lernen von Deep Learning durch Keras und Kubernetes
Einführung in Deep Learning ~ Lokalisierungs- und Verlustfunktion ~
Deep Learning Memorandum
Starten Sie Deep Learning
Python Deep Learning
Deep Learning × Python
Ich habe den Deep Learning Library Chainer installiert und verwendet
Deep Learning Bildanalyse beginnend mit Kaggle und Keras
Ich habe versucht, meinen eigenen Datensatz mit Chainer Trainer zu lernen
Vorhersagen von Tags durch Extrahieren von Musikfunktionen mit Deep Learning
DNN (Deep Learning) Library: Vergleich von Chainer und TensorFlow (1)
Künstliche Intelligenz, maschinelles Lernen, tiefes Lernen zu implementieren und zu verstehen
Sammlung und Automatisierung erotischer Bilder durch Deep Learning
Machen Sie Jupyter Notebook zu Ihrem eigenen: Ändern Sie Hintergrund und Symbole
Bis Sie Ihren eigenen Datensatz mit Anmerkungen versehen und ein Objekt mit EfficientDet ~ Zeichengesichtserkennung ~ erkennen