Long-CLIP のデコード: ゼロショット分類の力を理解する
導入
CLIP は、テキスト画像タスク用のツールであり、ゼロショット分類、テキスト画像検索などで広く知られています。ただし、このモデルには短いテキスト入力が 77 文字に制限されているため、特定の制限があります。2024 年 3 月 22 日にリリースされた Long-CLIP は、ゼロショットのパフォーマンスを犠牲にすることなく長いテキスト入力をサポートすることでこの問題に対処しています。この改善には、元の機能の維持やコストのかかる事前トレーニングなどの課題が伴います。 Long-CLIP は効率的な微調整方法を提供し、長いキャプションの取得や従来のテキスト画像の取得などのタスクにおいて CLIP に比べてパフォーマンスが大幅に向上します。さらに、詳細なテキスト説明からの画像生成をシームレスに強化します。
この記事では、Long-CLIP を使用してゼロショット画像分類を実行し、モデルの基礎となる概念を理解します。
前提条件
- 機械学習の基本的な知識: 教師あり学習と教師なし学習に関する知識。
- 変圧器の理解: 変圧器モデルとそのアーキテクチャに関する知識。
- コンピュータ ビジョンの基礎: 画像表現、特徴抽出、分類などの概念。
- CLIP の概要: CLIP がタスクのテキストと画像の埋め込みをどのように組み合わせるかについて認識します。
- Python の熟練度: モデル実装を実行するための Python の経験。
CLIP の制限
対照言語画像事前トレーニングまたは CLIP として広く知られているものは、テキスト エンコーダーと画像エンコーダーで構成される視覚言語基盤モデルです。 CLIP は、ゼロショット分類、テキスト画像検索、テキストから画像への生成などの下流タスクで広く使用されている技術である対照学習を通じて、視覚と言語のモダリティを調整します。
CLIP は画像やテキストを理解するための強力なツールですが、テキストのトークンが 77 個に制限されているため、詳細なテキストの説明を処理するのに苦労します。短いテキストでトレーニングされていますが、実質的に処理できるトークンは約 20 個だけです。この短いテキストの制限により、CLIP がテキストに対して実行できる内容が制限されるだけでなく、CLIP が画像を理解する程度も制限されます。たとえば、与えられたテキストが単なる概要である場合、画像の最も重要な部分のみに焦点が当てられ、他の詳細は無視されます。また、CLIP は、複数の属性で構成される複雑な画像を理解しようとすると、間違いを犯すことがあります。
研究では、トークンの数が 20 を超えると、CLIP モデルの R@1 の増加が鈍化すると主張しています。ただし、Long-CLIP のパフォーマンスは、入力の長さが増加するにつれて向上する傾向があります。 (ソース)
長いテキストには多くの重要な詳細が含まれており、さまざまな事柄がどのように関連しているかを示します。したがって、CLIP で長いテキストを使用できることは非常に重要です。これを行う 1 つの方法は、CLIP に長いテキストを処理させてから、長いテキストと画像のペアを使用してさらにトレーニングすることです。しかし、このアプローチにはいくつかの問題があります。短いテキストの表現が台無しになり、画像部分がすべての細部に焦点を当てすぎてしまい、CLIP が物事を理解する方法が変わってしまい、他のプログラムでの使用が困難になります。
CLIP の問題に対処するために、Long-CLIP が導入されました。モデルは長いテキストと画像のペアを使用してトレーニングを受けており、短いテキストを確実に理解できるように動作方法にいくつかの変更が加えられています。研究者らは、Long-CLIP により、画像の分類や類似画像の検索などのタスクで CLIP の精度を損なうことなく、長いテキストを使用できると主張しています。さらに、Long-CLIP は何も変更することなく他のプログラムで使用できます。
全体として、Long-CLIP は、特に扱うべき詳細がたくさんある場合に、画像とテキストをよりよく理解するのに役立ちます。
ゼロショット分類
モデルの方法論を深く掘り下げる前に、まずゼロショット分類とは何かを理解しましょう。
教師あり学習にはデータから学習するコストがかかり、データが不足すると非現実的になる傾向があります。大量のデータに注釈を付けるには、時間がかかり、費用がかかり、また不正確です。したがって、AI の台頭により、そこには機械学習とAIが必要です。新しいデータ ポイントで明示的にモデルをトレーニングする必要なく、モデルを機能させることができます。このニーズは、n ショット学習のソリューションによって実現されました。
ゼロショットの概念は、N ショット学習から生まれました。文字「N」は、モデルをトレーニングし、新しいデータで予測を行うために必要なサンプル数を示します。かなりの数のトレーニング サンプルを必要とするモデルは、「メニーショット」学習器として知られています。これらのモデルを微調整するには、大量のコンピューティングとデータが必要です。したがって、この問題を軽減するために、研究者はゼロショットの解決策を考案しました。
ゼロショット モデルでは、新しいデータ ポイントを処理するためにゼロ トレーニング サンプルが必要です。通常、ゼロショット学習テストでは、これまでに見たことのない新しいクラスでモデルが評価されます。これは、新しいメソッドの開発には役立ちますが、必ずしも現実的であるとは限りません。一般化されたゼロショット学習は、モデルがよく知っているクラスとなじみのないクラスの両方からデータを分類する必要があるシナリオを扱います。
ゼロショット学習は、指定されたオブジェクトが特定のクラスに属する可能性を表す確率ベクトルを出力することによって機能します。
フューショット学習では、転移学習 (トレーニング済みのモデルを新しいタスクに再利用する手法) やメタ学習 (主に「学習するための学習」として説明される ML のサブセット) などの手法を使用します。これは、識別できるモデルをトレーニングすることを目的としています。限られた数のラベル付きトレーニング サンプルを含む新しいクラス。同様に、ワンショット学習では、モデルは 1 つのラベル付きサンプルのみで新しいクラスを認識するようにトレーニングされます。
方法論
このモデルは 2 つの新しい戦略を適応させています:-
知識を保存するストレッチ
Long-CLIP モデルの効率は、トークンの数が増加するにつれて増加する傾向があります。これは、モデルがキャプションに追加された新しい情報を効果的に学習して利用できることを示しています。 新しい位置埋め込みをトレーニングするという課題に取り組むために、補間を使用する一般的な手法が使用されます。通常、広く採用されているアプローチは、一般に λ1 と呼ばれる固定比率による位置埋め込みの線形補間です。
新しい位置埋め込み PE* を取得するための計算。ここで、PE は、後の位置の位置埋め込みを示します。ソース
この特定のタスクの線形補間は、このタスクの位置埋め込みを調整するための最良の選択ではありません。これは、ほとんどのトレーニング テキストが CLIP モデルで使用される 77 トークンよりも短いためです。シーケンス内の低い位置は十分にトレーニングされており、絶対位置を正確に表します。ただし、上位のポジションはそれほど徹底的にトレーニングされておらず、相対的な位置を大まかに推定するだけです。したがって、低い位置を調整しすぎると、正確な表現が台無しになる可能性があります。
λ2(ソース)として示されるより大きな比を使用した補間の数学的方程式
代わりに、別のアプローチが使用されます。上位 20 位の埋め込みはすでに有効であるため、そのまま保持されます。しかし、残りの 57 個の位置については、補間と呼ばれる別の方法が使用され、λ2 で示されるより大きな比率を使用して、それらの埋め込みを近くの位置の埋め込みとブレンドします。こうすることで、よく鍛えられた下のポジションをあまり乱すことなく調整することができます。
主成分マッチングによる微調整
さらに、モデルが長いキャプションと短いキャプションの両方を適切に処理できるようにするには、処理できる長さを延長したり、長いキャプションで単に微調整したりしても役に立ちません。そうなると、短いものに対処する能力が台無しになってしまいます。代わりに、Primary Component マッチングと呼ばれる方法が採用されています。仕組みは次のとおりです。
1.長いキャプションを使用して微調整すると、画像の詳細な特徴が長い説明と一致します。 2.同時に、重要な側面に焦点を当てた、より広範な特徴が画像から抽出されます。 3.これらの広範な特徴は、短い概要のキャプションと合わせて配置されます。 4.これにより、モデルは詳細な属性を取得することを学習するだけでなく、どれがより重要であるかも理解します。 5.このように、モデルはさまざまな属性の優先順位を学習することで、長いキャプションと短いキャプションの両方を効果的に処理できます。
したがって、詳細な画像の特徴からこれらの広範な画像の特徴を抽出し、その重要性を分析する方法が必要です。
CLIPとの比較
このモデルは、次のような 3 つのダウンストリーム タスクを含む CLIP と比較されます。
1.) ゼロショット画像の分類
2.) 短いキャプションの画像テキストの取得
3.) 長いキャプションの画像とテキストの検索
以下の表に比較結果を示します。
表 1 は、長文テキスト画像検索における CLIP との比較を示しています。
表 2 は、短いキャプション テキスト画像の取得結果を示しています。
表 3 は、5 つの検証セットにおけるゼロショット分類の結果を示しています。
詳細な比較結果を得るには、元の研究論文を強くお勧めします。
ロングクリップの操作
Long-CLIP の実験を開始するには、記事に記載されているリンクをクリックします。これにより、リポジトリのクローンが作成されるか、次の手順に従います。
1.リポジトリのクローンを作成し、必要なライブラリをインストールします
!git clone https://github.com/beichenzbc/Long-CLIP.git
このステップが正常に実行されたら、Long-CLIP フォルダーに移動します。
cd Long-CLIP
2.必要なライブラリをインポートする
from model import longclip
import torch
from PIL import Image
import numpy as np
LongCLIP-B や LongCLIP-L からチェックポイントをダウンロードし、./checkpoints
の下に配置します。
3.モデルを使用して、任意の画像の予測確率を出力します。ここでは、以下の画像を使用します。
device = "cuda" if torch.cuda.is_available() else "cpu"
model, preprocess = longclip.load("./checkpoints/longclip-B.pt", device=device)
text = longclip.tokenize(["A cat jumping.", "A cat sleeping."]).to(device)
image = preprocess(Image.open("./img/cat.jpg")).unsqueeze(0).to(device)
with torch.no_grad():
image_features = model.encode_image(image)
text_features = model.encode_text(text)
logits_per_image, logits_per_text = model(image, text)
probs = logits_per_image.softmax(dim=-1).cpu().numpy()
print("Label probs:", probs)
# Label probs: [[0.00201881 0.99798125]]
このモデルはゼロショット分類を正確に実行し、画像の確率を出力として提供します。
結論
この記事では、最大 248 トークンまでの長いテキスト入力を処理できる強力な CLIP モデルである Long-CLIP を紹介しました。最近の研究では、このモデルがゼロショット分類のパフォーマンスを維持しながら、検索タスクで大幅な改善を示したことが示されています。さらに、研究者らは、このモデルは画像生成タスクにおいて事前トレーニングされた CLIP エンコーダーをシームレスに置き換えることができると主張しています。ただし、以前のモデルと比較して大幅に改善されたとはいえ、入力トークンの長さに関しては依然として制限があります。より多くのデータ、特に長いテキストと画像のペアを活用することで、豊富で複雑な情報を提供し、全体的な機能を強化できるため、Long-CLIP の拡張性は有望です。
参考文献
- オリジナルの研究論文
- ゼロショット分類記事
- ゼロショット学習とは何ですか?