Segmentar cualquier cosa Segmentación adaptable de objetos arbitrarios

Segmentación adaptable de objetos arbitrarios

Recorrido del artículo — Segmentar cualquier cosa

¡El recorrido del artículo de hoy será visual! Analizaremos Segmentar cualquier cosa, un artículo del equipo de investigación en IA de Meta que no solo ha generado titulares en la comunidad de investigación, sino también en todo tipo de practicantes y defensores del aprendizaje profundo.

Segmentar cualquier cosa presenta la tarea de segmentación por medio de indicaciones, presenta el modelo segmentar cualquier cosa (SAM) y detalla la generación de un nuevo conjunto de datos disponible públicamente con 11 millones de imágenes que contienen más de mil millones de máscaras. SAM ha sido ampliamente adoptado por la comunidad y ha resultado en algunos nuevos modelos fundamentales de vanguardia, como Grounded-SAM que combina Grounding DINO con SAM.

Fuente

Artículo: Segmentar cualquier cosa

Código: https://github.com/facebookresearch/segment-anything

Primera publicación: 5 de abril de 2023

Autores: Alexander Kirillov, Eric Mintun, Nikhila Ravi, Hanzi Mao, Chloe Rolland, Laura Gustafson, Tete Xiao, Spencer Whitehead, Alexander C. Berg, Wan-Yen Lo, Piotr Dollár, Ross Girshick

Categoría: segmentación, predicción de cero disparo, visión por computadora, indicaciones, a gran escala

Esquema

  1. Contexto y antecedentes
  2. SAM — Modelo segmentar cualquier cosa
  3. SA-1B — Conjunto de datos con mil millones de máscaras
  4. Experimentos y ablaciones
  5. Conclusión
  6. Lecturas y recursos adicionales

Contexto y antecedentes

Los autores de Segmentar cualquier cosa hicieron una declaración clara: “[…] nuestro objetivo es construir un modelo fundamental para la segmentación de imágenes”. Los modelos fundamentales surgieron del gran éxito del procesamiento del lenguaje natural (NLP, por sus siglas en inglés). Estos modelos se han entrenado a gran escala de manera auto-supervisada. Estos modelos suelen desempeñarse muy bien en tareas de cero disparo, lo que significa que pueden resolver tareas diferentes a aquellas en las que fueron entrenados y tener un rendimiento razonable o incluso mejor que sus competidores supervisados. En los últimos años, muchos investigadores han trabajado en llevar el éxito de los modelos fundamentales de NLP a otros dominios, como la visión por computadora.

Modelos como CLIP y GLIP han hecho posible condicionar una tarea de clasificación de imágenes o detección de objetos a indicaciones de texto, en lugar de a un conjunto fijo de clases. Otros modelos, como BYOL o DINO, han desarrollado diferentes técnicas para aprender representaciones semánticamente ricas de imágenes de entrada, que es uno de los requisitos clave para muchas aplicaciones de visión por computadora.

El artículo Segmentar cualquier cosa tiene como objetivo:

  1. Permitir la segmentación de cero disparo mediante indicaciones
  2. Entrenar un modelo a gran escala (SAM) como demostrador
  3. Recopilar y liberar el conjunto de datos disponible públicamente más grande para la segmentación.

Pero, ¿por qué es tan importante el rendimiento de cero disparo? — La respuesta es doble. Primero, inicialmente los modelos de visión por computadora se entrenaron de manera supervisada, lo que requería no solo datos, sino también muchas etiquetas de verdad fundamentales. La recopilación de estos datos es extremadamente lenta y costosa. Segundo, las clases que un modelo puede predecir están limitadas a un conjunto fijo de clases utilizadas para el entrenamiento. Si quieres agregar una nueva clase a tu modelo, primero debes recopilar los datos y volver a entrenar el modelo.

¿Cómo es posible indicar un modelo de segmentación? — Es posible que estés familiarizado con la indicación de texto en modelos como ChatGPT, CLIP o GLIP. Aunque SAM también se probó en principio con indicaciones de texto, principalmente se indica con máscaras, puntos, cajas o cuadrículas de puntos, como se muestra en la imagen de abajo.

