[PYTHON] Einführung in Deep Learning zum ersten Mal (Chainer) Japanische Zeichenerkennung Kapitel 4 [Verbesserung der Erkennungsgenauigkeit durch Erweiterung der Daten]

Hallo Licht. Folgen Sie hier, Deep Learning Tutorial Kapitel 4 Ich werde über die Verbesserung der Erkennungsgenauigkeit durch Erweiterung der Daten sprechen.

Verbesserte Erkennungsgenauigkeit

Beim letzten Mal (Kapitel 3) war der Verlust von 0,526 in Epoche 16 die beste Punktzahl. Dies ist jedoch nicht gut, da es selbst im Druck selten falsch erkannt wird.

Selbst wenn Sie so wie es ist mehr lernen, wird nur der Zugverlust abnehmen und der Testverlust wird weiter zunehmen. "Überlernen" wird auftreten und die Erkennungsgenauigkeit wird sich nicht verbessern. Um Überlernen zu vermeiden und die Genauigkeit zu verbessern, erhöhen wir die Lerndaten.

Es ist ideal, die ursprünglichen Trainingsdaten zu erhöhen, aber das Sammeln der Trainingsdaten kostet Zeit und Geld, sodass wir die Daten erweitern werden.

Datenerweiterung

Informationen zu Arten der Datenerweiterung

1. Drehen, bewegen, vergrößern / verkleinern, binärisieren

rotation.png transition.png
  1. Elastic Distortion Datenerweiterung durch künstliche Verzerrung.
distortion.png ### 3. Lärm Imprus-Rauschen, Gaußsches Rauschen usw. ![impulse.png](https://qiita-image-store.s3.amazonaws.com/0/110732/fd8ea417-d928-ea39-253d-2ff42af9e3a1.png)

4. Ausdünnen

Ausdünnen, um die Erkennungsabhängigkeit von der Zeichendicke zu beseitigen thinning.png

5. Invertieren

Normalerweise wird das invertierte Bild nicht eingegeben, so dass es auf den ersten Blick eine nachteilige Datenerweiterung zu sein scheint, aber es ist aus Sicht von TTA (Datenerweiterung auch während des Testens) effektiv.

flip.png

Übungsergebnisse

Da es unendlich viele Kombinationen der Datenerweiterung gibt, indem Zufallszahlen wie Drehwinkel und Drehachse (dreidimensional) für die Drehung und Anzahl der sich bewegenden Pixel für die Bewegung verwendet werden, werden die obigen Methoden kombiniert, um aus einem Bild ein Mugen-Bild zu erstellen. Ich werde es schaffen. Die Anzahl der vergrößerten Blätter und das Ergebnis sind wie folgt.

Vergrößerte Nummer Testverlust beste Punktzahl
10 Blatt 0.526
100 Blatt 0.277
300 Blatt 0.260
500 Blatt 0.237

Etwas ist leicht, aber es fühlt sich gut an. Werden die Daten nicht dupliziert, wenn sie auf 500 Blatt vergrößert werden? Ich denke, aber am Ende ist es OK.

Übrigens sieht elastische Verzerrung wie eine ideale Datenvergrößerung aus, ist jedoch schwierig zu handhaben, da die Verarbeitung einige Zeit in Anspruch nimmt und zu Überlernen führt (Erfahrungsgeschichte).

Vergrößern und testen

Selbst bei 500 Blatt nimmt die Genauigkeit stetig zu (der Verlust nimmt ab), daher habe ich als nächstes versucht, auf ** 3500 Blatt ** zu expandieren. (Da jedoch die Speicher- und Verarbeitungszeit (auf meinem PC) begrenzt ist, ist sie auf nur 5 Blatt "A", "I", "U", "E" und "O" beschränkt.)

('epoch', 1)
train mean loss=0.167535232874, accuracy=0.937596153205
test mean loss=0.23016545952, accuracy=0.914285708447
('epoch', 2)
train mean loss=0.0582337708299, accuracy=0.979920332723
test mean loss=0.132406316127, accuracy=0.955102039843
('epoch', 3)
train mean loss=0.042050985039, accuracy=0.985620883214
test mean loss=0.0967423064653, accuracy=0.959183678335
('epoch', 4)
train mean loss=0.0344518882785, accuracy=0.98846154267
test mean loss=0.0579228501539, accuracy=0.983673472794

Das Ergebnis sieht so aus. Der Verlust ist in Epoche 4 auf 0,057 gesunken. Wie in Kapitel 3 erwähnt, konnte ich das handgeschriebene Hiragana mit dem Verlustmodell 0,237 irgendwie erkennen, also kann ich es diesmal erwarten. Also schrieb ich 50 Hiragana-Blätter zur Hand und testete die Genauigkeit. tegaki_aiueo.png

Dieses Mal wird das Erkennungsergebnis ausgewertet, nachdem die Daten zum Zeitpunkt des Tests auf 30 Blatt erweitert wurden. (Es gibt keinen besonderen Grund für diese "30 Blätter")

$ python AIUEONN_predictor.py --model loss0057model --img ../testAIUEO/o0.png 
init done 
Kandidat Neuronennummer:4, Unicode:304a,Hiragana:Oh
.
.(Ausgelassen)
.
Kandidat Neuronennummer:4, Unicode:304a,Hiragana:Oh
Kandidat Neuronennummer:4, Unicode:304a,Hiragana:Oh
Kandidat Neuronennummer:3, Unicode:3048,Hiragana:e
Kandidat Neuronennummer:4, Unicode:304a,Hiragana:Oh
**Endgültiges Urteil Neuronennummer:4, Unicode:304a,Hiragana:Oh**

