[PYTHON] Essayez de dessiner un "front de type carte météo" par apprentissage automatique basé sur des données météorologiques (4)

Essayez de dessiner un "front de type carte météo" par apprentissage automatique basé sur les données météorologiques (4) J'ai essayé de coloriser la carte météo en noir et blanc

Dans la précédente (3e), Dessin d'un "front de type carte météo" par apprentissage automatique basé sur les données météorologiques (3) J'ai posté une histoire sur la suppression des éléments de première ligne de la «carte météorologique de rupture» pour créer une image d'enseignant.

Dans cette histoire, la version en noir et blanc de la "carte météo flash" qui avait été accumulée dans le passé a été utilisée parce que la période pendant laquelle la version couleur de la "carte météo flash" pour découper les éléments de la ligne de front était courte (bien que ce soit une affaire tout à fait personnelle) J'ai essayé de le coloriser.

Colorisation de la version noir et blanc de "Breaking News Weather Map"

Pourquoi la colorisation

Récemment, j'ai entendu parler de photographies et de films en noir et blanc colorisés par apprentissage automatique. Dans le passé, les images pendant la guerre, qui n'avaient aucun sens de la réalité, sont extrêmement réalistes, et j'ai l'impression qu'elles se rapprochent avec un sens de la même époque.

La colorisation cette fois n'a rien à voir avec une telle histoire, seulement la situation de l'algorithme d'extraction des éléments avant.

Dans la version noir et blanc de la carte météo, bien sûr, le front, les lignes de longitude et de latitude, les lignes de carte et les lignes isobares sont toutes les mêmes noires. Par conséquent, je ne pouvais pas penser à un bon moyen de couper uniquement la ligne de front à partir de là, et il est devenu nécessaire de la coloriser.

Je veux dire, ce que j'ai vraiment fait, c'est de dire dans l'ordre chronologique

(1) En tant qu'image de sortie, nous avons d'abord créé un réseau de neurones qui apprend la carte météorologique de rupture elle-même en tant qu'image de l'enseignant sans couper l'élément avant. La ligne de front n'a pas été bien apprise. (2) Lorsque je pensais réduire l'objectif d'apprentissage à la ligne de front et réfléchir à la façon d'extraire les éléments de la ligne de front, j'ai remarqué l'existence de la version couleur "carte météo flash". (3) J'ai téléchargé la version couleur disponible de "Breaking News Weather Map" et j'ai pu extraire l'image de première ligne en fonction de la couleur. (4) Lorsque je me suis entraîné avec une image d'enseignant avec uniquement la ligne de front, j'ai trouvé que cela fonctionnerait dans une certaine mesure, j'ai donc décidé d'augmenter le nombre d'exemples de cartes météorologiques. À ce stade, la version couleur n'était disponible que pendant environ six mois. (5) Étant donné que le réseau de neurones que je faisais à cette époque génère une image à partir d'une image, il est peut-être possible de convertir une carte météo en noir et blanc en une carte météo en couleur? J'ai pensé.

C'était ça. Puisque le réseau de neurones de l'image a commencé à se déplacer de l'image dans une certaine mesure, je me suis demandé s'il pouvait être appliqué.

En conséquence, cela a mieux fonctionné que ce à quoi je m'attendais.

Nous avons pu augmenter le nombre d'images d'enseignants, qui n'était qu'environ six mois, à plus de deux ans à la fois. En obtenant deux séries de printemps, d'été, d'automne et d'hiver, la variation des images des enseignants s'est accrue.

Création d'un réseau de neurones

Environnement matériel et logiciel

Mac mini(2018) Processeur Intel Core i7 6 cœurs à 3,2 GHz Mémoire DDR4 de 32 Go à 2667 MHz

OS macOS Catalina python3.7 Keras 2.0

Nous utilisons.

Structure de CNN

