Segmentación universal en imagen y vídeo, con prompts.
SAM (Segment Anything Model) es la evolución del modelo de segmentación más versátil: segmenta cualquier objeto en cualquier imagen mediante prompts simples (puntos, cajas, máscaras), y mantiene coherencia temporal en vídeo sin entrenar para clases específicas.
La segmentación de imágenes es una tarea básica en visión artificial que va más allá de la simple detección. Su objetivo es asignar una etiqueta de clase a cada píxel de una imagen, delimitando el contorno exacto de los objetos y el fondo.
Cada píxel se clasifica en una categoría (por ejemplo, «coche», «persona», «fondo»). No distingue entre instancias individuales del mismo tipo de objeto: todos los coches reciben la misma máscara y etiqueta.
Cada objeto individual detectado recibe una máscara única y su propia etiqueta. Permite distinguir entre objetos del mismo tipo, como «coche 1», «coche 2», «persona A», «persona B».
Combina la segmentación semántica y por instancias. Asigna una máscara única y una etiqueta a cada instancia de objeto cubriendo toda la imagen. Es la más completa pero también la más compleja.
Un diseño eficiente basado en tres componentes desacoplados.
SAM 1 admite puntos, cajas y máscaras de forma nativa. El texto como prompt requiere un modelo externo, por ejemplo Grounding DINO o CLIP, que traduzca la frase a una indicación espacial.
Unificando imágenes y vídeo con memoria temporal.
Unificación de detección y tracking con desacoplamiento de reconocimiento.
La familia de modelos Segment Anything (SAM) ha evolucionado rápidamente, ampliando sus capacidades de segmentación universal desde imágenes estáticas hasta el análisis complejo de vídeo con prompts contextuales.
Segmentación universal en imagen con prompts de puntos y cajas. Dataset SA-1B: unos 11 millones de imágenes y 1.100 millones de máscaras.
Extiende a vídeo con memoria en streaming; más preciso y hasta 6 veces más rápido que SAM 1 en imagen. Dataset SA-V: unos 51.000 vídeos y 643.000 masklets.
Modelo unificado que detecta, segmenta y sigue todas las instancias de un concepto, dado por texto o por ejemplos, en imagen y vídeo.
La creación del dataset SA-1B, clave para el entrenamiento de SAM, se logró mediante un innovador proceso iterativo de «motor de datos», combinando la inteligencia humana con la capacidad de autoaprendizaje del modelo para escalar la anotación.
Expertos humanos realizan anotaciones detalladas en un subconjunto inicial de imágenes. En esta fase, el modelo aún no tiene suficiente conocimiento.
El modelo, preentrenado con datos manuales, propone máscaras que los humanos revisan y corrigen. Esta interacción acelera el aprendizaje del modelo, que mejora exponencialmente.
Una vez que el modelo es robusto, anota imágenes completas de forma autónoma. Solo se aceptan las máscaras con alta confianza, permitiendo un escalado masivo de datos.
Conclusión: SA-1B es 99,1 % generado automáticamente por el propio SAM, demostrando el poder del bucle de auto-mejora.
La segmentación promptable es la capacidad de un modelo de visión artificial para segmentar objetos en imágenes o vídeos basándose en diferentes tipos de prompts (indicaciones). Esto permite una interacción flexible y eficiente sin necesidad de reentrenar el modelo.
Meta AI publica un Segment Anything Playground, un espacio interactivo para probar estos prompts sobre medios propios.
Un punto devuelve una instancia; un concepto en texto devuelve todas las que coinciden.
Qué le indicas al modelo
Un punto señala una región concreta, así que el modelo devuelve esa sandía y no la otra.
Instancias segmentadas 1
Esta página recoge el estado con un punto sobre la sandía izquierda. La diferencia que conviene retener no es visual sino de interfaz: un punto o una caja identifican dónde, y devuelven la instancia que hay ahí; un concepto en texto o un ejemplar identifican qué, y devuelven todas las coincidencias. SAM 1 y SAM 2 admiten de forma nativa lo primero, y para lo segundo necesitan un modelo externo que traduzca el texto; SAM 3 incorpora el texto y los ejemplares como prompts propios. Las máscaras de esta demostración se calcularon con GrabCut a partir de una caja, no con SAM: el cuaderno del tema las genera con el modelo real.
Desliza para quitar el fondo. Lo que queda es la salida de la segmentación: una lista de píxeles por instancia, cada una con su contorno, no un recorte rectangular.
Una máscara pesa poco y se guarda comprimida (RLE en COCO). Con ella puedes contar objetos, medir su área en píxeles o recortarlos con transparencia, cosas que una caja no permite.
La imagen de la derecha se compone multiplicando la foto por la unión de las cuatro máscaras, que es lo mismo que hace cualquier herramienta de recorte automático. Las máscaras están precalculadas con GrabCut a partir de una caja, no con SAM: el cuaderno del tema las genera con el modelo real. Un detalle que se ve al deslizar: el contorno de las limas rodea el montón entero porque la indicación fue una caja sobre el montón, no sobre una lima suelta.
El punto positivo señala una región que debe pertenecer a la máscara.
Respuesta A. Exacto: indica qué objeto quieres incluir.
La primera indicación puede admitir varias interpretaciones: objeto completo, parte o subparte. Por eso algunas versiones devuelven varias máscaras candidatas con puntuaciones.
Los nuevos clics añaden información sobre qué incluir y qué excluir.
Respuesta A. Exacto: el punto negativo señala qué región excluir.
En vídeo con SAM 2, una corrección puede actualizar la memoria y propagarse. La interacción debe evaluarse por calidad final y por número de clics o tiempo requerido.
SAM delimita; otra señal debe reconocer, decidir o justificar.
Respuesta A. Exacto: SAM aporta la máscara, otra parte debe aportar la categoría.
SAM resulta valioso con poca anotación, interacción humana o vídeo. Un modelo supervisado pequeño puede ser más rápido y barato para clases estables y fondos controlados. Siempre hay que evaluar bordes, objetos pequeños, oclusiones y consumo de memoria.
Un clic, una máscara, sin entrenar nada para tu objeto.
import torch
from PIL import Image
from transformers import Sam2Model, Sam2Processor
model_id = "facebook/sam2.1-hiera-large"
model = Sam2Model.from_pretrained(model_id).eval()
processor = Sam2Processor.from_pretrained(model_id)
image = Image.open("mi_imagen.jpg").convert("RGB")
puntos = [[[[450, 300]]]] # un punto, en coordenadas de la imagen
etiquetas = [[[1]]] # 1 incluye, 0 excluye
inputs = processor(images=image, input_points=puntos,
input_labels=etiquetas, return_tensors="pt")
with torch.no_grad():
salida = model(**inputs, multimask_output=True)
mascaras = processor.post_process_masks(salida.pred_masks,
inputs["original_sizes"])[0]
print(mascaras.shape, salida.iou_scores)
iou_scores o enséñaselas al usuario.Las tres segmentan, pero no aceptan las mismas indicaciones ni el mismo medio.
Imagen y prompts espaciales es justo su caso. Es el más sencillo de desplegar y el encoder se ejecuta una vez por imagen.
Si ya tienes SAM 2 montado, úsalo igualmente: en imagen también es más rápido.
Su banco de memoria mantiene la identidad del objeto entre fotogramas y aguanta oclusiones. Una corrección en un fotograma se propaga al resto.
facebook/sam2.1-hiera-large
SAM 3 acepta texto y ejemplares de forma nativa y devuelve todas las instancias del concepto. La alternativa clásica es Grounding DINO produciendo cajas que alimentan a SAM 2.
Esa combinación es la que monta el cuaderno del tema.
Es el único que une las dos cosas: detecta por concepto y sigue las instancias en el tiempo, con el detector reiniciando al tracker cuando lo pierde.
Cuenta con que es el más exigente en hardware de los tres.
Seis comprobaciones sobre bordes, coste e interacción.
Prueba cómo cambian las máscaras con puntos positivos y negativos.
Empieza con un punto positivo y añade un punto negativo donde la máscara invada el fondo. Compara número de interacciones, contorno y objetos pequeños. Comprueba qué versión carga el cuaderno: texto, memoria temporal y ejemplares no están disponibles en todos los modelos SAM.