0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EmbeddingGemma 2のMatryoshka表現でどれだけ精度を保てるか — CIFAR-10/100でCLIP系モデルと比較

0
Posted at

はじめに

openclip-gemmaを使うと、EmbeddingGemma 2をCLIPと同じような画像・テキスト埋め込みの流れで利用できます。今回は新たに、Matryoshka表現(MRL)の出力次元を指定できるようにしました。

MRLでは、用途に応じて埋め込みの次元数を選べます。たとえば、精度を優先して768次元を使う、ベクトルの保存量を減らすため256次元にする、といった選択ができます。

前回はXM3600を使った画像・テキスト検索を扱いました。今回は別のベンチマークとして、CIFAR-10/100のゼロショット画像分類を使い、CLIP系モデルとの精度差と、EmbeddingGemma 2の次元を小さくしたときの変化を見ます。

今回のベンチマークの結果は下記のリポジトリで確認できます。他のデータセットもあるので興味ある方はぜひ見てください。
https://github.com/kotadymo/vision-language-benchmarks

ベンチマーク条件

項目 条件
データセット CIFAR-10 / CIFAR-100 の公式test split、各10,000枚
タスク クラス名のテキストと画像を照合するゼロショット分類
プロンプト P0(CLIP Benchmark互換の18テンプレート)
MRL次元 768 / 512 / 256 / 128
精度 FP32
GPU NVIDIA RTX 4070 Ti SUPER
EmbeddingGemma 2 openclip-gemma==0.4.0、google/embeddinggemma-2

EmbeddingGemma 2にはモデル指定のClassificationタスクプロンプトも適用しています。Top-1は正解クラスが1位になった割合、Top-5は正解クラスが上位5件以内に入った割合です。モデル間で生の類似度やlogit値を比べるのではなく、分類正解率を比較します。

MRLの各次元は、768次元の出力を後から切り詰めたものではありません。truncate_dimを指定して、各次元で独立に推論した全データセットの測定値です。

image_features = model.encode_image(image_batch, truncate_dim=256)
text_features = model.encode_text(text_tokens, truncate_dim=256)

データセットとゼロショット分類タスク

CIFAR-10/100は、32×32ピクセルのカラー画像を10クラスまたは100クラスに分類したデータセットです。公式test splitはどちらも10,000枚です。下図にはCIFAR-10のtest splitから、airplane、automobile、birdの各クラスで最初に現れる実画像を1枚ずつ掲載しています(indexは0始まり)。
32×32ピクセルなのでぼやけてしまっています。この画像を分類できるのはすごいですね。

CIFAR-10公式test splitの実画像3枚。airplane(index 3)、automobile(index 6)、bird(index 25)

ゼロショット分類では、CIFARの画像を使った追加学習は行わず、各画像とクラス名のテキストを照合します。今回のP0では、各クラス名を18種類のテンプレート(例:a photo of a {class}.)に当てはめてテキスト特徴を作ります。各クラスについて18個の特徴を正規化して平均し、クラスの代表ベクトルにします。EmbeddingGemma 2では、テキスト埋め込み時にモデル指定のClassificationタスクプロンプトも使います。

画像特徴とクラス代表ベクトルのコサイン類似度を計算し、類似度の高い順にクラスを並べます。正解ラベルが1位ならTop-1、上位5件以内ならTop-5で正解と数え、test split全件での割合を正解率として報告します。図の3枚はtest splitの例で、精度はこの3枚だけでなく全10,000枚を使って計算しています。

CLIP系モデルとの比較

下表はP0・FP32でのTop-1 / Top-5正解率(%)です。比較モデルは過去の検証結果、EmbeddingGemma 2の768次元は今回のMRLベンチマークから掲載しています。

