OpenAI CLIP について知っておくべきことすべて

OpenAI の CLIP (Contrastive Language-Image Pre-training) は、画像とそのテキストの説明を関連付けることを学習するモデルです。その仕組みと CLIP の実装方法を分析することで、OpenAI CLIP を完全に理解できるようになります。

イントロダクション

2021 年 3 月、OpenAI は、特定のデータセットでトレーニングする必要なく、英語の理解を利用して画像を分類するゼロショット分類器である CLIP (Contrastive Language-Image Pre-Training) を導入しました。このモデルは、GPT-XNUMX に似た大規模トランスフォーマーの最近の進歩を視野に適用します。

結果は非常に印象的です。独自の画像でモデルを実験できるように、CLIP チュートリアルと CLIP Colab ノートブックを用意しました。 

OpenAI CLIPとは

CLIP は Contrastive Language-Image Pre-training の略で、自然言語の監督から学習するための効率的な方法です。2021 年に論文「Learning Transferable Visual Models From Natural Language Supervision」で紹介された CLIP は、画像とテキストの埋め込みモデルを組み合わせたものです。

CLIP は、自己教師あり方式で 400 億の画像とテキストのペアをトレーニングし、テキストと画像の両方を同じ埋め込み空間にマッピングします。たとえば、犬の画像と「犬の画像」という文章は、非常に類似した埋め込みを持ち、ベクトル空間で互いに近くなります。この機能は、説明を使用して画像データベースを検索したり、その逆を行ったりするなど、さまざまなアプリケーションの作成を可能にするため重要です。

CLIPのパフォーマンス

トレーニングの効率: CLIP は最も効率的なモデルの 41 つで、400 億枚の画像で 27% の精度を達成しています。同じ枚数の画像で、Bag of Words Prediction (16%) や Transformer Language Model (XNUMX%) などの他のモデルよりも優れたパフォーマンスを発揮します。これは、CLIP がその分野の他のモデルよりも大幅に高速にトレーニングされることを示しています。

一般化: CLIP はさまざまな画像スタイルでトレーニングされているため、ImageNet などのモデルよりもはるかに柔軟性があります。CLIP はトレーニングされた画像ではうまく一般化しますが、トレーニング領域外の画像ではそれほど効果的に機能しない可能性があることに注意してください。以下は、さまざまな画像スタイルの例です。

CLIPの仕組み

アーキテクチャ

CLIP モデルは、テキスト エンコーダーとイメージ エンコーダーという 2017 つの主要コンポーネントで構成されています。テキスト エンコーダーは、XNUMX 年以降 NLP に革命をもたらしたアーキテクチャである Transformer を使用しているため、これが含まれているのは当然のことです。優れた視覚的な説明については、次のブログを参照してください。

画像エンコーダーについては、著者らは ResNet-50 と Vision Transformer (ViT) という 50 つの異なるモデルを試しました。畳み込みニューラル ネットワーク (CNN) に基づく ResNet-XNUMX は、画像分類の最先端のアーキテクチャでした。画像用の Transformer の最近の改良版である ViT は、各画像をパッチのシーケンスに分割し、それらをトークンのシーケンスのように扱います。著者らは、ViT の方がトレーニングが速いことを発見しました。

最大のResNetモデルRN50x64は、18 V592でトレーニングするのに100日かかりました。 GPU最大のビジョントランスフォーマーは12台のV256で100日かかりました GPUs.

テキスト エンコーダーと画像エンコーダーは両方とも最初からトレーニングされました。

ImageNet の重みを使用して画像エンコーダーを初期化したり、事前トレーニング済みの重みを使用してテキスト エンコーダーを初期化したりせずに、CLIP を最初からトレーニングします。

研修

著者らは当初、特定の画像の正確なキャプションまたは説明を予測する画像キャプション モデルのトレーニングを試みました。

私たちの最初のアプローチは、VirTex と同様に、画像のキャプションを予測するために、画像 CNN とテキスト トランスフォーマーを最初から共同でトレーニングしました。ただし、この方法を効率的にスケーリングする際に困難に遭遇しました。

しかし、400 億の (画像、テキスト) ペアで画像キャプション モデルをトレーニングするのはスケーラブルではないことがわかりました。代わりに、対照表現学習アプローチを選択しました。このアプローチの目的は、類似のサンプル ペアが互いに近く、類似しないサンプル ペアが離れている埋め込み空間を学習することです。

典型的な対照学習の設定では、モデルには (アンカー、ポジティブ、ネガティブ) の形式で例が与えられます。ここで、アンカーは犬など、あるクラスの画像、ポジティブは同じクラスの別の画像 (別の犬)、ネガティブは鳥など、異なるクラスの画像です。画像は埋め込まれ、モデルは同じクラスの埋め込み間の距離 (距離 (アンカー、ポジティブ)) を最小化し、異なるクラスの埋め込み間の距離 (距離 (アンカー、ネガティブ)) を最大化するようにトレーニングされます。これにより、モデルは同じオブジェクトに対して非常に類似した埋め込みを生成し、異なるオブジェクトに対しては異なる埋め込みを生成するようになります。

