多模态论文串讲:ALBEF VLMo BLIP CoCa Beit V3

news2025/1/20 18:35:41

文章目录

  • 前言
  • ALBEF:Align before Fuse: Vision and Language Representation Learning with Momentum Distillation(2021-10)
  • VLMO: Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts(2021-11)
    • related
    • method
  • BLIP:Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation
    • filter-caption数据清洗
  • CoCa: Contrastive Captioners are Image-Text Foundation Models
  • BeiT V3--Image as a Foreign Language: BEIT Pretraining for All Vision and Vision-Language Tasks

前言

朱毅老师的b站讲解-多模态论文串讲
在这里插入图片描述

  • 图文多模态任务的经验:(1)iamge encoder的能力要比text encoder更大才可以;(2)模态融合的部分也要大;(3)对比学习,masked language model,image text matching loss都被证明是有正向效果的。
  • 文图下游任务:
    • Visual Question Answering (VQA):输入是一张图片及一个问题(用文本描述),输出是一组答案集合中的一个答案,即可以把他当成一个分类任务;
    • Visual Reasoning(VR):输入是一句文本描述以及两张图片,输出是这个文本描述是否正确。同样是以acc作为metric,是一个二分类任务;
    • Visual Entailment(VR,视觉蕴含):是从文本蕴含(一个文本作为前提,另一个文本作为假设,判断根据前提是否能推理出假设)到多模态一个新生的任务;视觉蕴含中的前提是图片,是一个三分类任务,判别结果为【是,中性,否】三类;
    • Image Caption:根据一张图片生成对应的字幕;
      在这里插入图片描述
      其他的新工作:
  • language interface:metaLM,Pali
  • generalist model: Unified IO, UniPerceiver系列

ALBEF:Align before Fuse: Vision and Language Representation Learning with Momentum Distillation(2021-10)

在这里插入图片描述
作者提出的两个改进工作:(1)在fusing之前,计算image和text的相似度,做align;(2)引入momentum distill,降低带噪数据在训练集中的干扰。本工作基于40w图片文本对开源数据集训练,8卡*4days。

  • 借鉴之前的经验:visual encoder是12FFT,text encoder是6FFT, fusion encoder也是6*FFT;IMT,MLM,ITM三个loss都被保留;

  • 实现细节:

    • image text matching loss(ITM Loss):经由fc layer,实际上是一个二分类loss,判断一个【text,image】是不是一对数据,但实际训练中,会有大量的分类结果为否的情况,使得ITM Loss看起来很低,但实际并不一定起到足够的效果。因此,从ITC对比学习计算的cosine distance中选择和真实样本距离最近的(最难分辨的,称之为hard negatives),用于ITM loss训练;
    • momentum distill
      • 问题:爬虫的图片,大部分只有hash tag的关键词,并不是一句话描述,one-hot label不利于对比学习训练;其次,MLM在填空时,合适且正确的词选并不只有一个,one hot label也会影响MLM loss;
      • 解决方法:模型不仅缩小真实样本对的距离, 还通过额外的momentum model生成伪标签,缩小image和伪标签的距离。(EMA算法)
  • 损失函数:2个IT,2个MLM,1个ITM
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 消融实验的对比结果:hard negative用在ITM loss上改善很明显;数据量加大,momentum distill的作用开始凸显。

VLMO: Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts(2021-11)

  • microsoft
  • code and pretrained-model
  • Hangbo Bao,Wenhui Wang,Furu Wei
  • 改团队基于本工作的后续工作:WaveLM,MetaLM,BEiT V1/V2/V3

related

  • 当前常用的结构:
    • 双塔网络:image encoder和text encoder ,分别编码;优点在于inference的时候可以将可用的embedding提前计算好,另外一路image or text直接通过矩阵乘计算cosine similarity,很快速的完成检索;缺点在于模态融合的部分是shallow mix,对于复杂任务(比如VR/VE/VQA)表现不好;
    • 单塔fusion encoder:使用单个encoder处理image和text,使得两个模态得到充分的融合;缺点:在处理检索问题的时候比较复杂,耗时高。
    • 是否能够将两种结构的优点结合一下。本文的idea
      • 结构改进:先使用共享的fusion module,使得不同的模态充分的融合,再对不同的模态使用单独的专家网络(FFN),在下游任务时保证了高效性;
      • 预训练过程分阶段:因为【image,text】的数据比较稀缺,利用大量的单模态数据对网络参数进行预训练,然后再利用【image,text】数据进行训练。

method

在这里插入图片描述

  • 如上图所示,multi-head attention是fusion module,文本/图像/文本-图像分别是三个单独的专家网络;根据不同的输入,选择不同的专家网络计算损失函数,也是一个iter需要多次forward,不同的输入计算不同的loss;
  • 分阶段预训练:参考下图,先基于image数据;再基于text数据,值得注意的是,text-only训练的时候,slf-attn的参数是共享image的,不做更新;最后基于【image,text】数据训练。
    在这里插入图片描述