Fig.1: Diferentes indicaciones de entrada y máscaras resultantes. Foto de Terence Burke en Unsplash + máscaras generadas por Sascha Kirch con SAM

Poniendo a SAM en contexto, cambiemos ahora de enfoque y examinemos más de cerca el Segment Anything Model, también conocido como SAM.

SAM — Segment Anything Model

El Segment Anything Model (SAM) es un modelo multimodal que toma como entrada una imagen y una o más indicaciones y produce como salida una máscara de segmentación válida. El modelo consta de tres módulos principales: codificador de imagen, codificador de indicaciones y decodificador de máscaras.

SAM recibe indicaciones en forma de máscara, puntos, caja delimitadora o texto, o cualquier combinación de estos.

NOTA: Aunque el artículo menciona y experimenta con texto como indicación, aún no se ha lanzado oficialmente (hasta septiembre de 2023) en la implementación oficial ni en la demostración de SAM.

Fig.2: Arquitectura de SAM. Fuente de la imagen + anotaciones por Sascha Kirch

Codificador de Imagen — Genera una incrustación de imagen para una imagen de entrada determinada. SAM implementa y adapta un auto-codificador enmascarado ViT-H/16 pre-entrenado. Este es un modelo relativamente grande con un rendimiento sólido.

Codificador de Indicaciones — Las indicaciones dispersas (es decir, puntos, cajas y texto) se traducen en vectores de incrustación. Las indicaciones de texto se convierten en incrustaciones de texto utilizando CLIP antes de alimentarlas al codificador de indicaciones. Las indicaciones densas (es decir, máscaras) se muestrean simplemente con convoluciones estratificadas y se suman con las incrustaciones de imagen. Todas las incrustaciones se alimentan luego a la etapa final: el decodificador de máscaras.

Decodificador de Máscaras — Toma un conjunto de incrustaciones de imagen (opcionalmente conteniendo las incrustaciones de máscara densa) y un conjunto de incrustaciones de indicaciones y produce como salida una máscara de segmentación válida.

Hay dos detalles más que debemos abordar: ambigüedades de las indicaciones y rendimiento.

En pocas palabras, cuanto menos contexto contenga una indicación, más ambigua será y más difícil será para el modelo proporcionar la salida correcta. Para las indicaciones de texto, hemos visto esta conexión entre la especificidad del texto de entrada y el rendimiento del modelo en CLIP y GLIP. De manera similar, proporcionar un solo punto como entrada puede resultar en una variedad de máscaras posibles. Por esa razón, SAM produce un conjunto de tres máscaras de salida correspondientes al nivel de objeto, al nivel de parte y al nivel de subparte de una máscara válida, como se indica en la imagen a continuación.

Fig.3: Ambigüedad de las indicaciones de un solo punto. Fuente de la imagen + anotaciones por Sascha Kirch

El segundo detalle que quiero mencionar es el rendimiento en términos de velocidad de inferencia. ¿Has notado que el codificador de imagen es con mucho el submódulo más grande de SAM? Bueno, esa es una pregunta injusta porque hasta ahora no te lo había dicho, pero SAM está diseñado de manera que tenga incrustaciones de imagen semánticamente ricas (lo cual a menudo requiere un modelo grande) para luego actuar sobre estas incrustaciones aplicando un codificador de indicaciones liviano y un decodificador de máscaras liviano. Lo bueno es que solo es necesario ejecutar el codificador de imagen una vez por imagen y luego se puede indicar al modelo varias veces utilizando la misma incrustación de imagen. Esto permite que SAM se ejecute en un navegador y solo tarde ~50ms en predecir una máscara para una indicación dada (después de haber calculado las incrustaciones de imagen).

Veamos más de cerca el decodificador de máscaras liviano. Recibe las incrustaciones de imagen y las incrustaciones de indicaciones y produce como salida un conjunto de máscaras con puntuaciones correspondientes. Internamente, dos bloques decodificadores consecutivos realizan una combinación de autoatención y atención cruzada para generar una dependencia sólida entre la imagen y las indicaciones. Una red de muestreo ascendente simple en combinación con otro bloque de atención cruzada genera las máscaras y las puntuaciones.

