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

Qwen2-VL论文阅读笔记

第1章介绍
论文亮点:
1、 the Naive Dynamic Resolution mechanism
2、Multimodal Rotary Position Embedding (M-RoPE) 2D Rotary Position Embedding
3、统一图片和视频的处理范式、增i强视觉感知能力
4、LVLMs的scaling laws:2B、8B、72B
5、 dynamic resolution training

通用的方法: visual encoder→cross-modal connector→LL
其他提高的方法有
larger model architectures
higher-resolution images
advanced techniques:MoE、 model ensembles、more sophisticated connectors

qwen2vl的能力:
State-of-the-art understanding across various resolutions and aspect ratios
Comprehension of extended-duration videos (20 min+)
Robust agent capabilities for device operation

第2章方法
675M的ViT适配不同大小的LLM

Naive Dynamic Resolution - 用2D-RoPE取代绝对位置编码 推理阶段的序列长度是可控的 【推理阶段的不定长的vision tokens是怎么处理的?】
224 * 224 分辨率 在 patch_size=14 的ViT下 会被处理成 224/14/2 = 8 8x8=64 64 + 2 成为 66个tokens

Multimodal Rotary Position Embedding (M-RoPE) - temporal, height, and width
视频:序列帧
In scenarios where the model’s input encompasses multiple modalities, position numbering for
each modality is initialized by incrementing the maximum position ID of the preceding modality by one.

Unified Image and Video Understanding
每秒视频分成两帧、 综合 深度为2的 3D convolutions、允许模型处理 3D tubes、从而处理更多视频帧而不用增加序列长度。
保持一致性、每张图片被视为两个相同帧。
动态调整每个视频帧的分辨率,每个视频的tokens限制在 16384。

2.2 训练
遵从qwenvl的三阶段:用image-text单独训练ViT、解冻所有参数训练理解能力、最后冻住ViT只训练LLM遵循格式化数据
训练数据集:image-text pairs, ocr, 交错的图文文章,vqa、video对话,图片知识等

预训练初始阶段:600B tokens

第一个预训练阶段:600B tokens 位置编码:RoPE-2D ViT (DFN派生)
预训练阶段目的: 学习 图文关系、通过ocr的图像文本上下文识别、图片分类任务。 有助于核心 视觉文本相关性和对齐能力训练。

第二个预训练阶段:800B tokens的 图像相关数据 增加图像文本的细微理解;视觉问答数据集增强了 图片问答的能力。多任务数据集、纯文本数据集同样重要。

整个预训练、用了1.4Ttokens,有图片、也有文本。 但在训练阶段,只用文本监督。【怎么理解? 我理解这是第三个阶段、格式学习阶段】

微调阶段,用ChatML格式 instruction-following 包括文本和多模态对话数据(image question-answering, document
parsing, multi-image comparison, video comprehension, video stream dialogue, and agent-based interactions)

2.2.1 数据格式
Dialogue Data
<|vision_start|> and <|vision_end|>
<|im_start|> and <|im_end|>

Visual Grounding
<|box_start|> and <|box_end|> “(Xtop left, Ytop left),(Xbottom right, Ybottom right)”. [0, 1000)
<|object_ref_start|> and <|object_ref_end|>

Visual Agent.【UI Operations, Robotic Control, Games, and Navigation】
analyzes the observations, performs reasoning and planning, executes the selected actions, and interacts
with the environment to acquire new observations

2.3 多模态模型基础设施
存储、并行、 软件(torch 2.1.2, cuda 11.8)
flash attention、LN、RMSNorm、Adam

3 实验


qwenvl 和 qwen2vl的配置对比
“max_position_embeddings”: 8192,32768
“num_attention_heads”: 32,28
“num_hidden_layers”: 32,28
“architectures”: [
“QWenLMHeadModel” Qwen2VLForConditionalGeneration
],
“torch_dtype”: “bfloat16”,bfloat16
transformers_version": “4.31.0”,4.41.2
“image_size”: 448, 无
“patch_size”: 14,14
“in_chans”: 无,3,
mrope_section 无 ,有


原生动态分辨率:不同大小图片被转换为动态数量的tokens、最小只占4个tokens

多模态旋转位置嵌入 M-ROPE:将原始旋转嵌入分解为代表时间、高度和宽度的三个部分。(时间、高度、宽度)

捕捉和整合 一维文本序列、二维视觉图像以及三维视频的位置信息。

qwen-vl-utils

224224分辨率 通过 patch_size为14的ViT得到 1616的patches,然后用MLP将22压缩成1个token、前后拼上<|vision_start|>、<|vision_end|> 得到 88+2 = 66个tokens。

论文: a vision transformer for any aspect ratio and resolution

推理阶段:不同分辨率的图像被打包成一个序列,具有打包长度控制以限制GPU内存使用。 [最长的图像token是 16384 个]

2D-RoPE 获得两个维度的图片位置信息

统一图片和视频理解:为了一致性,每个图像都被视为两个相同帧; 图片和视频混合训练

平衡长视频处理的计算需求与整体训练效率,我们动态调整每个视频帧的分辨率,限制每个标记的总数 视频到16384

训练模式和qwenvl一样、三阶段。先训vit、再全训、最后训llm

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 智慧安防监控EasyCVR视频汇聚管理平台如何修改视频流分辨率?
  • 从零开始之AI面试小程序
  • 网站建设中,JavaScript为什么现在可以做后台了?
  • 【JavaEE】数据链路层协议和DNS
  • Qemu开发ARM篇-5、buildroot制作根文件系统并挂载启动
  • 【后端】【语言】【python】python常见操作
  • 【计网】从零开始掌握序列化 --- 基础知识储备与程序重构
  • Elasticsearch黑窗口启动乱码问题解决方案
  • Eigen之SelfAdjointEigenSolver
  • 【TS】TypeScript内置条件类型-ReturnType
  • 实时监控,动态调整 —— 淘宝商品详情API助力商家实现灵活经营
  • 优化算法(五)—梯度下降算法(附MATLAB程序)
  • 汽车售后诊断ECU参数分析
  • Pygame中Sprite实现逃亡游戏3
  • Pandas 数据分析入门详解
  • ES6指北【2】—— 箭头函数
  • 【comparator, comparable】小总结
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • css布局,左右固定中间自适应实现
  • Joomla 2.x, 3.x useful code cheatsheet
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Otto开发初探——微服务依赖管理新利器
  • Phpstorm怎样批量删除空行?
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 基于 Babel 的 npm 包最小化设置
  • 今年的LC3大会没了?
  • 力扣(LeetCode)22
  • 码农张的Bug人生 - 见面之礼
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 想写好前端,先练好内功
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 整理一些计算机基础知识!
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • ‌[AI问答] Auto-sklearn‌ 与 scikit-learn 区别
  • #define用法
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (二)c52学习之旅-简单了解单片机
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (四)Controller接口控制器详解(三)
  • (一)appium-desktop定位元素原理
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (自用)交互协议设计——protobuf序列化
  • .net 7 上传文件踩坑
  • .net 7和core版 SignalR
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .net8.0与halcon编程环境构建
  • .NET轻量级ORM组件Dapper葵花宝典
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .net下的富文本编辑器FCKeditor的配置方法
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限