Qwen2-VL-7B-Instruct

この記事は約14分で読めます。

はじめに

私たちは、約1年間の革新を経て開発したQwen-VLモデルの最新バージョンであるQwen2-VLを発表することに興奮しています。

Qwen2-VLの新機能は?

主要な強化点:

  • 各種解像度と比率の画像に対するSoTAレベルの理解:Qwen2-VLは、MathVista、DocVQA、RealWorldQA、MTVQAなど、視覚理解ベンチマークにおいて最先端の性能を達成しています。
  • 20分以上の動画の理解:Qwen2-VLは、高品質な動画ベースの質問応答、ダイアログ、コンテンツ作成などに、20分以上の動画を理解できます。
  • モバイル機器、ロボットなどの操作可能なエージェント:複雑な推理と意思決定能力を持ち、Qwen2-VLはモバイル端末やロボットなどのデバイスと統合され、視覚環境とテキスト命令に基づく自動操作が可能です。
  • 多言語サポート:全世界のユーザーをサービスするため、英語と中国語に加えて、画像内の異なる言語のテキストを理解する機能が追加されており、ヨーロッパ諸言語、日本語、韓国語、アラビア語、ベトナム語などを含む多数の言語がサポートされています。

モデルアーキテクチャの更新:

  • ナイーブダイナミック解像度:以前とは異なり、Qwen2-VLは任意の画像解像度を扱い、それらを視覚トークンの動的な数にマッピングし、より人間のような視覚処理体験を提供します。
  • マルチモーダルロータリー位置埋め込み(M-ROPE):位置埋め込みを部分に分解して1Dテキスト、2D視覚、3D動画の位置情報をキャプチャし、そのマルチモーダル処理能力を強化します。

私たちは2億、7億、72億パラメーターの3つのモデルを持っています。このリポジトリには、指令調整型7B Qwen2-VLモデルが含まれています。更なる情報については、私たちのブログとGitHubをご覧ください。

評価

画像ベンチマーク

ベンチマーク InternVL2-8B MiniCPM-V 2.6 GPT-4o-mini Qwen2-VL-7B
MMMUval 51.8 49.8 60 54.1
DocVQAtest 91.6 90.8 - 94.5
InfoVQAtest 74.8 - - 76.5
ChartQAtest 83.3 - - 83.0
TextVQAval 77.4 80.1 - 84.3
OCRBench 794 852 785 845
MTVQA - - - 26.3
RealWorldQA 64.4 - - 70.1
MMEsum 2210.3 2348.4 2003.4 2326.8
MMBench-ENtest 81.7 - - 83.0
MMBench-CNtest 81.2 - - 80.5
MMBench-V1.1test 79.4 78.0 76.0 80.7
MMT-Benchtest - - - 63.7
MMStar 61.5 57.5 54.8 60.7
MMVetGPT-4-Turbo 54.2 60.0 66.9 62.0
HallBenchavg 45.2 48.1 46.1 50.6
MathVistatestmini 58.3 60.6 52.4 58.2
MathVision - - - 16.3

ビデオベンチマーク:

ビデオベンチマーク Internvl2-8B LLaVA-OneVision-7B MiniCPM-V 2.6 Qwen2-VL-7B
MVBench 66.4 56.7 - 67.0
PerceptionTesttest - 57.1 - 62.3
EgoSchematest - 60.1 - 66.7
Video-MMEwo/w subs 54.0/56.9 58.2/- 60.9/63.6 63.3/69.0

要件 Qwen2-VLのコードは、最新のHugging face transformersにありますが、pip install git+https://github.com/huggingface/transformers コマンドでソースからビルドすることをお勧めします。そうしないと、以下のエラーが発生する可能性があります。

KeyError: 'qwen2_vl'

クイックスタート 私たちは、APIを使用するようにさまざまなタイプの視覚入力をより簡単に処理するツールキットを提供しています。これは、base64、URL、および交差する画像と動画を含んでいます。以下のコマンドでインストールできます:

pip install qwen-vl-utils

ここでは、transformersとqwen_vl_utilsを使用してチャットモデルをどのように使用するかのコードスニペットを示します:

from transformers import Qwen2VLForConditionalGeneration, AutoTokenizer, AutoProcessor
from qwen_vl_utils import process_vision_info
from modelscope import snapshot_download
model_dir = snapshot_download("qwen/Qwen2-VL-7B-Instruct")

# デフォルト:使用可能なデバイスにモデルをロード
model = Qwen2VLForConditionalGeneration.from_pretrained(
    model_dir, torch_dtype="auto", device_map="auto"
)

# 特に複数画像や動画のシーンでは、flash_attention_2を有効にすると、より速い処理とメモリ節約が期待できます。
# model = Qwen2VLForConditionalGeneration.from_pretrained(
#     model_dir,
#     torch_dtype=torch.bfloat16,
#     attn_implementation="flash_attention_2",
#     device_map="auto",
# )

# デフォルトプロセッサ
processor = AutoProcessor.from_pretrained(model_dir)

# デフォルトでは、モデル内の画像ごとの視覚トークン数は4-16384の範囲です。必要に応じてmin_pixelsとmax_pixelsを設定し(たとえば、トークン数の範囲を256-1280に設定して)、速度とメモリ使用量をバランス取ることができます。
# min_pixels = 256*28*28
# max_pixels = 1280*28*28
# processor = AutoProcessor.from_pretrained(model_dir, min_pixels=min_pixels, max_pixels=max_pixels)

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "image",
                "image": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg",
            },
            {"type": "text", "text": "この画像について説明してください。"},
        ],
    }
]

