Qwen多模态系列模型笔记—Qwen2-VL

news/2025/10/14 21:32:29/文章来源:https://www.cnblogs.com/wolfling/p/19142071

方法

Qwen2-VL系列包含三种体量的模型,分别是Qwen2-VL-2B, Qwen2-VL-7B, Qwen2-VL-72B。表1列举出这些模型的超参数和重要信息。值得注意的是,这三个模型视觉编码器始终都采用675M参数量的ViT,没有因模型而改变。此举是为了确保ViT部分的计算量保持常量,没有因为采用更大体量的LLM,ViT也采用更多参数量。

模型结构

图2展示了Qwen2-VL模型的完整的结构图。由视觉编码器、大语言模型这两部分构成。

Qwen2-VL模型没有像之前大多数的VL模型,采用视觉-语言适配器,而是丢弃掉这个模块。为什么Qwen2-VL采用这种做法呢?

除了采用更强大的Qwen2系列语言模型,论文还通过如下几个方面升级来进一步增强对图像和视频的感知和理解能力。

动态分辨率 Qwen2-VL模型的一项关键改进就是引入了动态分辨率支持。不同于Qwen-VL将图片先预处理为固定尺寸x再提取特征,Qwen2-VL能处理任意分辨率的图像,动态地将图片转换为不同数量的视觉token。为了实现这个功能,不再采用原始的绝对位置编码,而采用2D-RoPE来获取图像的两个维度上的位置信息。在推理过程中,不同分辨率的图像提取完特征后要再打包为一个特征序列,当然特征序列的长度不能无限长,取决于GPU内存大小。为了更进一步减少图片的视觉token数量,使用一个简单的MLP层将相邻的2x2 tokens压缩为一个token。并在压缩后的视觉token序列前后分别添加2个特殊的token:<|vision_start|>,<|vision_end|> 已标记视觉token的位置。比如224x224分辨率的图片,patch_size=14的情况下,如果不压缩将产生16x16=256个token,经过压缩后就变成了64个token,如果再添加上用于视觉标识的2个特征token,这样最终就是66个token了。

疑问:VIT提取视觉特征是一个token序列,已经失去了图像原有的二维空间几何关系,怎么这里是使用MLP层将相邻的2x2 tokens压缩为1个token呢? 原始VIT论文是将图像切分按patch_size 不重叠地切分\(N=\frac{HW}{patch_size^2}\)个图像块,每个图像块映射为一个长度为D维的特征向量,并将这些特征向量按照对应图像块从上到下从左到右序列排列。然后得到N个特征向量,这N个特征向量添加位置编码特征,再经过transfomer结构得到最终的特征序列。这个token序列在序列中的位置,其实是隐含了刚才patch块二维空间位置信息,通过reshape就可以将token序列变成形式上的二维。这样就可以使用MLP层将2x2 tokens压缩为1个token。

M-RoPE 多模态旋转位置编码(M-RoPE)是另一项关键的架构改进。与传统大语言模型中仅能编码一维位置信息的1D-RoPE不同,M-RoPE能够有效建模多模态输入的位置信息。其实现方式是将原始的旋转位置编码分解为三个组成部分:时间维度(temporal)、高度维度(height)和宽度维度(width)。对于文本输入,这三个组成部分使用相同的位置ID,使得M-RoPE在功能上等价于1D-RoPE。在处理图像时,每个视觉token的时间维度ID保持不变,而高度和宽度维度则根据该token在图像中的空间位置分别赋予不同的ID。对于视频(被视为帧序列),时间维度ID随每一帧递增,而高度和宽度维度的ID分配方式则与图像处理相同。当模型输入包含多种模态时,每种模态的位置编号从上一种模态的最大位置ID加一后开始初始化。图3展示了M-RoPE的示意图。M-RoPE不仅增强了对位置信息的建模能力,还降低了图像和视频所对应的位置ID数值,从而使模型在推理阶段能够更好地外推至更长的序列。 如图3所示。

统一图像和视频理解 Qwen2-VL采用了融合图像和视频数据的混合训练策略,以确保模型在图像理解和视频理解方面都具有出色的能力。为了尽可能保留完整的视频信息,每个视频每秒采样2帧。另外使用2层的3D卷积来预处理视频输入,使得模型能够处理3D数据,同时也可以处理更多的视频帧而不增加token序列长度。为了保持一致性,每张图片看作是2个相同的帧参与计算。为了平衡长视频处理的计算开销和整个训练效率,训练过程中动态调整视频的尺寸,限制视频的总token数量不超过16384。

训练

Qwen2-VL训练与Qwen-VL三阶段训练保持一致,具体参考Qwen多模态系列模型笔记—Qwen-VL

