Detectar objetos con Text SAM

Configurar el proyecto

Para empezar, descargará un proyecto que contiene todos los datos de este tutorial y lo abrirá en ArcGIS Pro.

  1. Descargue el paquete Boat_Detection.

    Se descarga un archivo denominado Boat_Detection.ppkx en su equipo.

    Nota:

    Un archivo .ppkx es un paquete de proyecto de ArcGIS Pro y puede contener mapas, datos y otros archivos que puede abrir en ArcGIS Pro. Más información sobre la administración de archivos .ppkx en esta guía.

  2. Busque el archivo descargado en su equipo.
    Sugerencia:

    En la mayoría de los navegadores web, se descarga en la carpeta Descargas.

  3. Haga doble clic en el archivo Boat_Detection.ppkx para abrirlo en ArcGIS Pro. Si se le pide, inicie sesión con su cuenta de ArcGIS.
    Nota:
    Si no tiene acceso a ArcGIS Pro o una cuenta de organización de ArcGIS, consulte las opciones de acceso a software.

    Para los flujos de trabajo de Text SAM se requiere la versión 3.2 o posterior de ArcGIS Pro.

    Aparece un mapa centrado en el barrio Tuborg Havn de Copenhague (Dinamarca). Sobre el mapa base topográfico se despliega la capa de imágenes Tuborg_Havn.tif.

    Vista general inicial

  4. Acerque y desplace para examinar las imágenes.

    Observe las numerosas embarcaciones repartidas por los puertos deportivos y canales. Se trata de una imagen aérea ortorrectificada para eliminar cualquier distorsión. Es de alta resolución (cada píxel representa un cuadrado de 20 × 20 centímetros sobre el terreno) y muestra embarcaciones y otras entidades con bastante claridad. Está en formato TIFF con tres bandas: roja, verde y azul, que juntas forman una imagen de color natural. Tiene una profundidad de píxel de 8 bits.

    Identificar manualmente todas las embarcaciones de esta imagen, y aún más en todos los puertos deportivos y canales de Copenhague, llevaría mucho tiempo. En su lugar, utilizará el modelo GeoAI de Text SAM para detectarlas automáticamente.

Descargar el modelo Text SAM

Para utilizar el modelo Text SAM, primero debe descargarlo en su equipo. Text SAM está disponible en ArcGIS Living Atlas of the World, que es la colección acreditada de datos de SIG de Esri e incluye una biblioteca cada vez más extensa de modelos de aprendizaje profundo.

  1. Abra ArcGIS Living Atlas en su navegador web.
  2. En la página inicial de ArcGIS Living Atlas, en el cuadro de búsqueda, escriba Text SAM.

    Búsqueda de Text SAM

  3. En la lista de resultados, haga clic en Text SAM para abrir su página de elementos.

    Text SAM en la lista de resultados

  4. E la página de elementos de Text SAM, lea parte de la descripción y explore la página.

    Text SAM es un modelo polivalente al que se le pueden hacer consultas mediante mensajes de texto libre para extraer entidades de diversos tipos a partir de imágenes. Por ejemplo, las indicaciones de texto pueden ser avión para detectar aviones, panel para detectar paneles solares o coche rojo para detectar coches rojos. La salida es una capa de polígonos que representa el contorno aproximado de los objetos detectados.

    Indicación de texto "avión"

    La página también incluye información de gran utilidad sobre la entrada esperada, que deben ser imágenes RGB de 3 bandas de 8 bits.

    Entrada esperada

    El modelo se adapta bien a las imágenes de Copenhague utilizadas en este tutorial.

    Sugerencia:

    Encontrará más información sobre Text SAM en el artículo Text SAM: Extracting GIS Features Using Text Prompts y en la guía Text SAM: Use the model.

    Si desea ejecutar este flujo de trabajo en sus propias imágenes, consulte la última sección de este tutorial sobre consejos para convertir sus datos al formato de entrada esperado.

  5. En la parte superior de la página, en Descripción general, haga clic en Descargar.

    Botón Descargar

    El archivo del modelo se descarga en su equipo.

    Nota:

    El archivo del modelo tiene 1,75 GB, por lo que puede tardar unos minutos en descargarse.

  6. Localice el archivo TextSAM.dlpk en su equipo y muévalo a una carpeta en la que pueda encontrarlo fácilmente, como, por ejemplo, C:\GeoAI_models.
    Sugerencia:

    También puede utilizar Text SAM directamente en una herramienta de geoprocesamiento de ArcGIS Pro sin guardarlo primero; sin embargo, la herramienta descargará entonces una nueva copia del modelo cada vez que se ejecute. De ahí que pueda ser conveniente almacenarlo localmente.