Fig.4: Arquitectura detallada del decodificador de máscaras. Fuente de la imagen + anotaciones por Sascha Kirch

SA-1B — Conjunto de datos con 1 mil millones de máscaras

El segundo gran logro de Segment Anything fue la creación y lanzamiento de un conjunto de datos a gran escala para la segmentación. Contiene 11 millones de imágenes con licencia de alta resolución con aproximadamente 1.1 mil millones de máscaras. Mientras que la versión original del conjunto de datos tiene en promedio 3300×4950 píxeles, la versión lanzada se reduce a 1500 píxeles en el borde más corto. Es diverso en términos de diferentes escenas y número de máscaras por imagen, que van desde menos de 50 hasta más de 500.

Fig.5: Diferentes máscaras de SA-1B. Fuente de la imagen + Anotaciones por Sascha Kirch

El conjunto de datos ha sido creado en un motor de datos de tres etapas que combina etiquetas manuales anotadas por humanos con etiquetas automáticas generadas por SAM.

Etapa 1: Etapa Asistida-Manual — Un equipo de etiquetadores profesionales etiquetó imágenes asistidos por una versión temprana de SAM entrenada en conjuntos de datos de segmentación comunes. Se les pidió que etiquetaran los objetos más prominentes y se les animó a continuar después de 30 segundos. Al final de esta etapa, SAM fue reentrenado con las nuevas etiquetas (un total de 120k imágenes con 4.3M máscaras).

Etapa 2: Etapa Semi-Automática — En esta etapa, el objetivo era aumentar la diversidad de las máscaras, primero dejando que SAM predijera algunas máscaras y permitiendo que los etiquetadores anotaran los objetos menos prominentes faltantes. Al final de esta etapa, SAM fue reentrenado nuevamente incluyendo las nuevas muestras (un total de 300k imágenes con 10.2M máscaras).

Etapa 3: Etapa Totalmente Automática — En esta etapa, la anotación fue totalmente automática. SAM recibió un cuadrícula de puntos de 32×32 para generar máscaras y se aplicó algún post-procesamiento.

Análisis del conjunto de datos

Ahora echemos un vistazo más de cerca a algunos análisis relacionados con el conjunto de datos SA-1B presentado en el artículo.

En una primera evaluación, los autores crearon una distribución normalizada del punto central de las máscaras. Curiosamente, estas distribuciones están sujetas a un sesgo del fotógrafo, lo que significa que la mayoría de las fotos centran el objeto de interés en el centro de la imagen y en el eje principal.

Fig.6: Distribución del punto central de los objetos en la imagen. Fuente de la imagen + Anotaciones por Sascha Kirch

Una de las principales fortalezas de SA-1B es el alto número de máscaras por imagen en comparación con otros conjuntos de datos (Fig.7 izquierda). Esto también implica que SA-1B tiene muchas máscaras pequeñas (Fig.7 centro). Al comparar la concavidad de las máscaras, que es una medida de complejidad, SA-1B es muy similar a otros conjuntos de datos que han sido etiquetados manualmente (Fig.7 derecha).

Fig.7: Propiedades de las máscaras de SA-1B en comparación con otros conjuntos de datos. Fuente de la imagen + Anotaciones por Sascha Kirch

Se pone un gran énfasis en la IA responsable (RAI), donde los sesgos hacia ciertos grupos de personas no solo se analizan, sino que también se intenta mitigar. Como muestra la Fig.8, la mayoría de los países del mundo tienen más de 1000 imágenes y los 3 principales países son de diferentes partes del mundo. Si bien los países de bajos ingresos todavía están subrepresentados en términos relativos (0.9% de todas las muestras), en una escala absoluta, esto aún representa más de 9M máscaras y más que otros conjuntos de datos de segmentación.

Fig.8: Distribución geográfica estimada de las imágenes de SA-1B. Fuente de la imagen + Anotaciones por Sascha Kirch

Los autores investigaron además la discrepancia de rendimiento entre la presentación de género percibida, el grupo de edad percibido y el tono de piel percibido. Proporcionaron la media de IoU (Intersección sobre Unión), entre las máscaras predichas y las máscaras de verdad y un intervalo de confianza del 95%. SAM se activa con un solo punto o tres puntos. El mensaje clave es que los resultados son muy similares (y los intervalos de confianza se superponen) dentro de un grupo, lo que indica que ningún miembro del grupo es favorecido. La única excepción son las personas mayores en el grupo de edad percibido.