Es ist in Ordnung.

Ergebnis

46 von 50 richtigen Antworten. Mit 4 Fehlern betrug die Genauigkeit 92%! Übrigens wurden nur diese 4 Fotos vermisst. missed.png "A" hat einen schmutzigen Charakter (Schweiß;

Einige der Dinge, die funktioniert haben good.png

Es ist schwer auszudrücken, da es sich um einen Testdatensatz des Front-Miso handelt, aber eine gute Genauigkeit aufweist. Ich spüre die Möglichkeit des Deep Learning, da es sich um typzentrierte Lerndaten handelt und für handgeschriebene Zeichen anwendbar ist. Kapitel 4 endet hier. Im nächsten Kapitel 5 möchte ich anhand von Hi-Kings Blog von den Grundlagen neuronaler Netze lernen.

Kapitel Titel
Kapitel 1 Aufbau einer Deep-Learning-Umgebung basierend auf Chainer
Kapitel 2 Erstellen eines Deep Learning-Vorhersagemodells durch maschinelles Lernen
Kapitel 3 Zeichenerkennung anhand eines Modells
Kapitel 4 Verbesserung der Erkennungsgenauigkeit durch Erweiterung der Daten
Kapitel 5 Einführung in das neuronale Netz und Erklärung des Quellcodes
Kapitel 6 Verbesserung der Lerneffizienz durch Auswahl von Optimizer
Kapitel 7 TTA,Verbesserung der Lerneffizienz durch Chargennormalisierung

Recommended Posts

Einführung in Deep Learning zum ersten Mal (Chainer) Japanische Zeichenerkennung Kapitel 4 [Verbesserung der Erkennungsgenauigkeit durch Erweiterung der Daten]
Einführung in Deep Learning zum ersten Mal (Chainer) Japanische Zeichenerkennung Kapitel 2 [Modellgenerierung durch maschinelles Lernen]
Einführung in Deep Learning zum ersten Mal (Chainer) Erkennung japanischer Zeichen Kapitel 1 [Umgebungskonstruktion]
Einführung in Deep Learning zum ersten Mal (Chainer) Japanische Zeichenerkennung Kapitel 3 [Zeichenerkennung anhand eines Modells]
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 8 Einführung in Numpy
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 9 Einführung in das Scikit-Lernen
Python-Lernnotiz für maschinelles Lernen von Chainer bis zum Ende von Kapitel 2
Einführung in die statistische Modellierung für die Datenanalyse Erweiterung des Anwendungsbereichs von GLM
[Einführung in die Stärkung des Lernens] Stärkung des Lernens, um sich vorerst zu bewegen
Kapitel 1 Einführung in Python Schneiden Sie nur die guten Punkte des Deeplearning aus, die von Grund auf neu erstellt wurden
Zusammenfassung der Seiten, die zum Studium des Deep Learning Framework Chainer nützlich sind
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 13 Grundlagen des neuronalen Netzwerks
Ich habe versucht, die Genauigkeit der japanischen BERT- und der japanischen Distil-BERT-Satzklassifizierung mit PyTorch & Einführung der BERT-Technik zur Verbesserung der Genauigkeit zu vergleichen
Einführung in Deep Learning (1) --Chainer wird Anfängern leicht verständlich erklärt.
GTUG Girls + PyLadiesTokyo Meetup Ich ging zum ersten maschinellen Lernen
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
So verwenden Sie MkDocs zum ersten Mal
[Einführung in cx_Oracle] (5.) Umgang mit japanischen Daten
Implementierung eines Deep Learning-Modells zur Bilderkennung
Versuchen Sie zum ersten Mal, in Qiita zu posten
Implementierung der Clustering-K-Form-Methode für Zeitreihendaten [Unüberwachtes Lernen mit Python Kapitel 13]
Python-Lernnotiz für maschinelles Lernen von Chainer aus Kapitel 2
Techniken zum Verständnis der Grundlagen von Deep-Learning-Entscheidungen
[Einführung in das SIR-Modell] Prognostizieren Sie die Endzeit jedes Landes mit der COVID-19-Datenanpassung ♬
[Einführung in das logarithmische Diagramm] Prognostizieren Sie die Endzeit jedes Landes anhand des logarithmischen Diagramms der Infektionszahldaten ♬
Welche Umgebung sollten Leute, die Python zum ersten Mal lernen, bauen?
Japanische Übersetzung der öffentlichen Unterrichtsmaterialien des Deep Learning Nano Degree
Einführung in die Statistik Die University of Tokyo Press Kapitel 2 Übungen
[Einführung in matplotlib] Lesen Sie die Endzeit aus den COVID-19-Daten ♬
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 7 Regressionsanalyse
Erstellen Sie eine KI, die Zuckerbergs Gesicht mit tiefem Lernen identifiziert learning (Datenlernen)
Wenn Sie zum ersten Mal Linux lernen, tun Sie dies!
Die Geschichte, zum ersten Mal seit 5 Jahren wieder an die Front zurückzukehren und Python Django umzugestalten