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

本文介绍了一种新的视觉与语言预训练模型ViLT,该模型摒弃了传统的区域监督和卷积架构,采用极简设计来提高模型的效率和表达能力。通过对图像和文本使用单一或双流方式进行融合,并简化特征提取过程,ViLT在保持高性能的同时解决了现有方法存在的计算效率和表达能力限制。

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

如今,在多模态领域,同样采取先预训练,再进行微调的方式。

解决问题

视觉和语言预训练 (VLP) 提高了各种联合视觉和语言下游任务的性能。之前的工作发现,在视觉方面网络的模型越复杂越好,最终的结果就会越好。即当前的 VLP 方法严重依赖图像特征提取过程,其中大部分涉及区域监督(例如,对象检测)和卷积架构(例如,ResNet)。
作者认为此前的工作存在以下两个问题:
(1) 效率/速度方面存在问题,简单地提取输入特征需要比多模式交互步骤更多的计算;
(2) 表达能力,因为它是视觉嵌入器及其预定义视觉词汇表达能力的上限。仅仅用一个预训练好的模型去抽取特征,模型的表达能力是受限的,由于不是端到端的学习,可能抽取的特征非最优解。
为了解决上述问题,作者提出了一个极简化的模型。
在这里插入图片描述

为什么要选择目标检测?
  • 目标检测是天然的离散化的过程,并且有明确的语义信息,这正是transformer所需要的。
  • 下游任务往往和物体有直接的联系,即对物体有依赖性。
    虽然大部分数据集可以事先通过目标检测抽取特征。事实上,速率是个十分严重的问题,因为当你在真实世界中,去做这种应用的时候,数据是每时每秒在实时生成的,对于新数据,再做推理的时候,就没有那么多时间来做这种目标检测。
    所以,重心就转移到怎么设计一个更轻量更简单的图像特征抽取的方法。
研究方法和创新点

在这里插入图片描述

  • ViLT 是迄今为止最简单的视觉和语言模型架构,因为它委托转换器模块提取和处理视觉特征,而不是单独的深度视觉嵌入器。这种设计本质上会带来显着的运行时间和参数效率。
  • 第一次,我们在不使用区域特征或一般的深度卷积视觉嵌入器的情况下,在视觉和语言任务上取得了出色的表现。
  • 此外,我们首次凭经验表明,在 VLP 训练方案中前所未有的全词屏蔽和图像增强进一步推动了下游性能。
模态融合方法

single-stream
将image和text输入直接concatenation起来。
dual-stream
对于image和text,各自先各自将自己的输入进行一些处理,充分挖掘单独模态里包含的信息,然后再去在之后的某一个时间点做一个融合。

特征抽取
  • region features
  • grid features
  • patch projection
流程和模块

在这里插入图片描述
single-stream
在这里插入图片描述

损失函数

Image Text Matching——负对数似然损失+图像文本对齐分数
Masked Language Modeling

预训练数据集

在这里插入图片描述

实验结果

在这里插入图片描述

### 研究动机 ViLT模型旨在通过简化视觉输入处理来提高多模态学习系统的效率和效果。传统的方法依赖于复杂的卷积神经网络(CNNs)提取区域特征作为视觉表示,这不仅增加了计算成本还引入了额外的复杂度[^1]。 为了克服这些问题,ViLT采取了一种全新的视角看待视觉信息编码过程——即直接利用未经加工过的原始像素值组成的图像块(patch),并通过线性变换映射至统一的空间维度下与文本表征相结合[^3]。这种设计使得整个框架更加简洁高效,在保持甚至超越现有技术水平的同时显著减少了资源消耗。 具体来说: - **减少计算负担**:移除深层CNN结构可以极大降低参数量以及加速推理速度; - **促进跨领域迁移能力**:由于不再受限于特定类型的物体识别任务所定义好的边界框标注数据集,因此更容易适应不同应用场景下的新挑战; - **探索更自然的人类感知机制模拟路径**:人类大脑对于外界刺激信号的感受并不区分文字还是图形形式的内容,而是作为一个整体来进行理解;同样地,去掉专门针对某一类别感官信息定制的设计有助于构建更为通用且贴近生物认知原理的人工智能系统[^2]。 综上所述,ViLT的研究目的在于创建一种既快速又有效的解决方案,能够在多种实际问题中展现出色的表现并推动该领域的进一步发展。 ```python # 示例代码展示如何加载预训练的ViLT模型(假设使用Hugging Face库) from transformers import ViltProcessor, ViltForQuestionAnswering import requests from PIL import Image processor = ViltProcessor.from_pretrained("dandelin/vilt-b32-mlm") model = ViltForQuestionAnswering.from_pretrained("dandelin/vilt-b32-qa") url = "http://images.cocodataset.org/val2017/000000039769.jpg" image = Image.open(requests.get(url, stream=True).raw) text = "How many cats are there?" encoding = processor(image, text, return_tensors="pt") outputs = model(**encoding) logits = outputs.logits idx = logits.argmax(-1).item() print(f"The answer is {idx}") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值