Skip to content

En este repositorio se recogen dos proyectos en los que se utiliza el modelo Pix2Pix de Deep Learning para restaurar mapas de temperaturas y para hacer predicciones en base a la temperatura que hace hoy.

Notifications You must be signed in to change notification settings

abignu/Pix2Pix_RestauraMapas_PredClima

Repository files navigation

Pix2Pix_RestauraMapas_PredClima

En este repositorio se recogen dos proyectos en los que se utiliza el modelo Pix2Pix de Deep Learning para restaurar mapas de temperaturas y para hacer predicciones en base a la temperatura que hace hoy.

Explicaré los dos proyectos de manera separada aunque usan la misma arquitectura y el mismo dataset.

Antes de meternos en los dos proyectos es necesario explicar el procesamiento de datos que se hizo. Obtuve 3.5 GB de datos de la NOAA (https://www.noaa.gov) en los que venía recogidos datos meteorológicos registrados por diferentes estaciones meteorológicas en todo el mundo, en registros mensuales, en un perído que abarca desde 1840 hasta hoy en día. Al ser muchos datos tuve que hacer una limpieza masiva ya que había registros erroneos, algunos que no cuadraban con la fecha en la que se había registrado, etc.

Para el proceso de limpieza utilicé C#. EL primer paso fue separar la variable de interés (temperatura máxima), esto redujo el dataset a 2 GB. Luego, al tener datos de muchas estaciones meteorológicas, procedí a coger la latitud y longitud de cada una de estas para graficar y ver en que zona había más datos (cada pixel es una estación):

Gráfico de todas las estaciones disponibles entre 1840 y 2019

world

Gráfico de estaciones acotado a USA entre 1840 y 2019

usa

Como se vé, USA es la que más estaciones tiene, por lo que decidí restringir el dataset de las TMAX a las estaciones en USA. El dataset se redujo a 1.6 GB. Todo esto se hizo con C#. El siguiente paso fue separar las estaciones junto con su latitud y longitud, por año, mes y día y la temperatura asociada a ese día. Esto generó muchos registros en el dataset elevándolo a 6 GB. Este dataset se lo introdujo en una base de datos para manejarlo con mayor facilidad. Luego de subirlo, mediante 'queries', seguí limpiando el dataset. Quité más registros incoherentes, ajusté las temperaturas a un rango lógico ya que había muchas temperaturas que bien superaban la temperatura máxima record, o bien eran inferiores a la mínima histórica. Esto lo hice por el hecho de que a lo mejor se trató de una mala medida de ese día por lo que me restringí a 52ºC y -18ºC que son los registros históricos de USA.

Una vez hecha toda la limpieza de datos, utilizando C#, se indexaron sólo los datos desde 1980 hasta 2019 y, se mapearon los valores de la TMAX dada por una estación a través de un color a un mapa para poder representar el gradiente de temperaturas. El resultado final es el siguiente (imagen 256x256):

Ejemplo de un día de verano

verano

Ejemplo de un día de invierno

invierno

Las líneas de colores a los costados son un código de colores que representan día y año. La barra horizontal representa los días (1 a 365) y la vertical el año. Esto, de alguna forma, para el primer proyecto, ayuda a la predicción del día siguiente.

Una vez obtenido el dataset principal, se construyó el modelo de red neuronal a utilizar en TF 2.0.

Proyecto 1:

El primer proyecto consistió en utilizar el modelo Pix2Pix para predecir el clima del día de mañana en base al mapa de temperaturas del día de hoy. De esta forma, el input era el mapa de hoy y el target el mapa de mañana.

La motivación principal de utilizar Pix2Pix para predecir el clima es por la curiosidad de comprobar si esta estructura de redes neuronales, utilizada para transformar imágenes en imágenes, puede también adaptarse a inferir nuevos datos a partir de los existentes. Es decir, constatar si el modelo puede generar una imagen real en otra real (o al menos cercana a ella) y no en una hipotética.

Ambas imágenes están en la misma carpeta ya que la target de una iteración es el input de la siguiente. Llevan un nombre que las identifica con el siguiente formato yyyymmdd-xxxxxx.png dónde los últimos seis dígitos son el número de imagen en el dataset.

Se hizo un entrenamiento con 3200 imágenes. El 20% de eso se pasó a testeo.

Los resultados fueron los siguientes:

En el repositorio se ha subido el dataset para que cada uno pueda usarlo a su gusto. En el notebook correspondiente, al final hay una celda ejecutable para que le cargues la imagen que quieras. Debe respetar el código de fechas (hay que acordarse de modificar las rutas de carpetas).

Las conclusiones extraídas de este proyecto es que generó mapas predichos bastante ajustados a la realidad. Aunque consideramos que aumentando los EPOCHs y extendiendo el dataset de entrenamiento el resultado debería haber sido más fidedigno.

Proyecto 2:

En el segundo proyecto se le dio una vuelta de tuerca con el objetivo de hacer que el output del proyecto 1 luzca de forma más parecida a lo que es un mapa de temperaturas máximas utilizados en meteorología. De esta forma, avanzando en mejoras del proyecto se puede lograr que los climatólogos utilicen este modelo para mejorar los mapas generados a partir de sus datos.

Se cogieron 1000 imágenes del dataset y se les aplicó una 'acción' en photoshop en la que se retocó la imagen para dejarla lo más aceptable posible:

Ejemplo 1:

Ejemplo 2:

Claramente, el nuevo target será la imagen mejorada.

En el repositorio, la carpeta 'origen' es el input y la carpeta 'destino' el target.

Se entrenó sobre 1000 imágenes (20% testeo). Los resultados fueron los siguientes:

Como vemos, logra recontruir la imagen de manera certera. Esto, sin lugar a dudas, es de mucha utilidad para diferentes aplicaciones de cara a la climatología y mejora o customización de mapas.

Aquí les dejo un gif de los outputs recreados:

Imágenes output

Conclusiones:

Se concluye que el modelo utilizado sirve para inferir datos a partir de datos, a pesar de que este modelo no fue pensado para este tipo de aplicaciones.

A su vez, se logró mejorar y adaptar un mapa utilizando el mismo modelo para llevarlo a una representación más acorde con los tipos de imágenes utilizadas en meteorología.

About

En este repositorio se recogen dos proyectos en los que se utiliza el modelo Pix2Pix de Deep Learning para restaurar mapas de temperaturas y para hacer predicciones en base a la temperatura que hace hoy.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published