[PYTHON] Versuchen Sie, durch maschinelles Lernen anhand von Wetterdaten eine "wetterkartenähnliche Front" zu zeichnen (4)

Versuchen Sie, durch maschinelles Lernen anhand der Wetterdaten eine "wetterkartenähnliche Front" zu zeichnen. (4) Ich habe versucht, die Schwarz-Weiß-Wetterkarte einzufärben

Im vorherigen (3.) Zeichnen einer "wetterkartenähnlichen Front" durch maschinelles Lernen basierend auf Wetterdaten (3) Ich habe eine Geschichte über das Ausschneiden von Frontlinienelementen aus der "Breaking Weather Chart" gepostet, um ein Lehrerbild zu erstellen.

In dieser Geschichte (obwohl es eine ganz persönliche Angelegenheit ist) wurde die in der Vergangenheit angesammelte Schwarz-Weiß-Version der "Flash-Wetterkarte" verwendet, da der Zeitraum, für den die Farbversion der "Flash-Wetterkarte" zum Ausschneiden der Frontlinienelemente kurz war. Ich habe versucht, es zu kolorieren.

Kolorierung der Schwarz-Weiß-Version von "Breaking News Weather Map"

Warum Kolorierung?

Kürzlich höre ich von Schwarz-Weiß-Fotografien und -Filmen, die durch maschinelles Lernen eingefärbt werden. In der Vergangenheit waren die Bilder während des Krieges, die keinen Sinn für die Realität hatten, überwiegend realistischer, und ich habe das Gefühl, dass sie sich mit einem Gefühl der gleichen Zeit nähern.

Die Färbung hat diesmal nichts mit einer solchen Geschichte zu tun, nur die Algorithmus-Situation der Frontelement-Extraktion.

In der Schwarzweißversion der Wetterkarte sind natürlich die Front-, Längen- und Breitengradlinien, Kartenlinien und isobaren Linien alle gleich schwarz. Daher konnte ich mir keinen guten Weg vorstellen, nur die Frontlinie von dort auszuschneiden, und es wurde notwendig, sie einzufärben.

Ich meine, was ich wirklich getan habe, ist in chronologischer Reihenfolge zu sagen

(1) Als Ausgabebild haben wir zuerst ein neuronales Netzwerk erstellt, das die Wetterkarte selbst als Lehrerbild lernt, ohne das Frontlinienelement auszuschneiden. Die Front wurde nicht gut gelernt. (2) Ich bemerkte die Existenz der Farbversion von "Breaking News Weather Map", als ich darüber nachdachte, wie die Elemente der Frontlinie extrahiert werden sollten, um das Lernziel auf die Frontlinie einzugrenzen. (3) Ich habe die verfügbare Farbversion von "Breaking News Weather Map" heruntergeladen und konnte das Frontlinienbild basierend auf der Farbe extrahieren. (4) Als ich mit einem Lehrerbild trainierte, das nur die Frontlinie enthielt, stellte ich fest, dass es bis zu einem gewissen Grad funktionieren würde, und beschloss, die Anzahl der Wetterkartenbeispiele zu erhöhen. Zu diesem Zeitpunkt war die Farbversion nur etwa ein halbes Jahr lang verfügbar. (5) Da das neuronale Netzwerk, das ich um diese Zeit erstellt habe, ein Bild aus einem Bild generiert, ist es möglicherweise möglich, eine Schwarzweiß-Wetterkarte in eine Farbwetterkarte umzuwandeln? Ich dachte.

Es war das. Da sich das bildneurale Netzwerk zu einem gewissen Grad vom Bild wegbewegte, fragte ich mich, ob es angewendet werden könnte.

Infolgedessen funktionierte dies besser als ich erwartet hatte.

Wir konnten die Anzahl der Lehrerbilder, die nur etwa ein halbes Jahr betrug, auf jeweils mehr als zwei Jahre erhöhen. Durch zwei Runden Frühling, Sommer, Herbst und Winter hat die Variation der Lehrerbilder zugenommen.

Erstellt neuronales Netzwerk

Hardware- und Softwareumgebung

Mac mini(2018) Prozessor 3,2 GHz 6-Core Intel Core i7 Speicher 32 GB 2667 MHz DDR4

OS macOS Catalina python3.7 Keras 2.0

Wir benutzen.

Struktur von CNN

