多模态大模型系列 | 18:Qwen2-VL(最新版)解读及其实战(精炼版)

大模型机器学习数据库
  • 引言
  • 简介
  • 方法
  • 实验结果
  • 实战
  • 代码
  • 任务1:检测
  • 任务2:图片理解
  • 总结
  1. 引言 =======

梅子金黄杏子肥,麦花雪白菜花稀。

日长篱落无人过,惟有蜻蜓蛱蝶飞。

picture.image

小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖热干面的小女孩。紧接前文:多模态大模型系列:Qwen-VL解读及其实战,今天这篇小作文主要介绍阿里在2024年9月份发布的视觉语言模型:Qwen2-VL。

  1. 简介 =======

这篇论文介绍了Qwen2-VL系列模型,是对之前Qwen-VL模型的重大升级。主要创新点在于引入了朴素动态分辨率机制多模态旋转位置 嵌入(M-RoPE)

Q1: 这篇文章想要解决什么问题?

A1: 主要解决两个核心问题:

  1. 现有大规模视觉语言模型(LVLMs)受限于固定的图像输入尺寸,难以有效处理不同分辨率的图像
  2. 现有模型在处理视频等动态内容时,位置编码方式过于简单,难以有效建模三维空间和时间动态信息

Q2: 这篇文章如何解决这些问题?

A2: 提出了两个关键创新:

  1. 朴素动态分辨率机制:可以将不同分辨率的图像动态处理为不同数量的视觉tokens
  2. 多模态旋转位置嵌入(M-RoPE):将位置编码分解为时间、高度和宽度三个组件,更好地建模多模态输入的位置信息

Q3: 文章所提出方法的效果如何?

A3: 在多个基准测试中取得了领先成绩:

  1. 在DocVQA、InfoVQA等文档理解任务上达到SOTA
  2. 在多语言OCR方面超越了包括GPT-4在内的所有现有LVLMs
  3. 72B版本在多个视觉问答基准上与GPT-4和Claude3.5-Sonnet等领先模型相当或更优

Q4: 文章所提方法还有哪些不足?

A4: 主要存在以下局限:

  1. 在MMMU基准测试中仍略逊于GPT-4,说明在处理复杂问题时还有提升空间
  2. 对于长视频的处理受限于序列长度限制,未来需要进一步扩展模型以支持更长序列
  3. 在视觉语言导航(VLN)任务中显著落后于专用模型,说明在3D环境建模方面仍有挑战

更多大模型相关欢迎留意本 微信公众号《小窗幽记机器学习》

论文地址:https://arxiv.org/abs/2409.12191

Github地址:https://github.com/QwenLM/Qwen2-VL

模型(2B、7B、72B)下载:https://huggingface.co/collections/Qwen/qwen2-vl-66cee7455501d7126940800d

  1. 方法 =======

Qwen2-VL的核心创新包括:

  1. 朴素动态分辨率机制
  • 移除了原有的绝对位置嵌入
  • 引入2D-RoPE捕获图像二维位置信息
  • 动态将不同分辨率图像转换为可变数量的视觉tokens
  1. 多模态旋转位置嵌入(M-RoPE)
  • 将位置编码分解为时间、高度和宽度三个组件
  • 可以同时处理文本、图像和视频的位置信息
  • 降低了图像和视频的位置ID值,支持更长序列外推
  1. 统一的图像和视频处理范式
  • 混合训练方案同时整合图像和视频数据
  • 使用深度为2的3D卷积处理视频输入
  • 动态调整视频帧分辨率以平衡性能和效率
  1. 实验结果 =========

  2. 通用视觉问答

  • 在RealWorldQA上得分77.8,超过GPT-4o(75.4)
  • 在MMVet上得分74.0,大幅领先GPT-4V(67.5)
  • 在MMT-Bench上得分71.7,显著超过此前最佳成绩(63.4)
  1. 文档和图表理解
  • 在DocVQA、InfoVQA等多个指标上达到SOTA
  • 在OCR和公式识别方面表现优异
  • 特别在多语言OCR方面超越所有现有LVLMs
  1. 数学推理能力
  • MathVista上达到70.5分,超越其他LVLMs
  • MathVision上创造25.9分的开源基准新纪录
  1. 视频理解
  • 在MVBench、PerceptionTest等基准上取得最佳性能
  • 能处理长达20分钟以上的视频
  • 但在处理超长视频时受限于序列长度限制
  1. 视觉代理能力
  • 函数调用方面优于GPT-4o
  • UI操作任务中超越了GPT-4和之前的SOTA
  • 在机器人控制任务ALFRED上略优于专用模型ThinkBot
  1. 实战 =======

