Desertificacion Aragón.

Predicción de zonas de desertificación usando IA.

Desertificacion Aragón.

Zaragoza. Primera Edición. 2022

La desertificación se produce por la degradación de la tierra que se da en zonas secas: áridas, semiáridas y subhúmedas secas. La actividad humana y las variaciones climáticas están entre las causas de esta degradación del suelo, que impacta en los ecosistemas y en los recursos y modos de vida de los habitantes de las zonas afectadas. Estas zonas secas son aquellas con un índice de aridez (IA=P/ETP) inferior a 0,65.

España es uno de los territorios que sufre esta problemática. En Aragón el 75% del territorio está en riesgo de desertización. El cambio climático y el incremento de las temperaturas amenazan las tierras semiáridas que predominan en el Valle del Ebro, desde la ciudad de Huesca hacia el sur. Identificar a tiempo estas zonas será de gran ayuda para el apoyo a la toma de acciones que permitirán mitigar el impacto que la desertificación trae sobre la seguridad alimentaria así como la reducción de la pérdida de hábitats naturales y biodiversidad, todo esto, alineado con los Objetivos de Desarrollo Sostenible de Naciones Unidas.

Enfoque sobre los objetivos de Desarrollo Sostenibles 13 y 15. Accion por el clima y biodiversidad
Enfoque sobre los objetivos de Desarrollo Sostenibles 13 y 15. Fuente: https://sdgs.un.org/goals

Para identificar estas zonas se propone un proceso que gestione el reconocimiento mediante imágenes satelitales de las zonas de desertificación en Aragón y permita realizar una aproximación a la predicción de posibles futuras zonas desérticas con el objetivo de aplicar políticas más eficientes referentes a la reforestación de las zonas afectadas, y nuevos tratamientos de cultivos. Con apoyo de la iniciativa Saturdays.AI Zaragoza, cuyo objetivo es acercar la IA a todos los ciudadanos y aplicarla a problemas sociales, queremos dar solución o una aproximación a resolver este escenario que nos hemos planteado como equipo de trabajo.

Es entonces, cuando nos planteamos las siguientes inquietudes, ¿Cómo es posible calcular si hay o no desertificación en una zona determinada?, ¿qué imágenes pueden funcionar para este propósito?, ¿Cómo la IA nos puede apoyar para predecir estos valores? A lo largo de este artículo intentaremos dar solución a estas cuestiones.

Imágenes Satelitales

Las herramientas de teledetección hacen posible la visualización y cálculo de cambios que ocurren sobre la superficie terrestre, aquellas que nos interesan, los que corresponden a la teledetección pasiva (Definición de Teledetección), en nuestro caso concreto, captan la radiación solar reflejada por la superficie. Es bien sabido que organismos vivos reflejan y absorben radiación solar en forma diferente a como lo hacen los objetos inertes como calles o edificios. Aprovechando este principio, los satélites generan imágenes que contienen estas diferencias en forma de Niveles Digitales y bandas, que se traducen en unidades numéricas que se corresponden con los valores de longitudes de onda de las diferentes secciones del espectro electromagnético (Espectro electromagnético y teledetección). En resumen, miden la radiación reflejada por objetos como edificios o autopistas o entes vivos como bosques o vegetación en general.

Principales Componentes de un sistema de Teledetección
Principales Componentes de un sistema de Teledetección. Fuente : Curso de teledección https://static.uvq.edu.ar/mdm/teledeteccion/unidad-1.html

Índice de vegetación NDVI

Los cambios en la vegetación con el soporte de las imágenes satelitales se pueden medir de diferentes formas, una de ellas es extrayendo índices de vegetación, “Los Índices de Vegetación son combinaciones de las bandas espectrales registradas por los satélites de Teledetección” (¿Cuál es el índice de Vegetación NDVI?) que permiten identificar vegetación sobre la superficie terrestre. Es allí,con ayuda de estos índices en donde se resaltan y se pueden analizar numéricamente las propiedades de la vegetación como tal.

Interacción de los elementos de la superficie terrestre con la radiación
Interacción de los elementos de la superficie terrestre con la radiación. Fuente: Universidad de Murcia. Apuntes de teledetección. <https://www.um.es/geograf/sigmur/teledet/tema02.pdf>

El NDVI es el Índice de Vegetación Diferencial Normalizado, NDVI por sus siglas en inglés. Este índice es un parámetro calculado que se basa en los valores capturados por el instrumento satelital donde identifica patrones del espectro electromagnético que se corresponden con la reflectividad de coberturas vegetales. Este índice permite ayudar a distinguir fácilmente vegetación en imágenes satelitales.

