多模态系列论文----最详细的多模态论文总结(BLIP、BEIT、CoCa等)

news2024/9/27 17:26:41

1 多模态概述

多模态指的是多种模态的信息数据,包括:文本、图像、视频、音频等。多模态任务是指需要同时处理两种或多种不同类型的数据的任务。近年来,随着深度学习技术的发展,多模态任务取得了显著的进步。特别是VIT(Vision Transformer)和CLIP(Contrastive Language–Image Pre-training)这两种基于Transformer模型的方法,极大地推动了多模态研究的发展。相比于传统的基于CNN(Convolutional Neural Network)的方法,Transformer能够对不同模态的数据进行统一建模,包括参数共享和特征融合。这极大地降低了多模态任务的复杂性和计算成本。
本文主要关注文本、图像两种模态数据的处理。

常见任务

  1. 图像描述(image captioning) :对给定图像生成描述性说明或生成字幕。
  2. 视觉定位(visual grounding):在给定的图像中定位具有指定描述的对象。
  3. 视觉问答(VQA):借助相关图像为文本问题生成文本答案。
  4. 跨模态检索(Cross-Modal Retrieval):包括利用文本搜索图像和利用图像搜索文本两种任务。
  5. 视觉推理(visual reasoning):对给定的图像图像推断常识信息和认知理解。可分为两个任务,包括问题回答(从问题的预期答案库中选择最佳答案)和回答理由(提供给定答案背后的理由)。

2 近期论文关系梳理

多模态近期出现较多论文,各论文的关系图如下,相同颜色代表作者是同一团队。
在这里插入图片描述

  1. ViLT:多模态学习之前都是Oscar或者Uniter的这些工作,但他们的缺陷是因为用了Object Detection的模型做视觉特征抽取,所以速度太慢,在Vision Transformer之后,Vilt的作者用一个Vision Transformer去代替vision特征提取,只用一个Embedding层大大简化了模型结构,所以结合VIT和Oscar推出了ViLT。
  2. ALBEF:ALBEF的作者发现Clip比较高效,适合做Image Text Retrieval,原始的方法因为Modality Fusion做得很好,所以多模态任务非常强,ViLT结构比较简单,所以最后综合各算法长处推出了ALBEF这样一个Fusion Encoder的模式.
  3. CoCa:SimVLM用Encoder Decoder去做多模态,它的作者在ALBEF的基础上推出了CoCa,用一个Contrast和Captioning两个Loss训练出非常强大的模型。
  4. VLMO:微软根据ALBEF和Vilt,提出VLMO,用共享参数的方式做一个统一的多模态的框架
  5. BLIP:ALBEF的作者基于参数共享的思想,基于可以用很多Text Branch,提出Blip的模型,能做非常好的Captioning功能,而且它的Caption Filter模型非常好用,能够像一个普适工具一样用到各种各样的情形中。
    详细解析参考:多模态系列论文–BLIP 详细解析
  6. BEIT:ViT也用Mask Data Modeling的方式做Self-Supplied Learning,但是效果不是很好,而微软团队认为Mask Data Modeling是非常有前景的方向,所以顺着Bert的思想提出BEIT,号称计算机视觉界的Bert Moment,很快又推出BEITv2,但这个主要做视觉任务,不是多模态。
  7. Vision Language BEIT:BEIT可以在视觉上做Mask Modeling,Bert可以在文本上做Mask Modeling,因此作者将视觉和文本合在一起,推出VL-BEIT
  8. BEITv3:该团队将VLMO, VLBEIT和BEITv2三个工作合起来,推出多模态的BEITv3,大幅超过了CoCa, Blip在单模态和多模态上的各种表现。
    详细解析参考:多模态系列论文–BEiT-3 详细解析
  9. MAE:Mask Auto Encoder,主要是Mask and Predict Pixel(BEIT是Mask and Predict Patch),其实Vision Transformer都已经做,但是效果都不是很好,BEIT和MAE都把效果推到一个非常高的高度
  10. Flip:Fast Language Image Prediction,MAE有一个非常好的一个特性,就是在视觉端把大量的Patch全都Mask掉之后,只把没有Mask过的Patch送入Vision Transformer学习,大大减少了计算量,Flip把MAE的这个有用的特性用到Clip的结构里,模型就是Clip没有任何的改变,只不过在视觉端跟MAE一样,只用没有Mask的Token,这样就把Sequence Length降低了很多,训练就快了。
    详细解析参考:多模态系列论文–CLIP 详细解析

4 最新进展