Qwen-VL中关于训练集构成进行了详细说明,而Qwen2-VL论文则没有详细说明其构成,仅定性描述了一下。从论文零散的地方可以看出不同于Qwen-VL的部分。

  • Qwen2-VL相比Qwen-VL增加对视频的分析理解能力,数据集必然包括视频为中心的数据
  • 引言中提到了,Qwen2-VL定位服务全球,不仅限于中文和英文。数据集扩充多语种数据,包括大多数欧洲语言、日文、韩文、阿拉伯文、越南文等。
  • 从表1中,Qwen2-VL-7B显著提升了OCR识别能力。由此推测Qwen2-VL扩充了OCR识别相关数据集。但这种能力提升也可能是采取动态分辨率带来的,不像Qwen-VL采用固定低分辨448x448。尤其是整页包含大量文本/公式这样大图片,采用动态分辨率方式能有效降低采取固定分辨率带来的损失。

数据格式

与Qwen-VL一样,仍然需要对图像视频、坐标、文本中指代这些使用特殊标记它们的开始和结束,但是具体的标识符改变了。

模型 图像标识符 视频标识符 坐标框标识符 指代标识符 对话标识符
Qwen-VL <img>, <\img> / <box>, <\box> <ref>, <\ref> <im_start>,<im_end>
Qwen2-VL <|vision_start|>,<|vision_end|> <|vision_start|>,<|vision_end|> <|box_start|>,<|box_end|> <|object_ref_start|>,<|object_ref_end|> <|im_start|>,<|im_end|>

消融实验

动态分辨率 论文对动态分辨率和固定分辨率的性能进行了对比。这里提到的固定分辨率并不是像Qwen-VL那样将输入图片尺寸调整为固定的224x224或者448x448尺寸,而是调整图像的尺度以便经过VIT后得到固定长度的token序列。这种方式就不会破坏原始图像的纵横比参考Table7。可以看到图像特征序列长度有64,576,1600,3136这4种,这4种长度,如果是方图,则依次对应224x224, 672x672, 1120x1120, 1568x1568这4种图像分辨率。可以看出随着图像特征序列长度增加,在InfoVQA, REalWorldQA, OCRBench这3个测试集上,指标值有明显提升。说明了输入较大尺寸的图片,是可以达到更好的模型指标。而采用动态分辨率技术,使得使用平均较短的特征序列能达到采用更大输出尺寸相当的模型指标。这表明了动态分辨率技术具有更大的优势,相当的模型指标下,计算量更小。

动态分辨率模式下,设置了最小和最大像素数量。\(min pixels=100 \times 28 \times 28\), \(max pixels=16384 \times 28 \times 28\),如果是方形图像,那么就对应着 \(280 \times 280\), \(3584 \times 3584\) 这两个分辨率。大多数图片像素总量也都落在这个范围了,这也是为什么如此设置的原因。图4列出了,最小图片像素对模型性能的影响。可以看出将最小图片像素阈值逐渐增大,并没有显著地提升模型的性能。这说明了小尺寸的图片没有必要上采样更大的尺寸,原始是小尺寸图片就采用原始的分辨率进行后续VIT特征提取,也能达到较好的模型性能。最终验证了动态分辨率方案的优越性。

关于Qwen2-VL能处理视频长度的问题。下面4段是论文原话,第1段说可以处理20分钟即1200秒左右的视频;第2段说每秒提取2帧,那么推理得到可以Qwen2-VL可以处理最大2400帧。第3,4段限制视频最大token数量是16384,而Qwen2-VL处理单张最小的图片得到100个token,那么最多是163帧。这样就产生了矛盾,163帧 vs 2400帧,无法处理20分钟的视频。猜测:如果要处理这么长的视频,就不能采用每秒采样2帧,而是每隔几秒种采样一帧才能实现。比如24分钟分辨率280x280的视频,每隔12秒采样一帧,那么总的视频token数量就是\(\frac{24 \times 60 \times 100}{12}=12000\),没有超过16384.

Comprehension of extended-duration videos (20 min+): Qwen2-VL is capable of understanding videos over 20 minutes in length, enhancing its ability to perform high-quality video-based question answering, dialogue, content creation, and more.

To preserve video information as completely as possible, we sampled each video at two frames per second.

For consistency, each image is treated as two identical frames. To balance the computational demands of long video processing with overall training efficiency, we dynamically adjust the resolution of each video frame, limiting the total number of tokens per video to 16384.

For dynamic resolution, we only set min_pixels= 100 × 28 × 28 and max_pixels= 16384 × 28 × 28, allowing the number of image tokens depend primarily on the image's native resolution.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/937109.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s Service Nodeport 用于集群外部访问

k8s Service Nodeport 用于集群外部访问 热爱孤独生活

WPF 调用 ChangeWindowMessageFilterEx 修改指定窗口 (UIPI) 消息筛选器的用户界面特权隔离

一、回顾 上一篇博客:记录一下 WPF进程 SendMessage 发送窗口消息进行进程间通信,存在进程权限无法接受消息的问题 - wuty007 - 博客园 说到了 发送端是普通权限的窗体 给 接收端是 管理员权限的窗体,通过 Win32 A…

机器学习比赛

机器学习比赛基本上来就用sklearn的随机森林, 和xgboost库. 2个算法先跑一下.基本能拿到一个能看的结果. 速度都很快. 基本30秒内跑完. 然后再考虑其他的特征工程, 深度学习等等..

牙科诊所借力AI营销4个月创收13万

