当前位置: 首页 > 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模型的使用方法。 

http://www.xdnf.cn/news/232309.html

相关文章:

  • VS Code 插件Git History Diff 使用
  • 【java】输入
  • Windows11安装Docker
  • git分支分叉强制更改为线性
  • 美团优选小程序 mtgsig 分析 mtgsig1.2
  • C++语法系列之前言
  • 三轴云台之摄像模组篇
  • el-tabs与table样式冲突导致高度失效问题解决(vue2+elementui)
  • Maven插件学习(五)—— 将项目构建生成的 OSGi Bundles(或 Features)发布到一个 P2 仓库
  • Nginx核心
  • VMware Workstation 创建虚拟机并安装 Ubuntu 系统 的详细步骤指南
  • C++后端服务器开发:侵入式与非侵入式程序结构解析
  • 鸿蒙 应用开发 项目资源结构及资源访问
  • AI重构家居营销新范式:DeepSeek如何破解行业流量与转化困局?
  • 大模型优化利器:RLHF之PPO、DPO
  • 深入掌握CSS背景图片:从基础到实战
  • 深入探讨Facebook隐私政策的演变
  • 运维仙途 第2章 日志深渊识异常
  • 【Linux调整FTP端口】
  • 软件分析师-第三遍-章节导图-15
  • 量化交易之数学与统计学基础2.4——线性代数与矩阵运算 | 矩阵分解
  • 数据结构每日一题day14(链表)★★★★★
  • 读论文笔记-LLaVA:Visual Instruction Tuning
  • 中央网信办部署开展“清朗·整治AI技术滥用”专项行动
  • 网络基础-----C语言经典题目(12)
  • ActiveMQ 可靠性保障:消息确认与重发机制(一)
  • [实战] Petalinux驱动开发以及代码框架解读
  • Mac下安装Python3,并配置环境变量设置为默认
  • 深度学习论文: Describe Anything: Detailed Localized Image and Video Captioning
  • 分组密码算法ShengLooog设计原理详解