Detectar embarcaciones mediante Text SAM

Ahora detectará las embarcaciones presentes en su imagen de Copenhague. Utilizará la herramienta de geoprocesamiento Detectar objetos con aprendizaje profundo apuntando a la copia del modelo Text SAM que descargó como uno de los parámetros.

Nota:

Para utilizar las herramientas de aprendizaje profundo en ArcGIS Pro es necesario tener instaladas en el equipo las bibliotecas de aprendizaje profundo correctas. Si no tiene instalados estos archivos, guarde el proyecto, cierre ArcGIS Pro y siga los pasos descritos en las instrucciones Prepararse para el aprendizaje profundo en ArcGIS Pro. En estas instrucciones, también aprenderá cómo comprobar si el hardware y el software de su ordenador son capaces de ejecutar flujos de trabajo de aprendizaje profundo y otros consejos útiles. Una vez hecho, puede volver a abrir el proyecto y continuar con el tutorial.

  1. En la cinta, en la pestaña Vista, en el grupo Ventanas, haga clic en Geoprocesamiento.

    Botón Geoprocesamiento

  2. En el panel Geoprocesamiento, en el cuadro de búsqueda, escriba Detectar objetos con aprendizaje profundo. En la lista de resultados, haga clic en la herramienta Detectar objetos con aprendizaje profundo para abrirla.

    Buscar la herramienta Detectar objetos con aprendizaje profundo

  3. En la herramienta Detectar objetos con aprendizaje profundo, elija los valores de parámetro siguientes:
    • En Ráster de entrada, elija Tuborg_Havn.tif.
    • En Objetos de salida detectados, escriba Detected_Boats.
    • En Definición de modelo, haga clic en el botón Examinar.

    Parámetros de la herramienta Detectar objetos con aprendizaje profundo

    Ahora recuperará el modelo Text SAM.

  4. En la ventana Definición de modelo, vaya a la ubicación en la que ha guardado el modelo Text SAM, haga clic en TextSAM.dlpk y luego en Aceptar.

    Ventana Definición de modelo

    Al cabo de unos instantes, los argumentos del modelo se cargan automáticamente. Elegirá un texto que corresponda a los objetos que desea detectar.

  5. En Argumentos, en text_prompt, escriba boat.

    Argumento Text_prompt

    Sugerencia:

    Puede añadir más palabras al texto separadas por comas, como, por ejemplo, embarcación, yate, canoa. En este caso, sin embargo, la indicación embarcación de una sola palabra arrojará excelentes resultados.

  6. Localice el argumento batch_size.

    La detección de objetos con aprendizaje profundo no puede realizarse en toda la imagen de una sola vez. En su lugar, la herramienta cortará la imagen en partes más pequeñas denominadas chips. Un tamaño de lote de 4 significa que la herramienta procesará cuatro chips de imagen a la vez. Al ejecutar la herramienta, es posible que aparezca un error de memoria insuficiente porque su equipo no tiene memoria suficiente para ese nivel de procesamiento. En tal caso, pruebe a disminuir el valor de batch_size de 4 a 2 o incluso a 1. Si dispone de un ordenador de gran potencia, también puede aumentar el valor de batch_size para un procesamiento más rápido. Un cambio en el valor de batch_size no afectará a la calidad del modelo, solo a la eficiencia de su proceso de detección.

    De momento, utilizará el valor predeterminado 4.

  7. Para el argumento nms_overlap, escriba 0.7.

    Argumento nms_overlap

    A veces, el modelo detecta un objeto más de una vez. La supresión no máxima (NMS) es un proceso opcional que suprime algunos de los objetos detectados cuando hay duplicación. El objeto detectado con mayor confianza se mantiene, los demás objetos se eliminan. En la siguiente imagen de ejemplo, la embarcación se detectó tres veces y, con NMS, solo se conservará uno de estos tres polígonos.

    Embarcación detectada tres veces

    El argumento nms_overlap determina cuánta superposición debe haber entre dos objetos detectados para que se consideren duplicados entre sí y se pueda aplicar la NMS. Los valores posibles para dicho argumento son entre 0 y 1. Por ejemplo, 0,7 significa que la superposición debe ser como mínimo del 70 por ciento.

  8. Marque la casilla junto a Supresión no máxima.

    Casilla de verificación Supresión no máxima

    Con el modelo Text SAM, puede aplicar NMS durante el proceso de detección de objetos Text SAM (el argumento nms_overlap) o como paso de posprocesamiento (la casilla de verificación Supresión no máxima). Mediante ensayo y error, se comprobó que los mejores resultados para este caso de uso específico se obtienen eligiendo un valor alto para el argumento nms_overlap (0,7) y aplicando la opción de posprocesamiento Supresión no máxima con sus ajustes predeterminados.

    Nota:

    Dentro de Supresión no máxima, el parámetro Máx. ratio de superposición especifica la superposición para el paso NMS de posprocesamiento. Al igual que nms_overlap, puede variar de 0 a 1. El valor predeterminado 0 significa que dos polígonos se considerarán duplicados en cuanto tengan un solapamiento superior a 0.

  9. Mantenga los valores predeterminados para los otros argumentos.
    Nota:

    Para obtener más información sobre el rol de cada uno de los argumentos, consulte la guía de Text SAM.

  10. Haga clic en la pestaña Entornos.

    Pestaña Entornos

    En este momento, podría ejecutar la herramienta tal cual: detectaría embarcaciones en toda la imagen Tuborg_Havn.tif, lo que podría tardar de 30 minutos a 1 hora en función de las especificaciones de su equipo. Debido a la brevedad de este tutorial, solo detectará embarcaciones en un pequeño subconjunto de la imagen de entrada.

  11. En la cinta, en la pestaña Mapa, en el grupo Navegar, haga clic en Marcadores y elija Área de detección.

    Marcador Área de detección

    El mapa amplía una zona más pequeña del puerto deportivo de Tuborg Havn.

    Área de detección

  12. En el panel Geoprocesamiento, en la pestaña Entornos, en Extensión de procesamiento, haga clic en el botón Extensión de visualización actual.

    Botón Extensión de visualización actual

    Las coordenadas Superior, Izquierda, Derecha e Inferior se actualizan para coincidir con la extensión actual que aparece en el mapa.

  13. En Tipo de procesador, elija GPU. En Id. de GPU, escriba 0.
    Nota:

    Para este tutorial, se presupone que su equipo tiene una GPU NVIDIA. Si no es así, elija CPU, pero tenga en cuenta que el proceso tardará mucho más en ejecutarse. Para obtener más información sobre las GPU y cómo se utilizan en los procesos de aprendizaje profundo, consulte la sección Comprobar la disponibilidad de GPU en el tutorial Prepárese para el aprendizaje profundo en ArcGIS Pro.

    Tipo de procesador

  14. Acepte el resto de valores predeterminados, y haga clic en Ejecutar.

    Puede monitorizar el avance del proceso debajo del botón Ejecutar y hacer clic en Ver detalles para ver más información.

    Vínculo Ver detalles

    Al cabo de unos minutos, aparece la capa resultante, Detected_Boats, en el panel Contenido y en el mapa. Es una capa de entidades en la que cada polígono representa una embarcación.

    Sugerencia:

    Si obtiene un error de memoria insuficiente, pruebe a disminuir el valor de batch_size de 4 a 2 o incluso a 1 y vuelva a ejecutar el ciclo.

    Ha detectado correctamente embarcaciones en una zona de Tuborg Havn mediante Text SAM.‎

    Resultados iniciales

    Nota:

    El algoritmo de aprendizaje profundo de Text SAM no es determinista, por lo que los resultados pueden variar ligeramente cada vez que ejecute la herramienta.

    Además, el color se asigna de forma aleatoria y puede variar.

  15. En la barra de herramientas de acceso rápido, haga clic en el botón Guardar para guardar el proyecto.

    Botón Guardar

