SigLIP
SigLIPは、CLIPのsoftmaxの代わりにペア単位のシグモイド損失を使って画像エンコーダーとテキストエンコーダーを学習し、メモリ使用量を削減します。仕組み、SigLIP 2、コードについて解説します。
SigLIP(言語・画像事前学習のためのシグモイド損失)は、画像とキャプションのペアを使って画像エンコーダーとテキストエンコーダーを学習する、Googleの研究者による手法です。また、この手法で学習されたモデルファミリーの名称でもあります。CLIPと同様に、画像とその内容を説明するキャプションが近くに配置される共有埋め込み空間を学習します。異なるのは損失関数です。SigLIPは、バッチ内の画像とテキストの各ペアを、それぞれsigmoidでスコア化する個別の二択問題として扱います。これは、各画像についてバッチ全体からキャプションを選ばせるsoftmax方式とは異なります。2023年のSigLIP論文で発表されたこの変更により、メモリ使用量が減り、小さいバッチサイズでの性能が向上しました。また、SigLIPエンコーダーはビジョン・ランゲージモデル(VLM)で一般的なビジョンコンポーネントになりました。
シグモイド損失の仕組み#
N組の画像とキャプションのペアを含むバッチでは、SigLIPはすべての画像埋め込みとすべてのテキスト埋め込みの類似度を計算し、N×N個のスコアを生成します。各スコアに学習可能な温度tを掛け、学習可能なバイアスbを加えた後、二値log-sigmoid損失を適用します。対角線上のN個の正しいペアを一致とし、残りのN² − N個のペアを不一致とします。温度は10、バイアスは−10から開始します。これにより、ほぼすべてのペアが不一致であるという事前分布に近い状態から学習を始められます。また、画像1枚あたり正例1つ、負例N − 1個という不均衡によって初期に大きな更新が発生するのを防ぎます。
以下のPyTorchコードは、正しいキャプションを使う場合と、キャプションを1つずらす場合の2通りで、4組のペアに対する損失を計算します。
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}")matched captions: loss 1.21とshuffled captions: loss 10.50が出力されます。キャプションをずらすと、一致としてラベル付けされた対角線上のペアがすべて不一致になるため、損失はほぼ9倍に増加します。
各ペアの損失項はそのペアだけに依存するため、N×Nの行列全体を1台のデバイス上に保持する必要はありません。各アクセラレーターは、自分の画像とテキストのスコアを計算し、テキスト埋め込みを次のアクセラレーターに渡して処理を繰り返します。
softmax損失では、各画像の確率をバッチ内のすべてのキャプションにわたって正規化するため、この方法で分割できません。
SigLIPとCLIPの比較#
どちらも対照学習で2つのエンコーダーを学習しますが、損失を正規化する対象が異なります。
- CLIP: バッチの類似度行列について、各デバイスが他のデバイスの埋め込みをすべて集約した後、各行と各列にsoftmax交差エントロピーを適用します。
- SigLIP: ペアごとに独立した二値損失を適用します。論文では、SigLIPは小さいバッチサイズでsoftmax損失を上回り、バッチサイズを増やした場合の性能向上は次第に頭打ちとなり、32kのバッチサイズで十分でした。事前学習済みの画像エンコーダーを凍結して組み合わせたモデルは、4基のTPUv4チップを使って2日間で学習され、ゼロショットImageNet精度84.5%を達成しました。
損失関数は推論時のスコアにも影響します。SigLIPモデルは候補ラベルごとに独立した一致確率を出力するため、ラベル集合全体の確率を合計しても1になるとは限りません。
SigLIP 2#
2025年2月にリリースされたSigLIP 2は、シグモイド損失を維持しながら、キャプション生成デコーダー、自己蒸留、学習時のマスク予測、オンラインデータキュレーションを追加しています。エンコーダーは多言語に対応し、検出やセグメンテーションの基盤として重要な位置特定性能と高密度特徴を向上させます。NaFlexバリアントは、画像のネイティブなアスペクト比を保ったまま、複数の解像度で処理します。モデルのサイズにはViT-B、L、So400m、gがあり、So400mは形状最適化された4億パラメーターのViTです。
実際のアプリケーション#
- VLM向けビジョンエンコーダー: GoogleのPaliGemmaはSigLIP So400m画像エンコーダーを採用し、Gemma 3は画像入力に4億パラメーターのSigLIPエンコーダーを使用します。
- ゼロショット分類: SigLIP 2を使うと、分類器を学習させずに、テキストで記述されたラベルを画像と照合して、多言語でスコアを算出できます。
- セマンティック検索: ベクトルデータベースに保存した画像埋め込みを使って、テキストクエリや別の画像から検索できます。
- データセットの探索: Ultralytics Platformは、分析対象のデータセットに含まれるすべての画像を、この種の画像・テキストエンコーダーで埋め込みます。そのため、視覚的に類似した画像はClustering散布図上で近くに配置されます。Find similar imagesでは、別のデータセットから最も類似した画像を検索できます。また、「forklift near a doorway」のようなテキスト検索でも、説明に似た画像が見つかります。