Los patrones del espectro electromagnético para identificar la vegetación muestran que la vegetación absorbe la sección de radiación solar que corresponde al rojo. A su vez se reflejan valores elevados en el infrarrojo cercano y podremos identificar valores multiespectrales brillantes en esta banda ( Valores Espectrales del NDVI).

Representación de cobertura vegetal en RED y NIR
Representación de cobertura vegetal en RED y NIR. Fuente: Calculo de NDVI http://www.gisandbeers.com/calculo-del-indice-ndvi/

Así podemos diferenciar cubiertas vegetales en diferentes estados. Nuestro índice podrá ser obtenido mediante la siguiente relación:

NDVI = (Banda infrarroja cercana — Banda roja) / (Banda infrarroja cercana + Banda roja)

O lo que es lo mismo, y en términos de nomenclatura cuando trabajamos las bandas multiespectrales:

NDVI = (NIR — RED) / (NIR + RED)

Una vez se ha calculado el índice para cada uno de los píxeles de la imagen, los valores posibles oscilan entre -1 y 1.

Valores de NDVI para diferentes zonas
Valores de NDVI para diferentes zonas. Fuente: propia

Cuanto mayor sea el valor más frondosa será la vegetación hasta adquirir valores próximos a 1.

Manipulando la imagen

Para comprender mejor cómo podemos usar estos valores entre bandas y niveles digitales, es importante identificar las propiedades de una imagen en general y cómo se ven estos valores a nivel de computación.

Derecha: como un ser humano ve una imagen. Izquierda: como la procesa un ordenador (matrices)
Derecha: como un ser humano ve una imagen. Izquierda: como la procesa un ordenador. Fuente: Material Satudays.AI, Zaragoza. Edición I. 2021–2022. Tratamiento de Imágenes.

El ordenador o los métodos de computación, estructuran las imágenes en matrices con valores (i,j) estos valores (i,j) representan numéricamente el valor en términos computacionales de dicha coordenada sobre la imagen original (sin digitalizar). Cada uno de estos valores es lo que se denomina “pixel”

Para imágenes satelitales ocurre algo similar,la única diferencia radica en los valores para cada píxel, en este caso representan en niveles digitales para valores de reflectancia de radiación solar (espectro electromagnético) reflejada por el objeto terrestre sobre el cual el instrumento (el satélite) está midiendo.

Firmas espectrales en imágenes.
Firmas espectrales en imágenes. Fuente: Imagen 45. Utilización en imágenes multiespectrales. https://static.uvq.edu.ar/mdm/teledeteccion/unidad-1.html

Obtención y preparación de datos

Obtención

Ya que se hará un análisis sobre cambios en la superficie terrestre, las imágenes satelitales que se eligieron fueron del instrumento Sentinel 2A. Para la obtención de datos usamos la librería de Python SentinelSat para la descarga de imágenes en el área que nos interesa. Es de anotar que las imágenes se han tomado con los siguientes condicionantes: para un área específica detallada en un fichero .json, para la misma tesela (zona de captura de imagen del satélite) y sección de órbita para garantizar que se está tomando la misma zona de estudio para diferentes momentos de tiempo.

