From 4509b874d1c1c8f6f75751959c82cf08228d116a Mon Sep 17 00:00:00 2001 From: Ikko Ashimine Date: Fri, 9 Aug 2024 17:34:11 +0900 Subject: [PATCH] docs: add Japanese README Signed-off-by: Ikko Ashimine --- README.md | 3 +- README_en.md | 3 +- README_ja.md | 1690 ++++++++++++++++++++++++++++++++++++++++++ README_zh.md | 3 +- eval_mm/README_ja.md | 177 +++++ 5 files changed, 1873 insertions(+), 3 deletions(-) create mode 100644 README_ja.md create mode 100644 eval_mm/README_ja.md diff --git a/README.md b/README.md index 446b92e..d4aa1f1 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,8 @@ **A GPT-4V Level MLLM for Single Image, Multi Image and Video on Your Phone** [中文](./README_zh.md) | - English + English | + [日本語](./README_ja.md) Join our 💬 WeChat diff --git a/README_en.md b/README_en.md index 446b92e..d4aa1f1 100644 --- a/README_en.md +++ b/README_en.md @@ -5,7 +5,8 @@ **A GPT-4V Level MLLM for Single Image, Multi Image and Video on Your Phone** [中文](./README_zh.md) | - English + English | + [日本語](./README_ja.md) Join our 💬 WeChat diff --git a/README_ja.md b/README_ja.md new file mode 100644 index 0000000..6977646 --- /dev/null +++ b/README_ja.md @@ -0,0 +1,1690 @@ +
+ + + +**あなたのスマートフォンでシングルイメージ、マルチイメージ、ビデオに対応するGPT-4VレベルのMLLM** + + [中文](./README_zh.md) | + [English](./README_en.md) | + 日本語 + + 💬 WeChat に参加してください + + +

+ MiniCPM-V 2.6 🤗 🤖 | MiniCPM-Llama3-V 2.5 🤗 🤖 | + MiniCPM-Llama3-V 2.5 技術報告 +

