VLMEvalKit(pythonパッケージ名はvlmeval)は、大規模視覚言語モデル(LVLMs)のオープンソース評価ツールキットです。このツールキットは、複数のリポジトリでのデータ準備という重労働なしに、さまざまなベンチマークでLVLMsのワンコマンド評価を可能にします。VLMEvalKitでは、すべてのLVLMsに対して生成ベースの評価を採用し、正確なマッチングとLLMベースの回答抽出の両方で得られた評価結果を提供します。
PS: 日本語の README には最新のアップデートがすべて含まれていない場合があります。英語版をご確認ください。
公式のマルチモーダルリーダーボードでのパフォーマンス数値は、ここからダウンロードできます!
OpenVLM Leaderboard: すべての詳細な結果をダウンロード。
Supported Image Understanding Dataset
- デフォルトでは、すべての評価結果はOpenVLM Leaderboardに表示されます。
データセット | データセット名 (run.py用) | タスク | データセット | データセット名 (run.py用) | タスク |
---|---|---|---|---|---|
MMBench シリーズ: MMBench, MMBench-CN, CCBench |
MMBench_DEV_[EN/CN] MMBench_TEST_[EN/CN] MMBench_DEV_[EN/CN]_V11 MMBench_TEST_[EN/CN]_V11 CCBench |
多肢選択問題 (MCQ) | MMStar | MMStar | MCQ |
MME | MME | はい/いいえ (Y/N) | SEEDBench シリーズ | SEEDBench_IMG SEEDBench2 SEEDBench2_Plus |
MCQ |
MM-Vet | MMVet | VQA | MMMU | MMMU_[DEV_VAL/TEST] | MCQ |
MathVista | MathVista_MINI | VQA | ScienceQA_IMG | ScienceQA_[VAL/TEST] | MCQ |
COCO Caption | COCO_VAL | キャプション | HallusionBench | HallusionBench | Y/N |
OCRVQA* | OCRVQA_[TESTCORE/TEST] | VQA | TextVQA* | TextVQA_VAL | VQA |
ChartQA* | ChartQA_TEST | VQA | AI2D | AI2D_TEST | MCQ |
LLaVABench | LLaVABench | VQA | DocVQA+ | DocVQA_[VAL/TEST] | VQA |
InfoVQA+ | InfoVQA_[VAL/TEST] | VQA | OCRBench | OCRBench | VQA |
RealWorldQA | RealWorldQA | MCQ | POPE | POPE | Y/N |
Core-MM- | CORE_MM | VQA | MMT-Bench | MMT-Bench_[VAL/VAL_MI/ALL/ALL_MI] | MCQ |
MLLMGuard - | MLLMGuard_DS | VQA | AesBench | AesBench_[VAL/TEST] | MCQ |
* ゼロショット設定で合理的な結果を出せないVLMの一部の評価結果のみを提供しています
+ 評価結果はまだ利用できません
- VLMEvalKitでは推論のみがサポートされています
VLMEvalKitは、キーを設定すると判定LLMを使用して出力から回答を抽出し、それ以外の場合は正確なマッチングモード(出力文字列で「はい」、「いいえ」、「A」、「B」、「C」...を検索)を使用します。正確なマッチングは、はい/いいえのタスクと多肢選択問題にのみ適用できます。
Supported Video Understanding Dataset
Dataset | Dataset Names (for run.py) | Task | Dataset | Dataset Names (for run.py) | Task |
---|---|---|---|---|---|
MMBench-Video | MMBench-Video | VQA |
Supported API Models
GPT-4v (20231106, 20240409) 🎞️🚅 | GPT-4o 🎞️🚅 | Gemini-1.0-Pro 🎞️🚅 | Gemini-1.5-Pro 🎞️🚅 | Step-1V 🎞️🚅 |
---|---|---|---|---|
Reka-[Edge / Flash / Core]🚅 | Qwen-VL-[Plus / Max] 🎞️🚅 | Claude-3v-[Haiku / Sonnet / Opus] 🎞️🚅 | GLM-4v 🚅 | CongRong 🎞️🚅 |
Claude3.5-Sonnet 🎞️🚅 |
Supported PyTorch / HF Models
GPT-4v (20231106, 20240409) 🎞️🚅 | GPT-4o 🎞️🚅 | Gemini-1.0-Pro 🎞️🚅 | Gemini-1.5-Pro 🎞️🚅 | Step-1V 🎞️🚅 |
---|---|---|---|---|
Reka-[Edge / Flash / Core]🚅 | Qwen-VL-[Plus / Max] 🎞️🚅 | Claude3-[Haiku / Sonnet / Opus] 🎞️🚅 | GLM-4v 🚅 | CongRong 🎞️🚅 |
Claude3.5-Sonnet 🎞️🚅 |
Supported PyTorch / HF Models
🎞️: 複数の画像を入力としてサポートします。
🚅: 追加の設定/操作なしで使用できるモデルです。
Transformersバージョンの推奨事項:
特定のtransformerバージョンで一部のVLMが実行できない可能性があることに注意してください。各VLMを評価するために、以下の設定を推奨します:
transformers==4.33.0
を使用してください:Qwenシリーズ
,Monkeyシリーズ
,InternLM-XComposerシリーズ
,mPLUG-Owl2
,OpenFlamingo v2
,IDEFICSシリーズ
,VisualGLM
,MMAlaya
,ShareCaptioner
,MiniGPT-4シリーズ
,InstructBLIPシリーズ
,PandaGPT
,VXVERSE
,GLM-4v-9B
.transformers==4.37.0
を使用してください:LLaVAシリーズ
,ShareGPT4Vシリーズ
,TransCore-M
,LLaVA (XTuner)
,CogVLMシリーズ
,EMU2シリーズ
,Yi-VLシリーズ
,MiniCPM-[V1/V2]
,OmniLMM-12B
,DeepSeek-VLシリーズ
,InternVLシリーズ
,Cambrianシリーズ
.transformers==4.40.0
を使用してください:IDEFICS2
,Bunny-Llama3
,MiniCPM-Llama3-V2.5
,LLaVA-Nextシリーズ
,360VL-70B
,Phi-3-Vision
,WeMM
.transformers==latest
を使用してください:PaliGemma-3B
.
# デモ
from vlmeval.config import supported_VLM
model = supported_VLM['idefics_9b_instruct']()
# 単一画像のフォワード
ret = model.generate(['assets/apple.jpg', 'この画像には何がありますか?'])
print(ret) # この画像には葉がついた赤いリンゴがあります。
# 複数画像のフォワード
ret = model.generate(['assets/apple.jpg', 'assets/apple.jpg', '提供された画像にはリンゴが何個ありますか?'])
print(ret) # 提供された画像にはリンゴが2個あります。
クイックスタートガイドについては、クイックスタートを参照してください。
カスタムベンチマーク、VLMsを開発するか、単にVLMEvalKitに他のコードを貢献する場合は、開発ガイドを参照してください。
このコードベースは以下を目的として設計されています:
- 研究者や開発者が既存のLVLMsを評価し、評価結果を簡単に再現できるようにするための使いやすい、オープンソースの評価ツールキットを提供します。
- VLMの開発者が自分のモデルを簡単に評価できるようにします。複数のサポートされているベンチマークでVLMを評価するには、単一の
generate_inner()
関数を実装するだけで、他のすべてのワークロード(データのダウンロード、データの前処理、予測の推論、メトリックの計算)はコードベースによって処理されます。
このコードベースは以下を目的として設計されていません:
- すべての第三者ベンチマークの元の論文で報告された正確な精度数値を再現すること。その理由は2つあります:
- VLMEvalKitは、すべてのVLMに対して生成ベースの評価を使用します(オプションでLLMベースの回答抽出を使用)。一方、一部のベンチマークは異なるアプローチを使用する場合があります(SEEDBenchはPPLベースの評価を使用します)。これらのベンチマークについては、対応する結果で両方のスコアを比較します。開発者には、コードベースで他の評価パラダイムをサポートすることをお勧めします。
- デフォルトでは、すべてのVLMに対して同じプロンプトテンプレートを使用してベンチマークを評価します。一方、一部のVLMには特定のプロンプトテンプレートがある場合があります(現時点ではコードベースでカバーされていない場合があります)。VLMの開発者には、現在カバーされていない場合でも、VLMEvalKitで独自のプロンプトテンプレートを実装することをお勧めします。これにより、再現性が向上します。
この作業が役立つ場合は、このリポジトリにスター🌟を付けてください。サポートありがとうございます!
研究でVLMEvalKitを使用する場合、または公開されたオープンソースの評価結果を参照する場合は、以下のBibTeXエントリと、使用した特定のVLM/ベンチマークに対応するBibTexエントリを使用してください。
@misc{2023opencompass,
title={OpenCompass: A Universal Evaluation Platform for Foundation Models},
author={OpenCompass Contributors},
howpublished = {\url{https://github.com/open-compass/opencompass}},
year={2023}
}
- Opencompass: LLM評価プラットフォームで、LLaMA、LLaMa2、ChatGLM2、ChatGPT、Claudeなどの幅広いモデルを50以上のデータセットでサポートしています。
- MMBench: "MMBench: Is Your Multi-modal Model an All-around Player?"の公式リポジトリ。
- BotChat: LLMのマルチラウンドチャット能力を評価します。
- LawBench: 大規模言語モデルの法的知識をベンチマークします。
- Ada-LEval: 言語モデルの長文コンテキストモデリング能力を測定します。