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

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-B32-MLM 模型的信息 #### 模型概述 ViLT 是一种轻量级的多模态学习框架,旨在通过去除复杂的图像特征提取步骤来提高效率和性能。具体来说,ViLT 提出了一个无需区域监督(region supervision)的方法,从而显著减少了计算复杂度并提升了推理速度[^4]。 #### ViLT-B32 特性 ViLT-B32 是基于 BERT-base 结构的一个变体,其参数数量与原始 BERT-base 类似。该模型经过微调后适用于多种下游任务,例如视觉问答(VQA)、自然语言生成(NLG)以及跨模态检索等任务。在训练过程中,ViLT 使用了掩码语言建模(Masked Language Modeling, MLM)作为核心目标之一,这有助于增强模型的语言理解能力[^2]。 #### 数据集表现 实验结果显示,在多个标准数据集上的评估表明,尽管 ViLT-B32 的设计更加简单高效,但它仍然能够达到与其他更复杂模型相当甚至更好的效果[^5]。这种高效的实现方式使得 ViLT 成为了研究领域内的一个重要进展。 #### 训练细节 对于 ViLT-B32-MLM 而言,它的训练主要包括以下几个方面: 1. **输入表示**:将图片分割成固定大小的小块(patches),并通过线性投影转换为向量形式;而对于文本部分,则沿用了传统的词嵌入技术。 2. **联合编码器**:采用 Transformer 架构对齐后的图文序列进行共同表征学习。 3. **损失函数**:除了上述提到的 MLM 外,还可能结合其他辅助任务如 ITM 进一步优化整体性能。 以下是加载预训练好的 PyTorch 版本 ViLT-B32 并执行预测的一段代码示例: ```python from transformers import ViltProcessor, ViltForQuestionAnswering import torch from PIL import Image processor = ViltProcessor.from_pretrained("dandelin/vilt-b32-finetuned-vqa") model = ViltForQuestionAnswering.from_pretrained("dandelin/vilt-b32-finetuned-vqa") image_path = 'example_image.jpg' question = "What is the color of the car?" image = Image.open(image_path).convert('RGB') encoding = processor(image, question, return_tensors="pt") outputs = model(**encoding) logits = outputs.logits predicted_class_idx = logits.argmax(-1).item() print(f"Predicted answer: {model.config.id2label[predicted_class_idx]}") ``` 此脚本展示了如何利用 Hugging Face 库中的 `transformers` 工具包快速部署 ViLT 模型来进行视觉问答任务。 --- #### 参考价值较高的论文出处 有关 ViLT 更深层次理论探讨可参阅发表于《Proceedings of the 38th International Conference on Machine Learning》的相关文章[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值