[PYTHON] Informationen zur Datenerweiterungsverarbeitung für tiefes Lernen

Einführung

Dieses Mal habe ich ein Programm erstellt, das die Bilddatenerweiterungsverarbeitung in einem Stapel mit Python ausführt (unter Bezugnahme auf das von imageDataGenerator von Keras behandelte Programm). Wir werden auch auf eine kurze Erklärung und Hinweise zum Datenerweiterungsprozess eingehen. Der Quellcode lautet hier.

Was ist Datenerweiterungsverarbeitung?

Um ein Bilderkennungs- / Klassifizierungsmodell von Deep Learning zu erstellen, ist eine große Menge hochwertiger Lerndaten erforderlich. In den meisten Fällen sind Sie jedoch mit einer Situation konfrontiert, in der die Menge der Trainingsdaten gering ist. Wenn die Trainingsdaten klein sind, können sie durch rohe Gewalt erhöht werden (z. B. durch Schießen auf ein zu lernendes Objekt), dies erfordert jedoch viel Zeit und Mühe. Die Datenerweiterungsverarbeitung ist eine Technik, die nützlich ist, wenn "wenig Trainingsdaten vorhanden sind". Insbesondere werden wir die Anzahl der Daten erweitern, indem wir Inversion, Vergrößerungs- / Verkleinerungsverarbeitung usw. auf die ursprünglichen Trainingsdaten anwenden.

Diesmal wurde die Datenerweiterungsverarbeitung durchgeführt