在这里插入图片描述

BLIP:Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation

  • 问题
    • encoder-only的结构不能用于生成任务;encoder-decoder的结构不利于检索任务,是否有统一的框架;
    • 训练的数据集是网上爬取的,存在很多噪声,影响训练的结果,使用预训练的模型对数据进行清洗

在这里插入图片描述

  • 如上图所示,BLIP结构借鉴了VLMo共享权重的思路,一个image encoder,针对不同的任务训练不同的text encoder和image-grounded text decoder。相同颜色的模块表示共享一组权重。image-grounded text decoder因为是生成任务,所以使用的是单独训练的causal self-att,mask掉后边的信息。
  • ITC Loss,ITM loss,LM Loss,因此模型一个iter要走三次前向计算不同的loss

filter-caption数据清洗

在这里插入图片描述
在这里插入图片描述

  • 首先用noisy 数据+coco人工标注数据,训练BLIP对训练集重新生成caption,然后进行筛选【Iw,Tw】/【Iw, Ts】cosine similarity;
  • 再次用筛选后的数据,包含(noisy,人工标注,生成数据),对decoder进行训练。
  • caption生成的内容具有多样性,更有利于大模型(见更多分布的数据)

在这里插入图片描述

  • 实验结果以及展示的case都证明了filter+caption方式的有效性。这是一种可以推广到所有同类任务的训练策略。

CoCa: Contrastive Captioners are Image-Text Foundation Models

  • google research

  • 使用了非常大的数据集和模型参数量;没有开源代码实现
    在这里插入图片描述

  • 一个image encoder,两个text decoder;

  • 只有ITC loss和captioning loss,因此一个iter只需要进行一次前向,训练速度大大加快。

在这里插入图片描述

在这里插入图片描述

  • 六边形战士图:和其他的模型在不同的任务对比,和当前各个子任务的sota对比,结果也都是更好的。
  • 这个图非常直观,是当前多模态领域论文的很好表现形式,自己的工作总结也可以尝试借鉴。

BeiT V3–Image as a Foreign Language: BEIT Pretraining for All Vision and Vision-Language Tasks

  • microsoft

  • Wenhui Wang, Hangbo Bao,

  • motiovation:想要做一个大一统的模型,不仅能够处理不同的模态数据,更能用于各种下游任务。从结构,目标函数上实现一统,并且可以scale up到不同的模型尺寸以及数据量上。

在这里插入图片描述

  • 模型结构:VLMo结构的模型,multi-way transformer,因为transformer结构可以在各个模态的数据上都表现很好;
  • 目标函数:仅使用masked modeling的方式,将图片也看作是language,可以基于【image language】 or 【text language】 or 【image-text pair(parallel sentences) 】,使用语言模型训练的方法

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

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

相关文章

【贴片SD Card介绍】贴片SD Card (LEILONG雷龙科技)

有幸申请到了雷龙科技代理的 贴片 SD Card (SD NAND) 样品,做出测试,分享一下。 型号:CSNP32GCR01-BOW;CSNP4GCR01-BOW 生产方:CS创世半导体 由于是第一次使用贴片类型的 SD Card ,可能文章会有较多疏忽。…

【Git】Windows Git和TortoiseGit安装教程(Git2.23.0、TortoiseGit2.8.0、语言包2.8.0)

介绍 这里是小编成长之路的历程,也是小编的学习之路。希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。 一个人为什么要努力&a…

eletron+react+antd+node开发桌面小程序并打包(electron-packager+electron-builder)

首先罗列一下项目中用到的技术: electron, react,antd, typescript, node,及打包命令:pkg,electron-packager,electron-builder及child_process实现多进程 需求:开发一个桌面应用,左…

前端架构师-week3-脚手架执行准备过程实现

目录​​​​​​​​​​​​​​ 脚手架框架代码拆包 import-local应用 检查版本号功能开发(require加载资源类型讲解 npmlog封装) 最低Node版本检查功能开发 root 账号启动检查和自动降级功能开发 用户主目录检查功能开发 入参检查和 debug…

华为OD机试真题(Java),火星文计算(100%通过+复盘思路)

一、题目描述 已知火星人使用的运算符为#、$,其与地球人的等价公式如下: x#y 2*x3*y4 x$y 3*xy2 其中x、y是无符号整数;地球人公式按C语言规则计算;火星人公式中,$的优先级高于#,相同的运算符&#x…

