多模态大模型总结1(2021和2022年)

news2024/12/1 0:29:01

常用损失函数

ITC (image-text contrasctive loss)

CLIP中采用的对比损失,最大化配对文本对的余弦相似度,最小化非配对文本对的余弦相似度,采用交叉熵损失实现

MLM (masked language modeling)

BERT中采用的掩码语言建模任务,也是对每一个[MASK]进行分类

ITM(image-text matching)

二分类损失,预测输入的(图像-文本)对是配对的还是非配对的

CLIP(2021)

ViLT(2021)

ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision

首次提出,在图像编码器中不需要采用目标检测器,直接采用图像的patch embedding。

但只采用图像的embedding导致图像编码器网络容量较小,因此该方法的性能不是太高

整体架构:将图像的patch embedding和word embedding拼接起来,一起输入encoder中。

 根据作者总结的多模态网络结构,总结出最优网络结构应该是:

(1)图像编码器网络容量大于文本编码器,

(2)多模态交互模块应该复杂一点,不只是采用对比损失ITC。

ALBEF(2021)

Align before Fuse: Vision and Language Representation Learning with Momentum Distillation

主要由三大部分组成

  1. Image Encoder:作者采用 12 层的 ViT-B/16,用于从图像中提取 image embedding。

  2. Text Encoder:作者采用 6 层的 Transformer encoder,从 Bert-Base 的前六层初始化,用于提取 text embedding。

  3. Multimodal Encoder:也是 6 层的 Transformer encoder,从 Bert-Base 的后六层初始化,并在 Self Attention 后添加 Cross Attention,实现 image embedding 和 text embedding 的交互,提取多模态 embedding。从这里也可以看出,Albef 没有使用 decoder,所以不具备序列文本生成能力,如果需要执行 VQA 等任务,需要额外添加 decoder。

VLMO(2022)

Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts

        作者指出当前的视觉-语言多模态模型可以分成2种类型

  • 使用两个dual encoder来分别编码图像和文本,然后使用余弦相似度或者线性投影层来建模图像和文本两种模态之间的交互。这种方式优点是对于视觉-文本检索任务非常适合,因为可以提前将大量图像或者文件的编码计算出来并存储下来,应用时只需要计算余弦相似度即可。但缺点是模态之间交互太简单,因此在视觉推理和视觉问答等复杂任务上性能一般。
  • 使用带有cross-attention的deep fusion encoder来建模图像和文本两种模态之间的交互。Image-text matching, masked language modeling, word-region/patch alignment, masked region classification and feature regression are widely used to train fusion-encoder-based models. 这种方式在视觉-语言理解任务上性能较好,但是应用于检索任务时推理速度很慢,因为需要对所有的图文对进行joint encoding。

        因此作者提出针对不同的模态,采用不同的expert的网络结构,具体做法如下图:不同模态采用不同的FFN层,共享self-attention层。这样一个网络结构同时适合图文检索和图文推理两种任务。

        也是采用三种预训练任务。

作者提出的分阶段预训练策略

  • 使用图像数据和BEiT中训练方法,预训练V-FFN和自注意力层
  • 冻结V-FFN和自注意力层,使用文本数据和MLM任务训练L-FFN
  • 采用图像-文本数据,训练整个模型网络。

注意:先训文本,再训图像,效果好像不好

         作者挖的坑自己后面都填了

BLIP(2022)

BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation
ALBEF团队出品,可以看作是ALBEF和VLMO的结合
作者指出只采用encoder的网络不适合文本生成任务,采用encoder-decoder的网络不适合图文检索任务,因此提出BLIP结构,图像还是采用一个ViT,文本有三种结构:
  • Text Encoder:用ITC损失训练,比较常规(采用[CLS])
  • Image-grounded Text Encoder:用ITM训练,也比较常规(采用[Encoder], 算ITM时也和ALBEF一样用到了ITC计算出的困难负样本)
  • Image-grounded Text Decoder:用标准语言建模任务LM训练解码器,这样网络就可以适用于文本生成任务(如image caption)。只替换了self-attention层,cross-attention和FFN层参数是共享的。是主要创新点。采用[Decoder])