モデル CIFAR-10 Top-1 / Top-5 CIFAR-100 Top-1 / Top-5
OpenAI CLIP ViT-B/32 89.83 / 99.61 64.20 / 88.73
OpenCLIP ViT-B/32 LAION-2B 93.56 / 99.81 75.56 / 93.87
Multilingual OpenCLIP ViT-B/32 93.64 / 99.88 76.55 / 94.99
SigLIP 2 Base/16 93.62 / 99.85 73.68 / 91.89
OpenCLIP ViT-L/14 LAION-2B 96.61 / 99.85 83.34 / 96.63
EmbeddingGemma 2(768D) 94.66 / 99.84 76.08 / 92.92

CIFAR-10/100 P0 Top-1正解率の横棒グラフ。青はCLIP系・SigLIP 2、赤はEmbeddingGemma 2のMRL次元別結果です。

CIFAR-10では、EmbeddingGemma 2の768次元はOpenCLIP ViT-B/32 LAION-2BよりTop-1で+1.10ポイント高く、Multilingual OpenCLIPより+1.02ポイント高い結果でした。一方、大きなViT-L/14には1.95ポイント届きません。

CIFAR-100では、768次元のEmbeddingGemma 2はOpenCLIP ViT-B/32 LAION-2Bを+0.52ポイント上回り、Multilingual OpenCLIPとの差は-0.47ポイントでした。ViT-L/14との差は-7.26ポイントです。モデル規模や学習データは異なるため、これは各チェックポイントの実測値を並べた比較であり、同一サイズのモデル同士の比較ではありません。

マトリョーシカ表現Lで次元を小さくしたとき

FP32のベクトル1件あたりのサイズは「次元数 × 4 byte」です。MRLの精度とサイズの変化をまとめます。括弧内はTop-1の768次元からの差(ポイント)です。

次元 ベクトルサイズ 削減率 CIFAR-10 Top-1 / Top-5(ΔTop-1) CIFAR-100 Top-1 / Top-5(ΔTop-1)
768D 3,072 byte 0% 94.66 / 99.84(+0.00) 76.08 / 92.92(+0.00)
512D 2,048 byte 33.3% 94.28 / 99.78(-0.38) 75.57 / 92.68(-0.51)
256D 1,024 byte 66.7% 93.82 / 99.74(-0.84) 74.98 / 92.33(-1.10)
128D 512 byte 83.3% 90.35 / 99.62(-4.31) 66.74 / 87.44(-9.34)

256次元では、ベクトルサイズを768次元の3分の1にしながら、Top-1の低下はCIFAR-10で0.84ポイント、CIFAR-100で1.10ポイントでした。保存容量やベクトル検索インデックスを小さくしたい場合、精度とのバランスを取りやすい設定です。

128次元ではベクトルサイズを6分の1にできますが、とくに100クラスのCIFAR-100で精度低下が大きくなります。小さくすれば常に最適というわけではなく、データや用途に合わせた選択が必要です。

なお、今回の測定では次元を変えても画像推論速度はおよそ10.2 images/sで大きく変わりませんでした。MRLの主な利点は埋め込みベクトルやインデックスの省スペース化であり、画像encoderの推論時間を大幅に短縮するものではありません。

まとめ

EmbeddingGemma 2はCIFAR-10/100の768次元P0で、OpenCLIP ViT-B/32クラスに近い、または上回るTop-1正解率を示しました。さらにopenclip-gemmaのnative MRL対応により、同じモデルで出力次元を選べます。

今回の値では、256次元はベクトルサイズを3分の1に抑えつつ、768次元からのTop-1低下が約1ポイントでした。大規模なベクトル検索で容量を優先する場合は256次元、精度を優先する場合は768次元、というように用途に合わせて使い分けられます。128次元ではCIFAR-100の低下が目立つため、採用前に対象タスクでの評価をおすすめします。

ライセンス・出典

  • CIFAR-10 / CIFAR-100: 公式データセットページ。公式ページの案内に従い、技術報告(Alex Krizhevsky, Learning Multiple Layers of Features from Tiny Images, 2009)を
  • 画像例: CIFAR-10公式test splitから取得した実画像(airplane index 3、automobile index 6、bird index 25)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?