多模态系列论文--BEiT-3 详细解析

news2024/11/15 19:32:54

论文地址:Image as a Foreign Language: BEIT Pretraining for All Vision and Vision-Language Tasks
论文代码:BEiT-3

BEiT-3

  • 1 引言:Big Convergence(大一统)
  • 2 BEIT-3预训练框架
  • 3 下游任务实现框架
  • 4 实验效果
  • 5 总结

1 引言:Big Convergence(大一统)

最近不论是在Language、Vision还是在多模态领域,Big Convergence是大势所趋,也就是在超大的数据集上做大规模的预训练,一旦模型训练好之后,它的特征就已经非常好了,可以直接Transfer到下游任务上去,尤其是当模型足够大、数据足够多的时候,有可能预训练出来一个有通用性能的Foundation Model,这个Foundation Model能解决各种的模态或者各种下游任务,非常的强大。
本文将大一统继续向前推进,彻底将多模态尤其是Vision Language预训练得很好,主要是从以下的三个方面实现大一统:
1. 模型:
从模型角度来说,Transformer非常关键:
1)Transformer框架相比CNN的优势:未来肯定是多模态的,一个模型做所有的Modality,所有的Task,肯定是一个大一统的框架,CNN不太适合做其他的Modality,而Transformer就适合做很多的Modality。从这一点上对比Transformer就胜出了。
2)多模态学习常用框架:Transformer刚开始是NLP用的,然后逐渐用到Vision和多模态领域,现在对于Vision Language Modeling多模态学习来说,有几个常用的方式:

  • Clip的Dual Encoder框架:该框架非常适合做快速的Retrieval。
  • Encoder、Decoder框架:该框架适合做Generation Task,比如BLIP、Coca。
  • Fusion Encoder框架:只用Encoder,但是它有多模态融合部分,ALBEF、VLMO都属于这一类,能做Image Text Encoding。

不论是哪种方式,这些模型在遇到下游任务的时候,因为输入的形式可能会改变或者输出的形式有时候会改变,所以模型需要根据下游任务去做一些改进,因此不是真正意义上的General Purpose Modeling。BEITV3用1个统一的Masked Data Modeling模型,每一个训练好的Transformer Block,SA层,或者Feed Forward Network都可以随意的拼装和组合。
2. 预训练的目标函数
因为掩码学习已经能够很好的学习图像文本或者多模态的特征,因此本文验证只用这一个目标函数训练模型。这种方式的优点如下:
1)当数据和模型变大的时候,用更多的目标函数训练速度肯定会变慢。
2)多个loss的权重调整比较难,有的Loss之间可能互补,有的Loss之间可能互斥,增加了很多的复杂度。而单个loss训练就比较简单。

因此,本文使用了一个Pretraining Task,就是Mask Then Predict,因为图像经过Vision Transformer Embedding层以后,就变成了一个Sequence of Token,因此可以将图像看成一个Foreign Language叫Imaglish,这样就能将文本和图像用同样的方式去处理,本质上就没有任何区别。多模态的图像文本对就可以把它看成是一个Parallel Sentence,就是句子1后面跟了个句子2,那就没有什么不同了,一切都变成NLP(当然这也从侧面说明Mask Data Modeling目标函数非常的强)。
3. 扩大模型和数据集的规模
作者将模型大小扩展到Billions of Parameters,数据集也扩展的非常大,不过用的都是开源数据集。

2 BEIT-3预训练框架

图2
模型用了Multi-Way Transformer,前面的自注意力全都是Share weights(Shared Multi-Head Self-Attention),只有后面Feed Forward Network不一样,根据不同的Modality训练不同的Vision、Language、Vision Language三个不同的Expert,然后通过调整不同的Input Modality去选择模型分支。Mask Data Modeling目标函数可能遮住了图像,可能是遮住了文本,模型训练学习去恢复它就可以。

3 下游任务实现框架

在这里插入图片描述

做下游任务时候:

1. 如图3(a),如果用Vision Encoder,就可以做所有图像任务,包括Classification, Detection和Segmentation。 2. 如图3(b),如果用Language Encoder,就可以去做Language的各种任务。 3. 如图3(c),如果用Vision Language Fusion Encoder,就可以做多模态的各种任务Vision Language Understanding Task。 4. 如图3(d),如果用 Dual Encoder,把这两个Vision和Language分开,变成双塔结构,就可以像CLIP一样做比较高效的Image Text Retrieval,如果Funtune,可以再用ITC去Funtune。 5. 如图3(e),如果用Image-to-Text Generation,就可以做生成Captioning任务,给定一句话,将下一个文本Mask掉,然后你Image Grounded的Text Encoder去预测被Mask掉的单词,就可以去做Image Captioning。

4 实验效果