Aplicar estilo a la capa de resultados

Ahora examinará los resultados de la capa Detected_Boats y los acotará. En primer lugar, cambiará la simbología de la capa para ver mejor los objetos detectados.

  1. En el panel Contenido, haga clic en el símbolo Detected_Boats para visualizar el panel Symbology.

    Símbolo Detected_Boats

  2. En el panel Simbología, haga clic en la pestaña Propiedades, si es necesario.

    Pestaña Propiedades de simbología

  3. En Apariencia, defina los siguientes parámetros:
    • En Color, elija Sin color.
    • En Color del contorno, elija un rojo vivo, como, por ejemplo, Rojo fuego.
    • En Ancho del contorno, seleccione 2 pt.

    Parámetros de apariencia

  4. Haga clic en Aplicar.

    La capa se actualiza a la nueva simbología.

    Capa resultante con la nueva simbología

  5. En el mapa, acerque e inspeccione la capa Detected_Boats.

    Puede observar que el modelo ha detectado de forma correcta las embarcaciones, y muestra un contorno aproximado de cada una de ellas. Sin embargo, hay algunos casos de falsos positivos, en los que el modelo encuentra por error una embarcación donde no la hay, como se ve en la siguiente imagen de ejemplo.

    Ejemplo de un falso positivo