Le réseau que je créais a une structure assez simple. Avec une structure séquentielle, une image en échelle de gris à 1 canal est convertie en une image couleur à 3 canaux en extrayant des caractéristiques avec Conv2D, en la passant à travers un CNN à 4 étages dans la couche inférieure, puis en la renvoyant avec Conv2D Transpose.

L'image d'entrée est de 256x256, mais j'ai réduit les foulées de Conv2D quatre fois, l'ai fait 16x16, puis j'ai passé Conv2D quatre fois de plus. Après cela, il est restauré à sa taille d'origine par Conv2D Transpose.

Puisque l'apprentissage utilise «mean_squared_error», c'est un apprentissage qui l'amène à l'image de l'enseignant en tant que valeur de pixel.

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'))

Apprentissage et conversion

Entrée et sortie

L'image d'entrée est, par exemple, (carte météo flash 2018/9/30 21 UTC). spas.u.2018093021.v8.512.png

L'image de l'enseignant de sortie est comme ça. SPAS_COLOR_201809302100.v8.512.png

Résultat d'apprentissage

Sur les six mois de données, j'ai essayé d'utiliser la valeur de deux mois pour l'évaluation, et j'ai formé la version noir et blanc et la version couleur en utilisant environ quatre mois (plus de 700 feuilles parce qu'il y a six feuilles par jour).

Les données d'apprentissage convergeront vers une telle image relativement rapidement. Les cartes, les lignes de longitude / latitude et les dates seront surapprises en peu de temps.

out2w_SPAS_COLOR_2018093021.v8.512.png

Résultat de la prédiction

En utilisant le réseau appris, j'ai essayé de coloriser la carte météo en noir et blanc. La droite est la carte météo originale en noir et blanc et la gauche la carte météo colorisée. Je pense que le but de la découpe de l'élément de première ligne en fonction de la couleur est une colorisation suffisante.

spas_cmp_2017070109.png

Bien qu'il s'agisse d'une histoire détaillée, la case avec la date et l'heure en haut à gauche est également le résultat de l'apprentissage et de la prédiction sous forme d'image. Les chiffres (pression, vitesse de déplacement) qui apparaissent sur la carte météo semblent être directement prédits. «Juillet 2017» est seulement prédit comme «janvier 2018» comme cancer. Étant donné que les données utilisées pour l'apprentissage datent de 2018 et n'incluent pas le mois de juillet, "Je ne peux pas prédire ce qui ne figure pas dans l'entrée" J'ai envie de dire.

La même chose a été convertie en Heisei comme arme pour la chaîne de caractères du décret de la génération. Il semble que l'apprentissage était tel que le poids était nul et que seul le biais subsistait, de sorte que quoi qu'il arrive, ce serait Heisei.

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

jouer

J'ai essayé de faire des bêtises à la main (rires). Ceci est ma création. 25DE47A0-A84F-4793-970F-A6AD4989BF5A.jpeg

J'ai aussi essayé de le dessiner pour les enfants. AD1C083D-A87A-4DED-9FDB-58FDF19D4A13.jpeg

Il semble que j'ai une journée plus longue pour écrire à la main le symbole de la première ligne.

Résumé

Cette fois, j'ai résumé l'histoire de la coloration de la carte météo en noir et blanc. En conséquence, le nombre d'images découpées avant a augmenté de manière significative, et la précision de l'apprentissage du dessin pour l'objectif final des "fronts de type carte météorologique" s'est améliorée.

La prochaine fois, comme dernière tranche, j'essaierai de dessiner un "front de type carte météo" par apprentissage automatique basé sur le réseau neuronal de dessin de première ligne [(5) Machine learning Automatic Front Detection in Weather Data](https: // qiita) Je publierai sur .com / m-taque / items / 2788f623365418db4078). À partir du 2020.2.9, la limite mensuelle de la capacité d'affichage d'images sur le site de Qiita a été atteinte, et le tour final sera reporté à mars.

Recommended Posts

Essayez de dessiner un "front de type carte météorologique" par apprentissage automatique basé sur des données météorologiques (5)
Essayez de dessiner un "front de type carte météo" par apprentissage automatique basé sur les données météorologiques (3)
Essayez de dessiner un "front de type carte météo" par apprentissage automatique basé sur des données météorologiques (4)
Essayez de dessiner un "front de type carte météo" par apprentissage automatique basé sur des données météorologiques (2)
Histoire de l'analyse de données par apprentissage automatique
Les débutants en apprentissage automatique essaient de créer un arbre de décision
Essayez de dessiner une courbe de Bézier
Comment collecter des données d'apprentissage automatique
Essayez de faire une stratégie de blackjack en renforçant l'apprentissage ((1) Implémentation du blackjack)
Recherche de blogs techniques par machine learning en mettant l'accent sur la "facilité de compréhension"
Essayez de prédire la valeur de la jauge de niveau d'eau par apprentissage automatique en utilisant les données ouvertes de Data City Sabae
[Apprentissage automatique] Créez un modèle d'apprentissage automatique en effectuant un apprentissage par transfert avec votre propre ensemble de données
Essayez de dessiner une courbe de vie avec python
Notes sur l'apprentissage automatique (mises à jour de temps en temps)
Essayez de créer une nouvelle commande sous Linux
[Keras] J'ai essayé de résoudre le problème de classification des zones de type beignet par apprentissage automatique [Étude]
Essayez de faire une stratégie de blackjack en renforçant l'apprentissage (② Enregistrer l'environnement dans le gymnase)
Créer un environnement Python d'apprentissage automatique sur Mac OS
Essayez de prédire le taux de change (FX) avec un apprentissage automatique non approfondi
Prédiction de données chronologiques par AutoML (apprentissage automatique automatique)
[Apprentissage automatique] Essayez de détecter des objets à l'aide de la recherche sélective
xgboost: modèle d'apprentissage automatique efficace pour les données de table
Introduction à l'apprentissage automatique à partir de Simple Perceptron
Windows10 (x64) Créer nativement un environnement d'apprentissage automatique
Comment dessiner de manière interactive un pipeline d'apprentissage automatique avec scikit-learn et l'enregistrer au format HTML
Visualisation des données avec Python - La méthode de dessin simultané de graphes basés sur les attributs avec "Facet" est trop pratique
Essayez de faire une stratégie de blackjack en renforçant l'apprentissage (③ Renforcer l'apprentissage dans votre propre environnement OpenAI Gym))
Introduction à l'apprentissage automatique
Créer un environnement d'étude d'apprentissage automatique Python avec macOS Sierra
Créer un environnement d'apprentissage automatique sur Mac (pyenv, deeplearning, opencv)
Essayez de créer un réseau de neurones / d'apprentissage en profondeur avec scratch
Essayez d'évaluer les performances du modèle d'apprentissage automatique / de régression
Introduction à l'apprentissage automatique avec scikit-learn - De l'acquisition de données à l'optimisation des paramètres
Utilisation d'icrawler plus simple pour la collecte de données d'apprentissage automatique
Essayez d'évaluer les performances du modèle d'apprentissage automatique / de classification
Dockerfile pour créer un environnement de science des données basé sur pip3
Les débutants en apprentissage automatique tentent de contacter Naive Bayes (2) - Mise en œuvre
Créez une IA qui identifie le visage de Zuckerberg grâce à l'apprentissage en profondeur ③ (Apprentissage des données)
Paramètres d'environnement d'apprentissage automatique basés sur Python3 sur Mac (coexistence avec Python2)
Les débutants en apprentissage automatique tentent de contacter Naive Bayes (1) - Théorie
Utilisation des données ouvertes de Data City Sabae pour prédire la valeur de la jauge de niveau d'eau par apprentissage automatique Partie 2
J'étais frustré par Kaggle, alors j'ai essayé de trouver une bonne propriété locative en grattant et en apprentissage automatique
Étapes rapides pour créer un environnement d'apprentissage automatique à l'aide de Jupyter Notebook sur macOS Sierra avec anaconda