SigLIP
SigLIP entrena codificadores de imágenes y texto con una función de pérdida sigmoide por pares en lugar de la función softmax de CLIP, lo que reduce el uso de memoria. Descubre cómo funciona, qué ofrece SigLIP 2 y consulta el código.
SigLIP (pérdida sigmoide para el preentrenamiento de imágenes y lenguaje) es un método de investigadores de Google para entrenar codificadores de imágenes y texto con pares de imágenes y pies de foto, y también es el nombre de la familia de modelos entrenada con él. Al igual que CLIP, aprende un espacio de embeddings compartido en el que una imagen y un pie de foto que la describe quedan próximos. La diferencia está en la función de pérdida: SigLIP trata cada par de imagen y texto de un lote como una pregunta independiente de sí o no, puntuada mediante una función sigmoide, en vez de pedir a cada imagen que elija su pie de foto de entre todo el lote mediante una función softmax. Presentado en el artículo de SigLIP de 2023, este cambio reduce el uso de memoria, funciona mejor con tamaños de lote pequeños y convirtió los codificadores SigLIP en un componente de visión habitual de los modelos de visión y lenguaje (VLM).
Cómo funciona la pérdida sigmoide#
Para un lote de N pares de imágenes y pies de foto, SigLIP calcula la similitud entre cada embedding de imagen y cada embedding de texto, lo que da N×N puntuaciones. Multiplica cada puntuación por una temperatura t aprendible, añade un sesgo b aprendible y aplica una pérdida log-sigmoide binaria: los N pares verdaderos de la diagonal se etiquetan como coincidencias y los otros N² − N pares, como no coincidencias. La temperatura empieza en 10 y el sesgo en −10, lo que inicia el entrenamiento cerca de la hipótesis previa de que casi todos los pares no coinciden y evita grandes actualizaciones iniciales provocadas por el desequilibrio de una coincidencia positiva y N − 1 negativas por imagen.
El código de PyTorch siguiente calcula esta pérdida para cuatro pares, una vez con los pies de foto correctos y otra con los pies de foto desplazados una posición:
import torch
import torch.nn.functional as F
# Normalized embeddings for 4 image-caption pairs: row i of each tensor belongs together
torch.manual_seed(0)
images = F.normalize(torch.randn(4, 64), dim=-1)
texts = F.normalize(images + 0.05 * torch.randn(4, 64), dim=-1)
# Learnable temperature and bias, at the values SigLIP initializes them to
t, b = 10.0, -10.0
# Every image-text pair is its own binary problem: +1 for a match, -1 for the other 12 pairs
labels = 2 * torch.eye(4) - 1
for name, captions in [("matched", texts), ("shuffled", texts.roll(1, dims=0))]:
logits = t * images @ captions.T + b
loss = -F.logsigmoid(labels * logits).sum() / 4
print(f"{name} captions: loss {loss:.2f}")Imprime matched captions: loss 1.21 y shuffled captions: loss 10.50. Al desplazar los pies de foto, todos los pares diagonales etiquetados como coincidencias dejan de coincidir, y la pérdida casi se multiplica por nueve.
El término de pérdida de cada par depende únicamente de ese par, por lo que no hace falta que la matriz N×N completa exista en un único dispositivo. Cada acelerador puntúa sus propias imágenes frente a sus propios textos, luego pasa sus embeddings de texto al siguiente acelerador y repite el proceso:
Una pérdida softmax no puede dividirse de esta forma, porque la probabilidad de cada imagen se normaliza con respecto a todos los pies de foto del lote.
SigLIP frente a CLIP#
Ambos entrenan dos codificadores mediante aprendizaje contrastivo, pero se diferencian en aquello sobre lo que normaliza la pérdida:
- CLIP: Entropía cruzada softmax sobre cada fila y cada columna de la matriz de similitud del lote, calculada después de que cada dispositivo reúna los embeddings de todos los demás.
- SigLIP: Una pérdida binaria independiente por par. En el artículo, SigLIP superó a la pérdida softmax con tamaños de lote pequeños y las mejoras obtenidas al aumentar el lote se estabilizaron; bastó con un tamaño de lote de 32k. Combinado con un codificador de imágenes preentrenado y congelado, entrenó un modelo que alcanzó una precisión del 84,5 % en ImageNet sin ejemplos en dos días con cuatro chips TPUv4.
La pérdida también determina las puntuaciones en inferencia: un modelo SigLIP asigna a cada etiqueta candidata una probabilidad de coincidencia independiente, por lo que las probabilidades de un conjunto de etiquetas no tienen por qué sumar 1.
SigLIP 2#
SigLIP 2, publicado en febrero de 2025, mantiene la pérdida sigmoide y añade un decodificador de generación de pies de foto, autodestilación y predicción enmascarada durante el entrenamiento, además de curación de datos en línea. Los codificadores son multilingües y mejoran la localización y las características densas, importantes para la detección y la segmentación que se basan en ellos. Una variante NaFlex procesa imágenes a varias resoluciones y conserva su relación de aspecto original; los modelos están disponibles en tamaños ViT-B, L, So400m y g, y So400m es una ViT optimizada por forma con 400 millones de parámetros.
Aplicaciones en el mundo real#
- Codificadores de visión para VLM: PaliGemma de Google utiliza un codificador de imágenes SigLIP So400m, y Gemma 3 usa un codificador SigLIP de 400 millones de parámetros para sus entradas de imagen.
- Clasificación sin ejemplos: Las etiquetas escritas como texto se puntúan frente a una imagen sin entrenar un clasificador, en muchos idiomas con SigLIP 2.
- Búsqueda semántica: Se pueden buscar embeddings de imágenes almacenados en una base de datos vectorial mediante consultas de texto u otras imágenes.
- Exploración de conjuntos de datos: Ultralytics Platform genera embeddings de cada imagen de un conjunto de datos analizado con un codificador de imagen y texto de este tipo; así, las imágenes visualmente similares aparecen juntas en el diagrama de dispersión Clustering, Find similar images devuelve las imágenes más parecidas de otros conjuntos de datos y una búsqueda escrita como «carretilla elevadora cerca de una puerta» también devuelve imágenes similares a la descripción.