在这里插入图片描述
BEITv3采取了CoCa的多边形图的形式去展现它的强大,这个图里面紫色的这条线就是BEITv3,完全超过之前所有的方法,而且在每个任务上的提升都不小,最重要的是BEITv3这种灵活的结构,就是一个模型,但是它在推理的时候可以拆成各种各样的部分去做下游任务,包括单模态Unimodel的图像问题,比如Segmentation、Classification、Detection,以及各种各样的多模态的任务,Language的任务它也是可以做的,只不过这里没有做对比。
在这里插入图片描述
表1具体展示了BEITv3在各任务上的表现,每个任务之前的State of Art是哪些方法,BEITv3具体提升了多少。

  1. 单模态任务:比如在实例分割数据集ADE20K上,BEITv3就达到62.8,到现在为止应该还都是第一第二,在Coco是63.7,在ImageNet上达到89.6,这个性能是没有用额外的Private Data训练,但是CoCa它用了GFT 3 billion这个Google自有的数据集,所以其他人无法复现。
  2. 多模态任务:Visual Reasoning的NLVR2这个数据集,BEITv3比CoCa高了5.6个点,别的几个多模态任务,BEITv3表现也都非常好。
    虽然BEITv3就是一个模型结构,只用了一个目标函数,而且它的预训练数据集也没有用很多,全都是Public Dataset,但效果非常好,而且模型可以复现。这个从侧面说明了两个问题:
  3. 不是目标函数越多越好,不是加更多的Regularization,模型就一定会训练的更好,还是得看Loss之间有没有互相弥补的特性。
  4. 当模型变大、数据变大的时候,其他的Loss函数可能就没必要了。比如说Clip只用了对比学习就训练的很好,BEITv3只用Mask Modeling也训练的很好。
  5. 数据也不一定是越多越好,CoCa用了十倍于训练Clip的数据量,几十倍于BEITv3用的数据量,但是BEITv3的性能还反超了CoCa,所以更多时候,数据的质量更关键。

5 总结

BEITv3其实从方法上来说就是之前BEIT、BEITv2、VLBEIT、VLMO等一系列的工作的一个集合体,本身没有提出新的内容,主要就是把它做大做强,展示了一个Unified Framework能达到的性能。
BEiTv3的目标非常明确,就是想做一个更大一统的框架,不论是从模型上统一,而且从训练的目标函数上要统一,还有模型大小,数据集大小,如何scale也要统一,作者称之为Big Convergence。BEiTv3就是把图像也看成了是一种语言(这就是他们题目的意思叫做Image as a Foreign Language),文章把Image叫做Imagelish,文本叫做English,然后把图像文本对叫做Parallel Sentence。因为不论是图像还是文本都可以用Mask Modeling去做,所以就不需要ITC,ITM ,Language Modeling或者Word Patch Alignment等各种Loss,只用一个Loss----- Mask Modeling。模型层面用的是他们之前VLMO提出的MOME,也就是文中的Multi-Way Transformers
总之,BEiTv3用一个非常简单而且非常容易扩展的框架,一个目标函数,Mask Modeling,但是效果非常好。

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

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

相关文章

李沐动手学深度学习:softmax回归的从零开始实现

import torch from IPython import display from d2l import torch as d2lbatach_size256 train_iter,test_iter d2l.load_data_fashion_mnist(batach_size) num_input 784 #图片的尺寸:28*28 num_output 10 #10个类别 W torch.normal(0,0.01,size(num_input,nu…

Docker尝鲜

一、Docker的安装 卸载系统自带的旧版本 sudo apt-get remove docker docker-engine docker.io containerd runc 获取软件最新源 sudo apt-get update 安装apt依赖包 sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common 安装…

Feign实现远程接口的调用

Feign实现远程接口的调用 前言一、Fegin是什么?二、Feign使用步骤准备工作被调用的远程服务必须上传到nacos/eureka服务中心进行管理配置,比如我调用media-api服务(媒资管理服务),那么media-api必须被nacos/eureka所管理。如图,都…

CentOS7和主机Win11不能复制粘贴解决之道及CentOS7最小安装版 VMware Tools安装

入世心法&#xff1a; 金字塔 结构化 系统化 底层认知 认知升级 来认识下你老祖宗 底层逻辑 分别从: ---->道|法|术|器|势<--- 这五个层次去打通............................翻新思维底层认知&#xff…

【CSS】跳动文字

文章目录 效果展示代码实现 效果展示 代码实现 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>一颗不甘坠落的流星</title></head><style type"text/css">/* 遮罩盒子样式 */#mask {/* 设…

基于单片机的蓝牙音乐喷泉的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;通过HM-18蓝牙音频模块进行无线传输&#xff1b; 通过LM386功放模块对音频信号进行放大&#xff1b;手机端可以直接控制音频播放&#xff0c;并且最远距离可达20米&#xff1b;手机端可以进行任意音乐切换&#xff0c;播报、暂停&a…

Python 图像文件压缩,使用PIL库对图像进行等比例压缩

题目 图像文件压缩。使用PIL库对图像进行等比例压缩&#xff0c;无论压缩前文件大小如何&#xff0c;压缩后文件大小小于10KB。 代码 from PIL import Image import os from tkinter import filedialog import tkinterf_path filedialog.askopenfilename() image Image.op…

第三章:L2JMobius学习 – 使用eclipse2023创建java工程

