AlexNet(2012)
ResNet(2015)
主要解决了梯度消失问题,因为当层数增多的时候,其导数以零为中心的高斯分布相乘只会越来越小,而将开始值相加便可解决值很小的问题,也就解决了梯度消失问题。
ViT(2020)
论文下载链接:https://arxiv.org/abs/2010.11929
原论文对应源码:GitHub - google-research/vision_transformer
思路:直接把图像分成固定大小的patchs,然后通过线性变换得到patch embedding,这就类比NLP的words和word embedding。因为transformer的输入就是序列token embeddings,所以图像使用patch embeddings。送入后只用Encoder不得提取特征。
positional embedding,ViT中默认采用学习(训练的)的1-D positional embedding。
分类没有采用pooling,而是直接加一个特殊的class token, 最后输出的特征加一个linear classifier就可以实现对图像的分类。所以输入ViT的sequence长度是N+1。class token对应的embedding在训练时随机初始化,然后通过训练得到。
参考:
"未来"的经典之作ViT:transformer is all you need! - 知乎
Vision Transformer详解_太阳花的小绿豆的博客-CSDN博客
ViLT(2021)
论文网址:ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision
源码网址:https://github.com/dandelin/vilt
之前的工作(DSCAR UNITER)里面用了一个Object Detection去做视觉特征抽取,太慢太贵。所以Vision Transformer。作者想用Vision Transformer去代替Vision,一个Embedding层,大大简化了模型结构。
2种模态相互作用方式和3种visual embedding方式。
其中每个矩形的高表示相对计算量大小,VE、TE和MI分别是visual embedding、text embedding和modality interaction的简写。
VILT的侧重点是(d)类,将主要计算量集中在模态交互上。
模态交互一般两种方式:
- 一种是single-stream(如BERT和UNITER),对图像和文本concate然后进行交互操作
- 另一种是dual-stream(如ViLBERT和LXMERT),不对图像和文本concate然后进行交互操作。
ViLT延用single-stream的交互方式,因为dual-stream会引入额外的计算量。
visual embedding的方法总共有三大类,其中region feature方法通常采用Faster R-CNN二阶段检测器提取region的特征,grid feature方法直接使用CNN提取grid的特征,patch projection方法将输入图片切片投影提取特征。ViLT是首个使用patch projection来做visual embedding的方法。
为了区分文本和图片输入加了modal-type embedding。
ViLT预训练的优化目标有两个:一个是image text matching(ITM),另一个是masked language modeling(MLM)。
参考:
ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision
ViLT:最简单的多模态Transformer_人工智能与算法学习的博客-CSDN博客
CLIP
论文链接:https://arxiv.org/pdf/2103.00020.pdf
代码链接: https://github.com/OpenAI/CLIP
CLIP 的一大主要贡献——摆脱了事先定好的分类标签。
ALBEF
论文链接:Align before Fuse: Vision and Language Representation Learning with Momentum Distillation
代码:https://github.com/salesforce/ALBEF
发现CLIP比较高效,适合做Image Text Retrieval, 原始的方法模态融合做的比较好,所以多模态任务非常强。而ViLT结构简单,所以综合三家之长,推出了Fusion Encoder模式。
本文提出了一种对比损失,能够在图像和文本表示融合之前先将它们对齐。不同于大多现有的方法,ALBEF方法既不需要对图像数据进行标注,也无需高分辨率的图像。为了更好地对噪声数据进行学习,作者还提出了动量蒸馏,能够从动量模型的伪目标中学习。
目标函数三个:
(1)图像文本对比学习(ITC)
(2)图像文本匹配(ITM)
(3)掩码语言建模(MLM)
参考:多模态对比学习新方法ALBEF,取得比SOTA更优的效果 - 知乎
SimVLM
Coca
论文链接:CoCa: Contrastive Captioners are Image-Text Foundation Models
代码链接:https://github.com/TooTouch/REVECA
在SimVLM的基础上推出了Coca,用一个contrastive和caption loss训练处强大的。
本文的贡献是统一了单编码器、双编码器和编码器-解码器范例,并训练了一个包含所有三种方法能力的图文基础模型。
单编码器分类 单编码器的分类方法在一个大的带标注的图片数据集上通过图片分类预训练一个视觉编码器,其中,带标注的文本的词汇表通常是固定的,这些带标注的图片通常映射到离散的类别向量使用交叉熵损失去进行学习如下:
双编码器对比学习与单编码器分类预训练相比,单编码器分类预训练需要人类标注过的标签并且数据是干净的,双编码器方法探索有噪音的网络级别的文本描述和引入一个可学习的文本塔去编码格式自由的文本。这两个编码器是通过将文本对和在一个批量样本中的其他文本对进行对比统一优化的:
编码器解码器生成尽管双编码器方法将文本编码为一个整体,生成方法(又称captioner)旨在实现详细的粒度,并要求模型以自回归的方式预测y的提取文本 token。按照标准的编码器-解码器架构,图片编码器提供了指纹的编码特征,文本解码器在前向自回归因子分解下学习最大化成对文本y的条件似然:
参考
https://blog.csdn.net/jjw_zyfx/article/details/125227638
VLMO微软
论文链接:VLMo: Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts
项目链接:https://github.com/microsoft/unilm/tree/master/vlmo
根据ALBEF和ViLT,通过统一共享参数的方式,去推出统一的多模态框架。
作者提出了一个统一的视觉语言预训练模型(VLMo),它用一个模块化的Transformer网络联合学习一个双编码器和一个融合编码器。具体来说,作者引入了模态混合专家(MOME) Transformer,其中每个块包含一个特定于模态的专家池和一个共享的自注意层。由于MOME具有建模的灵活性,预训练好的VLMo可以作为视觉语言分类任务的融合编码器进行微调,或用作图像-文本检索的双编码器。此外,作者提出了一种阶段预训练策略,该策略除了图像-文本对外,还有效利用大规模的图像和文本数据。
BLIP 2021
BLIP(Bootstrapping Language-Image Pretraining):ALBEF和 VLMO推出来,可以做非常好的captioning的功能,他的Caption Filter的那个模型非常好用,具有普适性。
创新点(1)可以灵活地转移到视觉语言的理解和生成两个任务。
(1)方法:编码器-解码器(Multimodal mixture of Encoder-Decoder,MED)的多模式混合。MED包括两个单模态编码器(lmage Encoder,Text Encoder),一个以图像为基础的编码器(image-grounded text encoder)和一个以图像为基础的解码器(image-grounded text decoder)。该模型与三个视觉语言目标联合预训练:图像文本对比学习(Image-Text Contrastive,ITC),图像文本匹配(Image-Text Matching)和图像条件化语言建模(Language Modeling,LM)。
创先点(2)BLIP通过自举caption来有效地利用有噪声的web数据,其中captioner生成合成caption,并且Filter去除有噪声的caption。
(2)方法:(Captioning and Filtering ,CapFilt)一个新的数据集自举方法,用于从含噪声的图像-文本对中学习。微调一个预训练的MED模型成为两个模块:captioner用于给定网络图像生成caption;另一个是Filter,用于从原始网络文本和合成文本中移除噪声图像文本对。
由于标注成本过高,高质量的人工标注图文对{(Ih,Th)}数量有限。CapFilt来提高文本语料库的质量。Captioner和Filter都是从预训练的模型初始化的,并在人工标注数据集上单独进行微调。
(i)Captioner是image-grounded text decoder,它在人工标注数据集上以LM为目标进行微调,对给定的图像进行文本解码,这里给定网络图片,Captioner生成合成caption 。
(ii)Filter是image-grounded text encoder,它根据ITC和ITM的目标进行微调,以学习文本是否与图像匹配,去除原始网络文本和合成文本中的噪音文本。
(iii)Bootstrap过程,Captioner生成的图文对与Filter过滤后的网络图文,再加上人工标注的图文对结合起来,形成一个新的数据集,重新预训练一个新模型。
MAE 单模态
掩码加上自编码,y来自像素。
FLIP
BeiT 单模态
和MAE的区别是:
1. BEIT的自编码是作为一个tokenizer使用,MAE是对原图进行编码,直接重现原图。
2. 而且MAE只接受可见的带位置信息的patch,高覆盖率 (75%)不仅能提高精度,还能加快速度。
3. 模型设计上,Decoder只有Encoder一成的计算量。
BeiT v2 单模态
论文:BEiT v2: Masked Image Modeling with Vector-Quantized Visual Tokenizers
代码:https://github.com/microsoft/unilm/tree/master/beit2
它的核心思想是通过一个训练好的模型,例如CLIP[3]或是DINO[4]作为Teacher来指导视觉标志的学习,这个方法在BEiT v2中被叫做矢量量化-知识蒸馏(Vector-quantized Knowledge Distillation,VQ-KD)。BEiT v2的另一个创新点是引入了[CLS]
标志符来学习整个图像的特征,从而使得BEiT v2在线性探测(Linear Probe)方式也能拥有非常高的准确率。
BEiTv2相比v1版本,主要改进了两大方面:
1 是采用语义感知的image tokenizer;
2 是增加了CLS token的预训练
BeiT v3 (2023.3,多模态)
论文:Image as a Foreign Language: BEiT Pretraining for All Vision and Vision-Language Tasks
代码:unilm/beit3 at master · microsoft/unilm · GitHub