一个叫Jordan的牙科营销老板用AI在4个月里赚了13万。我来说说他具体怎么做的。 Jordan发现一个问题:英国90%的牙科诊所还在用老旧的预约系统,效率很低。他决定用AI来解决这个问题。 📌 他的做法搭建AI预约系统• 以…

10月14日日记

1.今天上午进行工程实训课程,下午学习英语视听说 2.明天学习离散数学 3.只知道把代码用try-catch包起来,但不清楚应该捕获什么异常,什么时候该抛出(throws),什么时候该处理。搞清楚Error和Exception的区别,Runt…

P4653 [CEOI 2017] Sure Bet

题目描述 现在有 n 个A类灯泡和 n 个B类灯泡,每个灯泡都有各自的权值。 我们将这些灯泡分为 n 组,每组包含一个来自A类的灯泡和一个来自B类的灯泡。 你可以从中选取任意个灯泡,每选取一个灯泡需要花费 1 的代价。 在…

PHP虚拟主机测试页面

<?php /*** PHP 虚拟主机测试页面* 说明:用于测试 PHP 是否正常工作及查看服务器基本信息*/// 设置页面编码 header("Content-Type: text/html; charset=utf-8"); ?> <!DOCTYPE html> <ht…

利用脉冲位宽调制技术和一级滤波电路实现正弦波输出

利用PWM和RC滤波电路输出正弦波 1、初始化硬件 (1)时钟使能RCC,选择外部高速晶振将HCLK配置为最大的84MHz(2)PWM使能TIM1,将PWM设为20KHz,将死区设置为25ns注意:为防止开关不同步导致的短路,需要设置“死区”PWM频…

20251014

今天真是充实的一天!线上工程实训的自学过程十分顺畅,让我轻松掌握了不少知识。理发店的体验也很愉快,发型整理后感觉焕然一新。英语课的学习让我的语言能力有所提升,而晚上的离散数学作业完成得也相当顺利。这一天…

歌词本。 - Slayer

10000h、holy、loveyourself10,000 Hours Do you love the rain does it make you dance When youre drunk with your friends at a party Whats your favorite song does it make you smile Do you think of me When …

使用 Docker 快速搭建 MinIO 文件存储服务

在日常开发中,我们经常需要处理文件上传、下载、存储与访问的场景,比如图片、视频、日志文件、模型数据集等。传统的文件系统难以满足高并发、分布式部署以及云原生化的需求。而 MinIO 作为一款高性能、轻量级、兼容…

2025.10.14 正睿二十连测

正睿二十连测 B 赛场上花了 \(40min\) 写了个暴力。赛后看题解 \(20min\) + 写 \(30min\)。 有多少个长度为 \(n\) 排列,使得 \(x(n - x + 1) \le m\) (\(x\) 为 \(n\) 的位置),答案对 \(p\) 取模。 令 \(f_n\) 表…

singleton_pattern

什么是懒汉单例模式(程序在使用的时候才会构造这个类) 什么是饿汉单例模式(程序启动的时候就构造了这个类) 程序内只存在一个这样的类,不需要重复构造,避免浪费,如读取外部文件,只需一次读取,全局使用。 单例…

20251014周二日记

20251014周二日记今日: 1.上午拿麦当劳去实验室,吃早点开会,写财报。 2.中午不饿没吃,下午上课继续改财报,还要算题。顺便帮忙问问下一届考研的教材问题。 3.晚上和研二师哥师姐一起吃了饭,回实验室学下面的那些…

ai出题

江苏海洋大学考研(340 & 808)思维导图说明:此思维导图以两门自命题大纲为中心,分解为主题 → 子主题 → 关键考点,便于记忆与复习。总览340:鱼类增养殖学 / 鱼类育种学 / 水产动物营养与饲料学(重点:生态养…

Python的Numpy、Pandas和Matplotlib(随笔)

Python--Numpy import numpy as np 1、扩展程序库(维度数组与矩阵运算、针对数组运算提供大量的数学函数库) 2、N维数组对象对象:ndarray(别名array,用于存放同类型元素的多维数组 ,以 0 下标为开始进行集合中元…

财务怎样做到业财融合 - 智慧园区

1. 财务端思维转变 ✅跳出传统账本思维模式:财务人员别只盯着记账、算数据,要多琢磨业务核心逻辑,比如产品提价的原因、项目成本的具体构成。 ✅主动贴近业务全流程:主动参加业务部门的项目会、产品讨论会,把采购…

CF2146E

对于数组 \(a\),定义 \(w(a)\) 为 \(a\) 中满足 \(a_i > mex(a)\) 的下标数。现在给定长度为 \(n\) 的数组,对于每个 \(r\), 求出 \(\max\limits_{l = 1}^{r} w(a[l \sim r])\)。 考虑枚举 \(x = mex(a)\),设 \(…

Gradle使用

Gradle Wrapper distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip networkTimeout=10000 validateDistributionUr…

Spring Boot项目中集成Spring Security OAuth2和Apache Shiro

1. 引入依赖Spring Boot项目中已经包含了Spring Security依赖、Apache Shiro的依赖。 <!-- Spring Security --><dependency> <groupId>org.springframework.boot</groupId> <artifa…