SigLIP
SigLIP treina codificadores de imagens e textos com uma função de perda sigmoide pareada em vez da softmax do CLIP, reduzindo o uso de memória. Veja como funciona, SigLIP 2 e o código.
SigLIP (perda sigmoide para pré-treino de imagens e linguagem) é um método criado por investigadores da Google para treinar codificadores de imagens e texto com pares de imagens e legendas, e também é o nome da família de modelos treinados com esse método. Tal como o CLIP, aprende um espaço de incorporações partilhado, no qual uma imagem e uma legenda que a descreve ficam próximas. A diferença está na função de perda: o SigLIP trata cada par imagem-texto de um lote como uma pergunta própria de sim ou não, avaliada com uma sigmoide, em vez de pedir a cada imagem que escolha a sua legenda de entre todo o lote através de uma softmax. Apresentada no artigo SigLIP de 2023, esta alteração reduz o uso de memória, funciona melhor com tamanhos de lote pequenos e tornou os codificadores SigLIP um componente de visão comum nos modelos de visão e linguagem (VLMs).
Como funciona a perda sigmoide#
Para um lote de N pares de imagens e legendas, o SigLIP calcula a similaridade de cada incorporação de imagem com cada incorporação de texto, obtendo N×N pontuações. Multiplica cada pontuação por uma temperatura t treinável, adiciona um desvio treinável b e aplica uma perda log-sigmoide binária: os N pares verdadeiros na diagonal são rotulados como correspondências, e os outros N² − N pares como não correspondências. A temperatura começa em 10 e o desvio em −10, o que inicia o treino partindo do pressuposto de que quase todos os pares são incompatíveis e evita grandes atualizações iniciais provocadas pelo desequilíbrio de um positivo e N − 1 negativos por imagem.
O código PyTorch abaixo calcula esta perda para quatro pares, uma vez com as legendas corretas e outra com as legendas deslocadas uma posição:
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}")Apresenta matched captions: loss 1.21 e shuffled captions: loss 10.50. Quando as legendas são deslocadas, cada par diagonal rotulado como correspondência é, na verdade, uma incompatibilidade, e a perda aumenta quase nove vezes.
O termo de perda de cada par depende apenas desse par, pelo que a matriz N×N completa não precisa de existir num único dispositivo. Cada acelerador calcula as pontuações das suas próprias imagens em relação aos seus próprios textos, passa as incorporações de texto ao acelerador seguinte e repete o processo:
Uma perda softmax não pode ser dividida desta forma, porque a probabilidade de cada imagem é normalizada em relação a todas as legendas do lote.
SigLIP vs. CLIP#
Ambos treinam dois codificadores com aprendizagem contrastiva e diferem naquilo que a perda normaliza:
- CLIP: Uma entropia cruzada softmax em cada linha e coluna da matriz de similaridade do lote, calculada depois de cada dispositivo reunir as incorporações de todos os outros.
- SigLIP: Uma perda binária independente por par. No artigo, o SigLIP superou a perda softmax com tamanhos de lote pequenos, e os ganhos obtidos ao aumentar o lote estabilizaram; um tamanho de lote de 32k foi suficiente. Em conjunto com um codificador de imagem pré-treinado e congelado, treinou um modelo que alcançou 84,5% de precisão zero-shot no ImageNet em dois dias, usando quatro chips TPUv4.
A perda também influencia as pontuações durante a inferência: um modelo SigLIP atribui uma probabilidade de correspondência independente a cada rótulo candidato, pelo que as probabilidades de um conjunto de rótulos não têm de somar 1.
SigLIP 2#
SigLIP 2, lançado em fevereiro de 2025, mantém a função de perda sigmoide e acrescenta um descodificador de geração de legendas, autodestilação e previsão mascarada durante o treino, além da curadoria de dados online. Os codificadores são multilingues e melhoram a localização e as características densas, importantes para a deteção e a segmentação que se baseiam nesses codificadores. Uma variante NaFlex processa imagens em várias resoluções, mantendo a proporção de aspeto original de cada imagem, e os modelos estão disponíveis nos tamanhos ViT-B, L, So400m e g, em que So400m é uma ViT de arquitetura otimizada, com 400 milhões de parâmetros.
Aplicações no mundo real#
- Codificadores de visão para VLMs: O PaliGemma da Google usa um codificador de imagem SigLIP So400m, e o Gemma 3 usa um codificador SigLIP com 400 milhões de parâmetros para as entradas de imagem.
- Classificação zero-shot: Os rótulos em texto são avaliados em relação a uma imagem sem treinar um classificador, em vários idiomas com o SigLIP 2.
- Pesquisa semântica: As incorporações de imagens armazenadas numa base de dados vetorial podem ser pesquisadas com consultas de texto ou outras imagens.
- Exploração de conjuntos de dados: A Plataforma Ultralytics incorpora todas as imagens de um conjunto de dados analisado com um codificador de imagem e texto deste tipo, pelo que as imagens visualmente semelhantes ficam juntas no gráfico de dispersão Clustering; Find similar images devolve as imagens mais parecidas de outros conjuntos de dados, e uma pesquisa por texto, como "empilhadora junto a uma porta", também devolve imagens semelhantes à descrição.










