Read in English https://github.com/luisCartoGeo/GeoAI_Plugin/blob/master/readme_en.md
GeoAI es un complemento en desarrollo para QGIS cuyo objetivo es permitir explotar con versatilidad las capacidades de los modelos de Inteligencia Artifical (IA) en el procesamiento de datos Geo-espaciales, comenzando con el modelo de segmentación de imagenes Segment Anything (SAM) desarrollado por META.
Segment Anything es un modelo de inteligencia artificial pre-entrenado que permite generar mascaras sobre objetos reconocidos en imágenes para su resalte o extracción
(Fuente [pagina del proyecto SAM] (https://segment-anything.com/), repositorio github del proyecto SAM).
Segment Anything produce máscaras de objetos de alta calidad a partir de entradas como puntos o recuadros, y puede utilizarse para generar máscaras para todos los objetos de una
imagen. Se ha entrenado con un conjunto de datos de 11 millones de imágenes y 1.100 millones de máscaras,
y ofrece un gran rendimiento en una gran variedad de tareas de segmentación Fuente pagina del proyecto SAM,
repositorio github del proyecto SAM).
Al utilizar el texto y/o codigo añadir a la cita:
Si deseas realizar una aporte a este desarrollo puedes enviarlo a la cuenta PayPal: luisepg3176@gmail.com
Escribir en la nota tu nombre y "Contribution to the development of the GeoAI plugin"
El plugin esta bajo licencia: Licencia pública general de GNU v3.0
- La versión 1.1.0 del plugin GeoAI implementa una versión ligera (movil) del modelo SAM. Descripción detallada en el siguiente articulo
- Articulo con detalles de la implementación del modelo ligero SAM
- Articulo delineando estrategias y sugerencias para mejorar el procesamiento de imagenes Geoespaciales
Si bien, GeoAI es un complemento en desarrollo, en esta primera versión he apostado por cuatro (04) aspectos fundamentales:
- Funcionalidad GeoAI puede trabajar sobre imagenes georeferenciadas RGB de 8 bytes (formato aceptado por el modelo) y tambien sobre imagenes unibanda y multibanda como las imagenes de satelite y de drones, las cuales pueden poseer diversos formatos. Para ello el plugin realiza un proceso de transformación.
- Versatilidad Las interfaces de usuario han sido diseñadas para facilitar su uso al mismo tiempo que se explotan las capacidades del modelo, brindando diversas configuraciones las cuales se disponibilizan cuando es oportuno.
- Compatibilidad
- Facil instalación y portabilidad El archivo del complemento es ligero pesa menos de 2 megabytes, sus requisitos de instalación son los minimos requeridos para utilizar el modelo SAM, como son: instalar PyTorch, descargar los archivos de los modelos pre-entrenados (checkpoints).
Con la implementación del modelo ligero de SAM desarrollada por ETH VIS Group, ahora es posible ejecutar la segmentación consumiendo menos recursos y de forma muy rápida.
Fuente, repositorio y mayores detalles en: [Github ETH VIS Group](https://github.com/SysCV), [Paper: Ke, Lei and Ye, et. al, 2023 Segment Anything in High Quality, NeurIPS.](https://arxiv.org/abs/2306.01567).
Luego de configuradas las imagenes el usuario puede segmentar las imagenes utilizando dos modulos:
1.- Segmentación de toda la imagen
Permite segmentar toda la imagen, el usuario puede realizarlo utilizando la configuración por defecto o alterando los parametros avanzados. PRECAUCION la modificación de los parametros puede alterar los resultados y los tiempos de ejecución.
2.- Segmentación interactiva
Esta es la herramienta más completa e intuitiva. Despliega un asistente mediante el cual es posible segmentar objetos de la imagen seleccionandolos en pantalla mediante puntos y/o areas (dibujando un rectangulo). Ademas cuenta con la opción de obtener un solo segmento por selección, múltiples segmentos o el de mayor superficie. Por otro lado, el usuario puede almacenar los segmentos en una nueva capa o una existente, incluso crear campos y guardar un atributo. Constituye una herramienta de digitalización avanzada.
![](https://github.com/luisCartoGeo/GeoAI_Plugin/raw/main/logos.png)
GeoAI ha sido probado en los sistemas operativos Windows10 y 11, en las versiones de QGIS 3.10, 3.16, 3.22 y la última LTR 3.28.
Puede descargar el archivo zip del plugin de este repositorio y luego instalarlo en QGIS con la opción Instalar mediante Zip.
Sin embargo, hay aspectos mejorables, destacando:
- Completar la documentación
- Traducir la interfaz y documentación al ingles y otros idiomas
- Explorar en implementar las opciones de optimización que ofrece el modelo SAM, Python y PyQGIS
- Añadir mayores funcionalidades
- Implementar otras versiones de SAM
- Requerimientos
- Instalación
- Tutorial rapido
- Tutorial
GeoAI esta diseñado para minimizar los requsistos de instalación. Para utilizar el plugin solo debe cubrir dos requerimientos:
- Instalar la versión adecuada de la libreria PyTorch
- Descargar y colocar en una directorio accesible los puntos de control (Check Points) del modelo SAM
- Instalar TIMM
SAM es un modelo de redes neuronales NLP densamente entrenado (11 millones de imagenes), por lo cual, los puntos de control son archivos de +/- 2 Gb. Estos modelos presentan un alto consumo de memoria RAM y capacidad de procesamiento.
Sin embargo, esto no restringe el uso en equipos de menores prestaciones, pero evidentemente el proceso tomara más tiempo.
¿Cuales partes del proceso requieren mayor procesamiento, por lo tanto, demoran más?
- El proceso de pre-carga del modelo/imagen
- El proceso de segmentar toda la imagen, especialmente si se incrementa la densidad de puntos de muestreo
- Procesador: AMD Ryzen 3 3200U Tarjeta de video Radeon Vega Mobile Fx 2.6 Gb
- Procesador: intel i5-12500H Tarjeta de video Ge Force RTX3050TI
Memoria RAM: 8 Gb
Disco duro: aplicaciones SSD, Almacenamiento: HDD nota aqui se encuentran los puntos de control
Duración proceso de precarga modelo/imagen: +/- 20 minutos
Memoria RAM: 16 Gb
Disco duro SSD nota aqui se encuentran los puntos de control
Duración proceso de precarga modelo/imagen: +/- 2 minutos
- Mantener lo más libre posible la RAM al realizar la pre-carga, cierre todas las otras aplicaciones
- Ubique los check points en el disco solido (SSD) si lo posee
- Deje trabajar el equipo mientras se realiza el proceso de pre-carga
Realizar una adecuada instalación de PyTorch es el paso fundamental para utilizar el plugin sin mayores problemas. Para ello es necesario seleccionar la versión adecuada de PyTorch, a continuación se describe la instalación de PyTorch que he realizado en Windows10 y 11, para diferentes versiones de QGIS.
Un error común instalar la última versión de PyTorch desde la pagina oficial, si bien esta versión puede ejecutar el modelo SAM correctamente, las librerias pre-instaladas en QGIS no necesariamente cubriran los requerimientos de esa versión de PyTorch, por ejemplo, la versión de Numpy pre-instalada
Realizaremos la instalación desde el shell de OSGEO utilizando pip. El shell de OSGEO es la ventana de comandos (CMD) instalada con QGIS mediante ella podemos realizar instalaciones de librerias y otras tareas
¿Como acceder al shell de OSGEO?
Dirijase al icono de windows ubicado en la esquina inferior izquierda esto desplegara una lista de todos los programas, seleccione la carpeta que corresponde a su instalación de QGIS. Luego seleccione OSGeo4wShell como se muestra en la imagen
Esto desplegara la ventana MS DOS donde introduciremos el codigo de instalación
Antes proceder a instalar cualquier libreria Python debemos verificar si se requiere configurar el entorno de trabajo.
Las versiones antiguas de QGIS, incluyendo la 3.16 debemos introducir el siguiente codigo para que la instalación de la libreria se realice adecuadamente, sin embargo, para las nuevas versiones no es necesario.
py3_env
Introduzca el siguiente codigo en el shell, independiente el resultado que devuelva el shell prosiga con los siguientes pasos
python -m pip install -U pip
Si esta en una versión muy antigua de QGIS y el codigo anterior arroja error utilice este
python -m pip install --upgrade pip
Las especificaciones del modelo SAM señalan que se requiere como minimo python>=3.8, pytorch>=1.7 y torchvision>=0.8.
En teoria la versión de Python limita la versión QGIS donde podriamos instalar y ejecutar el modelo, sin embargo, me ha funcionado bien en QGIS 3.10 cuya versión es Python 3.7. Por lo tanto, cualquier versión de QGIS igual o superior a la 3.10 es posible utilizar el plugin.
La instalación de PyTorch dependera de las especificaciones de tu equipo:
1.- Procesador Intel con tarjeta gráfica Nvidia
Para un uso adecuado de la GPU deberas verificar la versión de tu driver Nvidia:
a.- Para utilizar CUDA 10.2, la versión del Driver Nvidia debe ser >= 441.22
En ese caso introduce este código
pip3 install torch==1.8.1+cu102 torchvision==0.9.1+cu102 torchaudio===0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
b.- Para utilizar CUDA 11.1, la versión del Driver Nvidia debe ser >= 456.38
En ese caso introduce este código
pip3 install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio===0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
2.- Otros procesadores y tarjetas de video
Utiliza el siguiente codigo, en este caso utilizaras el modelo SAM solo con la opción CPU (no te preocupes hasta ahora solo la he utilizado de esta forma)
pip3 install torch==1.8.1+cpu torchvision==0.9.1+cpu torchaudio===0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
3.- Verifica la instalación de PyTorch
Introduce este codigo debe devolverte información de la liberia instalada
```
pip3 show torch
```
Otra opción, abre QGIS activa la consola de Python ejecuta import torch si no devuelve nada, esta instalada
Para poder utilizar la versión ligera y rápida de SAM en GeoAI debemos instalar el paquete Python timm. Su isntalación es sencilla y obligatoria para poder utilizar el plugin.
¿Qué es el modulo timm?
"timm" es una librería de aprendizaje profundo creada por Ross Wightman, contiene una colección de modelos de visión por ordenador SOTA, capas, utilidades, optimizadores, programadores, cargadores de datos, aumentaciones y también scripts de entrenamiento/validación con capacidad para reproducir los resultados de entrenamiento de ImageNet.
Podemos instalar rápidamente utilizando pip en el shell de OSGEO, como hicimos en los pasos previos:
```
pip install timm
```
Si realizaste una instalación de PyTorch que no te permite ejecutar el plugin deberas removerla y reemplazarla por las recomendadas aqui.
Puedes removerla utilizando pip, asegurate de incluir todo lo instalado previamente, entre ello torchvision y torchaudio
Para desinstalar las versiones aqui recomendadas repite desde el paso 1 e introduce el siguiente codigo
pip3 uninstall torch torchvision torchaudio
Deberas aceptar cuando te pregunte si estas seguro de desinstalar
El primer paso es descargar el complemento, el proceso es muy sencillo haces clic en el botón de color verde con el texto CODE, despliega un menú y seleccionas Download ZIP esto descargara un archivo zip el cual puedes utilizar directamente para instalar en QGIS. También puedes descargar el complemento desde la opción de Versión ubicado en la parte inferior derecha, descarga la última versión publicada.
Luego de descargado el Zip que contiene el plugin, puede activar el programa QGIS y realizar los siguientes pasos:
- Seleccione el menú complementos, luego "Administrar e instalar complementos"
- En la ventana que se despliega seleccione la etiqueta "Instalar a partir de Zip" ubicada en el panel de la izquierda
- Seleccione el botón a la derecha con tres puntos, le permitira ubicar el archivo Zip en su coputador, luego clic sobre el botón "Instalar complemento"
- Luego de instalado es recomendable reiniciar el programa QGIS, active la caja de dialogo Complementos, seleccione la etiqueta Instalado, encontrara el plugin GeoAI, activelo
![](https://github.com/luisCartoGeo/GeoAI_Plugin/raw/main/instal2.png)
Para poder ejecutar SAM debemos descargar los puntos de control, los cuales son requeridos durante el proceso de pre-carga del modelo/imagen
Puedes descargar los puntos de control disponibles en los siguientes enlaces:
- Generalmente el más utilizado vit_h: (modelo ViT-H SAM)
- vit_l: Modelo ViT-L SAM
- vit_b: Modelo ViT-B SAM