Das Netzwerk, das ich erstellt habe, hat eine ziemlich einfache Struktur. Bei der sequentiellen Struktur handelt es sich um ein Netzwerk, das mit Conv2D Merkmale aus einem 1-Kanal-Graustufenbild extrahiert, es durch ein 4-stufiges CNN in der unteren Schicht leitet und es dann mit einer Conv2D-Transponierung zurückgibt, um ein 3-Kanal-Farbbild zu erstellen.

Das Eingabebild ist 256x256, aber ich habe die Schritte von Conv2D viermal reduziert, 16x16 gemacht und dann viermal Conv2D bestanden. Danach wird es von Conv2D Transpose auf die ursprüngliche Größe zurückgesetzt.

Da das Lernen "mean_squared_error" verwendet, ist es ein Lernen, das es als Pixelwert zum Lehrerbild bringt.

network.py



# parameter settings

num_hidden1 = 32
num_hidden2 = 64
num_hidden3 = 128
num_hidden4 = 64
num_hidden5 = 32
num_hidden6 = 32

######### start of network definition
        
NN_1 = Sequential()

#--- encode start

NN_1.add(Conv2D(num_hidden1, data_format='channels_first', kernel_size=(3,3), strides=(2,2), activation='relu', input_shape=(in_ch, i_dmlat, i_dmlon), padding='same'))
NN_1.add(Conv2D(num_hidden1, data_format='channels_first', kernel_size=(3,3), activation='relu', input_shape=(in_ch, i_dmlat, i_dmlon), padding='same'))
NN_1.add(Conv2D(num_hidden1, data_format='channels_first', kernel_size=(3,3), strides=(2,2), activation='relu', input_shape=(in_ch, i_dmlat, i_dmlon), padding='same'))

NN_1.add(Conv2D(num_hidden2, data_format='channels_first', kernel_size=(3,3), strides=(2,2), activation='relu', padding='same'))
NN_1.add(Conv2D(num_hidden2, data_format='channels_first', kernel_size=(3,3), activation='relu', padding='same'))
NN_1.add(Conv2D(num_hidden2, data_format='channels_first', kernel_size=(3,3), strides=(2,2), activation='relu', padding='same'))

#--- encode out
NN_1.add(Conv2D(num_hidden3, data_format='channels_first', kernel_size=(3,3), activation='relu', padding='same'))
NN_1.add(Conv2D(num_hidden3, data_format='channels_first', kernel_size=(3,3), activation='relu', padding='same'))
NN_1.add(Conv2D(num_hidden3, data_format='channels_first', kernel_size=(3,3), activation='relu', padding='same'))
NN_1.add(Conv2D(num_hidden3, data_format='channels_first', kernel_size=(3,3), activation='relu', padding='same'))

#--- decode start

NN_1.add(Conv2DTranspose(num_hidden4, data_format='channels_first', kernel_size=(3,3), strides=(2,2), activation='relu', padding='same'))
NN_1.add(Conv2DTranspose(num_hidden4, data_format='channels_first', kernel_size=(3,3), strides=(2,2), activation='relu', padding='same'))

NN_1.add(Conv2DTranspose(num_hidden5, data_format='channels_first', kernel_size=(3,3), strides=(2,2), activation='relu', padding='same'))
NN_1.add(Conv2DTranspose(num_hidden5, data_format='channels_first', kernel_size=(3,3), strides=(2,2), activation='relu', padding='same'))

NN_1.add(Conv2D(num_hidden5, data_format='channels_first', kernel_size=(3,3), activation='relu', padding='same'))
NN_1.add(Conv2D(num_hidden6, data_format='channels_first', kernel_size=(3,3), activation='relu', padding='same'))

#--- back to 3 channel

NN_1.add(Conv2D(3, data_format='channels_first', kernel_size=(3,3), activation='relu', padding='same'))

####### end of network definition

# compile network
NN_1.compile(optimizer='adam', loss='mean_squared_error' , metrics=['accuracy'])

# do training
NN_1.fit(np_i_data_train_tr, np_t_data_train_tr, epochs=num_itter , callbacks=cbks, batch_size=8 , validation_split=0.2 )

# Save model and weights
json_string = NN_1.to_json()
open(os.path.join(paramfiledir, 'cnnSPAStoColSPAS2_011_model.json'),'w').write(json_string)

NN_1.save_weights(os.path.join(paramfiledir, 'cnnSPAStoColSPAS2_011_weight.hdf5'))

