第 1 編 — MetaCLIP 2 を使ってみた — 最新世界規模多言語CLIP の実力
はじめに
こんにちは、しゅんです。今回は、Meta (Facebook) が発表した新しい CLIP モデル MetaCLIP 2 を取り上げます。今回使用するモデルは facebook/metaclip-2-worldwide-giant-378。MetaCLIP 2 は、従来のCLIPの限界を乗り越え、英語と多言語データを活用した世界規模の学習を行っています。特に注目すべきは、このモデルが 多言語対応しており、英語と非英語データの相互補完を実現している点です。
この記事では、MetaCLIP 2 を使ってゼロショット画像分類を試し、その後、このモデルの特徴や背景を解説します。特に、MetaCLIP 2の多言語対応の新しいアプローチがどのように従来のCLIPモデルを超えたのかを詳しく見ていきます。
環境構築
pip install torch
pip install pillow
pip install matplotlib
pip install -q git+https://github.com/huggingface/transformers.git
pip install clip-benchmark
pip install pandas
pip install tdqm
MetaCLIP 2 を動かしてみた — サンプルコード & 実行
まずは、実際に MetaCLIP 2 を使って簡単な画像分類を試してみました。以下のコードで、COCOデータセットから画像を取得し、ゼロショットで分類を行います。
import requests
import torch
from PIL import Image
from transformers import AutoProcessor, AutoModel
# MetaCLIP2モデルのロード
model = AutoModel.from_pretrained(
"facebook/metaclip-2-worldwide-giant-378",
torch_dtype=torch.bfloat16,
attn_implementation="sdpa"
)
processor = AutoProcessor.from_pretrained("facebook/metaclip-2-worldwide-giant-378")
# 画像のURLを指定して画像を取得
url = "http://images.cocodataset.org/val2017/000000039769.jpg" # COCOデータセットから画像を取得
image = Image.open(requests.get(url, stream=True).raw)
# 分類したいラベルのリスト
labels = ["a photo of a cat", "a photo of a dog", "a photo of a car"]
# 入力データの前処理
inputs = processor(text=labels, images=image, return_tensors="pt", padding=True)
# 推論の実行
outputs = model(**inputs)
# ロジットを取得し、確率に変換
logits_per_image = outputs.logits_per_image
probs = logits_per_image.softmax(dim=1)
# 最も確からしいラベルを取得
most_likely_idx = probs.argmax(dim=1).item()
most_likely_label = labels[most_likely_idx]
# 結果を表示
print(f"Most likely label: {most_likely_label} with probability: {probs[0][most_likely_idx].item():.3f}")
このコードを実行すると、指定した画像に対してゼロショット分類が行われ、最も高い確率を持つラベルとその確率が表示されます。例えば、次のような結果が得られることがあります:
Most likely label: a photo of a cat with probability: 0.996
MetaCLIP 2は、画像とテキストの関連を学習した強力なモデルであり、非常に直感的に使えることが分かります。しかし、公式コードだけではあまり理解が深まらないかもしれません。次回の記事でさらに掘り下げて解説しますので、お楽しみに!
MetaCLIP 2 の「多言語対応」とは?
従来のCLIPの問題点 — 英語中心のデータ
従来のCLIPモデルは、主に英語の画像-テキストペアを使用して学習されており、英語以外のデータに対する対応が不足していました。この多言語の呪い(Multilinguality Curse)によって、非英語データを取り入れると、英語のパフォーマンスが低下してしまうという問題が発生していました。これにより、英語と多言語データを同時に扱うのが難しいという課題がありました。
MetaCLIP 2 の新しいアプローチ
MetaCLIP 2は、この課題に対処するために次の革新を加えました:
-
多言語メタデータの構築
MetaCLIP 2は、多言語データに対応するため、英語以外のデータも有効活用できるようにメタデータを拡張しています。これにより、非英語のテキストも高精度で処理できるようになり、英語以外の言語でも強力なパフォーマンスを発揮します。例えば、WikipediaやWordNetなどの多言語リソースを活用し、各言語の固有の情報を処理できるようにしています。 -
言語ごとのキュレーションアルゴリズム
非英語データを取り扱うためのキュレーションアルゴリズムを設計しました。これにより、各言語に対応したデータ分布を作り、英語と非英語のデータをバランスよく学習できます。 -
スケーラブルなトレーニングフレームワーク
追加された非英語データのサイズに合わせて、トレーニングのバッチサイズやサンプリング方法を調整。これにより、英語性能を落とすことなく、多言語性能も強化されました。このアプローチにより、世界中の多くの言語に対応した強力なモデルが完成しました。
多言語対応のメリット
MetaCLIP 2の多言語対応は、単に英語のデータだけでなく、世界中の多様な言語を取り入れることで、次のような利点を生み出しています:
-
言語間で相互補完的な学習
英語データと非英語データが相互に補完し合い、パフォーマンス向上を実現しています。例えば、英語以外のデータが英語の性能を向上させ、英語データが非英語データに良い影響を与えるという相乗効果があります。 -
より高精度な多言語タスクの実行
例えば、CVQA(多言語視覚質問応答タスク)や、XM3600(画像とテキストの検索)といった多言語タスクにおいて、MetaCLIP 2は従来のモデル(例えばmSigLIPやSigLIP 2)を上回る成果を達成しています。 -
多文化対応
世界中の多様な言語や文化に対応することにより、特定の地域や文化に特化した情報を学習し、地域別の認識精度向上にも寄与しています。これにより、地理的なローカライズや文化に基づく認識が強化されます。
まとめ — MetaCLIP 2 の意義
メリット
- 多言語対応: MetaCLIP 2は、英語データだけでなく、世界中の言語データを利用して学習され、多言語の呪いを克服しました。これにより、英語と非英語のデータが相互に補完し合う形で、両者のパフォーマンス向上を実現しています。
- 汎用性の高さ: 画像分類だけでなく、画像検索、画像–テキスト検索、生成モデルの条件エンコーディング、大量言語モデル(MLLM)のビジョンバックボーンなど、さまざまなアプリケーションで活用できるポテンシャルを持っています。
- 再現性と透明性: MetaCLIP 2はそのメタデータ、学習レシピ、トレーニングコードを公開しており、誰でも再現可能なモデルとして、今後の研究や開発において大きな役割を果たすことが期待されます。
今回も最後まで見てくれてありがとうございます。
参考文献
- Meta CLIP 2 論文: Meta CLIP 2: A Worldwide Scaling Recipe (arXiv)
- GitHub リポジトリ: Meta CLIP 2 (GitHub)