# 推論の準備
text = processor.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True
)
image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(
    text=[text],
    images=image_inputs,
    videos=video_inputs,
    padding=True,
    return_tensors="pt",
)
inputs = inputs.to("cuda")

# 推論:出力の生成
generated_ids = model.generate(**inputs, max_new_tokens=128)
generated_ids_trimmed = [
    out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
    generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
)
print(output_text)

qwen_vl_utilsなし 複数画像推論 動画推論 バッチ推論 より多くの使用ヒント 入力画像については、ローカルファイル、base64、URLをサポートしています。動画については、現在ローカルファイルのみをサポートしています。

ローカルファイルパス# テキスト内の任意の位置にローカルファイルパス、URL、またはbase64エンコードされた画像を直接挿入できます。

ローカルファイルパス

messages = [ { "role": "user", "content": [ {"type": "image", "image": "file:///path/to/your/image.jpg"}, {"type": "text", "text": "この画像について説明してください。"}, ], } ]

画像URL

messages = [ { "role": "user", "content": [ {"type": "image", "image": "http://path/to/your/image.jpg"}, {"type": "text", "text": "この画像について説明してください。"}, ], } ]

Base64エンコードされた画像

messages = [ { "role": "user", "content": [ {"type": "image", "image": "data:image;base64,/9j/..."}, {"type": "text", "text": "この画像について説明してください。"}, ], } ] 画像解像度によるパフォーマンス向上 モデルは幅広い解像度入力をサポートしています。デフォルトでは、入力にネイティブ解像度を使用しますが、より高い解像度は計算コストを増加させる代わりにパフォーマンスを向上させます。ユーザーは、min_pixelsとmax_pixelsを設定して、自分のニーズに最適な構成を実現できます(たとえば、トークン数の範囲を256-1280に設定して)、速度とメモリ使用量をバランス取ることができます。

min_pixels = 256 28 28 max_pixels = 1280 28 28 processor = AutoProcessor.from_pretrained( model_dir, min_pixels=min_pixels, max_pixels=max_pixels ) また、モデルへの画像サイズ入力の細かい制御には2つの方法を提供しています:

min_pixelsとmax_pixelsを定義する:画像は、min_pixelsとmax_pixelsの範囲内でアスペクト比を維持したままサイズ調整されます。

正確な寸法を指定する:resize_heightとresize_widthを直接設定します。これらの値は、28の最も近い倍数に丸められます。

min_pixelsとmax_pixels

messages = [ { "role": "user", "content": [ { "type": "image", "image": "file:///path/to/your/image.jpg", "resized_height": 280, "resized_width": 420, }, {"type": "text", "text": "この画像について説明してください。"}, ], } ]

resized_heightとresized_width

messages = [ { "role": "user", "content": [ { "type": "image", "image": "file:///path/to/your/image.jpg", "min_pixels": 50176, "max_pixels": 50176, }, {"type": "text", "text": "この画像について説明してください。"}, ], } ]

制限事項 Qwen2-VLは幅広い視覚タスクに適用できますが、その制限も理解することは同等に重要です。ここにいくつかの既知の制限事項を示します:

  • オーディオサポートの欠如:現在のモデルでは、動画内のオーディオ情報を理解できません。
  • データのタイムリーさ:私たちの画像データセットは2023年6月まで更新されており、その後の情報はカバーされていない可能性があります。
  • 個人および知的財産(IP)に関する制約:モデルが特定の個人やIPを認識する能力は限定的であり、すべての著名人やブランドを包括的にカバーすることはできません。
  • 複雑な指令の容量不足:複雑な複数ステップの指令に直面すると、モデルの理解力と実行能力を強化する必要があります。
  • 计数精度の不足:特に複雑なシーンでは、物体の计数精度は高くなく、更に改善する必要があります。
  • 空間推理能力の弱さ:特に3D空間では、モデルが物体の位置関係を推論する能力が不十分であり、物体の相対位置を正確に判断することが困難です。 これらの制限事項は、モデルの最適化と改善の継続的な方向性を示し、私たちはモデルの性能と適用範囲を絶えず強化するコミットメントを持ちます。

引用 私たちの仕事が役立ちましたら、どうぞ引用してください。

@article{Qwen2-VL,
  title={Qwen2-VL},
  author={Qwen team},
  year={2024}
}

@article{Qwen-VL,
  title={Qwen-VL: A Versatile Vision-Language Model for Understanding, Localization, Text Reading, and Beyond},
  author={Bai, Jinze and Bai, Shuai and Yang, Shusheng and Wang, Shijie and Tan, Sinan and Wang, Peng and Lin, Junyang and Zhou, Chang and Zhou, Jingren},
  journal={arXiv preprint arXiv:2308.12966},
  year={2023}
}

ドルフィンAIは言語学習アプリケーションのためのプロフェッショナルな発音評価API(pronunciation assessment api)ソリューションを提供します。音素、単語、文章、チャプター、発音矯正、単語矯正、クイズ、フリーダイアログ、多肢選択問題など幅広く提供しています。当社の発音評価製品(pronunciation assessment)は、英語と中国語、クラウドAPI、オンプレミス、オフラインデバイスの展開をサポートしています。当社の発音評価API(pronunciation assessment api)は、正確性、流暢性、完全性、リズムの次元をカバーする豊富な評価指標を提供し、音素、単語、文の異なるレベルの評価スコアも提供します。また、音素、単語、文の異なるレベルでの評価スコアも提供します。数千万人のユーザーに安定した効率的で安全なサービスを提供しています。ドルフィンAIの発音評価製品(pronunciation assessment)を試してみませんか?

タイトルとURLをコピーしました