Fig. 9: Desempeño de SAM segmentando personas según la presentación de género percibida, grupo de edad y tono de piel. Fuente de la imagen + Anotaciones de Sascha Kirch

Experimentos y Ablaciones

Segment Anything nos proporcionó una serie de experimentos centrados principalmente en su rendimiento de cero disparos, ya que este era el objetivo principal de los autores: encontrar un modelo de segmentación de cero disparos. Además, sabemos de otros modelos como CLIP y GLIP, que la ajuste de la indicación es casi tan efectivo como afinar un modelo en términos de rendimiento.

Para realizar los experimentos, se compiló un conjunto de 23 conjuntos de datos diversos. Contiene muestras de una amplia variedad de distribuciones de datos, como se muestra en la Fig. 10.

Fig. 10: Muestras del conjunto de 23 conjuntos de datos. Fuente de la imagen + Anotaciones de Sascha Kirch

Evaluación de Máscara Válida de Punto Único de Cero Disparos

Recuerde que cero disparos significa que el modelo nunca fue entrenado con los datos a los que se expone durante la evaluación. También recuerde que la indicación de un solo punto es una tarea bastante difícil debido a su ambigüedad, como se muestra en la Fig. 3.

En este primer experimento, los autores compararon SAM con RITM, un segmentador interactivo sólido que, según dijeron, tuvo el mejor rendimiento en sus pruebas.

Recuerde que SAM produce 3 máscaras diferentes con una puntuación asociada cuando se le da una indicación de un solo punto. En este experimento, se selecciona la máscara con la puntuación más alta para la evaluación. Dado que esto a veces es incorrecto, los autores también evaluaron la mejor máscara, que se determina comparando las predicciones con las máscaras de verdad y seleccionando aquellas con la mayor superposición. Estas son las predicciones “oráculo”.

SAM supera a RITM en 16 de los 23 conjuntos de datos en la predicción de máscara válida de punto único de cero disparos. Al realizar predicciones oráculo, supera a RITM en los 23 conjuntos de datos.

Fig. 11: SAM vs. RITM en 23 conjuntos de datos. Fuente de la imagen + Anotaciones de Sascha Kirch

De Texto a Máscara de Cero Disparos

En este experimento, SAM se activó con texto. Los autores se refieren a esta función como una prueba de concepto y, por lo tanto, no realizaron experimentos exhaustivos ni incluyeron esta característica en su implementación de código oficial.

Observando la Fig. 12, se puede ver que SAM es capaz de devolver máscaras correctas incluso para objetos complejos como la “parrilla de dientes de castor”. En otros casos, el modelo falla al insertar solo indicaciones de texto y muestran que al proporcionar contexto en forma de un punto, SAM es capaz de predecir correctamente una o varias escobillas, lo que demuestra que no solo se considera el punto para la predicción, sino también el texto.

Fig. 12: De texto a máscara de cero disparos. Fuente de la imagen + Anotaciones de Sascha Kirch

Detección de Bordes sin Aprendizaje Previo

Curiosamente, SAM también puede ser utilizado para la detección de bordes, una tarea para la cual no se consideraba ni tenía acceso a datos durante el entrenamiento.

Para predecir los mapas, SAM primero se le presenta una cuadrícula de puntos de 16×16, lo que resulta en 768 máscaras predichas (objeto, parte y subparte para cada uno de los 256 puntos). Las máscaras resultantes se filtran y se post-procesan para obtener las máscaras de bordes.

Como se muestra en la Fig. 13, en comparación con la verdad absoluta, SAM predice muchos más detalles. Pero para ser justos, si la verdad absoluta no es completa o abarca una capa de abstracción diferente, esta comparación no me parece justa. Aun así, ¡el rendimiento es bastante bueno!

Fig. 13: Predicción de bordes sin aprendizaje previo de SAM. Fuente de la imagen + Anotaciones de Sascha Kirch

Segmentación de Instancias sin Aprendizaje Previo

