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

2024-05-16 00:36

本文主要是介绍【多模态】31、Qwen-VL | 一个开源的全能的视觉-语言多模态大模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

文章目录

    • 一、背景
    • 二、方法
      • 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 真实世界用户行为中的指令遵循

在这里插入图片描述

这篇关于【多模态】31、Qwen-VL | 一个开源的全能的视觉-语言多模态大模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/993369

相关文章

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

基于Python打造一个全能文本处理工具

《基于Python打造一个全能文本处理工具》:本文主要介绍一个基于Python+Tkinter开发的全功能本地化文本处理工具,它不仅具备基础的格式转换功能,更集成了中文特色处理等实用功能,有需要的... 目录1. 概述:当文本处理遇上python图形界面2. 功能全景图:六大核心模块解析3.运行效果4. 相

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应