対照学習の視覚化。出典: https://www.v7labs.com/blog/contrastive-learning-guide

同じアプローチは、テキストだけでなく、テキストと画像の組み合わせにも適用できます。たとえば、CLIP では、1 つのトレーニング例が、アンカー (犬の画像)、ポジティブ (キャプション「犬の画像」)、ネガティブ (キャプション「鳥の画像」) で構成される場合があります。

CLIP は、各アンカーに複数のネガティブとポジティブが含まれる標準メソッドの拡張であるマルチクラス N ペア損失を使用して、このアプローチをさらに一般化します。論文では次のように説明されています。

N 個の (画像、テキスト) ペアのバッチが与えられると、CLIP はバッチ全体で N × N 個の可能な (画像、テキスト) ペアのうち実際に発生したペアを予測するようにトレーニングされます。これを行うために、CLIP は画像エンコーダーとテキストエンコーダーを共同でトレーニングして、バッチ内の N 個の実際のペアの画像とテキストの埋め込みのコサイン類似度を最大化し、N² − N 個の誤ったペアの埋め込みのコサイン類似度を最小化することで、マルチモーダル埋め込み空間を学習します。これらの類似度スコアに対して対称クロスエントロピー損失を最適化します。

プロンプトエンジニアリングとアンサンブル

言語モデルの台頭により、プロンプトエンジニアリングは生成モデルから良好な出力を得るための一般的な方法になりました。CLIP のテキストエンコーダーはトランスフォーマーモデルであるため、著者らは、良好なゼロショットパフォーマンスを達成するにはプロンプトエンジニアリングが不可欠であることを発見しました。彼らは、事前トレーニングデータセットでは、画像とペアになっているテキストがクラスラベルを表す「犬」などの単語1つであることは比較的まれであることに気付きました。多くの場合、テキストは画像のキャプションや説明のような完全な文でした。その結果、著者らは、「{オブジェクト}の写真」というプロンプトが適切なデフォルトであることを発見しましたが、特定のケースではより専門的なプロンプトの方が効果的でした。たとえば、衛星画像の場合、「{オブジェクト}の衛星写真」の方が効果的でした。

著者らは、複数のモデルの予測を組み合わせて最終出力を生成する手法であるモデル アンサンブルの実験も行いました。このアプローチは、機械学習で高分散および低バイアス (オーバーフィッティング) モデルの問題に対処するためによく使用されます。CLIP の場合、アンサンブルは分類子を作成するためにさまざまなプロンプトを使用して構築されました。

プロンプト エンジニアリングとアンサンブルの両方により、ImageNet のパフォーマンスが大幅に向上しました。

ImageNet では、80 種類の異なるコンテキスト プロンプトをアンサンブルしており、これにより、前述の単一のデフォルト プロンプトよりもパフォーマンスがさらに 3.5% 向上します。プロンプト エンジニアリングとアンサンブルを併せて考えると、ImageNet の精度がほぼ 5% 向上します。

OpenAI CLIPのアプリケーション

OpenAI CLIP には、画像テキスト分析における幅広いアプリケーションとユースケースがあります。CLIP の主なアプリケーションとユースケースには、次のものがあります。

  • 画像分類: CLIP は、画像の内容に基づいて画像をさまざまなクラスまたはカテゴリに分類できます。特定の画像に最も関連性の高いクラス ラベルを予測できます。
  • 画像検索: CLIP は、指定されたテキスト クエリに基づいて関連する画像を検索できます。入力テキストと意味的に類似する画像​​を見つけることができます。
  • コンテンツのモデレーション: CLIP を使用すると、画像やテキスト内の不適切または不快なコンテンツを自動的に検出し、モデレートできます。
  • 画像キャプション: CLIP は、画像の内容に基づいてキャプションや説明を生成できます。
  • 視覚的な質問回答: CLIP は画像の内容に基づいて画像に関する質問に答えることができます。

Huggingface Transformers を使用した OpenAI CLIP の実装

HuggingFace Transformers ライブラリを使用すると、わずか数行のコードでローカル マシン上で CLIP を利用できます。まず、ライブラリをインポートし、事前トレーニング済みのモデルを読み込みます。

輸入変圧器

モデル = transformers.CLIPModel.from_pretrained(“openai/clip-vit-base-patch32”)
プロセッサ = transformers.CLIPProcessor.from_pretrained(“openai/clip-vit-base-patch32”)

次に、キャプションまたは説明を含むリストと、画像を含むリストの 2 つを作成します。画像は、URL または PIL 画像として表すことができます。

PIL.Imageをインポートする

画像 = [PIL.Image(“for_example_a_dog_image.jpeg”)]
possible_classes = [“鳥の画像”、“犬の画像”、“猫の画像”]

プロセッサを呼び出します。プロセッサはテキストと画像の両方をトークン化し、モデルへの入力用に準備します。このプロセスは、標準的なテキストのみの使用例でトークナイザーを呼び出すことに似ています。説明のバッチが与えられると、テンソル ストレージ用にすべて同じ長さになるようにパディングが適用され、長い文を最大シーケンス長 (前述のように 76) に制限するために切り捨てが使用されます。最後に、トークン化された入力をモデルに渡し、モデルはそれをテキスト エンコーダーと画像エンコーダーに渡します。

