Descifrando SAM (Modelo de segmento de cualquier cosa)

SAM es el último de los modelos de segmentación semántica que tiene la capacidad de segmentar cualquier número de objetos en una imagen dada con precisión y velocidad de inferencia de primer nivel. Dada una incrustación de imagen precalculada, el codificador rápido y el decodificador de máscara se ejecutan en un navegador web, en la CPU, en aproximadamente 50 ms, por lo que SAM también se puede implementar en tiempo real.

fuente: https://github.com/facebookresearch/segment-anything

¿Qué es la segmentación?

La segmentación de imágenes se utiliza para conocer la información breve (sus atributos) de la ‘imagen’ en consideración sin realmente mirarla.

Si no sabemos qué objetos están presentes explícitamente en la imagen (donde realizamos la detección de objetos usando clases predefinidas) y estamos tratando de predecir la forma exacta de todos los objetos, se usa la segmentación.

También te puede interesar“El futuro de la tecnología: cómo podemos prepararnos para lo que está por venir”

Aquí tratamos de clasificar cada píxel de la imagen en primer plano (objeto en una imagen) frente a fondo (ruido)

¿En qué consiste SAM?

Breve resumen/descripción de SAM

Nos inspiramos en NLP, donde la siguiente tarea de predicción de token se usa para el entrenamiento previo del modelo básico y para resolver diversas tareas posteriores a través de ingeniería rápida. Para construir un modelo base para la segmentación, nuestro objetivo es definir una tarea con capacidades análogas”.

— — Segmentar cualquier tarea

También te puede interesarLo que GPT-4 aporta a la mesa de IA

Aquí, la idea de un mensaje desde la PNL hasta la segmentación, donde un mensaje puede ser un conjunto de puntos de primer plano/fondoa caja áspera o mascarilla, texto de forma libreo, en general, cualquier información que indique qué segmentar en una imagen.

La tarea de segmentación solicitable, entonces, es devolver una máscara de segmentación válida ante cualquier solicitud. Siempre prediga una máscara válida para cualquier mensaje, incluso cuando el mensaje sea ambiguo. (camiseta vs. persona en una sola imagen/ multiobjetos en una sola imagen)

¿Cuáles son los datos utilizados?

El motor de datos tiene tres etapas:
(1) Fase de anotación manual asistida por modelos
→ Anotadores profesionales etiquetaron máscaras haciendo clic en puntos de objeto de primer plano/fondo
→ SAM se entrenó utilizando conjuntos de datos de segmentación públicos comunes. Después de una anotación de datos suficiente, SAM se volvió a entrenar usando solo máscaras anotadas recientemente

También te puede interesarDetección de objetos

(2) Etapa semiautomática con una combinación de máscaras predichas automáticamente y anotación asistida por modelos
→ El objetivo era aumentar la diversidad de máscaras utilizadas.
→ Para enfocar a los anotadores en objetos menos prominentes, primero detectamos automáticamente máscaras seguras. Luego les presentamos a los anotadores imágenes precargadas con estas máscaras y les pedimos que anotaran cualquier objeto adicional sin anotar.
→ Para detectar máscaras seguras, entrenamos un detector de cuadro delimitador en todas las máscaras de primera etapa utilizando una categoría genérica de «objeto».

(3) Etapa totalmente automática en la que nuestro modelo genera máscaras sin entrada de anotador
Usando el modelo de máscaras anterior fue entrenado y
→ También se impulsó el modelo con una cuadrícula regular de puntos de 32×32 y para cada punto se pronosticó un conjunto de máscaras que pueden corresponder a objetos válidos. Con el modelo consciente de la ambigüedad, si un punto se encuentra en una parte o subparte, nuestro modelo devolverá la subparte, la parte y el objeto completo. La máscara se selecciona según el puntaje IoU más alto entre ellos

Componentes

1) Codificador de imagen:

