GeoAI_QGIS Plugin
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)
### ¿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)
- [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)
- [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:
- 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
## 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?
- 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
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:
- Procesador: AMD Ryzen 3 3200U
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
- Procesador: intel i5-12500H
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:
- 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
## 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)