Lernen und Bekehrung

Ein- und Ausgabe

Das Eingabebild ist beispielsweise (Flash-Wetterkarte 2018/9/30 21 UTC). spas.u.2018093021.v8.512.png

Das Bild des Ausgabelehrers ist wie folgt. SPAS_COLOR_201809302100.v8.512.png

Lernergebnis

Von den Daten im Wert von sechs Monaten habe ich versucht, den Wert von zwei Monaten für die Auswertung zu verwenden, und die Schwarzweißversion und die Farbversion im Wert von etwa vier Monaten trainiert (mehr als 700 Blatt, da sechs Blätter pro Tag vorhanden sind).

Die Trainingsdaten konvergieren relativ schnell zu einem solchen Bild. Karten, Längen- / Breitengrade und Daten werden in kürzester Zeit überlernt.

out2w_SPAS_COLOR_2018093021.v8.512.png

Vorhersageergebnis

Mit dem erlernten Netzwerk habe ich versucht, die tatsächliche Schwarz-Weiß-Wetterkarte einzufärben. Das rechte ist die ursprüngliche Schwarz-Weiß-Wetterkarte und das linke ist die kolorierte Wetterkarte. Ich denke, dass der Zweck des Ausschneidens des Frontlinienelements basierend auf der Farbe eine ausreichende Färbung ist.

spas_cmp_2017070109.png

Obwohl es sich um eine detaillierte Geschichte handelt, ist das Feld mit Datum und Uhrzeit oben links auch das Ergebnis des Lernens und Vorhersagen als Bild. Die Zahlen (Druck, Bewegungsgeschwindigkeit), die in der Wetterkarte erscheinen, scheinen direkt vorhergesagt zu werden. "Juli 2017" wird nur als "Januar 2018" als Krebs vorhergesagt. Da die für das Lernen verwendeten Daten ab 2018 stammen und den Juli nicht enthalten, "Ich kann nicht vorhersagen, was nicht in der Eingabe enthalten ist." Ich möchte sagen.

Das Gleiche wurde zu Heisei als Waffe für die Zeichenkette des Dekrets der Generation konvertiert. Es scheint, dass das Lernen so war, dass das Gewicht Null war und nur die Voreingenommenheit übrig blieb, so dass, was auch immer kommen würde, es Heisei sein würde.

EF883BE9-9D9F-431C-A83A-8550432756A3.jpeg

abspielen

Ich habe versucht, von Hand Unheil zu stiften (lacht). Das ist meine Schöpfung. 25DE47A0-A84F-4793-970F-A6AD4989BF5A.jpeg

Ich habe auch versucht, es für Kinder zu zeichnen. AD1C083D-A87A-4DED-9FDB-58FDF19D4A13.jpeg

Es scheint, dass ich einen längeren Tag habe, um Frontlinien von Hand zu schreiben.

Zusammenfassung

Diesmal habe ich die Geschichte der Kolorierung der Schwarz-Weiß-Wetterkarte zusammengefasst. Infolgedessen hat die Anzahl der Frontausschnittbilder erheblich zugenommen, und die Genauigkeit des Zeichnenlernens für das Endziel "wetterkartenähnlicher Fronten" hat sich verbessert.

