当前位置: 首页 > news >正文

Qwen 2.5 VL多模态模型的应用

阿里巴巴的Qwen 2.5 VL大模型是通义千问团队推出的开源多模态视觉语言模型,以强大的视觉理解、视频解析和跨模态推理能力为核心突破,被业界认为是目前最先进的开源多模态算法之一。

Qwen 2.5 VL采用​​三模块架构​​:

  1. 大语言模型(LLM)​​:基于Qwen2.5语言模型预训练权重,引入多模态旋转位置编码(MRoPE)对齐时间、空间与文本模态。
  2. ​视觉编码器(ViT)​​:重新设计的动态分辨率ViT,支持原生分辨率输入,通过窗口注意力机制(最大窗口112×112)和二维旋转位置编码(2D-RoPE)降低计算复杂度,同时保持空间感知精度。
  3. 视觉-语言融合模块​​:采用多层感知机(MLP)压缩视觉特征序列,提升与LLM的交互效率。

其​创新技术​​包括:

  1. ​动态帧率(FPS)训练与绝对时间编码​​:通过时间戳对齐实现长视频理解(支持1小时以上)和秒级事件定位
  2. ​结构化输出设计​​:生成JSON格式的坐标、属性数据,以及QwenVL HTML格式的文档版面还原
  3. ​设备操作能力​​:无需微调即可控制电脑、手机完成多步骤任务(如订机票、修图) 

下面介绍一下如何使用VL模型进行图像识别和视频识别。在HF-Mirror.com网站中下载Qwen2.5-VL-7B-Instruct-AWQ的权重,这是7B参数量的量化版本,可以在我的3090显卡上运行。以下代码是加载模型

from transformers import Qwen2_5_VLForConditionalGeneration, AutoTokenizer, AutoProcessor
from qwen_vl_utils import process_vision_info
import torch
import base64
import os
import cv2
import matplotlib.pyplot as pltmodel = Qwen2_5_VLForConditionalGeneration.from_pretrained("Qwen2.5-VL-7B-Instruct-AWQ",torch_dtype=torch.float16,attn_implementation="flash_attention_2",device_map="auto",
)processor = AutoProcessor.from_pretrained("Qwen2.5-VL-7B-Instruct-AWQ")

首先是对图像进行识别,例如选取以下的图片

img = cv2.imread('./1.jpg')
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img_rgb)
plt.axis('off') # 不显示坐标轴
plt.show()

图片显示如下:

对图像进行描述,如以下代码

messages = [{"role": "user","content": [{"type": "image","image": "./1.jpg",},{"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)

最后输出的描述信息如下:

这张图片展示了一位穿着蓝色衬衫和深色领带的男子。他双手握拳,表情非常激动,似乎在庆祝或表达强烈的情感。背景是深灰色的,突出了人物的形象。

可以看到对于图像的描述非常准确。

下面是对视频进行描述,代码如下:

video = './test.mp4'
question = '描述一下视频的情节'messages = [{"role": "user","content": [{"type": "video","video": video,},{"type": "text", "text": question},],}
]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)

最后输出的内容如下:

这段视频展示了一系列紧张且充满戏剧性的场景,主要围绕着一个小镇的污染事件展开。以下是情节的详细描述:

1. **办公室内的对话**:

 - 视频开始于一个办公室内,两位男性角色正在激烈地讨论。一位穿着深色夹克的男子显得非常焦虑和愤怒,另一位则戴着眼镜,表情严肃。

- 对话中提到“一个乡的老百姓让你当书记”,暗示了角色之间的权力关系和责任。

2. **审讯般的怒吼**:

- 画面切换到一个会议室,其中一位角色被要求回答问题。

以上就是VL模型的使用方法。 

相关文章:

  • 力扣——20有效的括号
  • 10、属性和数据处理---c++17
  • PCB设计工艺规范(二)基本布局要求
  • 虚拟机centos7安装docker
  • 第 12 届蓝桥杯 C++ 青少组中 / 高级组省赛 2021 年 4 月 24 日真题
  • 深入掌握CSS背景图片:从基础到实战
  • hadoop集群建立
  • git 怎样把本地仓库推送到新建的远程仓库
  • Map系列之ConcurrentHashMap源码分析:高并发场景下的性能密码
  • DirectX12(D3D12)基础教程七 深度模板视图\剔除\谓词
  • 【Scrapy】简单项目实战--爬取dangdang图书信息
  • Java泛型(补档)
  • 2025华东杯B题华东杯数学建模思路代码成品讲解工序安排问题
  • Learning vtkjs之ImageMarchingSquares
  • 在Java中使用Files类的copy()方法复制文件的示例
  • Ubuntu20.04安装NVIDIA Warp
  • 【数据结构】——顺序表刷题
  • Linux远程管理
  • WPACS基于HTML5的DICOM影像浏览
  • 92.一个简单的输入与显示示例 Maui例子 C#例子
  • 见证历史与未来共舞:上海西岸“蝶变共生”对话讲坛圆满举行
  • 铁路上海站迎五一假期客流最高峰,今日预计发送77万人次
  • 美国第一季度经济环比萎缩0.3%
  • 浙商银行外部监事高强无法履职:已被查,曾任建行浙江省分行行长
  • 人社部:一季度全国城镇新增就业308万人,同比增加5万人
  • 直播电商行业代表呼吁:携手并肩伸出援手助力外贸企业攻坚克难