Qwen2-VL 本地运行教程

这是对「Qwen2-VL」的介绍,这是一种可以与 ailia SDK 一起使用的机器学习模型。你可以轻松使用此模型通过 ailia SDK 以及许多其他现成的 ailia 模型创建 AI 应用程序。

1、概述

Qwen2-VL 是阿里巴巴于 2024 年 10 月发布的视觉语言模型。它提供三种模型大小:2B、7B 和 72B,并允许用户使用文本询问有关图像的问题,类似于 GPT-4 视觉 API。

Qwen2-VL的潜在应用包括多语言图像文本理解、代码/数学推理、视频分析、实时聊天和代理。

以前,LLAVA 通常用作此类任务的开源解决方案。但是,它有一定的局限性,例如其最小模型相对较大,为 7B,并且不支持某些语言,例如日语。Qwen2-VL 通过提供 2B 模型大小和对日语的支持来解决这些问题。

1、架构

在 Qwen2-VL 中,输入图像被标记化并与提示文本组合,然后使用视觉编码器转换为潜在表示,然后输入到 QwenLM 解码器中。它还支持视频,最多可以将 30 帧一起标记化。

Source: https://github.com/QwenLM/Qwen2-VL

视觉语言模型 (VLM) 通常面临以下挑战:

  • 以固定分辨率对输入图像进行编码
  • 使用 CLIP 作为视觉编码器

Qwen2-VL 通过以下方式解决这些问题:

  • 按原样处理输入分辨率,使用 RoPE 嵌入位置信息
  • 使用视觉变换器 (ViT) 作为视觉编码器并使其可训练

这些改进提高了模型的准确性。

Qwen2-VL 训练过程如下:

  • 第一阶段涉及训练 ViT
  • 第二阶段训练所有参数,包括 LLM 的参数
  • 在最后阶段,冻结 ViT 参数,并使用指令数据集执行指令调整

在预训练期间,使用了 6000 亿个标记。LLM 使用 Qwen2 参数初始化。在第二阶段,将处理另外 8000 亿个与图像相关的标记,使总数达到 1.4 万亿个标记。

2、性能

Qwen2-VL-72B 在性能方面优于 GPT-4o。

来源:https://github.com/QwenLM/Qwen2-VL

下图是 2B、7B 和 72B 模型的性能比较。虽然 72B 模型提供了最高的准确率,但 2B 模型也表现出了扎实的性能。

来源:https://github.com/QwenLM/Qwen2-VL

Qwen2-VL-2B 是最高效的模型,为大多数场景提供了足够的性能。7B 模型显著增强了文本识别和视频理解能力。72B 模型进一步提高了指令遵循、决策和代理相关能力。

Vision Encoder 的参数数量固定为 675M,无论模型大小如何都能确保较高的图像识别性能。因此,即使使用 2B 模型,OCR 等任务也可以获得高性能。

来源:https://github.com/QwenLM/Qwen2-VL

3、提示模板

Qwen2-VL 使用特殊标记(例如 <|vision_start|><|vision_end|>)进行与视觉相关的输入。在对话中使用 <|im_start|>。对于编码边界框,使用 <|box_start|><|box_end|>。要将边界框与标题链接起来,使用 <|object_ref_start|><|object_ref_end|>

来源:https://github.com/QwenLM/Qwen2-VL

这是运行示例时使用的提示。 <|image_pad|> 被图像的标记值替换并提供给视觉编码器。

<|im_start|>system
You are a helpful assistant.<|im_end|>
<|im_start|>user
<|vision_start|><|image_pad|><|vision_end|>Describe this image.<|im_end|>
<|im_start|>assistant

当输入标记的大小为  (1, 913) 时,Vision Encoder 的输出将为 (1, 913, 1536)。然后,此输出将输入到 QwenLM Decoder 中以生成文本。

4、分词器

Qwen2-VL 使用 Qwen2Tokenizer 作为其标记器。 Qwen2Tokenizer 兼容并采用与 GPT2Tokenizer 相同的基于 BPE 的方法。

5、用法

要使用 ailia SDK(版本 1.5 或更高版本)运行 Qwen2-VL,请使用以下命令。2B 模型的大小为 10GB(FP32),并且提示中也可以使用日语。

$ python3 qwen2_vl.py --input demo.jpeg --prompt "Describe this image."

在 M2 Mac CPU 上运行推理时,图像嵌入(1024x683 分辨率)大约需要 23 秒,文本生成大约需要 42 秒。图像嵌入的处理时间取决于图像分辨率,而文本生成时间受分辨率的影响较小。

ONNX 模型的精简 FP16 版本也可用。使用 FP16 版本时,请包含 -fp16 选项。

$ python3 qwen2_vl.py --input demo.jpeg --prompt "Describe this image." --fp16

Qwen2-VL 目前无法与 llama.cpp 配合使用,但正在问题 #9426 中解决此问题。

6、输出示例

以下是使用 Qwen2-VL 查询图像的示例。

来源:https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg
描述此图像。
该图像描绘了一个宁静的海滩场景,其中有一个女人和一只狗。女人坐在沙滩上,穿着格子衬衫和黑色裤子,似乎在微笑。她正在与坐在她旁边沙滩上的狗击掌。这只狗穿着彩色背带,似乎在摇尾巴。背景是海浪轻柔的海洋,天空晴朗,散发着柔和的光芒,暗示着日出或日落。整体氛围平静而愉悦。

7、应用

一个名为 ColQwen2 的应用程序,可以利用 Qwen2-VL Vision Encoder 输出的投影特征来执行基于 PDF 的检索增强生成 (RAG)。用户可以使用 Qwen2-VL 提示询问相关页面上的图像以获得答案。

传统的 RAG 以基于文本的方式处理所有内容,这使得处理图表和示意图变得具有挑战性。但是,通过使用 ColPali,它利用 Qwen2-VL 来处理基于图像的所有内容,可以有效地解决这个问题。

来源:https://huggingface.co/vidore/colqwen2-v0.1

原文链接:Qwen2-VL: A Vision Language Model That Runs Locally

汇智网翻译整理,转载请标明出处