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 帧一起标记化。
视觉语言模型 (VLM) 通常面临以下挑战:
- 以固定分辨率对输入图像进行编码
- 使用 CLIP 作为视觉编码器
Qwen2-VL 通过以下方式解决这些问题:
- 按原样处理输入分辨率,使用 RoPE 嵌入位置信息
- 使用视觉变换器 (ViT) 作为视觉编码器并使其可训练
这些改进提高了模型的准确性。
Qwen2-VL 训练过程如下:
- 第一阶段涉及训练 ViT
- 第二阶段训练所有参数,包括 LLM 的参数
- 在最后阶段,冻结 ViT 参数,并使用指令数据集执行指令调整
在预训练期间,使用了 6000 亿个标记。LLM 使用 Qwen2 参数初始化。在第二阶段,将处理另外 8000 亿个与图像相关的标记,使总数达到 1.4 万亿个标记。
2、性能
Qwen2-VL-72B 在性能方面优于 GPT-4o。
下图是 2B、7B 和 72B 模型的性能比较。虽然 72B 模型提供了最高的准确率,但 2B 模型也表现出了扎实的性能。
Qwen2-VL-2B 是最高效的模型,为大多数场景提供了足够的性能。7B 模型显著增强了文本识别和视频理解能力。72B 模型进一步提高了指令遵循、决策和代理相关能力。
Vision Encoder 的参数数量固定为 675M,无论模型大小如何都能确保较高的图像识别性能。因此,即使使用 2B 模型,OCR 等任务也可以获得高性能。
3、提示模板
Qwen2-VL 使用特殊标记(例如 <|vision_start|>
和 <|vision_end|>
)进行与视觉相关的输入。在对话中使用 <|im_start|>
。对于编码边界框,使用 <|box_start|>
和 <|box_end|>
。要将边界框与标题链接起来,使用 <|object_ref_start|>
和 <|object_ref_end|>
。
这是运行示例时使用的提示。 <|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 查询图像的示例。
描述此图像。
该图像描绘了一个宁静的海滩场景,其中有一个女人和一只狗。女人坐在沙滩上,穿着格子衬衫和黑色裤子,似乎在微笑。她正在与坐在她旁边沙滩上的狗击掌。这只狗穿着彩色背带,似乎在摇尾巴。背景是海浪轻柔的海洋,天空晴朗,散发着柔和的光芒,暗示着日出或日落。整体氛围平静而愉悦。
7、应用
一个名为 ColQwen2 的应用程序,可以利用 Qwen2-VL Vision Encoder 输出的投影特征来执行基于 PDF 的检索增强生成 (RAG)。用户可以使用 Qwen2-VL 提示询问相关页面上的图像以获得答案。
传统的 RAG 以基于文本的方式处理所有内容,这使得处理图表和示意图变得具有挑战性。但是,通过使用 ColPali,它利用 Qwen2-VL 来处理基于图像的所有内容,可以有效地解决这个问题。
原文链接:Qwen2-VL: A Vision Language Model That Runs Locally
汇智网翻译整理,转载请标明出处