【多模态】31、Qwen-VL | 一个开源的全能的视觉-语言多模态大模型

news2024/11/15 4:35:14

在这里插入图片描述

文章目录

    • 一、背景
    • 二、方法
      • 2.1 模型架构
      • 2.2 输入和输出
      • 2.3 训练
    • 三、效果
      • 3.1 Image Caption 和 General Visual Question Answering
      • 3.2 Text-oriented Visual Question Answering
      • 3.3 Refer Expression Comprehension
      • 3.4 视觉-语言任务的少样本学习
      • 3.5 真实世界用户行为中的指令遵循

论文:Qwen-VL: A Versatile Vision-Language Model for Understanding, Localization, Text Reading, and Beyond

代码:https://github.com/QwenLM/Qwen-VL

出处:阿里

时间:2023.10

贡献:

  • Qwen-VL 在大量以视觉为中心的理解基准上实现了优秀的性能
  • Qwen-VL 支持多语言,尤其是英文和中文,自然的支持英文、中文和多语言指令
  • Qwen-VL 在训练阶段支持任意交错的图像-文本数据作为输入
  • Qwen-VL 在细粒度的图像理解上更好,因为在训练中使用了更高分辨率的输入大小和细粒度的语料库,有很好的文本阅读、面向文本的问答、细粒度的对话等能力

在这里插入图片描述

一、背景

尽管现有的很多多模态大模型取得了不错的效果,但开源的多模态大模型仍然有训练和优化不足的问题,也落后于专有模型,此外,现实场景非常复杂,所以地力度的视觉理解很重要,但相关研究不是很多。

本文开源了一系列 Qwen 家族的模型 Qwen-VL 系列,该系列模型是基于 Qwen-7B 语言模型的,作者通过引入了一个新的 visual capacity,包括一个 language-aligned 视觉编码器和一个 position-aware adapter,来提升 LLM 基准。

整个模型架构及输入输出都很简洁,且作者使用了一个三阶段的训练流程

Qwen-VL 的能力:

  • 能够感知和理解视觉输入,根据给定的提示生成回答,并完成各种视觉任务,如 caption、问题回答等

Qwen-VL-Chat:

  • 基于 Qwen-VL 的指令调优视觉语言聊天机器人,能够和用户交流,根据用户意图来感知输入图像

在这里插入图片描述

二、方法

2.1 模型架构

网络整体架构由 3 个部分组成,如表 1 所示:

  • 大型语言模型:Qwen-VL 使用大语言模型 Qwen-7b 作为其基础组件,使用预训练好的权重来初始化模型
  • 视觉编码器:Qwen-VL 使用 ViT 架构作为视觉编码器,具体的是使用的 Openclip 的 ViT-bigg 预训练的权重进行初始化,在训练过程中,输入图像都被调整到特定的分辨率。且视觉编码器将图像分割成 14 大小的 patch 后生成一组图像特征
  • position-aware Vision-Language Adapter:为了环境长图像特征序列带来的效率问题, Qwen-VL 引入了一个压缩图像特征的适配器,该适配器包含一个随机初始化的单层 cross-attention 模块。该模块使用一组可训练的向量(embedding)来作为 query,encoder 提取到的图像特征作为 key,这种机制将视觉特征序列压缩为固定长度 256。

在这里插入图片描述

2.2 输入和输出

1、图像输入

图像通过 visual encoder 和 adapter 进行处理,产生固定长度的图像特征序列,为了区分图像特征输入和文本特征输入,在图像特征序列的开始和结束添加了两个特殊标记 ( 和 ),分别表示开始和结束

2、bounding box 输入和输出

为了增强模型对细粒度视觉的理解和定位,Qwen-VL 的训练包括 region description、questions、detections,该任务需要模型以指定格式准确理解和生成区域描述。

对应任何给定的 bbox,使用归一化方法将其归一化到 [0,1000],并转换为指定的字符串格式:“(x1,y1),(x2,y2)”,且在开始和结束处添加 ( 和 ),与其相关的描述语句还会添加特殊标记 ( 和 )

2.3 训练

Qwen-VL 的训练分为三个阶段,前两个阶段是预训练,最后一个阶段是指令微调

1、预训练

在第一预训练结果,作者主要使用 large-scale,weakly labeled,web-crawled 的 image-text pairs 来训练,数据如表 2 所示,original dataset 包含共 50 亿的图像-文本对儿,清洗后保留了 14 亿的数据,其中 77.3% 的英文数据和 22.7% 的中文数据

在这里插入图片描述

在这个阶段,作者将大语言模型冻结,只优化 vision encoder 和 VL adapter,输入图像 resize 到了 224x224,训练的目标是最小化 text token 的 cross-entropy