数字船厂信息化整体解决方案(ppt可编辑)

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除 数字船厂建设思路 智慧船厂将以信息化为基础、以数据为纽带、以制造为核心、以管理为载体打造新型智慧园区,该智慧园区整合了船厂的安全、环保、能源、安防、应急…

基于 JavaWeb 的用户报名审核平台项目

目录 一、项目的需求: 二、项目的思路流程: 三、项目的框架(基于JavaWeb): 四、项目的详细搭建 1、数据库--建库建表 2、JavaBean编写(以Status.java为例) 3、Dao层(StatusDao…

Linux系统与shell编程第一节课

目录 1.1 Linux发展历史 1.2 什么是linux? 1.3 Linux的发行版 Host-Only(仅主机模式) windows开发 linux服务 区块链, 特点:稳定,安全,可移植性,低资源消耗,开源软…

做工业品行业的财务有多难

财务 做工业品行业的财务需要具备一定的财务和会计知识,以及对行业内经济运作有一定的了解。在处理大量数据和信息方面也需要有较高的能力。此外,工业品行业往往涉及到复杂的生产过程和供应链管理,需要对这些方面有一定的了解和掌握。因此&a…

数据结构初阶(栈和队列)

文章目录 一、栈1.1 什么是栈1.2 栈的使用(1)底层代码(2)方法(3)栈的应用 二、队列2.1 什么是队列2.2 队列的使用(1)底层代码的实现(2)队列的使用 2.3 双端队…

字节跳动发放年终奖,远超预期~

最近一段时间,国内互联网大厂接连公布年终奖情况,整个后厂村都洋溢在春节般的喜庆气氛里。 虽然由于各种各样的顾虑(主要是人员流失问题),大部分公司都将年终奖发放时间调整到了年中,但好饭不怕晚&#xf…

06_Callable接口

Thread类、Runnable接口使得多线程编程简单直接。 但Thread类和Runnable接口都不允许声明检查型异常,也不能定义返回值。没有返回值这点稍微有点麻烦。不能声明抛出检查型异常则更麻烦一些。 public void run()方法规范意味着你必须捕获并处理检查型异常。即使你小…

磁盘被格式化了能找到资料吗?资料找到的具体方法

磁盘格式化了还能找到,用读卡器接到电脑,就可以作为可移动磁盘来找到资料。下面讲下磁盘被格式化了能找到资料吗?资料找到的具体方法 磁盘被格式化了能找到资料吗?资料找到的具体方法 工具/软件:sayRecy 步骤1&#xf…

博世中国创新软件开发中心 BCSC

Bosch China Innovation and Software Development Campus 博世中国创新软件开发中心 BCSC 擎软件! 拓未来!Bosch China Innovation and Software Development Campus——IntroductionBOSCH——Our AdvantagesBOSCH——Hotly recruited positions Welcom…

wifi芯片行业信息汇总

1、Wifi概述 Wi-Fi这个术语被人们普遍误以为是指无线保真(Wireless Fidelity),并且即便是Wi-Fi联盟本身也经常在新闻稿和文件中使用“Wireless Fidelity”这个词。 主要版本: 随着最新的 802.11 ax 标准发布,新的 W…

『Linux』第九讲:Linux多线程详解(一)_ 线程概念 | 线程控制之线程创建 | 虚拟地址到物理地址的转换

「前言」文章是关于Linux多线程方面的知识,讲解会比较细,下面开始! 「归属专栏」Linux系统编程 「笔者」枫叶先生(fy) 「座右铭」前行路上修真我 「枫叶先生有点文青病」 「每篇一句」 我与春风皆过客, 你携秋水揽星河。 ——网络…

高精度延时

在使用STM32的时候可以使用SYSTICK来实现高精度延时。 I.MX6U没有SYSTICK定时器,但是有GPT定时器来实现高精度延时。 GPT(General Purpose Timer) GPT定时器是一个32位向上定时器(也就是从0x00000000开始向上递增计数&#xff0…

C#【必备技能篇】制作NuGet程序包,并发布到NuGet官网

文章目录 一、准备工作:在NuGet上创建并获取API Keys1、首先需要登录,直接用微软账户登录即可2、点击右上角菜单API Keys,创建Key3、填写信息并创建4、复制API Key 二、制作一个简单的dll三、创建发布文件夹四、上传NuGet程序包并发布1、方法…

java 上传压缩包遍历内容

项目环境&#xff1a;Spring Boot 2.0.6.RELEASE <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.6.RELEASE</version><relativePath/> <!-- loo…

Linux安装部署 seata server 1.4.2

Linux安装部署 seata server 1.4.2 下载安装包上传至服务器 1.首先从GitHub拉取seata压缩包 https://github.com/seata/seata/releases/download/v1.4.2/seata-server-1.4.2.zip 下载到本地后上传至服务器 或使用命令拉取 wget https://github.com/seata/seata/release…