训练一次,图像只需要前向一次,但文本需要前向三次,因为采用三种不同的网络结构,因此训练比较费时,也比较难训练

         提出一种新的数据采样方法,用于从含有噪声的图像-文本对数据中学习:

  • 先用原始数据训练一个BLIP模型,然后分别用不同的小量人类标注数据集微调BLIP得到captioner和filter。
  • 采用captioner(Image-grounded Text Decoder),对图像生成一个合成的描述;
  • 采用过滤器filter(Image-grounded Text Encoder),过滤掉质量低的captioner生成的合成描述或者爬取的原始网页上的描述 
  • 最后用高质量的最新数据集,重新训练一个BLIP模型

CoCa(2022)

CoCa: Contrastive Captioners are Image-Text Foundation Models

         CoCa的网络结构和ALBEF非常相似,但是更加简单,训练效率更高(ALBEF在文本采用的是编码器,CoCa采用解码器,因此可以不做适配修改直接生成文字)

        只采用图像-文本对数据进行训练

 BeiTv3(2022)

Image as a Foreign Language_BEiT Pretraining for All Vision and Vision-Language Tasks

核心思想:把图像也看成语言,patch embedding之后就是tokens,和语言没有区别。这样训练任务都可以用masked data modeling来做了,不再需要ITC, ITM等图像文本对损失了。采用了统一的Multiway Transformers网络架构,可同时适用于图像和图像-文本两种任务

 网络整体架构如下:each layer contains a vision expert and a language expert. Moreover, the top three layers have vision-language experts designed for fusion encoders. Refer to Figure 3 (a)(b)(c) for more detailed modeling layouts.

适用于多种视觉和视觉语言多模态下游任务 :

预训练任务采用masked data modeling,其中图像采用BEiTv2中的tokenizer, 并masked掉40%的patch block。

网络总参数量1.9B。预训练数据采用图像,文本,图像文本对三种

将BeiTv3应用于 Image Captioning做法:设计了特殊的self-attention mask。即在图像token中注意力是双向的,但在文本token中注意力只能看到左侧的。推理的时候以autoregressive方式每次生成一个token。

将BeiTv3应用于目标检测和实例分割下游任务的方法:将BeiTv3作为backbone,采用和ViTDet一样的做法,包括特征金字塔和window attention,推理时候采用Soft-NMS。最终在COCO测试集上取得了63.7 box AP和54.8 mask AP

总结:这些算法之间的关系

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

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

相关文章

【Linux】23、内存超详细介绍

文章目录 零、资料一、内存映射1.1 TLB1.2 多级页表1.3 大页 二、虚拟内存空间分布2.1 用户空间的段2.2 内存分配和回收2.2.1 小对象2.2.2 释放 三、查看内存使用情况3.1 Buffer 和 Cache3.1.1 proc 文件系统3.1.2 案例3.1.2.1 场景 1:磁盘和文件写案例3.1.2.2 场景…

【STM32单片机】自动售货机控制系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器,使用OLED显示模块、矩阵按键模块、LED和蜂鸣器、继电器模块等。 主要功能: 系统运行后,OLED显示系统初始界面,可通过…

C#的函数

可以发现首字母一般为动词 可以看出void是返回空值 这个就不是放回空值了 例如 函数修饰符 1、如上面的实例一样——无修饰符:如果一个参数没有用参数修饰符标记,则认为它将按值进行传递,这将以为着被调用的方法收到原始数据的一份副本。&am…

2024北京交通大学计算机考研分析

24计算机考研|上岸指南 北京交通大学 北京交通大学是教育部是首批进入国家“211工程”建设高校,是全国具有研究生院的56所高校之一,计算机与信息技术学院为北京交通大学下属二级学院,学院成立于2000年3月,其前身是成立于1977年的…

面向对象编程:Rust的面向对象特性

欢迎关注我的公众号lincyang新自媒体,回复关键字【程序员经典书单】,领取程序员的100本经典书单 大家好!我是lincyang。 今天我们将深入探讨Rust语言中的面向对象编程(OOP)特性,并将其与其他流行编程语言进…

C# PIE-SDK二次开发界面汉化方法

那些最好的程序员不是为了得到更高的薪水或者得到公众的仰慕而编程,他们只是觉得这是一件有趣的事情! C# PIE-SDK二次开发界面汉化方法 🍀前言🌸配置方法🍕拷贝语言包文件夹🍔增加窗体代码🍟运行…

链表?细啊!超详细的知识点总结!

链表 定义:链表是一种递归的数据结构,它或者为空(null),或者是指向一个结点(node)的引用,该结点含有一个泛型的元素和一个指向另一条链表的引用。 ​ 其实链表就是有序的列表,它在内…