最大的学习率为 2e-4,batch size 为 30720 个 pairs,整个第一阶段预训练共 50000 steps,共使用 15 亿个图像-文本 pairs

下图为 stage 1 的收敛曲线

在这里插入图片描述

2、多任务预训练

在 stage 2 会进行多任务预训练,会引入有更大分辨率和交错图文数据的高质量和细粒度数据

作者同时对 Qwen-VL 进行了 7 项任务训练,相关数据如表 3 所示,作者将 visual encoder 的输入从 224x224 提升到了 448x448

在这里插入图片描述

3、有监督微调

在这个阶段,作者对预训练后的模型使用指令微调来提升模型的指令跟随能力和对话能力,来实现交互式的 Qwen-VL-Chat 模型

数据主要来源于 caption 数据或对话数据,这些标签都是使用 LLM 模型得到的,而且这些数据往往只处理单幅图像的对话和推理,仅限于图像内容理解

数据量:350k

训练技巧:冻结 visual encoder,训练语言模型和adapter模块

在这里插入图片描述

三、效果

下面作者会对各种多模态任务进行评估,Qwen-VL 表示多任务训练后的模型(第二阶段后),Qwen-VL-chat 表示经过有监督微调(SFT)后的模型(第三阶段后)

3.1 Image Caption 和 General Visual Question Answering

在这里插入图片描述

3.2 Text-oriented Visual Question Answering

面向文本的视觉问答

在这里插入图片描述

3.3 Refer Expression Comprehension

提及表达的理解

在这里插入图片描述

3.4 视觉-语言任务的少样本学习

在这里插入图片描述

3.5 真实世界用户行为中的指令遵循

在这里插入图片描述

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

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

相关文章

windows部署腾讯tmagic-editor03-DSL 解析渲染

创建项目 将上一教程中的editor-runtime和hello-editor复制过来 概念 实现 创建hello-ui目录 渲染节点 在hello-ui下创建 Component.vue 文件 由于节点的type是由业务自行定义的,所以需要使用动态组件渲染,在vue下可以使用component组件来实现 c…

20240511每日运维----聊聊nignx改配置所有的nginx改完unknow

1、改配置所有的nginx改完unknow src/core/nginx.h src/http/ngx_http_header_filter_module.c src/http/ngx_http_special_response.c src/http/v2/ngx_http_v2_filter_module.c 2、make 3、去objs里面把nginx文件替换过去sbin/nginx

高质量英文文献应该如何查找并且阅读?

1. 查找 使用谷歌学术进行论文关键字检索,查找高度匹配的论文。这里我们可以选择年限等信息进行筛选。作为研究者我们一般选择近三年的文章进行阅读。这里谷歌学术需要科学上网,请大家自行解决。 https://scholar.google.com/ 2. 查看期刊等级 我们查…

深度学习设计模式之抽象工厂模式

文章目录 前言一、介绍二、详细分析1.核心组成2.实现步骤3.代码示例4.优缺点优点缺点 5.使用场景 总结 前言 本文主要学习抽象工厂模式,抽象工厂模式创建的是对象家族,比如:苹果是一个产品,但是他不单单只生产手机,还…

【C语言】必备Linux命令和C语言基础

🌟博主主页:我是一只海绵派大星 📚专栏分类:嵌入式笔记 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、文件和目录相关命令 Linux 的文件系统结构 文件系统层次结构标准FHS pwd命令 ls 列目录内容 文件的权限 c…

libsndfile读取wav文件基本属性

本文的目的是提供一种方法读取wav文件的基本属性&#xff1a;音频帧数&#xff0c;格式、通道数和采样率信息。 代码如下所示&#xff1a; #include <iostream> #include <QDebug> #include "sndfile.h"using namespace std;int main() {// 初始化 ALS…

亚马逊云科技中国峰会:与你开启前沿技术的探索之旅

亚马逊云科技中国峰会&#xff1a;与你开启云计算与前沿技术的探索之旅 Hello,我是科技博主Maynor&#xff0c;非常高兴地向你们推荐亚马逊云科技中国峰会&#xff0c;这是一场将于 5 月 29 日至 30 日在上海世博中心举办的科技盛会&#xff0c;如果你对云计算、行业发展新趋势…

【Python从入门到进阶】54、使用Python轻松操作SQLite数据库

一、引言 1、什么是SQLite SQLite的起源可以追溯到2000年&#xff0c;由D. Richard Hipp&#xff08;理查德希普&#xff09;所创建。作为一个独立的开发者&#xff0c;Hipp在寻找一个能够在嵌入式系统中使用的轻量级数据库时&#xff0c;发现现有的解决方案要么过于庞大&…