目前很多工作认为之前模型不够统一,不是真正意义上的Unified Framework,只是更灵活的把很多模型拼到一起,对于大一统的框架,目前主要是两种思路。

  1. 微软的MetaLM,Google的Poli,提出模型就是一个Encoder Decoder,有图像的输入,文本的输入,模型不论是在预训练的时候还是在下游任务的时候做什么,完全是由文本的Prompt决定。不论什么任务,它的输出永远都是文字。所以是Text Generation任务,它通过调整各种各样的Prompt,也就是文章的Language Interface,只需要调整它的Language,这个模型就知道在做什么任务。这个模型真的是很少被改动。所以算得上是一个Unified Framework。
  2. Generalist Model通用模型:不论在预训练的时候,还是在做下游任务的时候,都只用一个模型直接训练好就可以了,不再根据下游任务调整模型结构,或者再给它加一个Task Specific的Head,最近也有一些工作比如Unified IO、UniPerceiver、UniPerceiver MOE、UniPerceiver V2等,虽然暂时效果还没有优势,但是应该很快就会有进一步的提升。

5 常用损失函数

  1. ITC(Image-Text Contrastive loss): 使用对比损失来约束image与text的特征,positive靠近,negative远离。
  2. ITM(Image-Text Matching loss): 选取对比计算中的hard negative,要求网络计算其是否匹配,赋予网络具有挑战的任务。
  3. MLM(Masked Language Modeling): BERT的预训练函数,ALBEF和VLMO也用这个目标函数,类似完形填空,将一个句子某个中间词mask掉,再预测这个中间词,属于双向模型
  4. LM(Language Modeling):给定一个句子,mask掉一个句子后半部分,然后用前半部分去预测句子后面内容,BLIP、GPT的预训练函数。有的论文称为Captioning Loss

致谢:
感谢李沐老师和朱老师的详细讲解,本文是对朱老师课程的总结,并增加个人理解,详细内容请参考两位老师的课程,谢谢。

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

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

相关文章

【WebSocket】SpringBoot整合WebSocket实现聊天室(一)

目录 一、准备 1、引入依赖 2、创建配置类 二、相关注解 一、准备 1、引入依赖 首先我们需要在项目中引入依赖&#xff0c;有两种方式。第一种我们可以在创建Spring Boot项目时搜索WebSocket然后勾选依赖 第二种是我们可以直接在项目的pom.xml文件中插入以下依赖 <dep…

基于TF-IDF+Tensorflow+PyQt+孪生神经网络的智能聊天机器人(深度学习)含全部Python工程源码及模型+训练数据集

目录 前言总体设计系统整体结构图系统流程图孪生神经网络结构图 运行环境Python 环境TensorFlow 环境 模块实现1. 数据预处理2. 创建模型并编译3. 模型训练及保存4. 模型应用 系统测试1. 训练准确率2. 测试效果3. 模型生成 工程源代码下载其它资料下载 前言 本项目利用TF-IDF&…

