luisCartoGeo / GeoAI_Plugin

Plugin para ejecutar el modelo de META Segment Anything en QGIS
GNU General Public License v3.0
65 stars 9 forks source link
python3 qgis3-plugin sam segmentation-models torch

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](https://github.com/facebookresearch/segment-anything)).
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](https://segment-anything.com/), [repositorio github del proyecto SAM](https://github.com/facebookresearch/segment-anything)).
### Citas y aportes Al utilizar el texto y/o codigo añadir a la cita:
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.8313393.svg)](https://doi.org/10.5281/zenodo.8313393) 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](https://github.com/luisCartoGeo/GeoAI_Plugin/blob/main/LICENSE.txt)
### Novedades y mejoras - 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]( https://www.linkedin.com/pulse/nueva-versi%25C3%25B3n-del-plugin-para-qgis-geoai-con-fast-sam-perez-graterol-epwqe/) - [Articulo delineando estrategias y sugerencias para mejorar el procesamiento de imagenes Geoespaciales](https://www.linkedin.com/pulse/c%2525C3%2525B3mo-obtener-mejores-resultados-al-capturar-elementos-perez-graterol-xxrfe%3FtrackingId=tCU%252FppxqR4m%252FqD3dyfYFOw%253D%253D/)
### ¿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:

Sin embargo, hay aspectos mejorables, destacando: ## Tabla de contenido - [Requerimientos](#Requerimientos) - [Requerimientos de instalación](#Requerimientos-de-instalación) - [Requerimientos de Hardware](#Requerimientos-de-Hardware) - [Recomendaciones para un mejor uso del plugin](#Recomendaciones-para-un-mejor-uso-del-plugin) - [Instalación](#Instalación) - [Procedimiento para instalar PyTorch](#Procedimiento-para-instalar-PyTorch) - [Forma de instalación](#Forma_de_instalación) - [Procedimiento de instalación de PyTorch con PIP](#Procedimiento-de-instalación-de-PyTorch-con-PIP) - [1. Verifique el entorno de trabajo](#1.-Verifique-el-entorno-de-trabajo) - [2. Actualizar pip](#2.-Actualizar-pip) - [3. Seleccione la versión adecuada de PyTorch para su equipo](#3.-Seleccione-la-versión-adecuada-de-PyTorch-para-su-equipo) - [Instalación de TIMM](Instalación-de-TIMM) - [Corrigiendo una instalación previa](#Corrigiendo-una-instalación-previa) - [Procedimiento para descargar e instalar el plugin](#Procedimiento-para-descargar-e-instalar-el-plugin) - [Descarga del plugin](#Descarga-del-plugin) - [Instalación del plugin](#Instalación-del-plugin) - [Modelos pre entrenados (puntos de control o check points)](#Modelos-pre-entrenados-(puntos-de-control-o-check-points)) - [Tutorial rapido](#Funcionalidad) - [Segmentación Interactiva](#Segementación_Interactiva) - [Extracción y conteo de hileras y plantas](#Extracción_y_conteo_de_hileras_y_plantas) - [Extracción de zonas de cultivo y areas de riego](#Extracción_de_zonas_de_cultivo_y_areas_de_riego) - [Tutorial](#Funcionalidad) # 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
  3. Instalar TIMM
## 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 # 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
### Instalación de TIMM 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 ``` ### 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](https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth))
2. vit_l: [Modelo ViT-L SAM](https://dl.fbaipublicfiles.com/segment_anything/sam_vit_l_0b3195.pth)
3. vit_b: [Modelo ViT-B SAM](https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth)
# Tutorial rapido ## Segmentación Interactiva - [Enlace Video](https://youtu.be/TXPBrG-KUzg?si=TuzZuP90piUy0eot)
## Extracción y conteo de hileras y plantas - [Enlace Video](https://www.youtube.com/watch?v=AnQiqTYvdcA)
## Extracción de zonas de cultivo y areas de riego - [Enlace Video](https://youtu.be/h-ijSHcaP_4)
## ¿Cómo utilizar Fast Light SAM en GeoAI? - [Articulo](https://www.linkedin.com/pulse/nueva-versi%25C3%25B3n-del-plugin-para-qgis-geoai-con-fast-sam-perez-graterol-epwqe/)