【35分钟掌握金融风控策略29】贷中模型调额调价策略

目录 贷中客户风险管理和客户运营体系 用信审批策略 用信审批策略决策流与策略类型 贷中预警策略 对存量客户进行风险评级 基于客户的风险评级为客户匹配相应的风险缓释措施和建议 调额策略 基于定额策略的调额策略 基于客户在贷中的风险表现的调额策略 调价策略 存…

视频监控系统中,可变码率和固定码率对录像文件存储大小的影响,如何配置比较好?

目录 一、问题描述 二、视频监控的录像文件计算 &#xff08;一&#xff09;计算方法 &#xff08;二&#xff09;计算工具 三、原因分析 &#xff08;一&#xff09;检查配置 1、IPCa配置 2、IPCb配置 3、录像文件存储大小的理论值 &#xff08;二&#xff09;实际情…

Darknet+ros+realsenseD435i+yolo(ubuntu20.04)

一、下载Darknet_ros mkidr -p yolo_ws/src cd yolo_ws/src git clone --recursive https://github.com/leggedrobotics/darknet_ros.git #因为这样克隆的darknet文件夹是空的&#xff0c;将darknet_ros中的darknet的文件替换成如下 cd darknet_ros git clone https://github.…

英飞凌SiC模块为小米电动车提供动力

至2027年之际&#xff0c;SiC功率模块与裸片产品将荣耀登场&#xff0c;助力小米电动汽车新品SU7璀璨问世。英飞凌&#xff0c;这家业界翘楚&#xff0c;将倾其所能&#xff0c;为小米SU7 Max提供两颗HybridPACK Drive G2 CoolSiC 1200 V模块&#xff0c;如同给电动汽车的心脏注…

[链表专题]力扣141, 142

1. 力扣141 : 环形链表 题 : 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾…

pytest教程-47-钩子函数-pytest_sessionfinish

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了pytest_sessionstart钩子函数的使用方法&#xff0c;本小节我们讲解一下pytest_sessionfinish钩子函数的使用方法。 pytest_sessionfinish 钩子函数在 Pytest 测试会话结束时调用&#xff0c;…

254 基于matlab的钢筋混凝土非线性分析

基于matlab的钢筋混凝土非线性分析&#xff0c;根据梁本构关系&#xff0c;然后进行非线性分析&#xff0c;绘制弯矩-曲率曲线。可设置梁的截面尺寸、混凝土本构&#xff0c;钢筋截面面积等相关参数&#xff0c;程序已调通&#xff0c;可直接运行。 254 钢筋混凝土非线性分析 弯…

那些年我与c++的叫板(一)--string类自实现

引子&#xff1a;我们学习了c中的string类&#xff0c;那我们能不能像以前数据结构一样自己实现string类呢&#xff1f;以下是cplusplus下的string类&#xff0c;我们参考参考&#xff01; 废话不多说&#xff0c;直接代码实现&#xff1a;&#xff08;注意函数之间的复用&…

公司邮箱是什么?公司邮箱和个人邮箱有什么不同?

公司邮箱是企业用来收发邮件的专业版电子邮箱&#xff0c;不同于个人邮箱的简单功能和有限的存储空间&#xff0c;公司邮箱的功能更加丰富&#xff0c;能够满足企业的日常办公和协作需求。本文将为您详细讲解公司邮箱和个人邮箱的区别&#xff0c;以供您选择更适合自己的邮箱类…

数学建模——农村公交与异构无人机协同配送优化

目录 1.题目 2.问题1 1. 问题建模 输入数据 ​编辑 2. 算法选择 3.数据导入 3.模型构建 1. 距离计算 2. 优化模型 具体步骤 进一步优化 1. 重新定义问题 2. 变量定义 3. 优化目标 具体步骤 再进一步优化 具体实现步骤 1. 计算距离矩阵 2. 变量定义 3. 约束…

【C++】:string类的基本使用

目录 引言一&#xff0c;string类对象的常见构造二&#xff0c;string类对象的容量操作三&#xff0c;string类对象的访问及遍历操作四&#xff0c;string类对象的修改操作五&#xff0c;string类非成员函数六&#xff0c;整形与字符串的转换 引言 string 就是我们常说的"…

UIKit之图片浏览器

功能需求 实现一个图片浏览器&#xff0c;点击左右按钮可以切换背景图&#xff0c;且更新背景图对应的索引页和图片描述内容。 分析&#xff1a; 实现一个UIView的子类即可&#xff0c;该子类包含多个按钮。 实现步骤&#xff1a; 使用OC语言&#xff0c;故创建cocoa Touch类…