Acotar los resultados

A continuación, aprenderá a acotar los resultados y eliminar los falsos positivos.

  1. En el panel Contenido, haga clic con el botón derecho en la capa Detected_Boats y elija Tabla de atributos.

    Opción de menú Tabla de atributos

    En la tabla de atributos de Detected_Boats, cada fila corresponde a una entidad de embarcación detectada. Actualmente hay 76 entidades.

    Tabla de atributos de Detected_Boats

    Nota:

    El número de entidades obtenidas puede variar ligeramente.

    Se centrará en los dos campos siguientes:

    • Condence: este campo indica con qué nivel de confianza el modelo identificó cada entidad como embarcación (en porcentaje).
    • Shape_Area: este campo indica el área de cada entidad (en metros cuadrados).

    Campos Confidence y Shape_Area

    Primero examinará las entidades que quizá sean demasiado pequeñas para ser embarcaciones.

  2. Haga doble clic en el nombre del campo Shape_Area para ordenar la tabla de atributos por dicho campo.

    Ordenar por el campo Shape_Area

    Las entidades se enumeran ahora de menor a mayor superficie.

  3. Haga doble clic en el encabezado de la primera entidad para ampliar la imagen del mapa en ella y examinarla.

    Encabezado de fila para la primera entidad

    Puede ver en el mapa que esta entidad mide tan solo unos píxeles de ancho y no es una embarcación.

    Entidad pequeña que no corresponde a una embarcación

  4. Del mismo modo, revise algunas de las siguientes entidades de la lista para determinar qué área es lo suficientemente grande como para representar embarcaciones reales.

    El umbral parece ser una área de 9 metros cuadrados. A continuación, examinará las entidades que tienen la confianza más baja.

  5. Haga doble clic en el nombre del campo Confidence para ordenar la tabla de atributos por dicho campo.

    Ordenar por el campo Confidence

    Las entidades se enumeran ahora de menor a mayor confianza. Las primeras entidades de la lista tienen una confianza de alrededor del 20 %, que es muy baja.

  6. Haga doble clic en las primeras entidades para acercarse a ellas y examinarlas.

    Entidad de baja confianza que no corresponde a una embarcación

  7. Siga examinando más entidades, para determinar en qué nivel de confianza empiezan a representar entidades.

    Constata que el umbral de confianza se sitúa en torno al 28 por ciento. Ahora creará una copia de la capa Detected_Boats que contiene únicamente las entidades que tienen una confianza suficientemente alta y son lo suficientemente grandes como para ser embarcaciones.

    Sugerencia:

    Puede eliminar manualmente las entidades no deseadas de la capa Detected_Boats, aunque puede ser conveniente mantenerla intacta y derivar una nueva capa en su lugar, por si desea seguir explorando los resultados originales.

  8. En la cinta, en la pestaña Mapa, en el grupo Selección, haga clic en Borrar para anular la selección de todas las entidades.

    Botón Borrar

  9. En el panel Contenido, haga clic con el botón derecho en Detected_Boats, haga clic en Datos y elija Exportar entidades.

    Opción de menú Exportar entidades

  10. En el panel Exportar entidades, en Clase de entidad de salida, escriba Detected_Boats_Cleaner.

    Parámetro Clase de entidad de salida

  11. Expanda Filtro y forme la expresión Donde Confidence es mayor que 28.

    Expresión Donde Confidence es mayor que 28

  12. Haga clic en Agregar cláusula y forme la segunda expresión Y Shape_Area es mayor que 9.

    Expresión Y Shape_Area es mayor que 9

  13. Haga clic en Aceptar.

    La nueva capa se agrega al mapa.

  14. En el panel Contenido, haga clic en la casilla que se encuentra junto a Detected_Boats para desactivar la capa.

    Desactive Detected_Boats.

  15. Cierre la tabla de atributos de Detected_Boats para aumentar el tamaño del mapa.

    Cierre la tabla de atributos de Detected_Boats.

  16. En la pestaña Mapa, haga clic en Marcadores y elija el marcador Área de detección para regresar a la extensión de detección completa.
  17. En el mapa, revise la capa Detected_Boats_Cleaner.

    Capa Detected_Boats_Cleaner en el mapa

    La mayor parte de los falsos positivos ha desaparecido.

    Nota:

    Ahora que ya sabe que el umbral de confianza óptimo es del 28 por ciento para sus datos, si desea volver a ejecutar la herramienta, podría cambiar el argumento del modelo box_threshold en la herramienta Detectar objetos con aprendizaje profundo de 0.2 a 0.28. De este modo, los falsos positivos con una confianza de entre el 20 y el 28 por ciento se eliminarán de los resultados. (El argumento box_threshold determina el valor mínimo de Confidence que se acepta en la salida).

    Sin embargo, no existe un equivalente para el umbral de área, por lo que esa parte debe permanecer como un paso de postprocesamiento.

  18. En el panel Contenido, haga clic con el botón derecho en la capa Detected_Boats_Cleaner y elija Tabla de atributos.

    Quedan 66 embarcaciones en la capa.

    66 embarcaciones en la capa

    Si utilizara Text SAM para detectar embarcaciones en todos los barrios de Copenhague, el recuento de embarcaciones podría resumirse en un gráfico por barrios. La capa Detected_Boats también podría utilizarse para crear un mapa de puntos calientes que muestre los niveles de concentración de embarcaciones en toda la ciudad. Por último, este análisis podría repetirse periódicamente con nuevas imágenes para identificar patrones y cambios a lo largo del tiempo.

  19. Pulse Ctrl+S para guardar el proyecto.

