NeurIPS2022 | OmniVL: 用于Image-Language和Video-Language任务的通用模型

news2024/11/23 15:06:56

原文标题:OmniVL: One Foundation Model for Image-Language and Video-Language Tasks

论文链接:OmniVL: One Foundation Model for Image-Language and Video-Language Tasks | OpenReview

三模态统一的工作。

一、问题提出

旨在设计一个全视觉语言基础模型OmniVL,以支持图像语言和视频语言的预训练以及相应的下游任务。

现有模型比较:

第一次证明了一个模型可以双向受益于图像和视频任务,而不是传统的单向方式,即使用image (/image-language)来帮助video(/video-language)

为了同时支持图像和视频输入,OmniVL采用了统一的基于transformer的视觉编码器来提取视觉表示,其中视频输入与图像共享大多数transformer层,3D patch tokenizer 和temporal attention blocks。与现有VLP model类似,OmniVL有另一个text encoder来提取语言表示。为了在同一体系结构中支持多个任务的学习,OmniVL遵循encoder-decoder结构,有两个基于视觉的decoder。其中一个具有视觉-文本语义对齐的双向注意,另一种解码器具有文本生成的因果注意。用图像语言和视频语言数据以一种解耦的联合方式对OmniVL进行预训练,这与现有的工作不同,这些工作只应用图像语言预训练,只应用视频语言预训练,或者从头开始使用它们的联合预训练。更具体地说,首先对图像语言进行预训练,专注于空间表示学习,然后与视频语言一起进行联合预训练,在保留/优化已学习好的空间表示的同时,增量地学习时间动态。这不仅使从空间到时间维度的学习效率更高,而且使学习相互补充。这种双向帮助在以前的工作中还没有被阐明,并且在推动一个基础模型来提高图像和视频任务的性能方面非常重要。

优势:目标是利用尽可能多的监督(或噪声监督)预训练语料;人类标注的视觉标签数据(如ImageNet)导致获得更具偏差的表示,这有利于迁移学习任务(如图像分类),而网络爬取的视觉语言数据涵盖更广泛的视觉概念,并有利于跨模态和多模态任务。

二、模型结构

1、Framework

Unified Visual Encoder.

将图像和视频统一在一个基于transformer的visual encoder中,将它们转换为一系列token,其中独立的基于2D/3D convolution-based patch tokenizers分别用于图像/视频。因此,将空间和时间位置编码添加到输入token中以合并位置信息,依次执行时间自注意和空间自注意,对于图像输入,将自动跳过时间自注意块。最终的可视化表示vcls是从最后一个块的[CLS]令牌获得的。

Text Encoder. BERT

Visual-grounded Alignment Decoder

它以统一视觉编码器的文本和输出视觉特征作为输入,并将两种模式的信息用堆叠的变形块进行融合。每个块基本上包含一个自我注意层、一个交叉注意层和一个前馈层。一个特定于任务的token [ENC]被添加到输入文本中,其输出embedding将被用作融合的跨模态表示。

Visual-grounded Generation Decoder

通过附加一个基于视觉的文本生成解码器,使模型拥有多模态生成能力。它采用了与上述对齐译码器相似的结构,但将双向自注意替换为因果自注意。添加一个[DEC] token和一个[EOS] token分别表示任务类型和信号结束。

2、Pre-training Objectives

Unified Vision-Language Contrastive (UniVLC) Loss.

通过统一来自图像标签数据的监督学习和来自自然语言监督的对比学习,引入了一种新的视觉表示学习范式。在本文中,将其范围扩展到统一的视觉领域,通过联合视觉-标签-文本空间将图像和视频数据结合起来进行跨模态预训练。

定义人工标注图像/视频标签数据和web爬虫图像/视频文本数据为三元组格式S = (x, y, t),其中x为图像/视频数据,y是标签,t是语言描述,对于图像/视频标签数据,使用与CLIP和ActionCLIP相同的prompt生成t。

根据CLIP对其进行线性投影和归一化层,得到潜在视觉向量vi和文本向量wi,为了实现大批量的对比学习,我们维护了三个队列,分别存储动量编码器中最近的M个视觉向量和文本向量,以及对应的标签。然后计算对比损失:

τ是一个可学习的温度参数。最后,统一的视觉-语言对比损失定义为:

Vision-Language Matching (VLM) Loss.

Language Modeling (LM) Loss.

以交叉熵损失优化视觉接地生成解码器的输出,直接以自回归的方式最大化输入文本序列的似然:

total loss:

3、Pretraining Corpus and Paradigms

Corpus. 对于图像-文本数据,默认共14M张图像,包括2个人类注释数据集(COCO和Visual Genome)和3个web数据集(CC3M,CC12M和SBU caption)。对于视频-文本数据,使用WebVid,包含250万来自网络的视频。

Paradigms. 采用解耦的联合预训练范式。具体来说,首先在图像-标签-文本数据上预训练,然后在图像-标签-文本数据和视频-标签-文本数据上进行联合训练。通过这种方式,将多模态建模解耦到空间和时间维度。这种设计有两个潜在的好处:1)考虑到视频预训练的高昂计算成本,首先应用图像数据学习空间表示更有效。2)解耦模式使多模态表示学习更加有效,这是图像语言和视频语言相互受益的关键。