Fuente: propia (Codigo completo en https://github.com/desertificacion-AI/desertificacion-AI)
Fragmento de código para la descarga de imágenes sentinel del sitio scihub.copernicus.eu Fuente: Propia

NOTA: Para la obtención y captura de los datos se han descargado las imágenes de Sentinel con un porcentaje de nubes máximo de 10%.

Una vez ejecutado el script para la descarga de imágenes del satélite, se descarga una serie de ficheros zip que contienen cada uno la siguiente estructura al momento de descomprimirlos:

Estructura de fichero descargado del sitio scihub.copernicus.eu Fuente: propia
Estructura de fichero descargado del sitio scihub.copernicus.eu Fuente: propia

Cada una de las imágenes Sentinel vienen dadas con un consecutivo de nombre de imagen con la siguiente estructura:

MS2_MSILLL_YYYYMMDD

Donde:

  • MS2: identifica la misión de Sentinel 2, pudiendo encontrar S2A (para Sentinel 2A) o S2B (para Sentinel 2B)
  • MSI: indica el instrumento de operación (MultiSpectral instrument)
  • LLL: indica el nivel de procesado del producto pudiendo encontrar los niveles L0, L1C, L1B o L2A
  • YYYY: designa el momento temporal UTC (año) en el que fue tomada la imagen
  • MM: designa el momento temporal UTC (mes) en el que fue tomada la imagen
  • DD: designa el momento temporal UTC (día) en el que fue tomada la imagen

Las descargas de Sentinel para el proyecto fueron:

Relación de imágenes. Fuente: Propia

Preparación

Una vez obtenidas las imágenes, sobre ellas calcularemos los índices NDVI mediante Script en Python.

Fuente: propia (Codigo completo en https://github.com/desertificacion-AI/desertificacion-AI)
Fragmento de código para el cálculo del NDVI para las imágenes descargadas

Para entender la salida de este script, las imágenes con el NDVI calculado (nuevos ficheros tif), se debe tener en cuenta que esta transformación imágenes nos da lugar a una imagen compuesta por una matriz de valores donde cada valor corresponde a un pixel (representación en la imagen) y este valor oscila entre -1 y 1. Recordando el apartado de Índice de Vegetación, a partir de 0.3 entendemos que hay vegetación para ese píxel (valor de matriz).

Captura de pantalla de las imágenes NDVI generadas por el script. Fuente: Propia
Detalle de una de las imágenes NDVI generadas por el script de Python. Fuente: Propia
Detalle de una de las imágenes NDVI generadas por el script de Python. Fuente: Propia

¿Y la predicción de valores de desertificación?

Ya estamos en el punto en donde, hemos identificado la zona sobre la que trabajaremos, hemos hallado los índices de vegetación para estas zonas en diferentes momentos de tiempo, ahora continuaremos con el establecimiento de una relación entre los valores medidos y cómo estos cambian en el tiempo (nuestra variable continua) para anticipar un conjunto de nuevos valores.

Deseamos construir un modelo que describa la relación entre las variables de estudio, con el fin, principalmente, de predecir los valores de una variable a partir de los valores de la otra. Elegiremos Random Forest Regressor ya que tenemos un conjunto de valores numéricos que hemos considerado como categorías (cada imagen con su matriz específica) y luego promediamos la salida de cada árbol de decisión usando este algoritmo ( Definición de Random Forest regressor. Material Saturdays AI. Zaragoza. Edición I. 2021–2022. Sesión Regresores).

Fuente: Definición de Random Forest regressor. Material Saturdays AI. Zaragoza. Edición I. Sesión Regresores. 2021–2022
Breve resumen del funcionamiento de Random Forest Regressor

Como este es un modelo de Machine Learning Supervisado, tomaremos las imágenes con el NDVI calculado, solo una zona de las misma para el aprendizaje del modelo y la zona siguiente de las imágenes para la predicción futura de índices NDVI.

Evaluación

Entrenamiento

Para el entrenamiento del algoritmo, se tomaron 5 imágenes con NDVI calculado y una imagen adicional como salida conocida. De cada una de las imágenes se ha elegido un subset de igual tamaño para añadirlos a un vector en Python. Lo anterior se realiza por capacidad de procesamiento de las máquinas disponibles, las imágenes originales tienen dimensiones de 10.000×10.000 píxeles que no es posible procesar de forma ágil y eficiente con los recursos disponibles en el grupo de trabajo.

Imágenes con NDVI calculado. Fuente: propia.

Nota Aclaratoria: Cada imagen de NDVI calculado tiene un tamaño de 470MB aproximadamente, por lo que 6 de ellas nos da un estimado de 2,8GB para hacer el procesamiento de este dataset.

Fragmento de código para la elección del subset de datos para el Random Forest de entrenamiento. Fuente: propia

Con ayuda de la librería sklearn establecemos un set de entrenamiento para el algoritmo con el que poder “enseñarle” cómo puede intentar predecir los siguientes valores y ejecutar la siguiente fase de prueba (testing).

Prueba

Para probar el algoritmo, se tomaron las mismas 5imágenes con el NDVI calculado pero esta vez, el subset elegido corresponde a otra porción de la imagen. En el entrenamiento hemos elegido una sección, para la prueba (test) elegimos una sección distinta.

Fragmento de código para la elección de los datos de test para el algoritmo. Fuente: Propia

El margen de error para la imagen predicha es el siguiente:

Margen de error resultante de la predicción. Fuente Propia.
Margen de error resultante de la predicción. Fuente: Propia.

Es necesario saber si el algoritmo es capaz de predecir correctamente una imagen. Utilizaremos una imagen que ya se tiene para validar la efectividad del algoritmo a la hora de predecir el resultado.

Derecha: Imagen original. Izquierda: Imagen predicha. Fuente: Propia.

Visualización en Streamlit

En la página desertIAragon se encuentra desplegada la aplicación de Streamlit para visualizar los cambios en NDVI calculados

Captura de pantalla del sitio web de Streamlit para mostrar imágenes calculadas. Fuente : Propia
Captura de pantalla del sitio web de Streamlit para mostrar imágenes calculadas. Fuente : Propia

En la sección Imágenes Satelitales, encontramos un subset de 2000×2000 píxeles de las imágenes extraídas del sitio web de Sentinel:

Imágenes satelitales de 200x220 px. Fuente: propia
Imágenes satelitales de 2000 x 2000 px. Fuente: propia

La sección de cuadrículas de estudio, nos permite elegir la coordenada deseada para mostrar los cambios en el NDVI calculado y sus valores. Elegir la coordenada en las opciones disponibles en el panel izquierdo:

Elección de coordenada para la cuadrícula de estudio. Fuente: propia
Elección de coordenada para la cuadrícula de estudio. Fuente: propia
Valor de NDVI calculado para la imagen 1. Fuente: Propia.
Valor de NDVI calculado para la imagen 1. Fuente: Propia.

Predicción

El sistema se entrena con una porción igual de cada una de las imágenes 1 a 5. Esta porción es un recuadro de coordenadas aleatorias y dimensiones igual al ancho/alto de la cuadrícula indicado en la banda lateral (en Streamlit).

La razón de elegir un recuadro reducido es el elevado coste computacional que tiene el entrenamiento del sistema. Este coste puede estar rondando aproximadamente 5 minutos de procesamiento para un fragmento inferior a 250 píxeles de dimensión, en un ordenador con una RAM de 8GB y un procesador: Intel Core I5 2,67 Ghz.

De esta forma la aplicación puede mostrar unos resultados de una forma relativamente ágil. Para el test se ha elegido las imágenes de las cuadrículas 1 a 5 con las que se ha obtenido el índice NDVI.

La predicción se hace con la cuadrícula 6. Se compara la imagen original con la predicha por la IA.

Comparación fragmento de la imagen original vs. imagen predicha por la IA

Datos generales de las imágenes:

Coordenadas de la esquina superior izquierda: i_0i0​ * j_0j0​ = 0 * 0 px Coordenadas de la esquina superior derecha: i_nin​ * j_njn​ = 5 * 5 px

Error cuadrático promedio: 0.03719

Conclusiones

  • Existe software propietario como ERDAS para facilitar el cálculo de NDVI y algoritmos de regresión para predecir comportamientos, sin embargo, alineados con los principios de Saturdays.AI: acercar la IA a todos los ciudadanos y aplicarla a problemas sociales, hemos optado por una solución basada en herramientas de código abierto y disponibles para todo público.
  • Este proyecto tiene la potencialidad de explorar como una fase siguiente la capacidad de procesamiento de datos para imágenes de dimensiones más grandes, ya sea en resolución espacial o temporal, de forma más eficiente en la nube. Tomando ventajas como procesamiento en paralelo o distribuido se podrán añadir más entradas al algoritmo y procesamientos más complejos que no se pueden suplir con los recursos actuales
  • La desertificación sobre las zonas evaluadas se puede predecir de forma eficiente, con un margen de error bastante reducido para la primera fase de evaluación. A nivel numérico es posible establecer dónde la vegetación se ha ido perdiendo a lo largo del tiempo y predecir sus valores futuros para tomar acciones a tiempo sobre estas zonas y evitar así, nuevas zonas de desertificación.

Integrantes del proyecto

Eva de Miguel Morales

Pedro Biel

Yineth Castiblanco Rojas

Presentación del proyecto: Demoday

Repositorio

Se puede encontrar el código de este proyecto en GitHub

Adicionalmente, el código de visualización se puede encontrar en : GitHub Streamlit

¡Más inteligencia artificial!

La misión de Saturdays.ai es hacer la inteligencia artificial más accesible (#ai4all) mediante cursos y programas intensivos donde se realizan proyectos para el bien (#ai4good).

Infórmate de nuestro master sobre inteligencia artifical en https://saturdays.ai/master-ia-online/

Si quieres aprender más inteligencia artificial únete a nuestra comunidad en community.saturdays.ai o visítanos en nuestra web www.saturdays.ai ¡te esperamos!

Inteligencia artificial para la predicción de cosechas

Tendencia de la producción del 1940 al 2020

Máster Online. Primera Edición. 2021

Los rendimientos de los cultivos no están exentos de sufrir los múltiples efectos nocivos de los que es responsable el cambio climático. El clima extremo es más común ahora que hace siglos, razón por la cual, sequías, inundaciones, altas y bajas temperaturas, entre otros, se requiere modelar dicho comportamiento.

La hipótesis inicial del proyecto se centraba en la predicción de cosechas sobre una región dentro de España, después de cerciorarnos de la poca información sobre las cosechas que hay actualmente disponible y la inexistente normalización en el formato de los datos se decidió elegir Illinois como la localización para nuestro proyecto.

Para poner en contexto el proyecto es imprescindible conocer antes varios aspectos sobre el estado de Illinois: Este estado se caracteriza por su terreno poco accidentado en general, y por su clima inestable así como por varias catástrofes climáticas acontecidas en los últimos años. La agricultura es una importante fuente de ingresos de Illinois especialmente en la producción del maíz y la soja.

Se puede observar en el gráfico mostrado que el rendimiento de la producción del maíz se ha visto incrementado a lo largo de los años, al mismo tiempo podemos constatar que han habido bajadas en la producción provocadas por eventos climáticos extremos.

Este contexto tan particular de la tendencia de la producción en Illinois nos ayudó a comprender que realizando un proyecto basándonos en la comprensión y categorización de los datos así como el posterior tratado de los mismos con un modelo de predicción nos daría como resultado la posibilidad de predecir la distribución de la producción en Illinois a futuro y con ello se podría ayudar a todo el territorio a prevenir y contrarrestar los picos de baja producción causados por las catástrofes climáticas u otros factores climáticos.

Pasos del proyecto

Para conseguir la predicción del rendimiento de las cosechas hemos priorizado la limpieza y gestión de los datos más óptima. Las dos series de datos históricos principales con los que hemos trabajado han sido : la temperatura a 2m del suelo y el Índice de vegetación EVI. El siguiente paso para analizar la serie temporal de yield es necesario aislar el componente aleatorio, aplicando la diferenciación regular para obtener una nueva serie, con un dato menos que la original, en la que se ha eliminado la tendencia.

El siguiente paso es el alineamiento de las muestras ya que las muestras de temperatura y de índice de vegetación no se realizaron en el mismo día. Para alinear ambas capturas de información interpolamos la serie de EVI de esta forma generamos un nuevo set de capturas para que ambas series coincidan.

Después de realizar todos estos pasos, indispensables para poder realizar el modelo de predicción, hemos conseguido tener los datos ya limpios para proceder con el mismo. Llegados a este punto hemos explorado varios modelos lineales (LinearRegression, Lasso, Ridge) y el resultado no ha sido el esperado ya que nos hemos encontrado con mucho overfitting. Al final hemos seleccionado un RandomForestRegressor porque consideramos que era el modelo más adecuado para este caso, finalmente para la selección de los hiperparámetros utilizamos el RandomizedSearchCV.

Conclusión

Este proyecto es un punto de partida para el seguimiento, evolución y mejora del rendimiento de producción de cosechas de maíz en Illinois. Nos complace haber encontrado algunas ideas interesantes de los conjuntos de datos proporcionados: una relación entre el rendimiento del cultivo y el tiempo, la temperatura y el valor EVI.

Como resultado del modelo predictivo podemos observar que un error de modelo (varianza) independiente de la magnitud de la producción y que cuanto mayor es la producción menos se nota el error de la predicción del modelo. Según este resultado comprendemos que añadiendo más variables como las precipitaciones, composición del terreno, grado de heladas o catástrofes climáticas podríamos conseguir un porcentaje de error menor.

Como punto de mejora del proyecto podríamos destacar la optimización en el cálculo de interpolación para mejorar la velocidad de procesamiento del código. Es un ejemplo de que con unos datos y variables óptimas se pueden desarrollar modelos de predicción útiles para localizaciones geográficamente equivalentes.

Finalmente, nos gustaría agradecer a Saturdays AI por brindarnos la oportunidad de realizar este proyecto y conocer a otras personas involucradas en el campo de la IA, así como probar nuestras habilidades en ML y ampliar nuestros horizontes en nuevos temas previamente desconocidos para nosotros.

Integrantes

Presentación del proyecto: DemoDay

¡Más Inteligencia Artificial!

La misión de Saturdays.ai es hacer la inteligencia artificial más accesible (#ai4all) mediante cursos y programas intensivos donde se realizan proyectos para el bien (#ai4good).

Si quieres aprender más inteligencia artificial únete a nuestra comunidad en community.saturdays.ai o visítanos en nuestra web www.saturdays.ai ¡te esperamos!