Aplicar Text SAM a sus propias imágenes

Si desea aplicar Text SAM a sus propios datos, a continuación le ofrecemos algunos consejos que le ayudarán a hacerlo correctamente.

  • Preparación de la imagen: el modelo Text SAM espera una imagen de tres bandas (rojo, verde y azul o RGB). Si su imagen tiene más de tres bandas, deberá extraer las bandas pertinentes antes de aplicar Text SAM. El modelo también espera que la imagen tenga una profundidad de píxel de 8 bits. Si su imagen tiene una profundidad de píxel diferente, por ejemplo, 16 bits, debe convertirla a 8 bits. Consulte el apartado Seleccionar bandas de imágenes pertinentes del tutorial Mejorar un modelo de aprendizaje profundo con aprendizaje por transferencia para obtener instrucciones detalladas sobre cómo implementar estos cambios.
  • Encontrar información sobre su imagen: si no está seguro de cuáles son las propiedades de su imagen (como el número de bandas, la profundidad de píxeles o el tamaño de celda), en el panel Contenido, haga clic con el botón derecho en la capa de su imagen y seleccione Propiedades. En el panel Propiedades, haga clic en el panel Origen y, en Información del ráster, encontrará los valores de Número de bandas, Tamaño de celda X, Tamaño de celda Y y Profundidad de píxel.
  • Flujo de trabajo original: cuando su imagen esté lista para el proceso de detección de objetos, primero intente utilizar el flujo de trabajo Text SAM siguiendo exactamente lo aprendido en este tutorial. Es el planteamiento más sencillo y puede obtener inmediatamente resultados de gran calidad.
  • Cambiar el tamaño de la celda: si no está satisfecho con sus primeros resultados, puede intentar cambiar el valor de Tamaño de celda en los parámetros de entorno de Detectar objetos con aprendizaje profundo. El tamaño de la celda (en metros) debe elegirse para maximizar la visibilidad de los objetos de interés en toda la extensión elegida. Considere un tamaño de celda mayor para detectar objetos más grandes y un tamaño de celda menor para detectar objetos más pequeños. Por ejemplo, establezca el tamaño de celda para la detección de nubes en 10 metros, mientras que para la detección de coches, establézcalo en 0,3 metros (30 centímetros). Aunque la imagen de entrada no cambiará, la herramienta volverá a muestrear los datos sobre la marcha durante el procesamiento. Para obtener más información sobre el tamaño de celda, consulte Detección de objetos de distintas resoluciones con Text SAM y Tamaño en píxeles de los datos de imagen y ráster.
    Parámetro Tamaño de celda
  • Uso de una máscara: cuando se detectan objetos en áreas específicas de interés, como embarcaciones que aparecen solo en áreas cubiertas de agua, puede ser conveniente establecer una Máscara en los parámetros de entorno de Detectar objetos mediante aprendizaje profundo. Una máscara es una capa de polígonos (o ráster) que delimita las zonas de interés para el análisis, por ejemplo, los límites de las zonas acuáticas en toda Copenhague, o quizás puertos deportivos específicos si estos son los únicos objetivos de su estudio. Cuando se ejecute la herramienta, el procesamiento solo se realizará en las ubicaciones que se encuentren dentro de la máscara, lo que ahorrará tiempo y evitará falsos positivos fuera de la máscara.
    Parámetro Máscara
  • Uso de un modelo preentrenado específico para cada objeto: además de utilizar Text SAM, existe otro método eficaz para detectar objetos con GeoAI en ArcGIS: puede utilizar uno de los numerosos modelos preentrenados publicados por Esri, donde cada modelo se centra en un único tipo de objeto, como árboles, edificios o paneles solares. Para saber más, consulte el tutorial Detectar objetos con un modelo preentrenado de aprendizaje profundo.
  • Cubierta terrestre y otros tipos de clasificación a nivel de píxel: Text SAM está pensado para detectar objetos discretos que son relativamente compactos y distintos de su contexto (como embarcaciones rodeadas de agua). Si desea extraer información sobre el uso y la cobertura del suelo (LULC), o realizar otros tipos de clasificación a nivel de píxel, no debería utilizar Text SAM (u otros modelos similares, como SAM). En su lugar, considere otros modelos preentrenados de ArcGIS Living Atlas, como Clasificación de cobertura de suelo de alta resolución‎: EE. UU. o Clasificación de cobertura de suelo (Sentinel-2)

En este tutorial, ha descargado el modelo Text SAM GeoAI del sitio web de ArcGIS Living Atlas y lo ha utilizado para detectar embarcaciones en una imagen. A continuación, ha utilizado filtros de atributos para eliminar los falsos positivos. Por último, ha aprendido algunos consejos para aplicar con éxito este flujo de trabajo a sus propias imágenes.

Encontrará más tutoriales como este en la serie Probar el aprendizaje profundo en ArcGIS.