Para este experimento, SAM se le presenta una salida de cuadro delimitador de un modelo ViTDet-H totalmente supervisado entrenado en COCO y LVIS. La máscara resultante se vuelve a introducir en SAM junto con el cuadro delimitador inicial para refinar el resultado. Se muestra una comparación entre ViTDet y SAM en la Fig. 14.

Fig. 14: Segmentación de instancias sin aprendizaje previo en LVIS v1. SAM. Fuente de la imagen + Anotaciones de Sascha Kirch

Hay dos cosas que destacar aquí: si observas COCO y LVIS, verás que las máscaras no están alineadas a nivel de píxel con los objetos. Este sesgo está presente en ViTDet, por lo que la calidad de SAM parece ser mejor. Es difícil decir cuánto mejor es con las métricas calculadas, ya que la verdad absoluta tiene el mismo sesgo y en comparación con una verdad absoluta deficiente, SAM tendría un rendimiento peor. Por eso, pidieron a humanos que las inspeccionaran visualmente. En segundo lugar, ¿por qué este elefante solo tiene tres patas 😅? No importa cuánto lo intente, no puedo ver la cuarta…

Ablaciones

En la sección de ablations, los autores se preocuparon principalmente por escalar el conjunto de datos, el número de puntos de prompting y el tamaño del codificador de imágenes (ver Fig. 13). El rendimiento se informa en la media de IoU.

Fig. 15: Estudios de ablación. Fuente de la imagen + Anotaciones de Sascha Kirch

Curiosamente, aunque escalar los datos y el tamaño del modelo influye en el rendimiento de mIoU, este se satura. Esto podría indicar que el modelo es tan bueno que no hay mucho margen de mejora o probablemente sea una limitación de su enfoque.

Conclusión

Segment Anything presentó el Modelo Segment Anything (SAM) que puede ser promtado, así como un conjunto de datos a gran escala para la segmentación que contiene más de 1 mil millones de máscaras en más de 11 millones de imágenes. La capacidad de promtar un modelo de segmentación ofrece mucha flexibilidad, como adaptar un modelo entrenado a tareas no vistas o poder detectar clases desconocidas. Aunque algunos debaten si SAM se considera un modelo fundamental ya que ha sido entrenado de manera supervisada, aún ha mostrado resultados notables y ha sido ampliamente adoptado.

Lecturas y Recursos Adicionales

Como probablemente ya sepas, el campo del aprendizaje profundo está evolucionando a un ritmo increíblemente rápido. Por lo tanto, no es sorprendente que justo después del lanzamiento de SAM, muchos nuevos proyectos se basen en su éxito, mejorando aún más la calidad de las predicciones, disminuyendo el tiempo de inferencia o haciendo que el modelo sea adecuado para aplicaciones en el borde.

A continuación, se presenta una lista de recursos interesantes que se basan en SAM:

  1. Segmento Fundamentado en Cualquier Cosa
  2. Segmentar Cualquier Cosa en Alta Calidad
  3. Segmentación Rápida de Cualquier Cosa
  4. Segmentación Más Rápida de Cualquier Cosa: Hacia un SAM Ligero para Aplicaciones Móviles

Aquí comparto algunos enlaces si quieres tener una experiencia práctica con SAM y SA-1B:

  • Descarga del conjunto de datos SA-1B
  • Demostración de Segmentación de Cualquier Cosa
  • Segment Anything en GitHub
  • Notebook de Python para experimentar con SAM

Aquí hay algunos de mis artículos que analizan algunos modelos fundamentales relacionados:

El Modelo Fundamental CLIP

Resumen del Artículo: Aprendiendo Modelos Visuales Transferibles a partir de Supervisión de Lenguaje Natural

towardsdatascience.com

GLIP: Introduciendo el Pre-entrenamiento de Lenguaje-Imagen en la Detección de Objetos

Resumen del Artículo: Pre-entrenamiento de Lenguaje-Imagen Fundamentado

towardsdatascience.com

BYOL: La Alternativa al Aprendizaje Auto-Supervisado Contrastivo

Análisis del Artículo: Bootstrap Your Own Latent: Un Nuevo Enfoque para el Aprendizaje Auto-Supervisado

towardsdatascience.com