utiliza un MAE (Transformador de visión preentrenado con codificación automática enmascarada (vit) mínimamente adaptado para procesar entradas de alta resolución. El codificador de imágenes se ejecuta una vez por imagen y se puede aplicar antes de solicitar el modelo.

También te puede interesarExtensiones de ChatGPT: ajuste fino, multitarea y diálogo interactivo.

ViT – MAE :

  • MAE (codificación automática enmascarada) es un método para el entrenamiento previo autosupervisado de Vision Transformers (ViT). El objetivo de pre-entrenamiento es relativamente simple: al enmascarar una gran parte (75%) de los parches de imagen, el modelo debe reconstruir los valores de píxeles sin procesar.
  • Después del pre-entrenamiento, uno “tira” el decodificador usado para reconstruir píxeles, y otro usa el codificador para ajuste fino/sondeo lineal
  • fuente: https://huggingface.co/docs/transformers/model_doc/vit_mae

    2) Codificador rápido:
    Se consideran dos conjuntos de indicaciones: escaso (puntos, cuadros, texto) y denso (máscaras)
    — puntos y cuadros por codificaciones posicionales sumadas con incrustaciones aprendidas para cada tipo de indicador

    Un punto se representa como la suma de una codificación posicional de la ubicación del punto y una de las dos incrustaciones aprendidas que indican si el punto está en primer plano o en segundo plano. Un cuadro está representado por un par de incrustaciones: (1) la codificación posicional de su esquina superior izquierda sumada con una incrustación aprendida que representa «esquina superior izquierda» y (2) la misma estructura pero usando una incrustación aprendida que indica «esquina inferior derecha»

    — texto de formato libre con un codificador de texto listo para usar de CLIP.
    — Las indicaciones densas (es decir, las máscaras) se incrustan mediante circunvoluciones y se suman por elementos con la incrustación de imágenes.

    CLIP ( Pre-Entrenamiento Lenguaje-Imagen Contrastiva):

    fuente: https://openai.com/research/clip
  • CLIP es un modelo múltiple que combina NLP y Computer Vision: dada una imagen, la descripción más adecuada se encuentra mediante el entrenamiento contrastivo en la imagen, pares de texto, donde la similitud real del coseno (IT) se maximiza y el resto de las puntuaciones de pares diferentes se minimizan. .
  • 3) Decodificador de máscara:

    fuente: decodificador de máscara https://arxiv.org/pdf/2304.02643.pdf
  • El decodificador de máscara asigna de manera eficiente la incrustación de imágenes, las incrustaciones rápidas y un token de salida a una máscara
  • El bloque decodificador de transformador va seguido de un cabezal de predicción de máscara dinámica.
  • El bloque decodificador modificado utiliza autoatención rápida y atención cruzada en dos direcciones (incrustación de solicitud a imagen y viceversa) para actualizar todas las incrustaciones.
  • Después de ejecutar dos bloques, aumentamos la muestra de la imagen incrustada y un MLP asigna el token de salida a un clasificador lineal dinámico, que luego calcula la probabilidad de primer plano de la máscara en cada ubicación de la imagen.
  • Decodificador — Detallado:
  • Autoatención en el indicador codificado.
  • Cruzar la atención del aviso a la imagen, es decir, el aviso se usa como Q, la consulta de atención (esto es diferente de la consulta/entrada que realiza), para actualizar el aviso incrustado con información de la imagen.
  • (Punto-sabio) Cabeza MLP aplicada a las nuevas incrustaciones de tokens.
  • Cruzar la atención de la imagen al aviso, es decir, la imagen desempeña el papel de la consulta, para actualizar la imagen incrustada con información del aviso.
  • 4) Pérdidas y entrenamiento:

    Supervisamos la predicción de máscara con la combinación lineal de pérdida focal y pérdida de dados

  • Pérdida focal:
  • La pérdida focal aplica un término de modulación a la pérdida de entropía cruzada para enfocar el aprendizaje en ejemplos duros mal clasificados. Es una pérdida de entropía cruzada escalada dinámicamente, donde el factor de escala decae a cero a medida que aumenta la confianza en la clase correcta. Intuitivamente, este factor de escala puede reducir automáticamente la contribución de los ejemplos fáciles durante el entrenamiento y enfocar rápidamente el modelo en ejemplos difíciles.
  • Pérdida de dados:
  • La pérdida de dados se origina en el coeficiente de Sørensen-Dice, que es una estadística desarrollada en la década de 1940 para medir la similitud entre dos muestras.
  • En el escenario de detección de límites, los valores de pi y gi son 0 o 1, lo que representa si el píxel es un límite (valor de 1) o no (valor de 0). Por lo tanto, el denominador es la suma de los píxeles de contorno totales de la predicción y la realidad del terreno, y el numerador es la suma de los píxeles de contorno predichos correctamente porque la suma aumenta solo cuando pi y gi coinciden (ambos de valor 1).
  • Cualquier consulta, comentario y retroalimentación es muy apreciada.

    Gracias por leerlo !

    Scroll al inicio