论文阅读笔记——ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision

ViLT:无卷积和区域监督的多模态Transformer

ViLT 论文
在这里插入图片描述
VLP(Vision Language Pretraining) 有四种模式,作者强调应该是第四种,更应该强调模态之间的融合。CLIP 属于(b)模式,ViLBERT、UNTER和Pixel-BERT 属于(c)模式。而模态交互又分为 single-stream 和 dual-stream 两种模式,single-stream 是对图像和文本直接进行 concate,dual-stream 是图像和文本分别进行操作在后续某个阶段进行融合。ViLT 采用(d)+ single-stream,旨在提升速度。
传统的特征提取是余弦做好保存在硬盘里,所以训练是相对轻量的。但是在推理时,如果是一个没见过的,那么视觉特征提取这部分时间大量消耗,实际上就尤为严重了。
在这里插入图片描述
现有的 VLP 模型的 text embedding 都是属于类 BERT 结构,但是 visual embedding 存在差异。因为多模态下游任务,大部分是 VQA、Visual Reasoning 和物体是强关联,所以之前的方法会使用目标检测头。Region Feature 通常采用 Faster-RCNN 提取 region 特征然后,Grid Feature 直接利用 CNN 提取 grid 特征,Patch Projection 直接采用了 patchify+Linear Embedding。(跟 VIT 一样)
在训练时,采用 mask 整个单词的做法。以往 mask 某个 token,以 “giraffe” 为例,分为 “gi”,“##raf“,”##fe“,采取以往方法得到”gi“,”[MASK]“,”##fe“,模型通过”gi“,”##fe“ 容易直接记忆 ”giraffe“ 而不是利用了视觉信息。直接 mask 整个单词,强迫模型去利用视觉的信息。

实验结果

性能相比并没有下降很多,但是速度能提升到 15ms。
在这里插入图片描述

### 研究动机 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}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值