GPT实战系列-GPT训练的Pretraining,SFT,Reward Modeling,RLHF

GPT实战系列-GPT训练的Pretraining,SFT,Reward Modeling,RLHF 文章目录 GPT实战系列-GPT训练的Pretraining,SFT,Reward Modeling,RLHFPretraining 预训练阶段Supervised FineTuning (SFT&#x…

文档向量化工具(二):text2vec介绍

目录 前言 text2vec开源项目 核心能力 文本向量表示模型 本地试用 安装依赖 下载模型到本地(如果你的网络能直接从huggingface上拉取文件,可跳过) ​运行试验代码 前言 在上一篇文章中介绍了,如何从不同格式的文件里提取…

4.整数输入,并输出变量类型【2023.11.26】

1.问题描述 使用 input 函数读入一个整数,并将该整数输出,并在下一行输出变量类型 2.解决思路 使用 type 函数获取变量类型 输入的内容从 input() 函数获取时,它们是字符串类型。但是,我们需要将其转换为整数类型,以…

乘法原理 LeetCode 828. 统计子串中的唯一字符

我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符,并返回唯一字符的个数。 例如:s "LEETCODE" ,则其中 "L", "T","C","O","D" 都是唯一字符,…

速记:一个TL431应用电路

一个TL431应用电路 仿真结果 输出电压为:5V 负载电阻为: R4 50Ω 如果负载R4加重 显然负载加重,输出就达不到5V. 三极管T1 的作用 没有三极管的情况 同样是保持负载 R 50Ω 可见三极管的作用就是用来放大电流

带你用uniapp从零开发一个仿小米商场_8. 配置pages.json从而实现头部搜索框

通过观察小米商城的头部导航栏的时候可以发现,它是由一个文字图标,和一个输入框,还有一个扫描二维码的按钮 有两种实现方式,一种是自己写一个自定义导航,还有一种是用官方的 这里使用官方的,实现去到pages.json文件,找到index这个页面配置 可以通过给它设置app-plus app-pl…

线性模型加上正则化

使用弹性网络回归(Elastic Net Regression)算法来预测波士顿房屋价格。弹性网络回归是一种结合了L1和L2正则化惩罚的线性回归模型,能够处理高维数据和具有多重共线性的特征。弹性网络回归的目标函数包括数据拟合损失和正则化项: m…

基于jmeter的性能全流程测试

做性能测试的步骤 1、服务器性能监控 首先要在对应服务器上面安装性能监控工具,比如linux系统下的服务器,可以选择nmon或者其他的监控工具,然后在jmeter模拟场景跑脚本的时候,同时启动监控工具,这样就可以获得jmeter…

【LabVIEW学习】3.labview制作安装程序

一。生成exe文件 1.创建可执行文件 (1)创建项目 注意: 1.创建.exe文件,这个文件在labview环境下才可以运行,如果直接传递给其他电脑(没有labview环境),他是不可以运行的。 2.如果已…

线程的状态以及状态转移

一. 线程的状态 NEW: 线程刚被创建, 但是并未启动. 还没调用start方法.RUNNABLE: 这里没有区分就绪和运行状态. 因为对于Java对象来说, 只能标记为可运行, 至于什么时候运行, 不是JVM来控制的了, 是OS来进行调度的, 而且时间非常短暂, 因此对于Java对象的状态来说, 无法区分.T…

一文读懂MySQL基础与进阶

Mysql基础与进阶 Part1 基础操作 数据库操作 在MySQL中,您可以使用一些基本的命令来创建和删除数据库。以下是这些操作的示例: 创建数据库: 要创建一个新的数据库,您可以使用CREATE DATABASE命令。以下是示例: CREA…

重量级消息,微软将ThreadX RTOS全家桶贡献给Eclipse基金会,免费供大家商用,宽松的MIT授权方式

从明年第1季度开始,任何人,任何厂家的芯片都可以免费商用,MIT授权就这点好。 贡献出来后,多方可以一起努力开发,当前首批兴趣小组AMD, Cypherbridge, Microsoft, NXP, PX5, Renesas, ST Microelectronics, Silicon Lab…

华为IE题中的QoS题配置案例

要求:保证局域网视频网段流量50M,在链路空闲时可以到100M 1、拥塞避免:根据AF队列的特性,把视频流量放入AF队列并设置为50M带宽,因为AF队列不但可以保证有50M,AF还可以暂用空闲带宽。 2、流量监管&#xf…