GIT A Generative Image-to-text Transformer for Vision and Language 论文笔记

本文最后更新于:2022年10月12日 下午

GIT A Generative Image-to-text Transformer for Vision and Language 论文笔记

Arxiv上Preprint的一篇微软的论文,结构比较简单(或者叫通俗),用Image Encoder先编码图像,然后图像和文本在一个类BERT的模型中训练,没有对视频做特别的优化,但在各个任务上都SOTA。

(没啥好讲的)模型架构

GIT

GIT进行五种任务:Image Captioning、Image QA、Video Captioning、Video QA、Text Recognition、Image Classification。

图像或者图像序列将会通过Image Encoder编码为多个token,对于序列还会增加额外的可学习的temporal embedding。同时文本每个word也tokenize&embed成word token。之后,visual token和word token在一个统一的Text Decoder中解码为文本(别的地方一般称之为Multimodal Encoder)。对于Captioning、QA和Text Recognition都比较直观,这里还会通过输出目标类别对应的文字的方式来进行Image Classification任务。

GIT的Image Encoder来源于微软之前的Florence模型(也是一个大规模统一预训练模型),是一个叫做CoSwin的模型,这是一个通过CvT论文中方法修改过的Swin Transformer(CvT和Swin也都是微软家的),其通过将Swin中的patch embedding和patch merging替换为卷积来将CNN与Transformer结合(如下图)。

CvT

提到的论文:

Florence: A New Foundation Model for Computer Vision

CvT: Introducing Convolutions to Vision Transformers

这个架构与SwinBERT有些类似(可以参考我另一篇博客,同样也是微软家的),他们同样用Transformer架构的视觉编码器得到token然后送进类BERT的架构中进行文本生成任务,也同样随机初始化后面这个类BERT的架构(这个是有人做过实验说明随机初始化更好的)。如下图,在进行生成任务时,注意力mask也和SwinBERT类似,视觉的token只能对视觉token施加注意力,word token则能对visual token和之前生成的word施加注意力。

与SwinBERT不同的是,GIT使用Language modeling(LM)进行训练,而不是Masked Language modeling(MLM)。原因是因为LM训练得更快,作者分析说MLM一次只能训练一部分token的生成,而LM能训练所有token。

GIT还有一点与SwinBERT不同,就是后面接的多模态的Transformer,居然只是6层的Transformer网络,是SwinBERT的一半。

GIT标配700M参数量,还有更小的GITBGIT_BGITLGIT_L,以及更大的GIT2。

不同参数量的变种

Video Captioning实验分析

由于我对Video Captioning更感兴趣,所以就分析这方面的实验。大表如下,MSVD数据集上感觉指标已经到头了,180.2的CIDEr。而在更大的MSRVTT数据集和VATEX数据集上也获得了非常大的提升。然而,YouCook2、TVC上结果没有那么明显。

其只有129M参数量的GITBGIT_B效果也算十分不错,对于缺少卡的炼丹师来说也许能够进行更大范围的应用。