三、Experiments

Implementation Details. 默认情况下,视觉编码器和文本编码器使用TimeSformer基本模型和BERT基本模型。在ImageNet-1K上预训练的Vit-B/16初始化空间注意力,分辨率为224 × 224的RandomCrop为输入,应用RandAugment。该模型使用batch_size 2880个预训练20个epoch。对于联合预训练,对8 × 224 × 224个视频片段进行稀疏抽样,训练10个epoch,视频数据batch_size 为800,图像数据batch_size 为2880个。联合预训练在图像和视频数据之间进行批量交替。使用AdamW优化,权重衰减为0.05。学习率被warmup到3e-4(图像)/ 8e-5(joint),并以0.85的速率线性衰减。在下游微调过程中,将图像-文本和视频-文本任务的图像分辨率提高到384 × 384。每个视频随机抽取8帧用于检索,16帧用于QA。在时空视觉编码器中插入时间位置embedding以适应不同长度的输入。

1、Visual Only Tasks

Image Classification

Video Action Recognition.

2、Cross-modal Alignment Tasks

Image-Text Retrieval.

Text-to-Video Retrieval

3、Multi-modal Understanding and Generation Tasks

Image Captioning.

Video Captioning.

Visual Question Answering. & Video Question Answering.

4、Ablation Study

Decoupled Joint Pretraining.

使用不同的预训练策略进行了四种消融实验:仅图像预训练、仅视频预训练、从头开始的joint预训练和Img2Vid预训练,其中首先在图像上预训练OmniVL,然后在视频上预训练。

UniVLC Loss.

将UniVLC损失替换为vanilla对比损失,研究其对各种下游任务的影响

四、总结

尽管模型在广泛的下游任务上取得了优异的结果,但它仍然缺乏一些视觉语言交互任务所需的常识性推理能力(例如,视觉/视频问题回答)。还需要更好的架构设计,以支持可视化问答的zero-shot能力和GPT-3这样的zero-shot任务定制能力。从社会影响的角度来看,由于模型是在大规模的网络抓取数据上进行预训练的,这些数据可能包含一些有毒的语言或偏见,并且不容易明确地控制模型输出,因此应该非常注意确保负责任的模型部署

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

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

相关文章

正点原子基于库和寄存器建立keil的工程文件简单理解(不是具体步骤)

下载mdk 个人上传免费的pdf:https://download.csdn.net/download/weixin_43794311/87232741,或直接到正点原子官网下载 https://www.keil.com/download/ 两种建立方式的本质理解 库函数是有人基于寄存器已经完成对寄存器的设置,只要根据函数参数意义&…

【Uni-App】vscode 开发uni-app 配置eslint、prettier 实现代码检查和代码自动格式化

目录一:前言二、利用HBuilderX创建uni-app项目三、配置代码检查和代码自动格式化1. 在vscode中打开项目2. 创建package.json3. 添加eslint、prettier相关依赖4. 配置.eslintrc.js5. 配置.prettierrc.json6. 配置.editorconfig7. 配置.eslintignore如果以上还不生效&…

USB——域,包,事务及传输

USB 域,包,事务及传输 域组成包包组成事务事务组成传输 字节序 LSB 概览 域通常来说有八个 SYNCPIDADDRENDP:FRAMEDATACRCEOP 多个域组成包,USB 的包分为四大类 token:令牌包data:数据包handshake&…

centos7安装samba

关闭防火墙 [rootlocalhost ~]# systemctl stop firewalld.service [rootlocalhost ~]# systemctl disable firewalld.service Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. Removed symlink /etc/systemd/system/basic.target.wants/f…

单目测距(yolo目标检测+标定+测距代码)

单目测距(目标检测标定测距)** 实时感知本车周围物体的距离对高级驾驶辅助系统具有重要意义,当判定物体与本车距离小于安全距离时便采取主动刹车等安全辅助功能,这将进一步提升汽车的安全性能并减少碰撞的发生。上一章本文完成了目…

Shell 标准输入和输出

无论是要交给程序处理的数据,还是控制脚本的简单命令,都少不了输入和输出。程序要做的第一件事就是处理如同一阴一阳的“输入与输出”。 1 、从文件获取输入 当我们希望向文件输出内容时,我们可以通过符号 > 或 >> 实现。而用代表…

[ Linux ] 线程独立栈,线程分离,Linux线程互斥

目录 1.线程栈 1.1pthread_t 1.2用户级的线程id与内核LWP的对应关系 2.分离线程 2.1 pthread_detch 3.线程互斥 3.1互斥相关概念 3.2 互斥量mutex 3.3 售票系统案例验证共享变量会有问题 3.4 解决抢票问题 3.5互斥量的接口 3.5.1初始化互斥量 3.5.2 销毁互斥量 3…

MSF之ssh_login漏洞

