ビジョン言語モデルの解説

Vision Language Models (VLMs) は、画像とテキストの入力を処理してテキスト出力を生成するマルチモーダル生成モデルであり、視覚的質問応答、画像キャプション、文書理解といったタスクを可能にします。これらのモデルは、ウェブページや文書など多様な画像タイプに対してゼロショットで汎化でき、一部はバウンディングボックスやセグメンテーションマスクを用いた空間的グラウンディングも提供します。

ビジョン言語モデルのアーキテクチャ

ほとんどの主要な VLM は、画像とテキストの表現を統合してテキストデコーダへ渡すための 3 部構成のアーキテクチャを採用しています。この構造は通常、以下から成ります。

  1. Image Encoder: 入力画像から特徴を抽出します。
  2. Embedding Projector: 画像表現とテキスト表現を整合させる密なニューラルネットワークです。
  3. Text Decoder: 結合された埋め込みに基づいて最終的なテキスト出力を生成します。

モデルに応じて異なる学習戦略が採用されます。例えば、LLaVA は CLIP 画像エンコーダと Vicuna テキストデコーダを使用し、最初にマルチモーダルプロジェクタだけを画像‑キャプションペアで学習させて特徴を整合させ、続いてテキストデコーダを解凍してさらに学習します。対照的に、KOSMOS-2 はエンドツーエンドで学習され、計算コストが高くなります。Fuyu-8B のように画像エンコーダを完全に省略し、画像パッチを直接投影層に入力してオートレグレッシブデコーダへ渡す手法もあります。

オープンソース VLM の全体像

Hugging Face Hub には多数のオープンソース VLM が公開されています。主なモデルは以下の通りです。

  • LLaVA 1.6 (Hermes 34B): 34B パラメータ、672x672 解像度。
  • DeepSeek-VL (Base and Chat): 7B パラメータ、384x384 解像度、チャット最適化バージョンあり。
  • CogVLM (Base and Chat): 17B パラメータ、490x490 解像度;Chat バージョンはグラウンディングに対応。
  • moondream2: 約 2B パラメータ、378x378 解像度。
  • Qwen-VL (Base and Chat): 4B パラメータ、448x448 解像度;ゼロショット物体検出に対応。
  • KOSMOS-2: 約 2B パラメータ、224x224 解像度;グラウンディングとゼロショット物体検出に対応。
  • Yi-VL-34B: 34B パラメータ、448x448 解像度;英語と中国語のバイリンガル。
  • Fuyu-8B: 8B パラメータ、300x300 解像度;画像中のテキスト検出に特化。

VLM 性能の評価

適切な VLM を選択するには、推論力や理解力を測るための専門的なリーダーボードやベンチマークを活用する必要があります。

リーダーボード

  • Vision Arena: 匿名の人間好み投票に基づく継続的なリーダーボードです。
  • Open VLM Leaderboard: 各種指標でモデルをランク付けし、サイズやライセンスでフィルタリング可能です。

ベンチマーク

  • MMMU: 11.5K のマルチモーダル課題を含む包括的ベンチマークで、工学や芸術など多分野にわたる大学レベルの知識が要求されます。
  • MMBench: 20 のスキル(例:OCR、物体位置特定)に跨る 3,000 の単一選択問題で構成され、回答選択肢をシャッフルしてモデルの一貫性を確保する "CircularEval" 手法を利用します。
  • Domain-Specific Benchmarks: MathVista(数式推論)、AI2D(図解理解)、ScienceQA(科学質問)、OCRBench(文書理解)などが含まれます。

実装とファインチューニング

Transformers を用いた推論

VLM は transformers ライブラリを使って推論にデプロイできます。たとえば LlavaNextForConditionalGenerationLlavaNextProcessor を使用すれば、画像とプロンプトテンプレートを渡すだけで画像に関するテキスト記述や質問への回答を生成できます。

TRL を用いたファインチューニング

TRL の SFTTrainer は現在、ビジョン言語モデル向けの実験的サポートを提供しています。これにより、llava-instruct-mix-vsft のような 260k の画像‑会話ペアを含むデータセットを用いて、Llava 1.5 などのモデルに対して教師ありファインチューニング(SFT)を実行できます。主な手順は以下の通りです。

  1. VLM 用の特定のチャットテンプレートを設定する。
  2. テキストと画像のペアを結合するカスタム DataCollator を使用する。
  3. モデル、データセット、PEFT 設定を渡して SFTTrainer を初期化し、学習後にチェックポイントを Hugging Face Hub にプッシュする。

Sources