torch.no_grad() を使用:
inputs = プロセッサ(text=説明、images=画像、return_tensors=”pt”、padding=True、truncation=True)
出力 = モデル(**入力)

これで、2 つの異なる関数を使用してドット積の行列を取得できるようになりました。`logits_per_image` を使用して [num_of_images, num_of_text] の形状のドット積行列を取得し、`logits_per_text` を使用して [num_of_text, num_of_images] の形状の行列を取得します。

dot_products_per_image = 出力.logits_per_image
dot_products_per_text = 出力.logits_per_text

最後に、必要に応じて、これらの行列にソフトマックス関数を適用して、各画像の確率分布を取得できます。

確率 = dot_products_per_image.softmax(dim=1)

OpenAI CLIP の使用上の制限

この論文では数多くの実験と結果が詳しく検討されていますが、CLIP にはいくつかの制限があることを認識することが重要です。

まず、前述の設計上の決定により、CLIPは 生成モデル 画像キャプションなどのタスクは実行できません。ただし、他の生成 AI は OpenAI CLIP よりも多くの作業を実行できます。たとえば、 

novita.ai LLM 画像キャプションの作成

その他の生成AI、例えば novita.ai CLIPの欠点を補うために、対応する API.

著者らは、CLIP はまだ最先端のレベルには程遠く、線形層を上にした ResNet にしか匹敵しないと指摘しています。特定のタスクへの一般化は不十分で、たとえば、簡単な MNIST 手書き数字認識データセットでは 88% の精度しか達成できません。これは、トレーニング データに類似の画像がなく、CLIP がこの問題にほとんど対処していないためと考えられます。

CLIPは、インターネット上のフィルタリングやキュレーションが行われていない画像とテキストのペアを用いて学習するため、多くの社会的バイアスを学習します。これらの懸念は、大規模言語モデル(LLM現在、RLFHF (Robust Low-Frequency Hacking Framework) や Direct Preference Optimization などの手法で軽減しようとしています。

さらに、元の実装では、Transformer テキスト エンコーダーの最大シーケンス長は 76 に制限されていました。この制限は、データセットが主に画像と短いキャプションで構成されているために発生します。したがって、モデルが短いテキストでトレーニングされている場合、既製の事前トレーニング モデルを使用すると、長いテキストではパフォーマンスが悪くなる可能性があります。76 トークンを超えると切り捨てられるためです。

CLIP による画像テキスト解析の今後の方向性

OpenAI CLIP の成功により、画像テキスト分析の将来に新たな可能性が開かれました。研究者や開発者は、この分野における革新的なアプリケーションと進歩を継続的に模索しています。

今後の方向性としては、CLIP をオーディオやビデオなどの他のモダリティと統合して、マルチモーダル分析を可能にすることが挙げられます。これにより、CLIP は複雑なマルチメディア データを理解して分析できるようになり、より包括的で正確な結果が得られます。

さらに、自己教師あり学習と教師なし表現学習の進歩により、CLIP のパフォーマンスと一般化能力がさらに強化されます。これらの進歩により、ヘルスケア、ロボット工学、マルチメディア コンテンツ分析など、さまざまな分野で CLIP の新たな可能性が解き放たれる可能性があります。

CLIP による画像テキスト分析の将来は有望であり、進行中の研究開発により、この刺激的な分野の限界が押し広げられ続けるでしょう。

結論

OpenAI の CLIP は、大規模なトランスフォーマーと対照学習を利用して自然言語の説明に基づいて画像を分類することで、画像テキスト分析における大きな飛躍を示しています。その汎用性により、数多くの革新的なアプリケーションが可能になりますが、トレーニング領域外のタスクとの格闘、テキストのシーケンス長の上限、フィルタリングされていないトレーニング データから継承された社会的偏見などの制限に直面しています。 

プロンプトエンジニアリングやアンサンブルなどの技術によりパフォーマンスが向上しており、オーディオやビデオなどの他のモダリティの統合、および自己教師あり学習と教師なし学習の今後の進歩により、CLIP の機能をさらに強化できると期待されています。この分野で進行中の研究開発は、より包括的で正確なマルチメディア分析の明るい未来を示唆しています。

novita.aiは、100以上のAPIにアクセスできる、無限の創造性を実現するワンストッププラットフォームです。画像生成や言語処理から、音声強調や動画編集まで、低価格な従量課金制で、煩わしい手間から解放されます。 GPU 独自の製品を構築する際のメンテナンスの手間を省きます。無料でお試しください。

お勧めの読書

違いは何ですか LLM およびGPT

LLM リーダーボード2024予測が発表

Novita AI LLM 推論エンジン: 最大のスループットと最も安価な推論を実現


Novitaの詳細を見る

最新の投稿をメールで受け取るには購読してください。

コメント

上へスクロール

Novitaの詳細を見る

今すぐ購読して読み続け、完全なアーカイブにアクセスしてください。

続きを読む