+ +
+ + +**MiniCPM-V**は、視覚と言語の理解を目的としたエンドサイドのマルチモーダルLLM(MLLM)シリーズです。これらのモデルは画像、ビデオ、テキストを入力として受け取り、高品質なテキスト出力を提供します。2024年2月以降、私たちはこのモデルの5つのバージョンをリリースし、**高い性能と効率的なデプロイメント**を目指しています。このシリーズで現在最も注目すべきモデルには以下が含まれます: + +- **MiniCPM-V 2.6**: 🔥🔥🔥 MiniCPM-Vシリーズの最新かつ最も強力なモデルです。合計8Bのパラメータを持ち、**シングルイメージ、マルチイメージ、ビデオの理解においてGPT-4Vを超えます**。**GPT-4o mini、Gemini 1.5 Pro、Claude 3.5 Sonnet**をシングルイメージの理解で上回り、MiniCPM-Llama3-V 2.5の強力なOCR機能、信頼性のある動作、多言語対応、エンドサイドデプロイメントなどの機能をさらに進化させました。その優れたトークン密度により、MiniCPM-V 2.6は初めてiPadなどのエンドサイドデバイスでリアルタイムのビデオ理解をサポートできます。 + +- **MiniCPM-V 2.0**: MiniCPM-Vシリーズの最軽量モデルです。2Bのパラメータを持ち、Yi-VL 34B、CogVLM-Chat 17B、Qwen-VL-Chat 10Bなどの大規模モデルを総合性能で上回ります。任意のアスペクト比と最大1.8百万ピクセル(例:1344x1344)の画像入力を受け入れることができ、シーンテキストの理解でGemini Proと同等の性能を達成し、低い幻覚率でGPT-4Vに匹敵します。 + + +## ニュース + +#### 📌 ピン留め +* [2024.08.06] 🔥🔥🔥 MiniCPM-V 2.6をオープンソース化しました。これはシングルイメージ、マルチイメージ、ビデオの理解でGPT-4Vを上回ります。MiniCPM-Llama3-V 2.5の人気機能を進化させ、iPadでのリアルタイムビデオ理解をサポートします。今すぐお試しください! +* [2024.08.03] MiniCPM-Llama3-V 2.5の技術報告がリリースされました!詳細は[こちら](https://arxiv.org/abs/2408.01800)をご覧ください。 +* [2024.07.19] MiniCPM-Llama3-V 2.5がvLLMをサポートしました!詳細は[こちら](#inference-with-vllm)をご覧ください。 +* [2024.05.28] 🚀🚀🚀 MiniCPM-Llama3-V 2.5はllama.cppとollamaで完全にサポートされました!最新のコードを**私たちの提供するフォーク**からプルしてください([llama.cpp](https://github.com/OpenBMB/llama.cpp/blob/minicpm-v2.5/examples/minicpmv/README.md)、[ollama](https://github.com/OpenBMB/ollama/tree/minicpm-v2.5/examples/minicpm-v2.5))。さまざまなサイズのGGUFモデルが[こちら](https://huggingface.co/openbmb/MiniCPM-Llama3-V-2_5-gguf/tree/main)で利用可能です。MiniCPM-Llama3-V 2.5シリーズは**まだ公式リポジトリではサポートされていません**が、PRのマージに向けて努力しています。続報をお待ちください! +* [2024.05.28] 💫 MiniCPM-Llama3-V 2.5のLoRAファインチューニングをサポートしました。2つのV100 GPUのみを使用します!詳細な統計情報は[こちら](https://github.com/OpenBMB/MiniCPM-V/tree/main/finetune#model-fine-tuning-memory-usage-statistics)をご覧ください。 +* [2024.05.23] 🔍 Phi-3-vision-128k-instructとMiniCPM-Llama3-V 2.5の包括的な比較をリリースしました。ベンチマーク評価、多言語対応、推論効率などを含みます🌟📊🌍🚀。詳細は[こちら](./docs/compare_with_phi-3_vision.md)をご覧ください。 +* [2024.05.23] 🔥🔥🔥 MiniCPM-VがGitHub TrendingとHugging Face Trendingでトップに立ちました!Hugging Face Gradioの公式アカウントに推薦されたデモは[こちら](https://huggingface.co/spaces/openbmb/MiniCPM-Llama3-V-2_5)で利用可能です。ぜひお試しください! + +
+ +
+クリックして詳細なニュースを表示 + +* [2024.06.03] MiniCPM-Llama3-V 2.5を複数の低VRAM GPU(12 GBまたは16 GB)で実行できます。詳細は[こちら](https://github.com/OpenBMB/MiniCPM-V/blob/main/docs/inference_on_multiple_gpus.md)をご覧ください。 +* [2024.05.25] MiniCPM-Llama3-V 2.5はストリーミング出力とカスタマイズされたシステムプロンプトをサポートしました。お試しください[こちら](https://huggingface.co/openbmb/MiniCPM-Llama3-V-2_5#usage)! +* [2024.05.24] MiniCPM-Llama3-V 2.5 [gguf](https://huggingface.co/openbmb/MiniCPM-Llama3-V-2_5-gguf)をリリースしました。これは[llama.cpp](#inference-with-llamacpp)推論をサポートし、モバイルフォンで6〜8トークン/秒のスムーズなデコードを提供します。今すぐお試しください! +* [2024.05.20] MiniCPM-Llama3-V 2.5をオープンソース化しました。OCR機能が向上し、30以上の言語をサポートします。これはエンドサイドでGPT-4Vレベルの性能を達成した最初のMLLMです![効率的な推論](#deployment-on-mobile-phone)と[簡単なファインチューニング](./finetune/readme.md)を提供します。今すぐお試しください! +* [2024.04.23] MiniCPM-V-2.0がvLLMをサポートしました!詳細は[こちら](#inference-with-vllm)をご覧ください。 +* [2024.04.18] MiniCPM-V 2.0のデモをホストするためにHuggingFace Spaceを作成しました。[こちら](https://huggingface.co/spaces/openbmb/MiniCPM-V-2)でご覧ください。 +* [2024.04.17] MiniCPM-V-2.0が[WebUI Demo](#webui-demo)のデプロイをサポートしました! +* [2024.04.15] MiniCPM-V-2.0がSWIFTフレームワークでの[ファインチューニング](https://github.com/modelscope/swift/blob/main/docs/source/Multi-Modal/minicpm-v-2最佳实践.md)をサポートしました! +* [2024.04.12] MiniCPM-V 2.0をオープンソース化しました。これはシーンテキストの理解でGemini Proと同等の性能を達成し、強力なQwen-VL-Chat 9.6BとYi-VL 34Bを上回ります。OpenCompassでの評価結果をご覧ください。MiniCPM-V 2.0の技術ブログはこちらです。 +* [2024.03.14] MiniCPM-VがSWIFTフレームワークでの[ファインチューニング](https://github.com/modelscope/swift/blob/main/docs/source/Multi-Modal/minicpm-v最佳实践.md)をサポートしました。貢献してくれた[Jintao](https://github.com/Jintao-Huang)に感謝します! +* [2024.03.01] MiniCPM-VがMacでのデプロイをサポートしました! +* [2024.02.01] MiniCPM-VとOmniLMM-12Bをオープンソース化しました。これらはそれぞれ効率的なエンドサイドデプロイメントと強力なマルチモーダル機能をサポートします。 +
+ + +## 目次 + + +- [MiniCPM-V 2.6](#minicpm-v-26) +- [MiniCPM-Llama3-V 2.5](#minicpm-llama3-v-25) +- [MiniCPM-V 2.0](#minicpm-v-20) +- [Gradioデモでチャットする 🤗](#chat-with-our-demo-on-gradio-) +- [インストール](#install) +- [推論](#inference) + - [モデルズー](#model-zoo) + - [マルチターン会話](#multi-turn-conversation) + - [複数の画像でチャット](#chat-with-multiple-images) + - [インコンテキスト少数ショット学習](#in-context-few-shot-learning) + - [ビデオでチャット](#chat-with-video) + - [複数のGPUでの推論](#inference-on-multiple-gpus) + - [Macでの推論](#inference-on-mac) + - [モバイルフォンでのデプロイ](#deployment-on-mobile-phone) + - [llama.cppでの推論](#inference-with-llamacpp) + - [ollamaでの推論](#inference-with-ollama) + - [vLLMでの推論](#inference-with-vllm) +- [ファインチューニング](#fine-tuning) +- [FAQs](#faqs) + + +## MiniCPM-V 2.6 + +**MiniCPM-V 2.6**は、MiniCPM-Vシリーズの最新かつ最も強力なモデルです。このモデルはSigLip-400MとQwen2-7Bを基に構築され、合計8Bのパラメータを持ちます。MiniCPM-Llama3-V 2.5に比べて大幅な性能向上を示し、マルチイメージとビデオ理解の新機能を導入しています。MiniCPM-V 2.6の主な特徴は以下の通りです: + +- 🔥 **先進的な性能。** + MiniCPM-V 2.6は、8つの人気ベンチマークを包括的に評価するOpenCompassの最新バージョンで平均スコア65.2を達成しました。**わずか8Bのパラメータで、GPT-4o mini、GPT-4V、Gemini 1.5 Pro、Claude 3.5 Sonnetなどの広く使用されている商用モデルをシングルイメージ理解で上回ります**。 + +- 🖼️ **マルチイメージ理解とインコンテキスト学習。** MiniCPM-V 2.6は**複数の画像に対する会話と推論**も行えます。Mantis-Eval、BLINK、Mathverse mv、Sciverse mvなどの人気のマルチイメージベンチマークで**最先端の性能**を達成し、インコンテキスト学習能力も示しています。 + +- 🎬 **ビデオ理解。** MiniCPM-V 2.6は**ビデオ入力も受け入れ**、会話を行い、時空間情報の詳細なキャプションを提供します。**GPT-4V、Claude 3.5 Sonnet、LLaVA-NeXT-Video-34B**をビデオMMEで字幕あり/なしの両方で上回ります。 + +- 💪 **強力なOCR機能とその他の機能。** + MiniCPM-V 2.6は任意のアスペクト比と最大1.8百万ピクセル(例:1344x1344)の画像を処理できます。**OCRBenchで最先端の性能を達成し、GPT-4o、GPT-4V、Gemini 1.5 Proなどの商用モデルを上回ります**。 + 最新の[RLAIF-V](https://github.com/RLHF-V/RLAIF-V/)と[VisCPM](https://github.com/OpenBMB/VisCPM)技術に基づき、**信頼性のある動作**を特徴とし、Object HalBenchでGPT-4oやGPT-4Vよりもはるかに低い幻覚率を示し、英語、中国語、ドイツ語、フランス語、イタリア語、韓国語などの**多言語対応**をサポートします。 + +- 🚀 **優れた効率性。** + そのフレンドリーなサイズに加えて、MiniCPM-V 2.6は**最先端のトークン密度**(つまり、各視覚トークンにエンコードされるピクセル数)も示しています。**1.8Mピクセルの画像を処理する際に640トークンしか生成せず、ほとんどのモデルよりも75%少ない**。これにより、推論速度、最初のトークンの遅延、メモリ使用量、消費電力が直接向上します。その結果、MiniCPM-V 2.6はiPadなどのエンドサイドデバイスで**リアルタイムのビデオ理解**を効率的にサポートできます。 + +- 💫 **簡単な使用。** +MiniCPM-V 2.6はさまざまな方法で簡単に使用できます:(1)[llama.cpp](https://github.com/OpenBMB/llama.cpp/blob/minicpmv-main/examples/llava/README-minicpmv2.6.md)と[ollama](https://github.com/OpenBMB/ollama/blob/minicpm-v2.6/examples/minicpm-v2.6/README.md)のサポートにより、ローカルデバイスで効率的なCPU推論が可能、(2)[int4](https://huggingface.co/openbmb/MiniCPM-V-2_6-int4)と[GGUF](https://huggingface.co/openbmb/MiniCPM-V-2_6-gguf)形式の量子化モデルが16サイズで提供、(3)[vLLM](#inference-with-vllm)のサポートにより、高スループットとメモリ効率の高い推論が可能、(4)新しいドメインやタスクでのファインチューニング、(5)[Gradio](#chat-with-our-demo-on-gradio)を使用してローカルWebUIデモを迅速に設定、(6)オンラインWeb[デモ](https://huggingface.co/spaces/openbmb/MiniCPM-V-2_6)。 + +### 評価 +
+ +
+ +
+OpenCompass, MME, MMVet, OCRBench, MMMU, MathVista, MMB, AI2D, TextVQA, DocVQA, HallusionBench, Object HalBenchのシングルイメージ結果を表示 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
モデルサイズトークン密度+OpenCompassMMEMMVetOCRBenchMMMU valMathVista miniMMB1.1 testAI2DTextVQA valDocVQA testHallusionBenchObject HalBench
商用
GPT-4o-108869.92328.769.173669.261.382.284.6-92.855.017.6
Claude 3.5 Sonnet-75067.91920.066.078865.961.678.580.2-95.249.913.8
Gemini 1.5 Pro--64.42110.664.075460.657.773.979.173.586.545.6-
GPT-4o mini-108864.12003.466.978560.052.476.077.8--46.112.4
GPT-4V-108863.52070.267.565661.754.779.878.678.087.243.914.2
Step-1V--59.52206.463.362549.944.878.079.271.6-48.4-
Qwen-VL-Max-78458.32281.761.868452.043.474.675.779.593.141.213.4
オープンソース
LLaVA-NeXT-Yi-34B34B15755.02006.550.757448.840.477.878.969.3-34.812.6
Mini-Gemini-HD-34B34B157-2141.059.351848.043.3-80.574.178.9--
Cambrian-34B34B182058.32049.953.259150.450.377.879.576.775.541.614.7
GLM-4V-9B13B78459.12018.858.077646.951.167.971.2--45.0-
InternVL2-8B8B70664.12215.154.379451.258.379.483.677.491.645.021.3
MiniCPM-Llama-V 2.58B188258.82024.652.872545.854.372.078.476.684.842.410.3
MiniCPM-V 2.68B282265.22348.4*60.0852*49.8*60.678.082.180.190.848.1*8.2
+ +
+* このベンチマークは思考の連鎖プロンプティングを使用して評価しました。具体的には、MMEではこの技術をCognitionセットにのみ使用しました。 + ++ トークン密度:最大解像度で各視覚トークンにエンコードされるピクセル数、つまり最大解像度でのピクセル数/視覚トークン数。 + +注:商用モデルについては、公式APIドキュメントで定義された画像エンコード課金戦略に基づいてトークン密度を計算し、上限を推定しています。 + +
+ + +
+Mantis Eval, BLINK, Mathverse mv, Sciverse mv, MIRBのマルチイメージ結果を表示 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
モデルサイズMantis EvalBLINK valMathverse mvSciverse mvMIRB
商用
GPT-4V-62.754.660.366.953.1
LLaVA-NeXT-Interleave-14B14B66.452.632.730.2-
オープンソース
Emu2-Chat37B37.836.2-27.2-
CogVLM17B45.241.1---
VPG-C7B52.443.124.323.1-
VILA 8B8B51.239.3-36.5-
InternLM-XComposer-2.58B53.1*48.932.1*-42.5
InternVL2-8B8B59.0*50.930.5*34.4*56.9*
MiniCPM-V 2.68B69.153.084.974.953.8
+ +
+* 正式にリリースされたチェックポイントを自分で評価しました。 +
+ +
+Video-MMEとVideo-ChatGPTのビデオ結果を表示 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
モデルサイズVideo-MMEVideo-ChatGPT
字幕なし字幕あり正確性詳細コンテキスト時系列一貫性
商用
Claude 3.5 Sonnet-60.0------
GPT-4V-59.9------
オープンソース
LLaVA-NeXT-7B7B--3.393.293.922.603.12
LLaVA-NeXT-34B34B--3.293.233.832.513.47
CogVLM2-Video12B--3.493.463.232.983.64
LongVA7B52.454.33.053.093.772.443.64
InternVL2-8B8B54.056.9-----
InternLM-XComposer-2.58B55.8------
LLaVA-NeXT-Video32B60.263.03.483.373.952.643.28
MiniCPM-V 2.68B60.963.63.593.283.932.733.62
+
+
+ + +
+TextVQA, VizWiz, VQAv2, OK-VQAの少数ショット結果を表示 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
モデルサイズショットTextVQA valVizWiz test-devVQAv2 test-devOK-VQA val
Flamingo80B0*35.031.656.340.6
436.539.663.157.4
837.344.865.657.5
IDEFICS80B0*30.936.060.045.2
434.340.463.652.4
835.746.164.855.1
OmniCorpus7B0*43.049.863.245.5
445.451.364.546.5
845.652.264.746.6
Emu237B026.440.433.526.7
448.254.667.053.2
849.354.767.854.1
MM130B026.240.448.926.7
849.354.770.954.1
MiniCPM-V 2.6+8B043.933.845.423.9
463.660.565.550.1
864.663.468.251.4
+ + +
+* はイメージショットがゼロで、フラミンゴの後にテキストショットが2つ追加されたことを示します。 + ++ SFTを使用しない事前トレーニングのckptを評価する。 +
+ +### 例 + +
+ Bike + Menu + Code + Mem + medal +
+
+ クリックして他のケースを見る。 +
+ elec + Menu +
+
+ +私達はMiniCPM-V 2.6をエンドデバイスに導入しています。デモビデオは、iPad Proのエディションなしの生の画面録画です。 + + +

+ +      + +

+
+ + +

+ +      + +

+
+ + +

+ + +

+
+ +## MiniCPM-Llama3-V 2.5 + +
+クリックして MiniCPM-Llama3-V 2.5 の詳細を表示 + +**MiniCPM-Llama3-V 2.5** は MiniCPM-V シリーズの最新モデルです。このモデルは SigLip-400M と Llama3-8B-Instruct をベースに構築されており、合計 8B のパラメータを備えています。MiniCPM-V 2.0に比べ、パフォーマンスが大幅に向上しています。MiniCPM-Llama3-V 2.5の主な特徴は以下の通りになります: + +- 🔥 **一流のパフォーマンス。** + MiniCPM-Llama3-V 2.5は、11の一般的なベンチマークを総合的に評価するOpenCompassで、平均スコア65.1を達成しました。**わずか 8B のパラメータで、GPT-4V-1106、Gemini Pro、Claude 3、Qwen-VL-Max** のような広く使用されている独自のモデルを凌駕し、他のLlama 3ベースのMLLMを大きく上回ります。 + +- 💪 **強力なOCR機能。** + MiniCPM-Llama3-V 2.5は、あらゆるアスペクト比、最大180万画素(例:1344x1344)の画像を処理でき、OCRBenchで **700+ スコアを達成し、GPT-4o、GPT-4V-0409、Qwen-VL-Max、Gemini Pro** などの独自モデルを凌駕しています。最近のユーザーからのフィードバックに基づき、MiniCPM-Llama3-V 2.5では、全文OCR抽出、表からマークダウンへの変換、その他の高ユーティリティ機能が強化され、さらに指示追従能力と複雑な推論能力が強化され、マルチモーダルなインタラクション体験が向上しました。 + +- 🏆 **信頼できる行動。** + 最新の[RLAIF-V](https://github.com/RLHF-V/RLAIF-V/)方式([RLHF-V](https://github.com/RLHF-V)[CVPR'24]シリーズの最新技術)を活用したMiniCPM-Llama3-V 2.5は、より信頼性の高い挙動を示します。これは、Object HalBenchで **10.3%** のハルシネーション率を達成し、GPT-4V-1106(13.6%)より低く、オープンソースコミュニティ内で最高レベルの性能を達成しました。[データ公開](https://huggingface.co/datasets/openbmb/RLAIF-V-Dataset)。 + +- 🌏 **多言語対応。** + Llama3の強力な多言語機能と[VisCPM](https://github.com/OpenBMB/VisCPM)のクロスリンガル汎化技術のおかげで、MiniCPM-Llama3-V 2.5は、そのバイリンガル(中国語-英語)マルチモーダル機能を、ドイツ語、フランス語、スペイン語、イタリア語、韓国語などを含む **30 以上の言語に拡張します** [すべてのサポート言語](./assets/minicpm-llama-v-2-5_languages.md)。 + +- 🚀 **効率的なデプロイ。** + MiniCPM-Llama3-V 2.5は、**モデルの量子化、CPUの最適化、NPUの最適化、コンパイルの最適化**を体系的に採用し、エンドサイド機器への高効率な導入を実現しています。Qualcomm のチップを搭載した携帯電話向けに、NPUアクセラレーションフレームワークQNNをllama.cppに初めて統合しました。システマティックな最適化の後、MiniCPM-Llama3-V 2.5は、エンドサイドのMLLM画像エンコーディングにおいて**150倍の高速化**、言語デコーディングにおいて**3倍の高速化**を実現しました。 + +- 💫 **簡単な使用法。** +MiniCPM-Llama3-V 2.5は様々な方法で簡単に使用できます: (1) [llama.cpp](https://github.com/OpenBMB/llama.cpp/blob/minicpm-v2.5/examples/minicpmv/README.md)と[ollama](https://github.com/OpenBMB/ollama/tree/minicpm-v2.5/examples/minicpm-v2.5)によるローカルデバイス上での効率的なCPU推論のサポート、(2) [GGUF](https://huggingface.co/openbmb/MiniCPM-Llama3-V-2_5-gguf)による16サイズの量子化モデルのフォーマット、(3) 効率的な[LoRA](https://github. com/OpenBMB/MiniCPM-V/tree/main/finetune#lora-finetuning)による微調整、(4) [ストリーミング出力](https://huggingface.co/openbmb/MiniCPM-Llama3-V-2_5#usage)、(5) [Gradio](https://github.com/OpenBMB/MiniCPM-V/blob/main/web_demo_2.5.py)と[Streamlit](https://github.com/OpenBMB/MiniCPM-V/blob/main/web_demo_streamlit-2_5.py)による迅速なローカルWebUIデモセットアップ、(6) [HuggingFace Spaces](https://huggingface.co/spaces/openbmb/MiniCPM-Llama3-V-2_5)によるインタラクティブデモ。 + +### 評価 + +
+ +
+
+TextVQA、DocVQA、OCRBench、OpenCompass、MME、MMBench、MMMU、MathVista、LLaVA Bench、RealWorld QA、Object HalBench の結果を見るにはクリックしてください。 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ModelSizeOCRBenchTextVQA valDocVQA testOpen-CompassMMEMMB test (en)MMB test (cn)MMMU valMath-VistaLLaVA BenchRealWorld QAObject HalBench
商用
Gemini Pro-68074.688.162.92148.973.674.348.945.879.960.4-
GPT-4V (2023.11.06)-64578.088.463.51771.577.074.453.847.893.163.086.4
オープンソース
Mini-Gemini2.2B-56.234.2*-1653.0--31.7----
Qwen-VL-Chat9.6B48861.562.651.61860.061.856.337.033.867.749.356.2
DeepSeek-VL-7B7.3B43564.7*47.0*54.61765.473.871.438.336.877.854.2-
Yi-VL-34B34B29043.4*16.9*52.22050.272.470.745.130.762.354.879.3
CogVLM-Chat17.4B59070.433.3*54.21736.665.855.937.334.773.960.373.6
TextMonkey9.7B55864.366.7---------
Idefics28.0B-73.074.057.21847.675.768.645.252.249.160.7-
Bunny-LLama-3-8B8.4B---54.31920.377.073.941.331.561.258.8-
LLaVA-NeXT Llama-3-8B8.4B--78.2-1971.5--41.737.580.160.0-
Phi-3-vision-128k-instruct4.2B639*70.9--1537.5*--40.444.564.2*58.8*-
MiniCPM-V 1.02.8B36660.638.247.51650.264.162.638.328.951.351.278.4
MiniCPM-V 2.02.8B60574.171.954.51808.669.166.538.238.769.255.885.5
MiniCPM-Llama3-V 2.58.5B72576.684.865.12024.677.274.245.854.386.763.589.7
+ + +
+* 公式発表されたチェックポイントを自分たちで評価する。 + +
+ +
+ +
+ 多言語版LLaVA Benchの評価結果 +
+ +### Examples + + +

+ +

+
+ +
+ + +## MiniCPM-V 2.0 + +
+MiniCPM-V 2.0 の詳細を見るにはクリックしてください。 + + +**MiniCPM-V 2.0** は、デプロイに有望な性能を持つ効率的なバージョンである。このモデルはSigLip-400Mと[MiniCPM-2.4B](https://github.com/OpenBMB/MiniCPM/)をベースに構築されており、perceiver resampler で接続されています。最新バージョンのMiniCPM-V 2.0には、いくつかの特筆すべき特徴があります。 + +- 🔥 **最先端のパフォーマンス。** + + MiniCPM-V 2.0は、7Bのパラメータを持つモデルの中で、複数のベンチマーク(OCRBench、TextVQA、MME、MMB、MathVistaなどを含む)で**最先端のパフォーマンス**を達成しています。11の一般的なベンチマークを総合的に評価するOpenCompass**では、強力なQwen-VL-Chat 9.6B、CogVLM-Chat 17.4B、Yi-VL 34Bを凌駕しています**。特筆すべきは、MiniCPM-V 2.0は**強力なOCR能力**を示しており、シーンテキスト理解において**Gemini Proに匹敵するパフォーマンス**を達成し、オープンソースモデルの中では**OCRBench**で最先端のパフォーマンス**を発揮している。 + +- 🏆 **信頼に値する行動。** + + LMMはハルシネーションに悩まされることで知られ、しばしばイメージに基づかないテキストを生成する。MiniCPM-V 2.0は、**マルチモーダルRLHFにより信頼できる振る舞いを実現する**最初のエンドサイドLMMです(最近の[RLHF-V](https://rlhf-v.github.io/) [CVPR'24]シリーズの技術を使用)。これにより、このモデルはObject HalBenchにおいて**ハルシネーション防止においてGPT-4Vに匹敵する**。 + +- 🌟 **どんなアスペクトでも高解像度の画像を提供。** + + MiniCPM-V 2.0は、**180万画素(例:1344x1344)の画像を任意のアスペクト比で受け入れることができます**。これは、[LLaVA-UHD](https://arxiv.org/pdf/2403.11703.pdf)の最近の技術によって実現されたもので、小さな物体や光学的な文字のような細かい視覚情報のより良い知覚を可能にする。 + +- ⚡️ **High Efficiency.** + + MiniCPM-V 2.0は、ほとんどのGPUカードやパーソナルコンピュータ**、そして**携帯電話などのエンドデバイス**にも効率的に導入することができます。視覚エンコーディングでは、perceiver resampler によって、画像表現をより少ないトークンに圧縮する。これにより、MiniCPM-V 2.0は、**高解像度画像を扱う場合でも、推論時に有利なメモリコストと速度で動作する**ことができます。 + +- 🙌 **Bilingual Support.** + + MiniCPM-V 2.0 **英語と中国語の強力なバイリンガル・マルチモーダル機能をサポート**。これは、[VisCPM](https://arxiv.org/abs/2308.12038) [ICLR'24]の技術である、言語間のマルチモーダル能力を一般化することによって可能になる。 + +### 例 + + +

+ +

+
+ +我々はMiniCPM-V 2.0をエンドデバイスに導入している。デモビデオはXiaomi 14 Pro(エディションなし)での生の画面録画です。 + + +

+ + +

+
+ +
+ +## レガシーモデル + +| モデル | 導入とガイダンス | +|:----------------------|:-------------------:| +| MiniCPM-V 1.0 | [ドキュメント](./minicpm_v1.md) | +| OmniLMM-12B | [ドキュメント](./omnilmm_en.md) | + + +## Gradio🤗 のデモでチャット + +私たちは、現在最も人気のあるモデル展開フレームワークであるHugging Face Gradio によるオンラインおよびローカルデモを提供しています。ストリーミング出力、プログレスバー、キューイング、アラート、その他の便利な機能をサポートしている。 + + +### オンラインデモ + +[MiniCPM-V 2.6](https://huggingface.co/spaces/openbmb/MiniCPM-V-2_6) | [MiniCPM-Llama3-V 2.5](https://huggingface.co/spaces/openbmb/MiniCPM-Llama3-V-2_5) | [MiniCPM-V 2.0](https://huggingface.co/spaces/openbmb/MiniCPM-V-2) のオンラインデモをお試しいただくには、こちらをクリックしてください。 + +### ローカル WebUI デモ + +以下のコマンドを使えば、Gradio を使った独自のローカル WebUI デモを簡単に構築できる。 + +```shell +pip install -r requirements.txt +``` + +```shell +# NVIDIA GPUの場合は、以下を実行: +python web_demo_2.6.py --device cuda + +``` + + +## インストール + +1. このリポジトリをクローンし、ソースフォルダーに移動 + +```bash +git clone https://github.com/OpenBMB/MiniCPM-V.git +cd MiniCPM-V +``` + +2. conda 環境の作成 + +```Shell +conda create -n MiniCPM-V python=3.10 -y +conda activate MiniCPM-V +``` + +3. 依存関係のインストール + +```shell +pip install -r requirements.txt +``` + +## 推論 + + +### Model Zoo + +| モデル | デバイス | メモリ |          説明 | ダウンロード | +|:-----------|:--:|:-----------:|:-------------------|:---------------:| +| MiniCPM-V 2.6| GPU | 17 GB | 最新バージョンは、単一画像、複数画像、ビデオ理解のための最先端のエンドサイド性能を達成。 | [🤗](https://huggingface.co/openbmb/MiniCPM-V-2_6)    [](https://modelscope.cn/models/OpenBMB/MiniCPM-V-2_6) | +| MiniCPM-V 2.6 gguf | CPU | 6 GB | ggufバージョンは、メモリ使用量が少なく、推論が速い。 | [🤗](https://huggingface.co/openbmb/MiniCPM-V-2_6-gguf)    [](https://modelscope.cn/models/OpenBMB/MiniCPM-V-2_6-gguf) | +| MiniCPM-V 2.6 int4 | GPU | 7 GB | int4量子化バージョンは、GPUメモリ使用量が少ない。 | [🤗](https://huggingface.co/openbmb/MiniCPM-V-2_6-int4)    [](https://modelscope.cn/models/OpenBMB/MiniCPM-V-2_6-int4) | +| MiniCPM-Llama3-V 2.5 | GPU | 19 GB | 強力なエンドサイドのマルチモーダル性能。 | [🤗](https://huggingface.co/openbmb/MiniCPM-Llama3-V-2_5/)    [](https://modelscope.cn/models/OpenBMB/MiniCPM-Llama3-V-2_5) | +| MiniCPM-Llama3-V 2.5 gguf | CPU | 6 GB | ggufバージョンは、メモリ使用量が少なく、推論が速い。 | [🤗](https://huggingface.co/openbmb/MiniCPM-Llama3-V-2_5-gguf)   [](https://modelscope.cn/models/OpenBMB/MiniCPM-Llama3-V-2_5-gguf) | +| MiniCPM-Llama3-V 2.5 int4 | GPU | 8 GB | int4量子化バージョンは、GPUメモリ使用量が少ない。 | [🤗](https://huggingface.co/openbmb/MiniCPM-Llama3-V-2_5-int4/)    [](https://modelscope.cn/models/OpenBMB/MiniCPM-Llama3-V-2_5-int4) | +| MiniCPM-V 2.0 | GPU | 8 GB | 最軽量バージョンは、パフォーマンスと計算コストのバランスを取る。 | [🤗](https://huggingface.co/openbmb/MiniCPM-V-2)    [](https://modelscope.cn/models/OpenBMB/MiniCPM-V-2) | +| MiniCPM-V 1.0 | GPU | 7 GB | 最軽量バージョンで最速の推論を実現。 | [🤗](https://huggingface.co/openbmb/MiniCPM-V)    [](https://modelscope.cn/models/OpenBMB/MiniCPM-V) | + +### マルチターン会話 + +以下のコードを参考に実行してください。 + +
+ +
+ + +```python +import torch +from PIL import Image +from transformers import AutoModel, AutoTokenizer + +torch.manual_seed(0) + +model = AutoModel.from_pretrained('openbmb/MiniCPM-V-2_6', trust_remote_code=True, + attn_implementation='sdpa', torch_dtype=torch.bfloat16) # sdpaまたはflash_attention_2、eager なし +model = model.eval().cuda() +tokenizer = AutoTokenizer.from_pretrained('openbmb/MiniCPM-V-2_6', trust_remote_code=True) + +image = Image.open('./assets/airplane.jpeg').convert('RGB') + +# 第1ラウンドチャット +question = "Tell me the model of this aircraft." +msgs = [{'role': 'user', 'content': [image, question]}] + +answer = model.chat( + image=None, + msgs=msgs, + tokenizer=tokenizer +) +print(answer) + +# 第2ラウンドチャット +# マルチターン会話のパス履歴コンテキスト +msgs.append({"role": "assistant", "content": [answer]}) +msgs.append({"role": "user", "content": ["Introduce something about Airbus A380."]}) + +answer = model.chat( + image=None, + msgs=msgs, + tokenizer=tokenizer +) +print(answer) +``` + +次のような出力が得られます: + +``` +"The aircraft in the image is an Airbus A380, which can be identified by its large size, double-deck structure, and the distinctive shape of its wings and engines. The A380 is a wide-body aircraft known for being the world's largest passenger airliner, designed for long-haul flights. It has four engines, which are characteristic of large commercial aircraft. The registration number on the aircraft can also provide specific information about the model if looked up in an aviation database." + +"The Airbus A380 is a double-deck, wide-body, four-engine jet airliner made by Airbus. It is the world's largest passenger airliner and is known for its long-haul capabilities. The aircraft was developed to improve efficiency and comfort for passengers traveling over long distances. It has two full-length passenger decks, which can accommodate more passengers than a typical single-aisle airplane. The A380 has been operated by airlines such as Lufthansa, Singapore Airlines, and Emirates, among others. It is widely recognized for its unique design and significant impact on the aviation industry." +``` + +#### 複数の画像を使ったチャット +
+ クリックすると、MiniCPM-V 2.6を複数の画像入力で実行するPythonコードが表示されます。 + +```python +import torch +from PIL import Image +from transformers import AutoModel, AutoTokenizer + +model = AutoModel.from_pretrained('openbmb/MiniCPM-V-2_6', trust_remote_code=True, + attn_implementation='sdpa', torch_dtype=torch.bfloat16) # sdpaまたはflash_attention_2、eager なし +model = model.eval().cuda() +tokenizer = AutoTokenizer.from_pretrained('openbmb/MiniCPM-V-2_6', trust_remote_code=True) + +image1 = Image.open('image1.jpg').convert('RGB') +image2 = Image.open('image2.jpg').convert('RGB') +question = 'Compare image 1 and image 2, tell me about the differences between image 1 and image 2.' + +msgs = [{'role': 'user', 'content': [image1, image2, question]}] + +answer = model.chat( + image=None, + msgs=msgs, + tokenizer=tokenizer +) +print(answer) +``` +
+ +#### In-context few-shot learning +
+ クリックするとMiniCPM-V 2.6を実行するPythonコードが表示されます。 + +```python +import torch +from PIL import Image +from transformers import AutoModel, AutoTokenizer + +model = AutoModel.from_pretrained('openbmb/MiniCPM-V-2_6', trust_remote_code=True, + attn_implementation='sdpa', torch_dtype=torch.bfloat16) # sdpaまたはflash_attention_2、eager なし +model = model.eval().cuda() +tokenizer = AutoTokenizer.from_pretrained('openbmb/MiniCPM-V-2_6', trust_remote_code=True) + +question = "production date" +image1 = Image.open('example1.jpg').convert('RGB') +answer1 = "2023.08.04" +image2 = Image.open('example2.jpg').convert('RGB') +answer2 = "2007.04.24" +image_test = Image.open('test.jpg').convert('RGB') + +msgs = [ + {'role': 'user', 'content': [image1, question]}, {'role': 'assistant', 'content': [answer1]}, + {'role': 'user', 'content': [image2, question]}, {'role': 'assistant', 'content': [answer2]}, + {'role': 'user', 'content': [image_test, question]} +] + +answer = model.chat( + image=None, + msgs=msgs, + tokenizer=tokenizer +) +print(answer) +``` +
+ +#### ビデオでチャット +
+ ビデオ入力でMiniCPM-V 2.6を実行するPythonコードを見るにはクリックしてください。 + +```python +import torch +from PIL import Image +from transformers import AutoModel, AutoTokenizer +from decord import VideoReader, cpu # pip install decord + +model = AutoModel.from_pretrained('openbmb/MiniCPM-V-2_6', trust_remote_code=True, + attn_implementation='sdpa', torch_dtype=torch.bfloat16) # sdpaまたはflash_attention_2、eager なし +model = model.eval().cuda() +tokenizer = AutoTokenizer.from_pretrained('openbmb/MiniCPM-V-2_6', trust_remote_code=True) + +MAX_NUM_FRAMES=64 # cuda OOMの場合、より小さい数値を設定する + +def encode_video(video_path): + def uniform_sample(l, n): + gap = len(l) / n + idxs = [int(i * gap + gap / 2) for i in range(n)] + return [l[i] for i in idxs] + + vr = VideoReader(video_path, ctx=cpu(0)) + sample_fps = round(vr.get_avg_fps() / 1) # FPS + frame_idx = [i for i in range(0, len(vr), sample_fps)] + if len(frame_idx) > MAX_NUM_FRAMES: + frame_idx = uniform_sample(frame_idx, MAX_NUM_FRAMES) + frames = vr.get_batch(frame_idx).asnumpy() + frames = [Image.fromarray(v.astype('uint8')) for v in frames] + print('num frames:', len(frames)) + return frames + +video_path="video_test.mp4" +frames = encode_video(video_path) +question = "Describe the video" +msgs = [ + {'role': 'user', 'content': frames + [question]}, +] + +# ビデオのデコードパラメータを設定する +params = {} +params["use_image_id"] = False +params["max_slice_nums"] = 2 # cuda OOMおよびビデオ解像度が448*448を超える場合は1を使用する + +answer = model.chat( + image=None, + msgs=msgs, + tokenizer=tokenizer, + **params +) +print(answer) +``` +
+ + +### マルチGPUでの推論 +モデルのレイヤーを複数のGPUに分散することで、複数の低VRAM GPU(12 GBまたは16 GB)でMiniCPM-Llama3-V 2.5を実行できます。複数の低VRAM GPUを使用したモデルのロードと推論の詳細な手順については、こちらの[チュートリアル](https://github.com/OpenBMB/MiniCPM-V/blob/main/docs/inference_on_multiple_gpus.md)を参照してください。 + + +### Macでの推論 +
+クリックすると、MiniCPM-Llama3-V 2.5をMPS(AppleシリコンまたはAMD GPU)搭載の📨Macで実行する例が表示されます。 + +```python +# test.py 16GB以上のメモリが必要。 +import torch +from PIL import Image +from transformers import AutoModel, AutoTokenizer + +model = AutoModel.from_pretrained('openbmb/MiniCPM-Llama3-V-2_5', trust_remote_code=True, low_cpu_mem_usage=True) +model = model.to(device='mps') + +tokenizer = AutoTokenizer.from_pretrained('openbmb/MiniCPM-Llama3-V-2_5', trust_remote_code=True) +model.eval() + +image = Image.open('./assets/hk_OCR.jpg').convert('RGB') +question = 'Where is this photo taken?' +msgs = [{'role': 'user', 'content': question}] + +answer, context, _ = model.chat( + image=image, + msgs=msgs, + context=None, + tokenizer=tokenizer, + sampling=True +) +print(answer) +``` +コマンドで実行: +```shell +PYTORCH_ENABLE_MPS_FALLBACK=1 python test.py +``` +
+ +### モバイルへのデプロイ +MiniCPM-V 2.0 は Android OS 搭載の携帯電話にも導入可能です。🚀 [MiniCPM-V 2.0](https://github.com/OpenBMB/mlc-MiniCPM)をクリックして apk をインストールしてください。 + +### llama.cppによる推論 +MiniCPM-V 2.6はllama.cppで動作するようになりました!詳しくは[our fork of llama.cpp](https://github.com/OpenBMB/llama.cpp/tree/minicpmv-main/examples/llava/README-minicpmv2.6.md)をご覧ください。この実装は、iPad(テスト環境:iPad Pro + M4)で16〜18トークン/秒のスムーズな推論をサポートします。 + +### ollama の推論 +MiniCPM-V 2.6がollamaで動くようになりました!詳しくは [our fork of ollama](https://github.com/OpenBMB/ollama/blob/minicpm-v2.6/examples/minicpm-v2.6/README.md) をご覧ください。この実装は、iPad(テスト環境:iPad Pro + M4)で16〜18トークン/秒のスムーズな推論をサポートします。 + +### vLLMによる推論 + +
+ vLLMは現在、MiniCPM-V 2.6、MiniCPM-Llama3-V 2.5、MiniCPM-V 2.0を正式にサポートしています。 + +1. Install vLLM(>=0.5.4): +```shell +pip install vllm +``` +2. Install timm: (optional, MiniCPM-V 2.0 need timm) +```shell +pip install timm==0.9.10 +``` +3. 例を実行する(画像用): +```python +from transformers import AutoTokenizer +from PIL import Image +from vllm import LLM, SamplingParams + +MODEL_NAME = "openbmb/MiniCPM-V-2_6" +# 旧モデルにも対応 +# MODEL_NAME = "openbmb/MiniCPM-Llama3-V-2_5" +# MODEL_NAME = "HwwwH/MiniCPM-V-2" + +image = Image.open("xxx.png").convert("RGB") +tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, trust_remote_code=True) +llm = LLM( + model=MODEL_NAME, + trust_remote_code=True, + gpu_memory_utilization=1, + max_model_len=2048 +) + +messages = [{ + "role": + "user", + "content": + # 画像数 + "(./)" + \ + "\nWhat is the content of this image?" +}] +prompt = tokenizer.apply_chat_template( + messages, + tokenize=False, + add_generation_prompt=True +) + +# シングル推論 +inputs = { + "prompt": prompt, + "multi_modal_data": { + "image": image + # マルチイメージの場合、画像の数は `(./)` の数と同じでなければなりません + # "image": [image, image] + }, +} +# バッチ推論 +# inputs = [{ +# "prompt": prompt, +# "multi_modal_data": { +# "image": image +# }, +# } for _ in 2] + + +# 2.6 +stop_tokens = ['<|im_end|>', '<|endoftext|>'] +stop_token_ids = [tokenizer.convert_tokens_to_ids(i) for i in stop_tokens] +# 2.0 +# stop_token_ids = [tokenizer.eos_id] +# 2.5 +# stop_token_ids = [tokenizer.eos_id, tokenizer.eot_id] + +sampling_params = SamplingParams( + stop_token_ids=stop_token_ids, + use_beam_search=True, + temperature=0, + best_of=3, + max_tokens=1024 +) + +outputs = llm.generate(inputs, sampling_params=sampling_params) + +print(outputs[0].outputs[0].text) +``` +4. *video* で使用したい、あるいは `vLLM` の詳細を知りたい場合、[こちら](https://modelbest.feishu.cn/wiki/C2BWw4ZP0iCDy7kkCPCcX2BHnOf?from=from_copylink)をクリックしてください。 +
+ +## Fine-tuning + +### Simple Fine-tuning + +Hugging Face for MiniCPM-V 2.0とMiniCPM-Llama3-V 2.5で簡単なファインチューニングをサポートします。 + +[Reference Document](./finetune/readme.md) + +### SWIFT フレームワーク + +我々は現在、SWIFT フレームワークによる MiniCPM-V シリーズのファインチューニングをサポートしている。SWIFTは、約200のLLMとMLLMのトレーニング、推論、評価、デプロイメントをサポートします。SWIFTは、PEFTが提供する軽量トレーニングソリューションと、NEFTune、LoRA+、LLaMA-PROなどの技術を含む完全なアダプターライブラリをサポートしています。 + +Best Practices:[MiniCPM-V 1.0](https://github.com/modelscope/swift/blob/main/docs/source/Multi-Modal/minicpm-v最佳实践.md), [MiniCPM-V 2.0](https://github.com/modelscope/swift/blob/main/docs/source/Multi-Modal/minicpm-v-2最佳实践.md) + +## FAQs +[FAQ](./docs/faqs.md) はこちら + +## モデルライセンス + +* このリポジトリは[Apache-2.0](https://github.com/OpenBMB/MiniCPM/blob/main/LICENSE)ライセンスのもとで公開されています。 + +* MiniCPM-V モデルウェイトの使用は、[MiniCPM Model License.md](https://github.com/OpenBMB/MiniCPM/blob/main/MiniCPM%20Model%20License.md)に厳密に従わなければならない。 + +* MiniCPMのモデルとウェイトは、学術研究のために完全に無料です。登録のための["アンケート"](https://modelbest.feishu.cn/share/base/form/shrcnpV5ZT9EJ6xYjh3Kx0J6v8g)に記入した後、無料の商用利用も可能です。 + + +## ステートメント + +LMMであるMiniCPM-Vモデル(OmniLMMを含む)は、大量のマルチモーダルコーパスを学習してコンテンツを生成するが、理解したり、個人的な意見を述べたり、価値判断をしたりすることはできない。MiniCPM-Vモデルによって生成されたものは、モデル開発者の見解や立場を表すものではない + +MiniCPM-Vモデルを使用することにより発生する問題(データセキュリティ上の問題、世論のリスク、モデルの誤導、誤用、流布、誤用に起因するリスクや問題を含むがこれらに限定されない)については、当社は一切責任を負いません。 + + +## 機関 + +このプロジェクトは以下の機関によって開発されています: + +- [THUNLP](https://nlp.csai.tsinghua.edu.cn/) +- [ModelBest](https://modelbest.cn/) +- [Zhihu](https://www.zhihu.com/ ) + +## 🌟 Star History + + + +

+ +

+
+ + + +## 主要技術とその他のマルチモーダルプロジェクト + +👏 MiniCPM-V の主な技術や、私たちのチームの他のマルチモーダルプロジェクトを探求することを歓迎します。: + +[VisCPM](https://github.com/OpenBMB/VisCPM/tree/main) | [RLHF-V](https://github.com/RLHF-V/RLHF-V) | [LLaVA-UHD](https://github.com/thunlp/LLaVA-UHD) | [RLAIF-V](https://github.com/RLHF-V/RLAIF-V) + + +## 引用 + +もし私たちのモデル/コード/論文が役に立ったと思われましたら、私たちの論文を引用してください📝 そして私たちに star をつけてください ⭐️! + +```bib +@article{yao2024minicpm, + title={MiniCPM-V: A GPT-4V Level MLLM on Your Phone}, + author={Yao, Yuan and Yu, Tianyu and Zhang, Ao and Wang, Chongyi and Cui, Junbo and Zhu, Hongji and Cai, Tianchi and Li, Haoyu and Zhao, Weilin and He, Zhihui and others}, + journal={arXiv preprint arXiv:2408.01800}, + year={2024} +} +``` diff --git a/README_zh.md b/README_zh.md index 7d2125d..aa22ab0 100644 --- a/README_zh.md +++ b/README_zh.md @@ -7,7 +7,8 @@ **端侧可用的 GPT-4V 级单图、多图、视频多模态大模型** 中文 | - [English](./README_en.md) + [English](./README_en.md) | + [日本語](./README_ja.md) 加入我们的 💬 微信社区 diff --git a/eval_mm/README_ja.md b/eval_mm/README_ja.md new file mode 100644 index 0000000..db51fba --- /dev/null +++ b/eval_mm/README_ja.md @@ -0,0 +1,177 @@ +# 評価 + +## opencompass +まず、`vlmevalkit`ディレクトリに入り、すべての依存関係をインストールします: +```bash +cd vlmevalkit +pip install -r requirements.txt +``` +
+ +次に、`script/run_inference.sh`を実行します。これは、`MODELNAME`、`DATALIST`、および`MODE`の3つの入力パラメータを順に受け取ります。`MODELNAME`はモデルの名前、`DATALIST`は推論に使用するデータセット、`MODE`は評価モードを表します: +```bash +chmod +x ./script/run_inference.sh +./script/run_inference.sh $MODELNAME $DATALIST $MODE +``` +
+ +`MODELNAME`の3つの選択肢は`vlmeval/config.py`にリストされています: +```bash +ungrouped = { + 'MiniCPM-V':partial(MiniCPM_V, model_path='openbmb/MiniCPM-V'), + 'MiniCPM-V-2':partial(MiniCPM_V, model_path='openbmb/MiniCPM-V-2'), + 'MiniCPM-Llama3-V-2_5':partial(MiniCPM_Llama3_V, model_path='openbmb/MiniCPM-Llama3-V-2_5'), +} +``` +
+ +すべての利用可能な`DATALIST`の選択肢は`vlmeval/utils/dataset_config.py`にリストされています。単一のデータセットで評価する場合、データセット名を引用符なしで直接呼び出します。複数のデータセットで評価する場合、異なるデータセット名をスペースで区切り、両端に引用符を追加します: +```bash +$DATALIST="POPE ScienceQA_TEST ChartQA_TEST" +``` +
+ +各ベンチマークで直接スコアリングする場合、`MODE=all`を設定します。推論結果のみが必要な場合、`MODE=infer`を設定します。ホームページに表示されている表の結果(MMEからRealWorldQAまでの列)を再現するには、次の設定に従ってスクリプトを実行する必要があります: +```bash +# すべての7つのデータセットで実行 +./script/run_inference.sh MiniCPM-Llama3-V-2_5 "MME MMBench_TEST_EN MMBench_TEST_CN MMMU_DEV_VAL MathVista_MINI LLaVABench RealWorldQA" all + +# 単一のデータセットで実行するための指示 +# MME +./script/run_inference.sh MiniCPM-Llama3-V-2_5 MME all +# MMBench_TEST_EN +./script/run_inference.sh MiniCPM-Llama3-V-2_5 MMBench_TEST_EN all +# MMBench_TEST_CN +./script/run_inference.sh MiniCPM-Llama3-V-2_5 MMBench_TEST_CN all +# MMMU_DEV_VAL +./script/run_inference.sh MiniCPM-Llama3-V-2_5 MMMU_DEV_VAL all +# MathVista_MINI +./script/run_inference.sh MiniCPM-Llama3-V-2_5 MathVista_MINI all +# LLaVABench +./script/run_inference.sh MiniCPM-Llama3-V-2_5 LLaVABench all +# RealWorldQA +./script/run_inference.sh MiniCPM-Llama3-V-2_5 RealWorldQA all +``` +
+ +## vqadataset +まず、`vqaeval`ディレクトリに入り、すべての依存関係をインストールします。次に、すべてのタスクのデータセットをダウンロードするために`downloads`サブディレクトリを作成します: +```bash +cd vqaeval +pip install -r requirements.txt +mkdir downloads +``` +
+ +次のリンクからデータセットをダウンロードし、指定されたディレクトリに配置します: +###### TextVQA +```bash +cd downloads +mkdir TextVQA && cd TextVQA +wget https://dl.fbaipublicfiles.com/textvqa/images/train_val_images.zip +unzip train_val_images.zip && rm train_val_images.zip +mv train_val_images/train_images . && rm -rf train_val_images +wget https://dl.fbaipublicfiles.com/textvqa/data/TextVQA_0.5.1_val.json +cd ../.. +``` + +###### DocVQA / DocVQATest + +```bash +cd downloads +mkdir DocVQA && cd DocVQA && mkdir spdocvqa_images +# https://rrc.cvc.uab.es/?ch=17&com=downloads から Task 1 - Single Page Document Visual Question Answering の Images と Annotations をダウンロード +# spdocvqa_images.tar.gz と spdocvqa_qas.zip を DocVQA ディレクトリに移動 +tar -zxvf spdocvqa_images.tar.gz -C spdocvqa_images && rm spdocvqa_images.tar.gz +unzip spdocvqa_qas.zip && rm spdocvqa_qas.zip +cp spdocvqa_qas/val_v1.0_withQT.json . && cp spdocvqa_qas/test_v1.0.json . && rm -rf spdocvqa_qas +cd ../.. +``` +
+ +`downloads`ディレクトリは次の構造に従って整理されるべきです: +```bash +downloads +├── TextVQA +│ ├── train_images +│ │ ├── ... +│ ├── TextVQA_0.5.1_val.json +├── DocVQA +│ ├── spdocvqa_images +│ │ ├── ... +│ ├── val_v1.0_withQT.json +│ ├── test_v1.0.json +``` +
+ +`shell/run_inference.sh`のパラメータを変更し、推論を実行します: + +```bash +chmod +x ./shell/run_inference.sh +./shell/run_inference.sh +``` +
+ +すべてのオプションパラメータは`eval_utils/getargs.py`にリストされています。主要なパラメータの意味は次のとおりです: +```bash +# 画像とそれに対応する質問のパス +# TextVQA +--textVQA_image_dir +--textVQA_ann_path +# DocVQA +--docVQA_image_dir +--docVQA_ann_path +# DocVQATest +--docVQATest_image_dir +--docVQATest_ann_path + +# 特定のタスクで評価するかどうか +--eval_textVQA +--eval_docVQA +--eval_docVQATest +--eval_all + +# モデル名とモデルパス +--model_name +--model_path +# ckptからモデルをロード +--ckpt +# モデルが入力データを処理する方法、"interleave"は画像とテキストが交互に配置される形式、"old"は非交互形式を表します。 +--generate_method + +--batchsize + +# 出力を保存するパス +--answer_path +``` +
+ +異なるタスクで評価する場合、次のようにパラメータを設定する必要があります: +###### TextVQA +```bash +--eval_textVQA +--textVQA_image_dir ./downloads/TextVQA/train_images +--textVQA_ann_path ./downloads/TextVQA/TextVQA_0.5.1_val.json +``` + +###### DocVQA +```bash +--eval_docVQA +--docVQA_image_dir ./downloads/DocVQA/spdocvqa_images +--docVQA_ann_path ./downloads/DocVQA/val_v1.0_withQT.json +``` + +###### DocVQATest +```bash +--eval_docVQATest +--docVQATest_image_dir ./downloads/DocVQA/spdocvqa_images +--docVQATest_ann_path ./downloads/DocVQA/test_v1.0.json +``` + +
+ +DocVQATestタスクの場合、推論結果を[公式サイト](https://rrc.cvc.uab.es/?ch=17)にアップロードして評価するために、推論後に`shell/run_transform.sh`を実行して形式変換を行います。`input_file_path`は元の出力jsonのパスを表し、`output_file_path`は変換後のjsonのパスを表します: +```bash +chmod +x ./shell/run_transform.sh +./shell/run_transform.sh +```