Re Reference AI

モデル

CLIPとは

Contrastive Language-Image Pre-training

画像とテキストを同じ埋め込み空間へ対応づけ、両者の意味的な近さを比較できるようにするOpenAIのマルチモーダルモデル

マルチモーダル埋め込み

ひとことで言うと

画像と、それを説明する文章を同じ「意味の地図」の上に置いて、写真と言葉の近さを比べられるようにするAI。

概要

CLIP(Contrastive Language-Image Pre-training)は、OpenAIが開発したマルチモーダルモデル。 画像エンコーダとテキストエンコーダをそれぞれ用意し、対になる画像とキャプション(説明文)の埋め込みベクトルが近くなるよう、大量の画像・テキストペアを対照学習(コントラスティブラーニング)で学習する。 学習後は、任意の画像とテキストをそれぞれのエンコーダへ入力し、得られた埋め込みベクトル同士のコサイン類似度を計算するだけで、画像とテキストの意味的な近さを定量的に比較できる。 この仕組みにより、あらかじめ定義されたクラスラベルなしで画像分類するゼロショット画像分類や、テキストによる画像検索が可能になり、ラベル付きデータでの追加学習を必要としない柔軟な応用範囲を持つ。 CLIPが確立した画像とテキストの共通埋め込み空間という考え方は、Stable DiffusionやDALL-Eなどのテキストから画像を生成するモデルにおいて、プロンプトの意味を画像生成の条件として組み込む仕組みの基盤としても広く活用されている。

背景

従来の画像認識モデルは、あらかじめ定義された固定のクラスラベルの中でしか分類できず、新しいカテゴリへ対応するには再学習が必要だった。 CLIPは、画像とテキストを共通の埋め込み空間で結びつけることで、自然言語による柔軟なラベル付けや検索を可能にする目的で開発された。

歴史

2021年: OpenAIが論文「Learning Transferable Visual Models From Natural Language Supervision」でCLIPを発表。 2021年以降: 画像生成モデルのテキスト条件付けや、画像検索システムの基盤技術として広く応用が進む。

アーキテクチャ

画像エンコーダ(CNNまたはVision Transformer)とテキストエンコーダ(Transformer)を用意し、それぞれ画像とテキストを固定長の埋め込みベクトルへ変換する。 学習時は、同じミニバッチ内の対になる画像・テキストペアの埋め込み同士の類似度が高くなり、対にならない組み合わせの類似度が低くなるよう対照損失を最適化する。 この学習を経て、意味的に対応する画像とテキストの組は、埋め込み空間上で近い位置へ配置される。

ワークフロー

学習時は、1バッチ分の画像とテキストのペアを画像エンコーダ・テキストエンコーダへそれぞれ入力し、埋め込みベクトルを得る。 バッチ内の全ての画像・テキストの組み合わせについてコサイン類似度を計算し、対になる正しいペアの類似度が高く、それ以外の組み合わせの類似度が低くなるよう対照損失を最小化する。 推論時は、比較したい画像と複数の候補テキスト(クラスラベルなど)をそれぞれエンコードし、画像の埋め込みと最も類似度の高いテキストを結果として選ぶ。

コード例

CLIPでのゼロショット画像分類

import torch
import clip
from PIL import Image

model, preprocess = clip.load("ViT-B/32")
image = preprocess(Image.open("cat.png")).unsqueeze(0)
text = clip.tokenize(["a cat", "a dog"])

with torch.no_grad():
    logits_per_image, _ = model(image, text)
    probs = logits_per_image.softmax(dim=-1)
print(probs)

利点

  • ラベル付きデータでの追加学習なしに、新しいカテゴリへのゼロショット画像分類ができる
  • 画像とテキストを共通の空間で比較できるため、テキストによる柔軟な画像検索が可能になる
  • 画像生成モデルのテキスト条件付けなど、他のマルチモーダル技術の基盤として幅広く応用されている

欠点

  • 学習データに含まれる社会的バイアスが、画像とテキストの対応関係にも反映されることがある
  • 細かい位置関係や数量など、画像の詳細な構造的理解を要するタスクは苦手とされる
  • 学習に使われたインターネット由来の画像・テキストペアの質が、モデルの性能に大きく影響する

比較

  • EmbeddingCLIPは、画像とテキストを同じ埋め込み空間へ対応づけるマルチモーダルな埋め込みモデルの代表例
  • Stable DiffusionStable Diffusionなどのテキストから画像を生成するモデルは、CLIPに類似した仕組みでプロンプトの意味を画像生成に反映させる
  • マルチモーダルCLIPは、画像とテキストという異なるモダリティを統一的に扱うマルチモーダルAIの基礎技術の1つ

関連用語

EmbeddingStable Diffusionマルチモーダルコサイン類似度VLM対照学習ViT

よくある質問

CLIPはどうやって画像分類に使う?

分類したいクラス名をテキストとしてエンコードし、対象画像の埋め込みとの類似度が最も高いクラスを選ぶことで、追加学習なしにゼロショットで画像分類ができる。

CLIPは画像生成モデルとどう関係する?

Stable DiffusionやDALL-Eなど、テキストから画像を生成するモデルの多くが、CLIPと同様の仕組みでテキストプロンプトの意味を画像生成の条件として組み込んでいる。

参考文献

関連Zenn記事