Derzeit gibt es verschiedene Arten der Datenerweiterungsverarbeitung. Dieses Mal werden wir uns jedoch mit der folgenden Verarbeitung befassen. Um das Ergebnis der Anwendung der erweiterten Verarbeitung anzuzeigen, wird aus "Commercial Free Photo Search" ein Katzenbild ([One day YOMOGI by sabamiso]) angezeigt. (http://www.igosso.net/se.cgi?q=%E3%81%82%E3%82%8B%E6%97%A5%E3%81%AE%E3%82%88%E3% 82% 82% E3% 81% 8E & sa =% E6% A4% 9C% E7% B4% A2 & lid = 1 & lia = 1 & lib = 1 & lic = 1)) wurde verwendet.

--Drehung Es ist ein Vorgang, sich in einen beliebigen Winkel zu drehen. Ich denke, dieser Prozess setzt voraus, dass die Winkel der fotografierten Katzen unterschiedlich sind. cat.jpgrot.jpg

Bedienung des Datenerweiterungsverarbeitungsprogramms

Durch Ausführen von "main.py" wird die unter "Diesmal behandelte Datenerweiterungsverarbeitung" aufgeführte Verarbeitung kombiniert und angewendet, um ein Lernbild zu erstellen. Sie können es verwenden, wie Sie möchten, indem Sie die Variablen im folgenden Quellcode festlegen.

main.Ein Teil von py


# -------------------Unten wird jede Variable einzeln angegeben-------------------

input_dir = 'trainImg' #Ordnername mit dem Originalbild des Lernens
output_dir = "output" #Name des Ausgabeordners nach der Erweiterungsverarbeitung
num = 10 #Anzahl der zu erweiternden Bilder

generator = ImageDataGenerator(
                rotation_range=90, #Stellen Sie den Drehwinkel auf 90 ° ein
                width_shift_range=0.1, #Nach dem Zufallsprinzip horizontal verschieben
                height_shift_range=0.1, #Zufällige Verschiebung in vertikaler Richtung
                zoom_range=0.3, #Bereich zum Vergrößern / Verkleinern
                channel_shift_range=50.0, #Fügen Sie dem Pixelwert einen zufälligen Wert hinzu
                horizontal_flip=False, #Zufällig vertikal gedreht
                vertical_flip=True #Nach dem Zufallsprinzip horizontal drehen
                )
# -------------------Wie oben erwähnt, wird jede Variable einzeln angegeben-------------------

"Input_dir" enthält 5 ursprüngliche Lernbilder. Wenn Sie "main.py" mit den oben genannten Variablen ausführen, werden in "output_dir" 5x10 Bilder generiert.

Vorsichtsmaßnahmen für die Datenerweiterungsverarbeitung

Die Datenerweiterungsverarbeitung muss nicht angewendet werden. Wenn Sie beispielsweise ein Zeichenerkennungsmodell für Flat Kana erstellen möchten, ein Zeichenbild (siehe: [https://lab.ndl.go.jp/cms/hiragana73](https: //lab.ndl.go.) Wenn die Datenerweiterungsverarbeitung auf jp / cms / hiragana73)) angewendet wird, treten die folgenden Probleme auf.

--Wenn die Rotationsverarbeitung auf das flache Pseudonym "i" angewendet wird (links: Originalbild, rechts: verarbeitetes Bild)     1930_1175565_0024.png      test1.png Wie im obigen Ergebnis gezeigt, hat das verarbeitete Bild ähnliche Zeichen wie "ko", sodass es möglicherweise falsch erkannt wird.

--Wenn die Links / Rechts-Inversionsverarbeitung auf das flache Pseudonym "U" angewendet wird (links: Originalbild, rechts: verarbeitetes Bild)     1930_1176246_0041.png      test.png Wie im obigen Ergebnis gezeigt, ist das verarbeitete Bild ein nicht existierendes Zeichen, was zu einer Verringerung der Genauigkeit des Zeichenerkennungsmodells führt (bedeutungsloses Lernen).

Zusammenfassung

In diesem Artikel habe ich kurz erklärt, wie ein Datenerweiterungsverarbeitungsprogramm mit Python und Datenerweiterungsverarbeitung erstellt wird. Die Datenerweiterungsverarbeitung kann problemlos durchgeführt werden. Wenn sie gut funktioniert, führt dies zu einer Verbesserung der Genauigkeit. Abhängig vom Ziel des Trainingsbildes kann jedoch durch Anwenden des Datenerweiterungsprozesses ein bedeutungsloses Trainingsbild erzeugt werden. Daher denke ich, dass es notwendig ist zu überlegen, welche Konvertierung (Rotation usw.) verwendet werden sollte und wie viel Konvertierung (oder Winkel, wenn Rotation) gemäß dem Ziel des Trainingsbildes durchgeführt werden sollte.

Recommended Posts

Informationen zur Datenerweiterungsverarbeitung für tiefes Lernen
[Übersetzung] scikit-learn 0.18 Tutorial Statistisches Lern-Tutorial für die wissenschaftliche Datenverarbeitung
Datensatz für maschinelles Lernen
Über das Projektmanagement von Deep Learning (DNN)
[AI] Deep Learning für das Entrauschen von Bildern
Tiefes Lernen
Machen Sie Ihren eigenen PC für tiefes Lernen
[Deep Learning von Grund auf neu] Über die Optimierung von Hyperparametern
Erstellen Sie schnell eine Python-Umgebung für Deep Learning / Data Science (Windows)
[Übersetzung] scikit-learn 0.18 Tutorial Statistisches Lern-Tutorial für die wissenschaftliche Datenverarbeitung Alles zusammen
Empfohlene Studienreihenfolge für Anfänger des maschinellen Lernens / Deep Learning
[Übersetzung] scikit-learn 0.18 Tutorial Suchen Sie nach Hilfe zum statistischen Lernen für die wissenschaftliche Datenverarbeitung
Deep Learning Memorandum
Starten Sie Deep Learning
Lesen und implementieren Sie Deep Residual Learning für die Bilderkennung
Python: Tiefes Lernen in der Verarbeitung natürlicher Sprache: Grundlagen
Python Deep Learning
Deep Learning × Python
Implementierung eines Deep Learning-Modells zur Bilderkennung
Aktienkursprognose mit Deep Learning [Datenerfassung]
Geschichte rund um die Datenanalyse durch maschinelles Lernen
Ich habe den Deep Learning Framework Chainer installiert
[Übersetzung] scikit-learn 0.18 Tutorial Statistisches Lernen Tutorial für die wissenschaftliche Datenverarbeitung Unbeaufsichtigtes Lernen: Suche nach Datendarstellung
[Übersetzung] scikit-learn 0.18 Tutorial Statistisches Lernen Tutorial für die wissenschaftliche Datenverarbeitung Statistisches Lernen: Einstellungen und Schätzobjekte in scikit-learn
Denken Sie über Party-Attack-ähnliche Wachstumstaktiken mit Deep Learning nach
Organisation grundlegender Verfahren zur Datenanalyse und statistischen Verarbeitung (4)
Eine Geschichte über die Vorhersage des Wechselkurses mit Deep Learning
"Deep Learning from Grund" Memo zum Selbststudium (Nr. 19) Datenerweiterung
Informationen zur Datenvorverarbeitung von Systemen, die maschinelles Lernen verwenden
Organisation grundlegender Verfahren zur Datenanalyse und statistischen Verarbeitung (2)
Techniken zum Verständnis der Grundlagen von Deep-Learning-Entscheidungen
Deep Learning 2 von Grund auf 1.3 Verarbeitung natürlicher Sprache 1.3 Zusammenfassung
xgboost: Effektives Modell für maschinelles Lernen für Tabellendaten
Datenverarbeitungsmethoden für Maschinenbauingenieure und Nicht-Computeringenieure (Einführung 2)
Eine Szene, in der GPU für tiefes Lernen nützlich ist?
Datenverarbeitungsmethoden für Maschinenbauingenieure und Nicht-Computeringenieure (Einführung 1)
Über Python für Schleife
[Übersetzung] scikit-learn 0.18 Tutorial Statistisches Lernen Tutorial für die wissenschaftliche Datenverarbeitung Modellauswahl: Auswahl des Schätzers und seiner Parameter
Maschinelles Lernen Über Overlearning
Python: Deep Learning-Praxis
Deep Learning / Aktivierungsfunktionen
Deep Learning von Grund auf neu
Deep Learning 1 Übung des Deep Learning
Stärkung des Lernens der dritten Zeile
Deep Learning / Cross Entropy
Erstes tiefes Lernen ~ Vorbereitung ~
Über Python für ~ (Bereich)
Erstes tiefes Lernen ~ Lösung ~
[AI] Deep Metric Learning
Ich habe versucht, tief zu lernen
Python: Deep Learning Tuning
Deep Learning Großtechnologie
Über Polymorphismus zur Nestbeseitigung
Zusammenfassung zum Lernen von RAPIDS
Deep Learning / Softmax-Funktion
Tipps zum Umgang mit Eingaben variabler Länge im Deep Learning Framework
Japanische Übersetzung der öffentlichen Unterrichtsmaterialien des Deep Learning Nano Degree
Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 2)
Erstellen Sie mit Docker eine Umgebung für "Deep Learning von Grund auf neu"