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
相关文章:
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…...
APScheduler、Django实现定时任务,以及任务动态操作
环境:Windows 11、python 3.12.3、Django 4.2.11、 APScheduler 3.10.4 背景:工作需要使用且用法较为复杂,各种功能基本都使用了 事件:20240920 说明:记录,方便后期自己查找 1、搭建基础环境 文件结构图…...
SpringBoot开发——整合Apache POI轻松生成精美的Excel报表
文章目录 1、准备工作2、编写代码2.1 创建实体类2.2 创建Excel生成服务2.3 创建控制器 3、测试4、结论 在许多企业应用程序中,导出数据到Excel表格是一项常见的需求。Spring Boot提供了许多库来简化这个过程,其中包括Apache POI和Spring Boot的相关模块。…...
海信智能电视的使用心得
买了海信智能电视(型号:32E2F)有一段时间了,要使用这个智能电视还真能考验你的智商。海信电视有很多优点,它的屏幕比较靓丽,色彩好看,遥控器不用对着屏幕就能操作。但也有不少缺点。 1. 海信智能电视会强迫自动更新操作系统&…...
【YashanDB知识库】客户端字符集与数据库字符集兼容问题
本文转自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7352675.html?templateId1718516 问题现象 客户端yasql配置字符集为GBK,服务端yasdb配置字符集为UTF8,之后执行语句: 会发现: 期望是两个都…...
Session和Cookie是什么?有什么区别?分布式Session问题又是什么?
Session和Cookie是什么?有什么区别?分布式Session问题又是什么? Cookie:是服务器发送到浏览器并保存在本地的数据。在浏览器下一次向同一服务器再次发送请求时,将Cookie也发送给服务器,并以此来判定这个请…...
项目实战:Qt+OSG爆破动力学仿真三维引擎测试工具v1.1.0(加载.K模型,子弹轨迹模拟动画,支持windows、linux、国产麒麟系统)
若该文为原创文章,转载请注明出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/142454993 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、Op…...
CSS开发全攻略
目录 一、CSS基础入门(一)CSS概述1.CSS的定义与作用2.CSS的历史与发展3.CSS的核心概念(1)选择器(Selector)(2)声明(Declaration)(3)规…...
OpenCV运动分析和目标跟踪(3)计算图像序列的加权平均值函数accumulateWeighted()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 更新一个运行平均值。 该函数计算输入图像 src 和累积器 dst 的加权和,使得 dst 成为帧序列的运行平均值: dst ( x , y…...
vue3中echarts柱状图横轴文字太多放不下怎么解决
问题:在做数据展示的时候,使用的是echarts,遇到了个问题,就是数据过多,但是设置的x轴的文字名称又太长,往往左边第一个或右边最后一个的名称展示不全,只有半个。 从网上找到了几种办法ÿ…...
Web 开发安全与最佳实践:MVC、会话管理与常见攻击防御
1. 引言 随着 Web 应用的普及,安全问题变得尤为重要。从小型个人网站到复杂的企业级系统,安全漏洞可能导致数据泄露、服务中断甚至经济损失。因此,在 Web 开发中,采用良好的架构设计、会话管理和安全防护机制至关重要。本文将探讨…...
Segformer双显卡推理速度测试
1、4080单显卡和双显卡同步并行推理平均耗时分别为360ms、600ms;双显卡速度明显比单显卡的速度快 2、两个相机间隔500ms的并行推理耗时,单双显卡推理平均耗时为340ms 3、4080双显卡和4070双显卡同步并行推理平均耗时分别为360ms、380ms;4080比4070的速度快20ms...
使用在线电子模拟器 Wokwi 运行 ESP32 示例(Arduino IDE、ESP32C3)
文章目录 Wokwi安装客户端(Mac/Linux)创建 Token ESP32C3 示例demo.ino创建模拟器运行模拟器 Wokwi Wokwi 是一款在线电子模拟器。您可以使用它来模拟 Arduino、ESP32、STM32 以及许多其他流行的主板、部件和传感器。 Github: https://gith…...
vue3+element-plus icons图标选择组件封装
一、最终效果 二、参数配置 1、代码示例 <t-select-icon v-model"selectVlaue" />2、配置参数(Attributes)继承 el-input Attributes 参数说明类型默认值v-model绑定值string-prefixIcon输入框前缀iconstringSearchisShowSearch是否显…...
Spring validation校验框架
第1步:导入依赖 <!-- 校验框架--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </dependency> 第2步:为需要校验的参数&…...
UBUNTU20.04安装CH384串口卡驱动
继续上文:统信UOS安装CH384串口卡驱动-CSDN博客 统信UOS系统成功安装CH384串口驱动后,继续在ubuntu20.04下安装驱动,发现一直报错,原因是内核驱动不一致。 解决办法: 1. 下载最新的驱动。CH35XCH384驱动源文件资源-C…...
JWT(JSON Web Tokens) 详细介绍
文章目录 什么是JWT?JWT的组成部分JWT的使用场景优点缺点 Java中如何实现JWT编解码引入JJWT依赖编码JWT解码JWT使用示例 什么是JWT? JWT(JSON Web Tokens)是一种用于双方之间安全传输信息的简洁的、URL安全的令牌标准。JWT可以传递信息,这…...
数据结构练习题————(二叉树)——考前必备合集!
今天在牛客网和力扣上带来了数据结构中二叉树的进阶练习题 1.二叉搜索树与双向链表———二叉搜索树与双向链表_牛客题霸_牛客网 (nowcoder.com) 2.二叉树遍历————二叉树遍历_牛客题霸_牛客网 (nowcoder.com) 3.二叉树的层序遍历————102. 二叉树的层序遍历 - 力扣&am…...
一天认识一个硬件之鼠标
今天来给大家分享一下鼠标的相关内容,先来分享一下什么是鼠标: 鼠标是一种计算机输入设备,用于控制屏幕上的光标移动和进行各种操作。它最早由道格拉斯恩格尔巴特在1963年发明,并在1968年12月9日制成了世界上第一个鼠标。介绍完了…...
Django 请求配置
http请求配置 请求流程 urls.py配置 from first_app import viewsurlpatterns [path(admin/, admin.site.urls),path(test/,views.first_test), ] views.py配置 from django.shortcuts import render,HttpResponse# Create your views here. def first_test(request):prin…...
终极macOS清理神器:Pearcleaner 3步彻底卸载应用不留痕迹
终极macOS清理神器:Pearcleaner 3步彻底卸载应用不留痕迹 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 你是否曾将macOS应用拖入废纸篓后&…...
AI应用开发利器:ai-devkit工具包核心功能与工程实践指南
1. 项目概述与核心价值最近在折腾AI应用开发,发现一个挺有意思的项目,叫codeaholicguy/ai-devkit。乍一看名字,你可能会觉得这又是一个“AI开发工具包”,市面上类似的工具已经多如牛毛了。但深入用下来,我发现它不太一…...
高效浏览器视频嗅探工具:猫抓扩展完整使用指南
高效浏览器视频嗅探工具:猫抓扩展完整使用指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓(Cat-Catch)…...
技能工程化框架:从标准化定义到编排实战
1. 项目概述:从“技能”到“智能”的工程化桥梁在当今的软件开发领域,尤其是涉及复杂交互和自动化流程的场景,我们常常会听到“技能”这个词。它听起来很抽象,但如果你拆解过任何一款智能助手、自动化机器人或者一个大型的业务流程…...
基于Nginx-Lua镜像构建高性能可编程网关的实践指南
1. 项目概述:一个为现代Web架构而生的Nginx镜像如果你和我一样,长期在容器化环境中部署和管理Web服务,那么你一定对Nginx的灵活性和Lua脚本的强大能力印象深刻。但将这两者结合,并打包成一个稳定、安全、功能齐全的Docker镜像&…...
【最新 v2.7.1 版本安装包】OpenClaw 零基础无痛部署,无需命令零代码保姆级快速上手
OpenClaw(小龙虾)Windows 一键部署保姆级教程 | 10 分钟搭建专属数字员工【点击下载最新OpenClaw安装包】 前言 2026 年开源圈热门 AI 智能体 OpenClaw(昵称小龙虾),GitHub 星标突破 28 万,凭借本地运行 …...
Arm Cortex-A35 Cycle Model技术解析与SoC集成实战
1. Arm Cortex-A35 Cycle Model技术解析在SoC设计领域,虚拟平台验证已成为不可或缺的关键环节。作为Armv8-A架构中的能效比优化核心,Cortex-A35处理器通过Cycle Model提供了RTL级精度的硬件行为模拟能力。我在多个车载SoC项目中验证发现,其Cy…...
嵌入式事件驱动框架Curtroller:模块化设计提升开发效率
1. 项目概述与核心价值最近在嵌入式开发社区里,一个名为“Curtroller”的项目引起了我的注意。这个项目由开发者KenWuqianghao在GitHub上开源,名字本身就是一个巧妙的组合——“Curt”(可能是“Current”电流的缩写或“Control”控制的变体&a…...
Bun用Rust重写核心代码,百万行新增代码直接把GitHub干爆了!
Bun 项目刚刚完成了一次惊人的技术跨越。5月14日,Bun 正式宣布其核心运行时已从 Zig 重写为 Rust——这个版本包含 6755 个 commit,二进制文件体积缩小 3-8 MB,性能测试在各个平台上均达到或超越原有水平。Jarred Sumner(Bun 的创…...
保姆级避坑指南:用STM32F103C8T6+ESP8266(AT指令)做WiFi遥控小车,我踩过的那些坑
STM32F103C8T6ESP8266 WiFi遥控小车避坑实战手册 1. 硬件选型与连接:那些容易被忽视的细节 在开始任何代码编写之前,硬件连接的正确性往往决定了项目的成败。使用STM32F103C8T6(俗称"蓝莓板")与ESP8266模块组合时&#…...