ssh_login准备实操准备 目标机:windows xp 攻击机:kali 工具:metasploit framework 实操 先查看两机器的ip kali的ip为172.17.0.1 xp的ip为192.168.17.130 互相ping一下 没问题。 打开msf search ssh_login 爆出模块 use 0 show o…

vue项目打包流程与反向代理Nginx的使用

目录 前言 参考文章 正文 1.打包前的配置工作 做反向代理的原因(Vue项目打包后Proxy失效的问题): 2.Nginx使用 前言 突发灵感想学习下打包,第一反应是学习webpack,翻找一通后发现用不着webpack,因为…

ORB-SLAM2 --- Tracking::UpdateLocalPoints函数

目录 1.函数作用 2.函数流程 3.code 4.函数解析 1.函数作用 更新局部关键点。先把局部地图清空,然后将局部关键帧的有效地图点添加到局部地图中。 2.函数流程 这是更新局部地图中的一个小函数,我们在Tracking::UpdateLocalKeyFrames更新了局部关键…

C++ Reference: Standard C++ Library reference: Containers: map: map: value_comp

C官网参考链接&#xff1a;https://cplusplus.com/reference/map/map/value_comp/ 公有成员函数 <map> std::map::value_comp value_compare value_comp() const;返回值比较对象 返回一个比较对象&#xff0c;该对象可用于比较两个元素&#xff0c;以获得第一个元素的键…

Python 基础| Python 直接赋值、深拷贝和浅拷贝

先看这三个词的意思我觉得菜鸟的总结就很好 Python 直接赋值、浅拷贝和深度拷贝 | 菜鸟教程 直接赋值&#xff1a;其实就是对象的引用&#xff08;别名&#xff09;。 浅拷贝(copy)&#xff1a;拷贝父对象&#xff0c;不会拷贝对象的内部的子对象。 深拷贝(deepcopy)&#xf…

采购过程中会遇到的四种风险!如何管理和控制?

采购风险通常是指采购过程可能出现的一些意外情况&#xff0c;这些情况都会影响采购预期目标的实现。采购风险通常是由管理不善引起的&#xff0c;本文解释了采购过程中会遇到的四种风险&#xff0c;并介绍通过正确实施8Manage SRM采购管理系统&#xff0c;可以有效管理和控制它…

说说Python程序的执行过程

1. Python是一门解释型语言&#xff1f; 我初学Python时&#xff0c;听到的关于Python的第一句话就是&#xff0c;Python是一门解释性语言&#xff0c;我就这样一直相信下去&#xff0c;直到发现了*.pyc文件的存在。如果是解释型语言&#xff0c;那么生成的*.pyc文件是什么呢&…

工程项目管理的特点

工程项目管理是一种只关注工程项目的项目管理。它使用与任何其他类型的项目管理相同的标准方法和流程。这种专业化可能会吸引任何想要进入项目管理领域的具有工程背景的人。 工程项目管理与工程管理 工程管理侧重于对具有以下特点的工程师和工程任务的管理&#xff1a; 1、…

java UDP通信程序DatagramSocket数据接收

在查看本文前 您可以先看看我的文章 java UDP通信程序DatagramSocket数据发送 对UDP有一个基本的了解 然后这里我们就直接看代码了 我们先创建一个包 包下创建两个类 分别是 sendOut 发送类 参考代码如下 import java.io.IOException; import java.net.DatagramPacket; impo…

【Flutter 笔记系列 第 3 篇】如何正确对待Name source files using `lowercase with underscores`

相信很多安装了一些提示插件的小伙伴都遇见过 Name source files using lowercase with underscores flutter 提示 如下图 此时会有两种选择 1.能跑就行&#xff0c;无视它 2.好烦&#xff0c;我也没干什么怎么就提示不规范了。 3.一定是哪里出了问题&#xff0c;我要找到…

高通Ride软件开发包使用指南(8)

高通Ride软件开发包使用指南&#xff08;8&#xff09;6.9跟踪6.10 基础感知延迟分析6.10.1生成CSV6.9跟踪 用户可以使用Google Chrome中的跟踪功能分析代码的执行浏览器以下步骤中的示例显示如何分析Foundation SDK相机知觉 必须启用相关日志条目&#xff0c;因为跟踪使用SD…

说说Spring事件发布机制

文章目录前言一、 使用到事件发布机制的源码二、Springboot启动过程中用到的部分事件三、Springboot中的监听器四、自定义事件源&#xff0c;事件监听器和事件发布器4.1 目录结构4.2 事件源4.3 事件监听器4.4 事件帮助器4.4.1 事件发布帮助接口4.4.2 事件发布帮助接口实现类4.4…

运维就业现状怎么样?技能要求高吗?

运维至少需要知道哪些知识才可以去面试&#xff1f; 有一个答案对这一话题的解读非常深入&#xff0c;体系化的分析了所需掌握的技术、工作内容、性质及可发展的方向等等&#xff0c;今天特别分享给大家&#xff0c;按照这个发展&#xff0c;运维则已不需担心就业、薪酬等问题了…