luisCartoGeo / GeoAI_Plugin

Plugin para ejecutar el modelo de META Segment Anything en QGIS

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GeoAI_QGIS Plugin

LuisGeo Twitter

Read in English https://github.com/luisCartoGeo/GeoAI_Plugin/blob/master/readme_en.md

Repositorio del complemento GeoAI


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


Citas y aportes

Al utilizar el texto y/o codigo añadir a la cita:
DOI

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"


Licencia

El plugin esta bajo licencia: Licencia pública general de GNU v3.0

¿Qué ventajas tiene GeoAI para aplicar el modelo SAM?

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.
    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.
  • 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

  • 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.
  • 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).
    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

Tabla de contenido

Requerimientos

Requerimientos de instalación

GeoAI esta diseñado para minimizar los requsistos de instalación. Para utilizar el plugin solo debe cubrir dos requerimientos:

  1. Instalar la versión adecuada de la libreria PyTorch
  2. Descargar y colocar en una directorio accesible los puntos de control (Check Points) del modelo SAM

Requerimientos de Hardware

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?

  1. El proceso de pre-carga del modelo/imagen
  2. El proceso de segmentar toda la imagen, especialmente si se incrementa la densidad de puntos de muestreo
Como podra notar el proceso de pre-carga del modelo/imagen, es el proceso que he encontrado más demandante de recursos, para dar un ejemplo claro, describire cuanto demora el proceso para la misma imagen en los dos equipos en los que lo he probado:
  1. Procesador: AMD Ryzen 3 3200U
  2. Tarjeta de video Radeon Vega Mobile Fx 2.6 Gb
    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

  3. Procesador: intel i5-12500H
  4. Tarjeta de video Ge Force RTX3050TI
    Memoria RAM: 16 Gb
    Disco duro SSD nota aqui se encuentran los puntos de control
    Duración proceso de precarga modelo/imagen: +/- 2 minutos

Recomendaciones para un mejor uso del plugin

  • 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

Instalación

Procedimiento para instalar PyTorch

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

Forma de instalación

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

Procedimiento de instalación de PyTorch con PIP

1. Verifique el entorno de trabajo

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

2. Actualizar pip

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

3. Seleccione la versión adecuada de PyTorch para su equipo

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

Corrigiendo una instalación previa

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

Procedimiento para descargar e instalar el plugin

Descarga del plugin

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.

Instalación del plugin

Luego de descargado el Zip que contiene el plugin, puede activar el programa QGIS y realizar los siguientes pasos:

  1. Seleccione el menú complementos, luego "Administrar e instalar complementos"
  2. En la ventana que se despliega seleccione la etiqueta "Instalar a partir de Zip" ubicada en el panel de la izquierda
  3. 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"
  4. Luego de instalado es recomendable reiniciar el programa QGIS, active la caja de dialogo Complementos, seleccione la etiqueta Instalado, encontrara el plugin GeoAI, activelo

Modelos pre entrenados (puntos de control o check points)

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:

  1. Generalmente el más utilizado vit_h: (modelo ViT-H SAM)
  2. vit_l: Modelo ViT-L SAM
  3. vit_b: Modelo ViT-B SAM

Tutorial rapido

Segmentación Interactiva

Extracción y conteo de hileras y plantas

Extracción de zonas de cultivo y areas de riego

About

Plugin para ejecutar el modelo de META Segment Anything en QGIS

License:GNU General Public License v3.0


Languages

Language:Python 92.2%Language:Cuda 7.0%Language:C++ 0.8%Language:Shell 0.1%