注意:时间逆序排列
关键词:ALBEF, CLIP, UniT, Vx2TEXT
多模态模型汇总-按需更新一:2019年发布的多模态模型汇总:Unicoder-VL, VisualBERT, ViLBERT, VideoBERT
多模态模型汇总-按需更新二:2020年发布的多模态模型汇总:UNIMO, UNITER, Pixel-BERT, Oscar
多模态模型汇总-按需更新三:2021年发布的多模态模型汇总
前言
多模态模型,这里主要是视觉和文本2个模态交互的模型。
一般的思路是,分别对文本和视觉进行特征提取,得到embedding,然后进行early或者late fusion,再根据预训练任务进行参数更新。
特征提取:
- 视觉的提取,大多用的是Faster R-CNN:
1.1 直接提取视觉向量;
1.2 进行目标检测,输出bounding box和对应位置;
1.3 进行目标检测,提取类别特征。
潜在问题:提取的信息有冗余和噪音,对下游任务有益的视觉信息没有被有效提取,和对应的文本信息有语义鸿沟,不好做视觉-文本对齐等。 - 文本一般会用BERT或者Roberta做初始化,大规模训练集会从头开始训练。
Early fusion:特征提取后,一般是直接concat,进入transformer;
Late fusion:特征提取后,模态内部再进行深度学习,再做模态交互。
多模态数据集+预训练任务汇总
模型 | 数据集 | 预训练任务 |
---|---|---|
ALBEF | 图文对:COCO,VG,CC,SBU Caption | ITC, MLM,ITM |
CLIP | 400million 网络公开数据集 | 对比学习 |
UniT | 视觉/文本单模态和多模态的8个数据集 | 基于8个数据集的7个任务,包含目标检测,VQA,NLU |
Vx2TEXT | 视频用Kinetics,音频使用AudioSet | TVQA, AVSD,TVC |
UNIMO | 文本:BookWiki and OpenWebText; 图片:OpenImages,unlabeled COCO; 图文对:COCO,VG,CC,SBU Caption |
对比学习,MLM,MRM |
UNITER | 图文对:COCO,VG,CC,SBU Caption | conditional MLM和MRM,ITM,WRA |
Pixel-BERT | 图文对:MS-COCO,VG | MLM,ITM |
Oscar | 图文对:COCO,CC,SBU Caption,flicker30k, GQA等4.1million; text-tag-image三元组:6.5million |
对比学习,MTL |
Unicoder-VL | 3.8M 图文对齐数据; 包含3M的CC和0.8M的SBU Captions |
MLM,ITM,MOC |
VisualBERT | 图文对:COCO 一张图片对应5个描述,共10w张图片 |
MLM,ITM |
ViLBERT | 图文对:CC,3.3million,文本弱相关 | MLM,ITM |
VideoBERT | YouCook II dataset 包括2k视频,平均时长5.26m |
3种masked learning,text-only, video-only和text-video |
数据集说明
VG:Visual Genome
CC:Conceptual Captions
预训练任务说明
MLM:masked language model
MTL:masked token loss
MRM:masked region model
ITM:image text matching
MOC:masked object classification
WRA:Word-Region Alignment
TVQA:video questions answering
TVC:video captioning,同TVQA,但视频节选方式不同
AVSD:audio-visual scene-aware dialog
模型概况
ALBEF
- 双流模型;
- 在预训练和下游任务时,使用momentum distillation,缓解图文数据集中的噪声问题;
- 从Mutual Information的视角看图文对信息对齐。
CLIP
- 双流模型,文本和视觉分别进入transformer encoder,经过线性投影计算不同图文对的相似度;
- 使用对比学习,将图片分类转换成图文匹配任务。
UniT:文本和视觉分别encoder,concat之后进入transformer decoder,根据head进行不同任务的训练。
Vx2TEXT
- 基于backbone network提取模态特征,经过分类器,使用Gumbel-softmax 采样得到k个类别,和文本一样,映射到统一的语言空间;
- 端对端的文本生成模型。
UNIMO
- 目的:集成单模态和多模态结果的预训练模型,在多模态任务上表现不错,在单模态任务上,效果也不会下降太多;
- 数据增强:通过text rewriting,text/image retrieval 增强正负样本。
UNITER
- 目的:构建一个统一的图文学习框架,适用于各种图文任务;
- 分别对图文做embedding,经过Layer Normalization进入transformer;
- 提出conditional masking和OT-based WRA预训练任务。
Pixel-BERT
- 目的:之前都是用Faster R-CNN做目标检测提取视觉特征,存在噪音冗余和语义鸿沟,通过pixel-based 特征提取,提高视觉表达的鲁棒性;
- pixel-based:random pixel sampling mechanism,视觉特征提取后,在每个feature map里提取pixel作为视觉特征,相当于feature map内部的dropout。
Oscar
- 目的:同图片中的object tags作为anchor points辅助学习多模态对齐的信息;
- 输入为3元组Word-Tag-Image;
- 通过Faster R-CNN检测的k个高精度region作为object tags。
Unicoder-VL
- 目的:构建图片和长序列的联合表征的预训练模型;
- 提取的100个region feature 和文本 concat一起,进入multi-layer transformers。
VisualBERT
- Embedding有3种:视觉bounding region,区分视觉和文本的segment embedding和视觉和文本对齐的position embedding;
- 用了多种fusion方式,实验结果显示early-fusion最好。
ViLBERT:双流模型,每个模态先进入自己的TRM(transformer block),再做模态交叉Co-TRM(co-attentional transformer)。
VideoBERT
- 通过BERT学习text-to-video和video-to-text任务;
- 视觉文本对齐处理;
- 3种masked learning,text-only, video-only和text-video。
模型详情
ALBEF [Salesforce Research 21.07]
Align before Fuse: Vision and Language Representation Learning with Momentum Distillation
https://arxiv.org/pdf/2107.07651.pdf
https://github.com/salesforce/ALBEF
提取的视觉token和文本token不对齐,做图文特征交叉是个难点。
之前的模型,使用bounding box提取region feature,本文提出ALBEF,通过cross-modal attention,实现图文表征学习。且为了从noisy的web数据上提升模型效果,提出momentum distillation,这是一种self-training method,学习pseudo-targets。实验结果显示,模型在多个下游任务上,达到SOTA。
数据:CC,SBU Captions,COCO,VG,共4M张图片,5.1M个图文对,另外加入了更加nosier的Conceptual 12M dataset,共14.1M张图片。
输入:对齐的图文数据
模型:3个encoder组成
Image encoder
模型:12-layer visual transformer ViT-B/16,在ImageNet-1k上进行权重初始化;
输入:Image I
输出:开头添加[CLS]token的embedding 序列,Text encoder
模型:6-layer transformer,BERTbase前6层初始化
输入:序列T
输出:Multimodal encoder
模型:6-layer transformer,BERTbase后6层初始化
输入:图像embedding 序列 + 文本embedding 序列
MoD(Momentum Distillation)!!!重要
本文认为,训练集有噪音:正样本对是弱相关(weakly-correlated),文本部分描述和图片无关,或者图上有些实体没有在文本中表现出来。
这样在进行ITC任务时,部分负样本的描述和图片匹配;进行MLM时,存在其他词来(甚至更好的)表述图片信息。但ITC和MLM对所有负样本一视同仁,没有考虑负样本的相关性。
基于这个背景,本文提出通过momentum-model来生成pseudo-targets,作为additional supervision。
The momentum model is a continuously-evolving teacher which consists of exponential-moving-average versions of the unimodal and multimodal encoders.
在训练阶段,用base模型做训练,然后让他的predictions和momentum model匹配。
Mutual Information Maximize perspective!!!重要
ITC,MLM和MoD可视为生成视图的不同方式。
背景:用a和b表示一个数据点的不同视图,在自监督学习中,a和b可以表示为同一个图片的增强,视觉-文本表征学习中,a和b可表示为图文对中语义信息的不同变体。
目的:本文意在学习对视图变化的不变的表示。
模型:最大化a和b的互信息。实际应用时,通过最小化InfoNCE loss来最大化MI(a,b)的下界。
其中:
:score function,可以是向量之间的dot-production
:正样本集b
预训练任务
-
ITC:image-text contrastive learning
目的:fusion前学习单模态表征
目标函数:similarity function,使得对齐图文有更高的相似分数
,:对应的[CLS] embedding 经过softmax normalization得到256d的向量
特点:受MoCo启发,用2个队列存储最近的M个图文对(本文M=65536),标准化后的特征可表示为:,,则
表示图文匹配真实标签,则损失函数为:
MoD-ITC
先通过momentum unimodal encoders计算图文相似度,得到:
然后用替代,计算soft pseudo-targest 和,
Max MI-ITC
Max MI-MoD-ITC
MoD中的KL-divergence loss可转换为以下方式:
-
MLM:masked language learning
目的:联合图文数据预测被masked words
用表示被masked text,表示模型预测的token的概率,则损失函数为:
MoD-MLM的损失函数为:
Max MI-MLM的损失函数为:
其中:
:s a lookup function in the multimodal encoder’s output layer that maps a word token y into a vector and V is the full vocabulary set;
:returns the final hidden state of the multimodal encoder corresponding to the masked context。 ITM:image-text matching
目的:预测图文是否匹配
负样本:online contrastive hard-negative mining,hard-negative为语义相似但fine-grained details不同。
使用multimodal encoder的output embedding中的[CLS] token,softmax(FC(CLS))预测二分类概率
预训练目标函数:
实验
进行下游实验时,同样使用了MoD。最终的loss为原始loss和KL-divergence的weighted combination。为简化操作,本文预训练和下游任务的都为0.4,在第一个epoch,经过linearly ramp-up,将从0提升到0.4。
本文一共做了5个V+L(视觉文本)任务。
- Image-text retrieval
包含IR和TR。
数据集:Flickr30K + COCO
实验方案:在2个数据集上分别做fine-tune,以及在COCO上做fine-tune,在Flickr30K上进行zero-shot检索。 - Visual Entailment(SNLI-VE)
预测图片和文本之间的关系是entailment,neutral还是contradictory。
实验方案:借鉴UNITER,将VE任务视为3分类,用[CLS]做类别预测。 -
VQA
给定图片和问题,生成答案。
实验方案:接入6层的transformer-decoder用来做答案生成,用[CLS]做decoder的输入,[SEP]作为终止符。
- NLVR
图文是否匹配。
实验方案:设计text-assignment(TA)任务,给定2张图一个文本,模型做3分类,判断文本和其中哪张图片相关or都不相关。
和SOTA相比,提升了3.84%。 - VG(visual grounding)
根据文本描述,找到图上位置。
数据集:RefCOCO+ dataset
实验方案:是弱监督式学习,没有bounding box。推理时,用Grad-CAM做热力图,对检测的proposal做排序。
CLIP [OpenAI 21.03]
Learning Transferable Visual Models From Natural Language Supervision
https://arxiv.org/pdf/2103.00020.pdf
https://github.com/openai/CLIP
详情:https://www.jianshu.com/p/7db808d57bba
一般的目标检测,图片分类等CV任务,都会预设有哪些类别,要识别哪些种类。实际图片信息是很丰富的,除了这些预设的类别,其他的视觉信息没有被充分利用,如果还要识别图上其他类别,就需要再加标签。
本文提出CLIP,Contrastive Language–Image Pre-training,用4亿对来自网络的图文数据集,将文本作为图像标签,进行训练。进行下游任务时,只需要提供和图上的concepts对应的文本描述,就可以进行zero-shot transfer。
模型在30个CV数据集上做了实验,实验任务包括OCR, action recognition in videos, geo-localization, and many types of fine-grained object classification。模型在大部分的任务上都达到最佳。而且,一般不用再做specific training,就可以和其他baseline 模型媲美。
数据:4亿个网络公开的图文对。为覆盖到更多的视觉concepts, 用了50w个query在搜索引擎搜索图片,一个query差不多有2w张图片。
输入:一个batch有N个图像文本对;
模型:对比学习,预测对图文数据,将图片分类任务转换成图文匹配任务:
- 双流,2个encoder分别处理文本和图片数据,text encoder使用Transformer,image encoder用了2种模型,ResNet和Vision Transformer(ViT);
a. 5种ResNet:ResNet-50, ResNet-101, EfficientNet-style的ResNet,包括RN50x4, RN50x16, RN50x64;
b. 3种ViT:ViT-B/32, ViT-B/16, ViT-L/14; - encoder representation直接线性投影到multi-modal embedding space;
- 计算2模态之间的cosine similarity,让N个匹配的图文对相似度最大,不匹配的图文对相似度最小;
- 对称的cross-entropy loss;
- 数据增强:对resized图片进行random square crop。
伪代码如下:
UniT [FAIR 21.02]
Multimodel Multitask Learning with a Unified Transformer
基于8个数据集的7个任务学习,包含目标检测,VQA,自然语言理解等等。
在这之前,很多基于transformer的单模态,多模态模型都取得不错的效果:
- 单领域或指定的多模态领域,比如ViT,DETR只关注视觉任务,BERT只负责文本任务,而VisualBERT,ViLBERT等多模态模型会应用到指定的多模态任务;
- fine-tuning时,不同任务之间的参数不能共享,以至于N个下游任务就要有N倍的参数;
- 在多任务上面做单领域的相关性/相似分析任务时,训练比较hard-coded,比如T5只能用作文本模态,而VILBERT-MT只能用在视觉-文本任务上。
因此本文提出UniT,输入图片或者文本,或者图文数据,进行多任务训练。
输入:文本和视觉
模型:Transformer encoder-decoder结构
Transformer Encoder:视觉文本分开处理。
Image Encoder
- 视觉特征:ResNet-50模型结构,采用C5 block,得到feature map:
- 参考DETR模型,提取的feature_map进入transformer,得到视觉hidden state:
- 针对不同的任务,经过线性投影,得到不同的视觉表达:
Text Encoder
- 和BERT一致,对序列长度为S的文本,hidden state:
- 针对不同任务,有不同的文本表达:
实验发现,这种投影操作的效果和最后一层的[CLS]差不多。
Transformer Decoder
基于目标任务类型,进行单模态或多模态的decoder。
视觉任务:
文本任务:
多模态任务:
目标任务:
Task-specific output heads
基于任务t的decoder hidden state
目标检测任务,和DETR模型一样,用一个class head输出类别,一个box head输出每个位置的bounding box;
如果每个box上有对应的属性标签,就类似BUTD模型,再用一个attribute classification head做标签分类。
预训练任务
每次迭代,随机选择一个任务及对应数据集进行训练。
根据数据集的大小和empirical evidence,人为设置了采样概率。
实验
- Multitask learning on detection and VQA:
1.1 目标检测任务使用COCO detection dataset和Visual Genome数据集;
1.2 VQA使用VQAv2 dataset。
实验设置:
a. 针对不同的任务,使用不同的decoder,参数不同享;
b. 使用一个参数共享的decoder来处理不同类型的任务。 - A Unified Transformer for multiple domains:
2.1 一个任务对应一个decoder,单任务训练;
2.2 一个任务对应一个decoder,多任务训练;
2.3 多任务训练,共享一个decoder。
Vx2TEXT [Facebook AI 21.01]
VX2TEXT: End-to-End Learning of Video-Based Text Generation From Multimodal Inputs
本文希望实现多模态的端对端的文本生成模型。
多模态文本生成任务需要实现3个目标:
- 如何从每个模态中提取salient information;
- 基于query,如何混合多个模态提供的信息;
- 生成合理的文本。
本文通过一个end-to-end模型框架,实现以上3个目标:
- 通过一个learnable tokenizer,提取视频,音频,语音等模态的特征,并转换到语言空间;
使用modality-specific classifiers,对每个模态提取的特征信息进行分类,仅选择top classes的textual labels作为该模态的salient information,通过预训练语言模型(比如T5)转换成word-embedding;
实际可以理解为每个模态都做标签分类,如果直接提取这些标签,可能存在很多噪音,或者跟下游任务无关,因此,仅选择top的标签,表征该模态。
为什么会提到这个呢?
https://arxiv.org/pdf/1902.05660.pdf
Cycle-Consistency for Robust Visual Question Answering提到了一个现象,如下图,同一个问题,用不同方式问,模型产出的答案不同。
- 使用relaxation scheme实现end-to-end训练;
- 通过language encoder融合不同模态的embeddings,结合一个autoregressive decoder进行文本生成,这种text decoder可以解决'video+x to text'的问题。
在 video-based text-generation tasks,比如captioning, question answering 和 audio-visual scene-aware dialog3种任务上,都达到SOTA。
输入
多模态表示:, 表示第M个模态;
task token:
模型表示:
模型输出text tokens:
Differentiable Tokenization
之前很多模型通过cross-modal来进行fusion操作,这种方式比较burdensome且计算开销大。因此,本文通过将不同模态信息映射到同一个semantic language space,来实现fusion。
对每一个模态:
- 预定义language vocabularies(categories);
- modality network提取模态特征,接入分类器,输出modality categories,使用Gumbel-Softmax trick对这些categories进行sampling,并通过Straight-Though Estimator保证的categories可微;
为什么要进行sampling?
2.1 不是每一个category都对下游任务有帮助;
2.2 仅选择top categories不可微,就没办法finetuning,且会丢失模态信息,训练过程带来偏差。
Straight-Though Estimator: - 通过预训练语言模型将top的modality categories映射到语言空间。
Generative Encoder-Decoder
视频数据:Kinetics,共400个action categories,训练时随机选择32帧,测试用了10帧数据,仅 sample 个categories表征视频模态;
视频backbone network:R(2+1)D-34;
音频数据:AudioSet,共527个acoustic events,用个categories表征音频;
音频backbone network:CNN14
(备注:音频和视频的categories的个数选择,本文做了实验。)
预训练语言模型:HuggingFace的T5-base
输入:不同模态的K个categories的embeddings,用做separator token,表示第m个模态的第k个类别的embedding,
第i个token的输出:
训练时使用teacher-forcing:
损失函数:
预测时,一个decoder既可以实现生成任务,也可以实现判别任务(其他模型可能是用multi-head,不同head负责不同任务):
- generative task:Beam Search或Greedy Decoding;
- discriminative task:TVQA选择题任务,将候选集作为模型额外输入,then evaluate each candidate output under the probability distribution defined by the autoregressive decoder(这句话感觉说的不清楚)。
实验
- TVQA:video questions answering
数据集:6 TV series的video clips,每个视频有7个问题,每个问题有5个候选答案,根据视频片段和对应语音信息,从候选集中选择答案。 - AVSD:audio-visual scene-aware dialog
数据集:Charades dataset,每段视频包含10个QA对,一个没看过视频的人和看过视频的人之间的对话,通过对话,了解视频内容; - TVC:video captioning
数据集:和TVQA一样,视频节选方式不同。
各个任务SOTA汇总
多数据集比较
VQA
VCR
NLVR
Flickr30K