多模态——vilt

vilt:vision and language transformer (借鉴vit的多模态模型,视觉和语言预训练 VLP)

  • 为什么一些方法在图像模态特征提取时引入目标检测:①图像特征编码本质是离散化图像的过程,一般目标检测出的每个object的bbox对应到离散化的物体,将每个bbox内容提取固定的向量,在某种程度上多个object的特征向量可以代表整张图的离散特征。②当时的多模态应用上一般与目标检测相关:比如通过文字查询图像物体在哪个位置等。(VQA(Visual Question Answering)指的是,给机器一张图片和一个开放式的的自然语言问题,要求机器输出自然语言答案)

  • 在多模态模型中,图像模态特征提取方法汇总:

    • region feature(参数最重):CNN backbone(目标检测) + NMS + roi head(每个目标框抽取固定长度的特征编码),性能最佳,耗时最长。

    • grid feature :CNN backbone直接输出图像的编码特征,性能最差,耗时居中。

    • patch projection:借助vit中的patch embedding layer,通过一层fcn直接编码图像的patch特征,然后再拼接。性能比肩region feature,耗时最短。

  • 多模态结构按文本模态特征提取、图像模态特征提取以及融合模块三部分的参数量的大小关系分类:其中clip属于第二类,ViLBERT属于第三类,vilt属于第四类。图像特征提取比较重的情况下,一般训练模型时会将特征提前算好加载到内存中加速训练,此时图像增强的各个方法就不在适用。

  • modality interaction (模态融合)在论文中分为single-stream和dual-stream两类。single-stream指一个模型处理多源输入,将图像编码和文本编码concat到一起送入transformer。dual-stream指两个模态各自处理一定程度后在某个节点进行交互与融合。vilt选取参数量少的single-stream,模型结构见下,属于bert+vit的叠加结构。transformer的输入为模态编码(属于文本还是图像,用0/1表示)、各模态自己的位置编码、以及模态编码相加(注意不是concat),其中位置编码在长度上新增一个cls分类头。假设文本token长度为M,图像token长度为N,每个token的维度为768,那么vilt的transformer输入size为(M+N+2)*768。

  • loss由三部分组成,

    • Image Text Matching loss用文本模态的cls头预测二分类,即当前图像和当前文本是否匹配,算是整张照片的语义匹配。在训练时以0.5概率随机替换图像,使其文本图像对不匹配。

    • word parch alignment loss用分布损失来比较文本输出的M*768矩阵分布与图像输出的N*768矩阵分布的一致性,算是局部的word和图像patch之间的匹配关系。

    • masked language modeling loss则是沿用传统的bert文本训练方法,即随机掩码掉文本中的token(后续上升到整个word),让模型来预测被masked掉的token。

  • 训练细节:

    • 论文还尝试了一种图像掩码,但受限于图像生成方法,论文效果不好,所以舍去。

    •  Whole Word Masking,一般一个word单词会被tokenize成多个词根等token,但在某种情况下若干词根组成的单词确定性较强,随机掩码token意义不大,因此论文用0.15的概率随机掩码token和word两个维度,以此来做文本的数据增强。

    • Image Augmentation,因图像编码轻量,给图像增强提供较大的自由度。这也是模型涨点最有效的环节。

    • 训练时间:64块v100训了3天。

    • 数据集:4个数据集约400万图像文本对,Microsoft COCO(MSCOCO), Visual Genome(VG), SBU Captions(SBU), Google Conceptual Caption(GCC)

  • 应用:图文问答等,根据不同应用hugging face提供了不同的预训练模型,本质上都是去预测softmax分类,返回概率最高的token或句子作为答案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值