Das nächste Mal werde ich als letzte Folge versuchen, durch maschinelles Lernen eine "wetterkartenähnliche Front" zu zeichnen, die auf dem neuronalen Netz zum Zeichnen der Frontlinie basiert [(5) Automatische Fronterkennung beim maschinellen Lernen in Wetterdaten](https: // qiita) Ich werde über .com / m-taque / items / 2788f623365418db4078) posten. Ab dem 2. Februar 2020 ist das monatliche Limit für die Veröffentlichung von Bildern auf der Qiita-Website erreicht, und die letzte Runde wird auf März übertragen.

Recommended Posts

Versuchen Sie, durch maschinelles Lernen basierend auf Wetterdaten eine "wetterkartenähnliche Front" zu zeichnen (5)
Versuchen Sie, durch maschinelles Lernen anhand von Wetterdaten eine "wetterkartenähnliche Front" zu zeichnen (3).
Versuchen Sie, durch maschinelles Lernen anhand von Wetterdaten eine "wetterkartenähnliche Front" zu zeichnen (4)
Versuchen Sie, durch maschinelles Lernen basierend auf Wetterdaten eine "wetterkartenähnliche Front" zu zeichnen (2)
Geschichte rund um die Datenanalyse durch maschinelles Lernen
Anfänger des maschinellen Lernens versuchen, einen Entscheidungsbaum zu erstellen
Versuchen Sie, eine Bezier-Kurve zu zeichnen
Sammeln von Daten zum maschinellen Lernen
Versuchen Sie, eine Blackjack-Strategie zu entwickeln, indem Sie das Lernen stärken ((1) Implementierung von Blackjack)
Suchen Sie nach technischen Blogs durch maschinelles Lernen mit dem Schwerpunkt "Verständlichkeit"
Versuchen Sie, den Wert des Wasserstandsmessers durch maschinelles Lernen unter Verwendung der offenen Daten von Data City Sabae vorherzusagen
[Maschinelles Lernen] Erstellen Sie ein Modell für maschinelles Lernen, indem Sie Transferlernen mit Ihrem eigenen Datensatz durchführen
Versuchen Sie, mit Python eine Lebenskurve zu zeichnen
Hinweise zum maschinellen Lernen (von Zeit zu Zeit aktualisiert)
Versuchen Sie, einen neuen Befehl unter Linux zu erstellen
[Keras] Ich habe versucht, das Problem der Klassifizierung des Donut-Typ-Bereichs durch maschinelles Lernen zu lösen. [Studie]
Versuchen Sie, eine Blackjack-Strategie zu entwickeln, indem Sie das Lernen stärken (② Registrieren Sie die Umgebung im Fitnessstudio).
Erstellen Sie eine Python-Umgebung für maschinelles Lernen unter Mac OS
Versuchen Sie, den Wechselkurs (FX) mit nicht tiefem maschinellem Lernen vorherzusagen
Vorhersage von Zeitreihendaten durch AutoML (automatisches maschinelles Lernen)
[Maschinelles Lernen] Versuchen Sie, Objekte mithilfe der selektiven Suche zu erkennen
xgboost: Effektives Modell für maschinelles Lernen für Tabellendaten
Einführung in das maschinelle Lernen mit Simple Perceptron
Windows10 (x64) Erstellen Sie nativ eine maschinelle Lernumgebung
So zeichnen Sie interaktiv eine Pipeline für maschinelles Lernen mit scikit-learn und speichern sie in HTML
Datenvisualisierung mit Python - Die Methode zum gleichzeitigen Zeichnen von Attribut-basierten Diagrammen mit "Facet" ist zu praktisch
Versuchen Sie, eine Blackjack-Strategie zu entwickeln, indem Sie das Lernen stärken (③ Stärkung des Lernens in Ihrer eigenen OpenAI Gym-Umgebung).
Einführung in das maschinelle Lernen
Erstellen Sie mit macOS sierra eine Python-Lernumgebung für maschinelles Lernen
Erstellen Sie eine maschinelle Lernumgebung auf einem Mac (pyenv, deeplearning, opencv).
Versuchen Sie, ein Deep Learning / Neuronales Netzwerk mit Scratch aufzubauen
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Regression zu bewerten
Einführung in das maschinelle Lernen mit scikit-learn-Von der Datenerfassung bis zur Parameteroptimierung
Die Verwendung von icrawler zum Sammeln von Daten zum maschinellen Lernen wurde vereinfacht
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Klassifizierung zu bewerten
Dockerfile zum Erstellen einer datenwissenschaftlichen Umgebung basierend auf pip3
Anfänger des maschinellen Lernens versuchen, Naive Bayes zu erreichen (2) - Implementierung
Erstellen Sie eine KI, die Zuckerbergs Gesicht mit tiefem Lernen identifiziert learning (Datenlernen)
Einstellungen der Python3-basierten maschinellen Lernumgebung auf dem Mac (Koexistenz mit Python2)
Anfänger des maschinellen Lernens versuchen, Naive Bayes (1) - Theorie zu erreichen
Verwendung der offenen Daten von Data City Sabae zur Vorhersage des Werts des Wasserstandsmessers durch maschinelles Lernen Teil 2
Ich war frustriert von Kaggle und versuchte, durch Schaben und maschinelles Lernen ein gutes Mietobjekt zu finden
Schnelle Schritte zum Erstellen einer maschinellen Lernumgebung mit Jupyter Notebook unter macOS Sierra mit anaconda