代码


        
          
import os  
from PIL import Image  
import requests  
import torch  
from torchvision import io  
from typing import Dict  
from transformers import Qwen2VLForConditionalGeneration, AutoTokenizer, AutoProcessor  
  
# Load the model in half-precision on the available device(s)  
model_dir = "/data/download\_models/"  
model_id = "Qwen/Qwen2-VL-2B-Instruct"  
model_path = os.path.join(model_dir, model_id)  
model = Qwen2VLForConditionalGeneration.from_pretrained(  
    "", torch_dtype="auto", device_map="auto"  
)  
processor = AutoProcessor.from_pretrained("Qwen/Qwen2-VL-2B-Instruct")  
  
# Image  
url = "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg"  
image = Image.open(requests.get(url, stream=True).raw)  
  
conversation = [  
    {  
        "role": "user",  
        "content": [  
            {  
                "type": "image",  
            },  
            {"type": "text", "text": "Describe this image."},  
        ],  
    }  
]  
  
  
# Preprocess the inputs  
text_prompt = processor.apply_chat_template(conversation, add_generation_prompt=True)  
# Excepted output: '<|im\_start|>system\nYou are a helpful assistant.<|im\_end|>\n<|im\_start|>user\n<|vision\_start|><|image\_pad|><|vision\_end|>Describe this image.<|im\_end|>\n<|im\_start|>assistant\n'  
  
inputs = processor(  
    text=[text_prompt], images=[image], padding=True, return_tensors="pt"  
)  
inputs = inputs.to("cuda")  
  
# Inference: Generation of the output  
output_ids = model.generate(**inputs, max_new_tokens=128)  
generated_ids = [  
    output_ids[len(input_ids) :]  
    for input_ids, output_ids in zip(inputs.input_ids, output_ids)  
]  
output_text = processor.batch_decode(  
    generated_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True  
)  
print(output_text)  

      

任务1:检测

以美团外卖截图 搜索框识别 为例。Qwen2-VL-2B-Instruct:无法探测出(结果为空)。Qwen2-VL-7B-Instruct,识别结果如下(可以正确检测出):

picture.image

任务2:图片理解

待生成文案的图片:

picture.image

用Qwen2-VL-Max生成朋友圈文案结果如下:


        
          
夜空繁星点点,麦浪轻拂心田。  
“月上柳梢头,人约黄昏后。”  
在这宁静的夜晚,愿你我都能找到心中的那份宁静与美好。  

      
  1. 总结 =======

Qwen2-VL的主要贡献:

  1. 提出了朴素动态分辨率机制,有效解决了固定分辨率的限制
  2. 设计了多模态旋转位置嵌入(M-RoPE),更好地建模多模态位置信息
  3. 实现了统一的图像和视频处理范式,增强了模型的通用性
  4. 在多个基准测试中达到或超越SOTA水平

未来可改进的方向:

  1. 扩展模型以支持更长序列,以便更好地处理长视频内容
  2. 改进3D环境建模能力,提升视觉语言导航等任务的表现
  3. 增强处理复杂推理问题的能力,缩小与GPT-4在MMMU等基准上的差距
  4. 进一步优化动态分辨率机制,在保持性能的同时提高计算效率
  5. 探索更有效的视频帧采样和处理策略,平衡性能和资源消耗

总的来说,Qwen2-VL通过创新的技术方案显著提升了多模态处理能力,为大规模视觉语言模型的发展提供了新的思路。虽然在某些具体任务上还有提升空间,但其整体表现已经达到了业界领先水平。

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论