[VUE学习】从头搭建权限管理系统前端-初始化

1.安装Node 2.安装Vue Cli vue的一个脚手架 npm install -g vue/cli 3.vue ui搭建vue项目 cmd 运行 vue ui 然后创建新项目 选择npm 选择配置 Babel 是编译的 Router 是路由 vuex 是状态保存的 Linter/fomatter 代码检测和格式化 创建完成 这个时候 代码在我们本地…

Spring Boot 中的 Criteria 是什么,如何使用?

Spring Boot 中的 Criteria 是什么&#xff0c;如何使用&#xff1f; 介绍 Spring Boot 是一个流行的 Java Web 开发框架&#xff0c;它提供了一些强大的工具和库&#xff0c;使得开发 Web 应用程序变得更加容易。其中之一是 Criteria API&#xff0c;它提供了一种类型安全的…

电脑免费简单又好用的记事本app软件推荐

很多职场人士在办公时都需要用到电脑&#xff0c;在电脑上有很多好用的工具软件可以用来辅助工作的展开&#xff0c;其中记事本类的App就有不少优质软件存在。那电脑免费简单又好用的记事本app软件推荐哪些呢&#xff1f;这里小编就以自己的Windows10电脑为例&#xff0c;为大家…

山西电力市场日前价格预测【2023-07-09】

日前价格预测 预测明日&#xff08;2023-07-09&#xff09;山西电力市场全天平均日前电价为386.09元/MWh。其中&#xff0c;最高日前价格为505.65元/MWh&#xff0c;预计出现在21: 30。最低日前电价为286.38元/MWh&#xff0c;预计出现在13: 30。 以上预测仅供学习参考&#x…

ModaHub魔搭社区:向量数据库Zilliz Cloud向量搜索和查询教程(一)

目录 概述 开始前 单向量搜索 本文介绍如何在 Zilliz Cloud 中执行近似最近邻&#xff08;Approximate Nearest Neighbour&#xff0c;ANN&#xff09;搜索和查询。搜索是指在 Collection 中查找与指定查询向量最接近的向量&#xff0c;查询是基于指定条件筛选出满足条件的数…

一文看懂ChatGPT与存算一体化

ChatGPT开启大模型“军备赛”&#xff0c;存储作为计算机重要组成部分明显受益: ChatGPT开启算力军备赛&#xff0c;大模型参数呈现指数规模&#xff0c;引爆海量算力需求&#xff0c;模型计算量增长速度远超人工智能硬件算力增长速度&#xff0c;同时也对数据传输速度提出了…

mysql练习---对表进行插入、更新与删除

环境&#xff1a; 第一题 (1) 创建表 create table pet( name varchar(20) not null comment 宠物名称, owner varchar(20) comment 宠物主人, species varchar(20) not null comment 种类, sex char not null comment 性别, birth year not null comment 出生日期, death …

HTML转EXE工具(23.7.7.0)使用说明

目录 一、注册账号和不注册有什么区别&#xff1f; 二、如何注册账号&#xff1f; 三、如何自定义about框&#xff1f; 四、如何选择打包网站还是Web项目&#xff1f; 五、如何设置程序基本信息&#xff1f; 六、什么是程序启动最大化和无标题&#xff1f; 七、程序生成…

Android之内存泄漏与内存溢出

Android之内存泄漏与内存溢出 概览 内存泄漏&#xff08;memory leak&#xff09;&#xff1a;是指程序在申请内存后&#xff0c;无法释放已申请的内存空间&#xff0c;导致系统无法及时回收内存并且分配给其他进程使用。通常少次数的内存无法及时回收并不会到程序造成什么影响…

快讯|​2023 FOX Upfront 主打 Tubi

在每月一期的 Tubi 快讯中&#xff0c;你将全面及时地获取 Tubi 最新发展动态&#xff0c;欢迎关注【比图科技】&#xff0c;一起成长变强&#xff01; 2023 FOX Upfront 主打 Tubi 2023 年 5 月 15 日&#xff0c;FOX 在纽约曼哈顿中心举行一年一度的 FOX Upfront&#xff0c…

行业追踪,2023-07-03,汽车零部件开始调整,继续跟踪等待参与第二波行情吧

自动复盘 2023-07-03 成交额超过 100 亿 排名靠前&#xff0c;macd柱由绿转红 成交量要大于均线 有必要给每个行业加一个上级的归类&#xff0c;这样更能体现主流方向 rps 有时候比较滞后&#xff0c;但不少是欲杨先抑&#xff0c; 应该持续跟踪&#xff0c;等 macd 反转时参与…

【通览一百个大模型】FLAN(Google)

【通览一百个大模型】FLAN&#xff08;Google&#xff09; 作者&#xff1a;王嘉宁&#xff0c;本文章内容为原创&#xff0c;仓库链接&#xff1a;https://github.com/wjn1996/LLMs-NLP-Algo 订阅专栏【大模型&NLP&算法】可获得博主多年积累的全部NLP、大模型和算法干…

pytorch学习指南---安装anaconda ,pytorch

pytorch 和tenserflow并驾齐驱&#xff0c;但是&#xff0c;pytorch更好理解。所以选择学习pytorch。 安装anaconda&#xff1a; https://blog.csdn.net/fan18317517352/article/details/123035625 教程&#xff1a;bilibili up主&#xff1a;一只小土堆 构建pytorch空间 py…

密码学学习笔记(九):Public-Key Encryption - 公钥加密2

Rivest-Shamir-Adleman (RSA) - 经典非对称加密算法 如果我们知道&#x1d45d;, &#x1d45e; &#xff08;即&#x1d441; &#x1d45d;&#x1d45e;) 我们可以在mod N中进行反幂运算。 比如&#xff1a; 我们有一个单向陷门函数&#xff0c;非常适合加密。 “教科书式”…

【2023年成都七中NOIP联赛】游记

Day 1&#xff1a; 8:30&#xff1a; 睡懒觉&#xff0c;一觉睡到 8:30&#xff0c;“嘟嘟嘟”的电话声响起&#xff0c;迷迷糊糊睁开眼睛&#xff0c;快点&#xff0c;去成都七中…… 没错&#xff0c;我连今天要考试都不知道&#xff08;其实昨天老师给我发了消息的&#…

算法 | 滑动窗口算法笔记

滑动窗口&#xff1a;核心思想 核心思想&#xff1a;维护一个窗口&#xff08;又叫做子区间&#xff09;&#xff0c;通过调整窗口的起始位置&#xff08;start&#xff09;和终止位置&#xff08;end&#xff09;&#xff0c;来寻找符合特定条件的子区间。 滑动窗口算法常常…

包管理器 | 浅谈几个常用的包管理工具

目录 &#x1f5a5;️ 前言 ◼️ npm ◼️ cnpm ◼️ yarn ◼️ pnpm ◼️ Bower &#x1f5a5;️ 参考文献 &#x1f5a5;️ 参考资料 &#x1f5a5;️ 前言 如果你是前端开发者&#xff0c;或多或少都会接触到一些包管理工具&#xff0c;包管理工具是用于持续自动化…

17.OpenCV中的GFTTDetector类

文章目录 GFTTDetector功能OpenCV中GFTTDetector类reference 欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f339; 这是使用imgproc.hpp中的goodFeaturesToTrack函数封装的类&#xff0c;其使用和goodFeaturesToTrack函数基本相似。 GFTTDetec…