在前两个章节中&#xff0c;我们已经安装了mariadb数据库和jdk&#xff0c;本章节我们安装eclipse2023。eclipse作为老牌的java开发工具&#xff0c;真的是不错的。官方下载地址为&#xff1a; https://www.eclipse.org/downloads/download.php?file/technology/epp/download…

STM32的ADC模式及其应用例程介绍

STM32的ADC模式及其应用例程介绍 &#x1f4cd;ST官方相关应用笔记介绍资料&#xff1a;https://www.stmcu.com.cn/Designresource/detail/application_note/705947&#x1f4cc;相关例程资源包&#xff1a;STSW-STM32028&#xff1a;https://www.st.com/zh/embedded-software/…

MySQL---表数据高效率查询(简述)

目录 前言 一、聚合查询 &#x1f496;聚合函数 &#x1f496;GROUP BY子句 &#x1f496;HAVING 二、联合查询 &#x1f496;内连接 &#x1f496;外连接 &#x1f496;自连接 &#x1f496;子查询 &#x1f496;合并查询 &#x1f381;博主介绍&#xff1a;博客名…

NXP文档AN13000解读-基于S32K116的无感BLDC六步换相控制策略(预定位/开环启动/反电动势过零点检测)

目录 六步换相控制 单极性PWM 反电动势过零点检测技术 反电动势的测量 总线电流的测量 电机状态切换 Alignment Start-up Run 算法用到的各模块 各模块间的连接 ADC触发顺序 芯片的初始化 时钟配置与电源管理 FTM Trigger MUX Control (TRGMUX) PDB ADC LPS…

【Git原理与使用】-- 多人协作

目录 多人协作一&#xff08;多人同一分支&#xff09; 开发者一&#xff08;Linux&#xff09; 开发者二&#xff08;Windous&#xff09; master合并 远端上的合并 本地上的合并 总结 多人协作一&#xff08;多人多分支&#xff09; 开发者一&#xff08;Linux&…

SQL Server数据库忘记了sa密码怎么办 亲测真的可用

我们在安装SQL Server数据库时&#xff0c;往往选择混合模式安装&#xff0c;在这里我们可以设置sa密码。混合模式安装后&#xff0c;我们可以通过Windows身份验证和SQL Server身份验证两种方式登陆。 如果sa密码忘记了&#xff0c;我们就无法用SQL Server身份验证登陆了。 那么…

【高性能、高并发】页面静态化解决方案-OpenResty

OpenResty OpenResty介绍 OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台&#xff0c;其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项 用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关 OpenResty通过汇聚各种设计精良的…

Python应用实例(一)外星人入侵(五)

外星人入侵&#xff08;五&#xff09; 1.项目回顾2.创建第一个外星人2.1 创建Alien类2.2 创建Alien实例 3.创建一群外星人3.1 确定一行可容纳多少个外星人3.2 创建一行外星人3.3 重构_create_fleet()3.4 添加行 在游戏《外星人入侵》中添加外星人。我们将首先在屏幕上边缘附近…

RHCE中级项目

一、项目需求 1、在 bbs.example.com 主机上创建 Discuz 论坛&#xff0c;数据库服务器使用 db.example.com 主机的 bbs 数据库实例&#xff0c;该实例由 MySQL数据库软件提供服务。 2、在 ntp.example.com 主机上创建 NTP 服务&#xff0c;该服务由 Chronyd软件提供服务&…

GoLang网络编程:HTTP服务端之底层原理与源码分析——http.HandleFunc()、http.ListenAndServe()

一、启动 http 服务 import ("net/http" ) func main() {http.HandleFunc("/ping", func(w http.ResponseWriter, r *http.Request) {w.Write([]byte("ping...ping..."))})http.ListenAndServe(":8999", nil) }在 Golang只需要几行代…

第三章 SSD存储介质:闪存 3.4

3.4 闪存数据完整性 可采用以下数据完整性的技术确保用户数据不丢失&#xff1a; &#xff08;1&#xff09;ECC纠错&#xff1b; &#xff08;2&#xff09;RAID数据恢复&#xff1b; &#xff08;3&#xff09;重读&#xff08;Read Retry&#xff09;&#xff1b; &#xff…

C/C++指针从0到99(详解)

目录 一&#xff0c;指针的基础理解 二&#xff0c;指针的基本使用 三&#xff0c;为什么要用指针 四&#xff0c;指针与数组的联系 五&#xff0c;指针的拓展使用 1&#xff09;指针数组 2)数组指针 3&#xff09;函数指针 结构&#xff1a;返回类型 &#xff08;*p)…

我国新能源汽车存量已突破1620万辆,登记数量创历史新高

根据公安部发布的最新数据&#xff0c;截至2023年6月底&#xff0c;全国的机动车数量达到4.26亿辆&#xff0c;其中汽车数量为3.28亿辆&#xff0c;新能源汽车数量为1620万辆。与此同时&#xff0c;机动车驾驶人口达到5.13亿人&#xff0c;其中汽车驾驶人口为4.75亿人。在2023年…