【微软报告:多模态基础模型】(2)视觉理解
欢迎关注【youcans的AGI学习笔记】原创作品
【微软报告:多模态基础模型】(1)从专家到通用助手
【微软报告:多模态基础模型】(2)视觉理解
【微软报告:多模态基础模型】(3)视觉生成
【微软报告:多模态基础模型】(2)视觉理解
- Multimodal Foundation Models: From Specialists to General-Purpose Assistants
- 2. 视觉理解
- 2.1 视觉理解概述
- 2.2 有监督预训练
- 2.3 语言-图像对比学习预训练
- 2.3.1 基本的 CLIP
- 2.3.2 改进的 CLIP
- 2.4 仅图像的自监督
- 2.4.1 对比学习和非对比学习
- 2.4.2 掩码图像模型
- 2.5 不同学习方法的协同作用
- 2.6 多模态融合,基于区域和像素的预训练
- 2.6.1 从多模态融合到多模态LLM
- 2.6.2 区域级预训练(Region-Level Pre-training)
- 2.6.3 像素级预训练(Pixel-Level Pre-training)
Multimodal Foundation Models: From Specialists to General-Purpose Assistants
2023 年 6 月,微软在 CVPR2023 发表论文「 多模态基础模型:从专家到通用助手 」(Multimodal Foundation Models: From Specialists to General-Purpose Assistants) 。本文全面综述了多模态基础模型的分类和演化,这些模型展示了视觉和视觉语言能力,并重点关注了从专家向通用助手的过渡。
论文下载地址:
https://arxiv.org/abs/2309.10020
https://ar5iv.labs.arxiv.org/html/2309.10020
2. 视觉理解
Chapter 2 Visual Understanding
在过去十年中,研究界为研究高质量、通用图像表示付出了巨大的努力。
这些图像表示对于构建视觉基础模型至关重要,因为预训练一个强大的视觉主干网络来学习图像表示,是所有类型的计算机视觉下游任务的基础。这些任务包括图像级别的图像分类(Krizhevsky et al., 2012)、图像-文本检索(Frome et al., 2013)、图像字幕(Chen et al., 2015),区域级的目标检测(Girshick, 2015)、短语定位(Plummer et al., 2015),以及像素级的语义/实例/全景分割(Long et al., 2015; Hafiz and Bhat, 2020; Kirillov et al., 2019)。
在本章中,我们将介绍如何学习图像表示,可以使用图像中挖掘的监督信号,也可以使用从 Web 上挖掘的图像-文本数据集的语言监督。
- 第 2.1 节:概述了不同的学习范式,包括监督预训练、语言-图像对比预训练(CLIP)和仅图像的自我监督学习。
- 第 2.2 节:讨论了监督预训练。
- 第 2.3 节:介绍了语言-图像对比预训练(CLIP)。
- 第 2.4 节:讨论了仅图像的自我监督学习,包括对比学习、非对比学习和掩码图像建模。
- 第 2.5 节:综述了如何将这些方法结合在一起以获得更好的性能。
- 第 2.6 节:讨论了视觉基础模型如何用于更精细的视觉理解任务,例如基于融合编码器的图像字幕和视觉问题回答,这些任务需要多模态融合,区域级的预训练来进行定位,像素级的预训练来进行分割。
图2.1:第2章的结构。
2.1 视觉理解概述
关于学习通用视觉骨干的各种方法,有大量的文献。如图2.1所示,根据用于训练模型的监督信号的类型,我们将这些方法分为三类,包括:
- 标签监督
研究最深入的图像表示学习方法是基于标签监督的(通常以图像分类的形式)(Sun等,2017)。其中 ImageNet(Krizhevsky等,2012)和 ImageNet21K(Ridnik等,2021)等数据集很受欢迎,工业实验室也使用了更大规模的专有数据集(Sun等,2017;Singh等,2022b;Zhai等,2022a;Wu等,2023d)。 - 语言监督
另一种流行的学习图像表示的方法是利用来自文本的弱监督信号,这很容易大规模获取。例如,CLIP(Radford等,2021)和ALIGN(Jia等,2021)是使用对比损失和从互联网上挖掘的数十亿个图像文本对进行预训练的。所得到的模型在图像分类和图像-文本检索方面实现了强大的零样本性能,并且所学习的图像和文本编码器已被广泛用于各种下游任务,并允许传统的计算机视觉模型执行开放词汇的计算机视觉任务(Gu 等,2021;Ghiasi 等,2022a;Qian 等,2022;Ding 等,2022b;Liang 等,2021 3a;Zhang 等,2023e;Zou等,2023a;Minderer等,2022)。 - 仅图像的自监督
也有大量文献探讨了仅图像自监督学习方法来学习图像表示。顾名思义,监督信号是从图像本身中挖掘出来的,流行的方法包括对比学习(Chen等,2020a;He等,2020)、非对比学习(Grill等,2020;Chen,2021;Caron等,2021)和掩模图像建模(Bao等,2022;He等,2022a)。
这些学习方法的示例如图2.2所示。
除了预训练图像主干的方法外,我们还将讨论允许多模态融合(如CoCa(Yu等,2022a)、Flamingo(Alayrac等,2022)、区域级和像素级图像理解(如 GLIP(Li等,2022e)和SAM(Kirillov等,2023)的预训练方法。这些方法通常依赖于预训练图像编码器或预训练图像-文本编码器对。图2.3显示了本章所涵盖的主题以及每个主题中的一些代表性作品。
图2.2:学习一般图像表示的不同方法的概述,包括监督学习,对比语言图像预训练和仅图像自我监督学习,包括对比学习,非对比学习和掩模图像建模。
图2.3:本章涵盖的主题概述以及每个主题的代表性作品。我们从监督学习和CLIP开始,然后转向仅图像的自监督学习,包括对比学习、非对比学习和掩模图像建模。最后,我们讨论了支持多模态融合、区域级和像素级图像理解的预训练方法。
2.2 有监督预训练
对大规模人类标记数据集进行监督预训练,如 ImageNet(Krizhevsky等,2012)和 ImageNet21K(Ridnik等,2021),已成为一种广泛采用的获取可转移视觉表示的方法。它的目的是将图像映射到与视觉概念相关的离散标签上。这种方法极大地促进了各种视觉骨干架构的设计(例如 AlexNet(Krizhevsky等,2012)、ResNet(He等,2016)、视觉Transformer(Dosovitskiy等,2021)和 Swin Transformer(Liu等,2021),并成为所有现代视觉主干的测试基准。它还推动了各种计算机视觉任务,从图像分类、物体检测/分割、视觉问答、图像字幕到视频动作识别等各种任务。然而,由于人工注释成本高昂,学习表示的有效性往往受到预训练数据集中监督的规模和多样性的限制。
- 大规模数据集
为了进行更大规模的预训练,可以从网络上抓取的“图像-文本对”中大量派生出噪声标签。使用噪声标签,许多工业实验室已经成功地使用半自动管道(例如 JFT(Sun 等,2017;Zhai 等,2022a)和 I2E(Wu 等,2023d)或利用诸如 Instagram 哈希标签(Singh等,2022b)这样的专有数据构建了全面的分类数据集。
现有大规模图像分类数据集的统计数据如表 2.1所示。标签通常是以具有长尾分布的细粒度图像实体为形式的。尽管这种方法很经典,但已经非常有效地用于学习通用图像表示。例如,JFT-300M(Sun 等,2017)已被用于训练BiT(“Big Transfer”)模型(Kolesnikov 等,2020),JFT-3B(Zhai 等,2022a)被用于将普通视觉Transformer的训练规模扩展到22B。LiT(Zhai 等,2022b)提出首先在JFT-3B(Zhai 等,2022a)上学习图像主干,并将其冻结,然后学习另一个文本塔以对齐图像和文本嵌入空间,从而使模型具备开放式词汇表,并能够执行零样本图像分类。
表2.1:现有大规模图像分类数据集的统计。
- 模型训练
有很多损失函数可以用来提高嵌入属性(例如可分离性)(Musgrave 等,2020)。例如,大边缘损失(Wang 等,2018)用于MOFI 训练(Wu 等,2023d)。此外,如果数据集具有大量的标签(可能超过200万,如在 MOFI(Wu 等,2023d)中,则预测每批中的所有标签将在计算上变得昂贵。在这种情况下,通常每批次使用固定数量的标签,类似于抽样的softmax(Gutmann,2010)。
2.3 语言-图像对比学习预训练
2.3.1 基本的 CLIP
语言是传统的封闭集标签更丰富的监督形式。除了从网络爬取的”图像-文本数据集“中派生噪声标签监督之外,也可以直接使用替代文本(alt-text)来学习可转移的图像表示,这是 “对比语言-图像预训练(CLIP)”(Radford 等,2021)的思想。
特别是以这种方式训练的模型,如ALIGN(Jia等,2021),Florence(Yuan等,2021),BASIC(Pham等,2021)和OpenCLIP(Ilharco等,2021),通过将图像和文本映射到共享嵌入空间,展示出了令人印象深刻的零样本图像分类和图像-文本检索能力。下面,我们将讨论如何对CLIP模型进行预训练并将其用于零样本预测。
-
训练
如图2.4(1)所示,CLIP是通过简单的对比学习进行训练的。CLIP是“简单算法具有良好可扩展性”的杰出示例(Li等,2023m)。为了达到令人满意的性能,模型训练需要在三个维度上进行扩展:批量大小、数据大小和模型大小(Pham等,2021)。具体来说,用于CLIP训练的典型批处理大小可以是16k或32k。预训练数据集中的图像文本对数量通常以十亿计而不是百万计。以这种方式训练的视觉 transformer 模型大小通常可以从300M(大型)到1B(巨型)。 -
零样本预测
如图2.4(2)、(3)所示,CLIP 通过将零样本图像分类重新格式化为检索任务,并考虑标签背后的语义,实现了零样本图像分类。它的设计还可以用于零样本图像-文本检索。之外,对齐的图像-文本嵌入空间使得所有传统的视觉模型都可能应用于开放词汇,这激发了大量关于开放词汇对象检测和分割的工作(Li 等,2022e;Zhang 等,2022b;Zou等,2023a;Zhang 等,2023e)。
图2.3:举例说明对比语言图像预训练,以及模型如何用于零样本图像分类。。
2.3.2 改进的 CLIP
自CLIP诞生以来,已经有大量的后续工作旨在改进CLIP模型,下面对此讨论。我们不打算提供所有方法的全面文献综述,而是专注于一组特定的主题。
- 数据扩展
数据是 CLIP 训练的动力源。例如,OpenAI 的 CLIP是在从网络中挖掘的 4亿个图像-文本对上进行训练的,而ALIGN使用了包含18亿个图像-文本对的专有数据集。在BASIC(Pham等,2021年)中,作者仔细研究了批大小、数据大小和模型大小之间的缩放关系。然而,大多数这些大规模数据集都是不公开的,训练这些模型需要大量的计算资源。
在学术环境中,研究人员(Li等,2022b年)主张使用几百万个图像-文本对进行模型预训练,例如CC3M(Sharma等,2018年)、CC12M(Changpinyo等,2021年)、YFCC(Thomee等,2016年)。一些相对小规模的公开可用的图像-文本数据集包括 SBU(Ordonez等,2011年)、RedCaps(Desai等,2021年)和WIT(Srinivasan等,2021年)。大规模公开可用的图像文本数据集包括 Shutterstock(Nguyen等,2022年)、LAION-400M(Schuhmann等,2021年)、COYO-700M(Byeon等,2022年),等等。例如,LAION-2B(Schuhmann等,2022年)已被研究人员用于研究CLIP训练的可重复缩放规律(Cherti等,2023年)。
有趣的是,在寻找下一代图像文本数据集时,在DataComp(Gadre等,2023年)中,作者不是固定数据集来设计不同的算法,而是提出了使用固定的 CLIP训练方法选择和排序数据集。除了从网络上挖掘用于CLIP训练的成对图像文本数据外,受Flamingo(Alayrac等,2022年)引入交错图像文本数据集 M3W 的启发,最近还有人收集交错的图像文本数据集,如MMC4(Zhu等,2023b年)和OBELISC(Laurençon 等,2023年)。
-
模型设计和训练
CLIP 的训练已经取得了显著的改进。以下是一些代表性的工作回顾。-
图像塔
在图像编码器方面,FLIP(Li 等,2023m)提出通过掩码来扩展CLIP训练。如 MAE(He等,2022a)所示,通过随机掩码具有高掩码比例的图像块,并仅对可见的补丁进行编码,作者证明了掩码可以提高训练效率而不影响性能。该方法可以应用于所有的CLIP训练。Cao等(2023年)发现,过滤掉图像中包含文本区域的样本可以提高 CLIP 的训练效率和鲁棒性。 -
语言塔
在语言编码器方面,K-Lite(Shen 等,2022a)提出使用维基百科对实体的定义等外部知识,以及原始的alt-text进行对比预训练。根据经验,使用丰富的文本描述可以提高CLIP的性能。LaCLIP(Fan 等,2023a)表明,可以通过使用大型语言模型(如ChatGPT)重写嘈杂且简短的 alt-text 来改善CLIP。 -
可解释性
图像表示通常是一个密集的特征向量。为了提高共享的图像-文本嵌入空间的解释性,STAIR(Chen 等,2023a)提出将图像和文本映射到一个高维、稀疏的嵌入空间,其中稀疏嵌入中的每个维度都是一个大型字典中的(子)词,其中预测的非负标量对应于与标记相关联的权重。STAIR 性能优于普通的CLIP,具有更好的可解释性。 -
更多的模态
对比学习的思想是通用的,不仅仅局限于图像和文本模态。例如,如图2.5所示,ImageBind(Girdhar等,2023年)提出将 6 种模态编码到一个共同的嵌入空间中,包括图像、文本、音频、深度、热像和IMU模态。在实践中,使用预训练的CLIP模型,并在训练期间保持冻结,这意味着其他模态编码器被学习以与CLIP嵌入空间对齐,从而训练后的模型可以应用于新的应用,例如音频到图像生成和多模态LLM,例如PandaGPT(Su等,2023年)。
-
图2.5: ImageBind(Girdhar等,2023)建议通过利用预训练的CLIP模型将 6 种模态链接到一个共同的嵌入空间中,从而实现新的对齐和功能。
-
目标函数
使用对比损失作为目标函数是强大的,尤其是在模型规模扩大时。然而,也可以使用其他目标函数。-
细粒度监督
可以通过学习单词-图像块对齐来使监督更加细粒度,而不是使用简单的点积来计算图像-文本对的相似性。在FILIP(Yao等,2022b)中,作者建议首先通过计算标记的相似性来计算损失,然后通过最大池化来聚合矩阵以进行单词-图像块的对齐。 -
对比式字幕生成器
除了对比学习分支外,CoCa(Yu等,2022a)(图2.6©)添加了一个生成损失以改善性能,还允许需要多模态融合的新功能(例如图像字幕生成和视觉问答)。这类似于许多基于融合编码器的视觉-语言模型,如 ALBEF(Li等,2021b),但关键的区别在于,CoCa 旨在从头开始学习更好的图像编码器。关于多模态融合的详细讨论请见第2.6.1节。 -
仅使用字幕损失进行预训练的图像编码器
仅使用字幕生成损失来训练图像编码器怎么样?在 CLIP之前,VirTex(Desai等,2021)(图2.6(b))和 ICMLM(Sariyildiz等,2020)尝试了仅适用图像字幕损失来训练编码器,但规模非常小(仅限于COCO图像)且性能较差。CLIP 表明,采用对比学习进行预训练是更好的选择。在SimVLM(Wang等,2022g)中,作者发现仅通过图像字幕生成损失训练的图像编码器,性能不及采用对比学习的 CLIP 。然而,在最近的 Cap/CapPa(Tschannen等,2023)中,作者认为图像字幕生成器也是一种具有可扩展性的视觉学习方法,当模型和数据规模足够大时也可以表现出与对比学习相似或更好的效果。 -
用于语言-图像预训练的Sigmoid损失
在标准对比学习中,通常使用带有Softmax归一化的交叉熵损失,它需要考虑所有成对的相似性评分。
与标准的带 Softmax 标准化的对比学习不同,Zhai 等(2023)使用了简单的成对 Sigmoid损失进行图像-文本预训练,Sigmoid 损失直接作用于每个图像-文本对,不需要成对相似度的全局视图来进行归一化。作者表明,使用简单的Sigmoid损失也可以在零样本图像分类上获得良好的性能。
-
图2.6:图像编码器预训练对比损失和字幕损失的高级比较。
(a) CLIP 仅使用对比损失进行预训练,这使得能够进行零样本图像分类,并表现出强大的缩放行为。
(b) VirTex 在赛前训练中仅使用失利字幕。SimVLM 使用前缀语言建模进行更大规模的预训练,模型架构类似于多模态语言模型(例如 GIT 和 Flamingo),但 VirTex 和 SimVLM 从头开始预训练图像编码器。
(c) CoCa 在预训练中使用对比损失和字幕损失。模型架构类似于 ALBEF,但CoCa旨在从头开始预训练图像编码器,而不是使用预训练的编码器。
2.4 仅图像的自监督
现在,我们将重点转移到仅图像的自监督学习上,并将讨论分为三个部分:(1) 对比学习,(2)非对比学习,以及(2)掩模图像建模。
2.4.1 对比学习和非对比学习
-
对比学习
对比学习的核心思想是促进正样本对并排斥负样本对。除了在CLIP中使用之外,对比学习在自我监督的图像表示学习中也是一个流行的概念。已经证明,被称为 InfoNCE 损失的对比目标可以解释为最大化不同视图之间数据互信息的下界。
简而言之,所有仅基于图像的对比学习方法(例如SimCLR(Chen 等,2020a),图 2.7a,MoCo(He 等, 2020),SimCLR-v2(Chen 等, 2020b),MoCo-v2(Chen 等, 2020c)都遵循相同的高级框架,具体如下所述。- 给定一张图像,应用两种不同的数据增强;
- 一个基础编码器后是一个投影头,目标是通过对比损失来最大化数据的一致性(即它们是否来自同一图像);
- 在下游任务中不再使用投影头。
然而,对比学习的一个问题是需要大量负样本。这些样本可以保存在一个内存存储中(Wu 等, 2018),或者直接从当前批次中获取(Chen 等, 2020a),这表明需要大的批量大小。MoCo(He 等, 2020)维护了一个负样本队列,并将其中一个分支转化为动量编码器来提高队列的一致性。最初,对比学习主要用于预训练卷积网络。然而,随着视觉 TraTsformer(ViT)的日益流行,研究人员也开始探索其在 ViT 上下文中的应用(Chen 等,2021b;Li 等,2021a;Xie 等,2021)。
-
非对比学习
最近的自监督学习方法不依赖于负样本。对负样本的使用被不对称架构(例如BYOL(Grill 等, 2020)、SimSiam(Chen and He, 2021)),维度去相关(例如Barlow twins(Zbontar 等, 2021)、VICReg(Bardes 等, 2021)、Whitening(Ermolov 等, 2021)),以及聚类(例如SWaV,DINO,Caron等)等方法取代。
例如,如图2.7b所示,在SimSiam(Chen,2021)中,单个图像的两个增强视图由相同的编码器网络处理。随后,将一个预测MLP应用于其中一个视图,而对另一个视图使用停止梯度操作。该模型的主要目标是最大化两个视图之间的相似性。值得注意的是,SimSiam 既不依赖于负样本对,也不依赖于动量编码器。
另一个值得注意的方法是 DINO(Caron等,2021),如图2.7c所示,它采用了不同的方法。DINO 将输入图像的两个不同的随机变换分别输入到学生网络和教师网络中。两个网络具有相同的架构,但具有不同的参数。通过对批次进行求均值,来以使教师网络的输出居中。每个网络输出一个特征向量,通过对特征维度应用温度 softmax 进行归一化。使用交叉熵损失来衡量这些特征之间的相似性。此外,还在教师网络上停止梯度操作,以确保梯度仅通过学生网络传播。而且,DINO 还使用学生参数的指数移动平均值来更新教师的参数。
图2.7:用于自监督图像表示学习的 SimCLR、SimSiam 和 DINO。SimCLR 使用对比学习进行模型训练,而 SimSiam 和 DINO 探索了非对比学习方法。
2.4.2 掩码图像模型
掩码语言建模(Devlin等,2019)是一项强大的预训练任务,已经彻底改变了 NLP 研究。为了模仿BERT在NLP领域的预训练成功,开创性的工作 BEiT(Bao等,2022)提出了进行掩码图像建模(MIM)来预训练图像转换器,如图 2.8 所示。具体来说,
-
图像标记器
为了执行掩盖标记的预测,需要一个图像分词器将图像标记化成离散的视觉标记,使这些标记可以像一组额外的语言标记一样处理。一些著名的图像标记器学习方法包括 VQ-VAE(van den Oord等,2017)、VQ-VAE-2(Razavi等,2019)、VQ-GAN(Esser等,2021)、ViT-VQGAN(Yu等,2021)等。这些图像标记器也广泛应用于自回归图像生成,例如 DALLE(Ramesh等,2021a)、Make-A-Scene(Gafni等,2022)、Parti(Yu等,2022b)等。 -
掩码后预测
MIM 的思想在概念上很简单:模型接受被损坏的输入图像(例如通过随机掩盖图像块),然后预测被掩盖内容的目标(例如 BEiT 中的离散视觉标记)。正如 iBOT(Zhou等,2021)中所讨论的那样,这种训练过程可以理解为图像标记器(作为教师)和 BEiT编码器(作为学生)之间的知识蒸馏,而学生只看到图像的一部分。
目标
在Peng等(2022b)的论文中,作者提供了一个统一的MIM观点:一个教师模型、一个归一化层、一个学生模型、一个MIM头和一个适当的损失函数。所有这些模型之间的最大区别在于重构目标,可以是对像素、离散图像标记、预训练模型的特征以及来自动量更新的教师模型的输出进行重构。
具体来说,目标可以大致分为两类。
-
低层次像素/特征作为目标
MAE(He等,2022a)、SimMIM(Xie等,2022b)、ConvMAE(Gao等,2022)、HiViT(Zhang等,2022d)和GreenMIM(Huang等,2022a)都使用原始的或归一化的像素值作为MIM的目标。这些方法通常探索使用简单的VisionTransformer(Dosovitskiy等,2021)或 SwinTransformer(Liu等,2021)作为主干架构。MaskFeat(Wei等,2021)引入了方向梯度直方图(HOG)特征描述符作为MIM的目标(图2.9b)。Ge2-AE(Liu等,2023b)同时使用像素值和从2D离散傅里叶变换获得的频率信息作为目标。以MAE(He等,2022a)为例(图2.9a),作者表明使用像素值作为目标特别有效。具体来说,将图像的大部分(如75%)随机遮盖,然后图像编码器只应用于可见的块,而在编码器之后引入遮盖标记。这种预训练对于需要更细致理解的图像任务特别有效,例如目标检测和分割。 -
高层次特征作为目标
BEiT(Bao等,2022)、CAE(Chen等,2022g)、SplitMask(El-Nouby等,2021)和PeCo(Dong等,2023)涉及使用所学图像标记器预测离散标记。MaskFeat(Wei等,2021)采用不同的方法,提出对DINO(Caron等,2021)和DeiT(Touvron等,2021)等模型提取的高层次特征进行直接回归。由这个想法发展,MVP(Wei等,2022b)和EVA(Fang等,2023)使用来自CLIP 的图像特征作为目标特征进行特征预测。此外,其他方法如 data2vec(Baevski等,2022)、MSN(Assran等,2022)、ConMIM(Yi等,2022)、SIM(Tao等,2023)和 BootMAE(Dong等,2022)提出通过利用动量更新的教师模型来构造回归特征目标以增强在线学习。损失函数的选择取决于目标的性质:当目标为离散标记时,通常使用交叉熵损失,而对于像素值或连续值特征,通常选择 l1、l2 或余弦相似度损失。
图2.8:图像 Transformer BEiT预训练概述。
图 2.9:使用原始像素值进行 MIM训练的掩模自动编码器(MAE)和使用不同特征作为目标的 MaskFeat。HOG 是一个手工制作的功能描述符,在性能和效率方面都表现得特别好。
MIM 用于视频预训练
MIM(Masked Image Modeling)是一种在图像数据上进行预训练的方法,目的是提高模型对图像的理解能力和泛化性能。近期,MIM 的思想也被扩展到了视频数据的预训练中。一些突出的例子包括 BEVT(Wang等,2022c)、MAE作为空间-时间学习器(Feichtenhofer等,2022)、VideoMAE(Tong等,2022)和 VideoMAEv2(Wang等,2023e)。以 Feichtenhofer 等(2022)的工作为例,将 MAE 的概念扩展到了视频预训练中,通过随机遮蔽视频中的时空区域来学习一个自编码器,以在像素级别重构。有趣的是,作者发现 MAE 可以学习强大的视频表示,几乎没有任何空间-时间的归纳偏差,而时空无关的随机遮蔽表现最好,最优遮蔽比例高达90%。
缺乏学习全局图像表示
MIM是一种有效的预训练方法,为后续进一步的模型微调提供了良好的初始化参数。然而,原始的MIM预训练模型并没有学习全局图像表示。在iBOT(Zhou等,2021)中,作者提出通过引入类似于DINO的自我蒸馏损失(Caron等,2021)来增强BEiT(Bao等,2022),以强制[CLS]标记学习全局图像表示。同样的想法也被扩展到了DINOv2(Oquab等,2023)。
MIM的可扩展性
MIM在模型大小方面是可收缩的。例如,我们可以对拥有数十亿参数的视觉Transformer执行MIM预训练。然而,关于数据大小的扩展性并不明确。最近有一些工作旨在理解MIM的数据可扩展性(Xie等,2023b;Lu等,2023a);然而,除了Singh等(2023)研究MAE作为数十亿规模数据所谓的“预预训练”方法的有效性以外,其他工作的数据规模都局限于数百万图像,而不是数十亿。总的来说,MIM 可以被认为是一种有效的正则化方法,有助于为下游任务初始化数十亿规模的视觉Transformer;然而,能否将 MIM 预训练扩展到数十亿规模的图像数据还需要进一步的探索。
2.5 不同学习方法的协同作用
到现在为止,我们介绍了不同的图像骨干网络预训练方法,特别是对于视觉 Transformer。下面我们将以 CLIP 为基准,讨论如何将 CLIP 与其它学习方法结合。
CLIP与标签监督相结合
噪声标签和文本监督可以联合用于图像骨干网络的预训练。下面讨论了一些具有代表性的工作。
- UniCL (Yang等,2022a)提出了一种原则性方法,将图像标签和图像-文本数据一起用于统一的对比学习,将它们融合到图像-文本-标签空间中。Florence(Yuan等,2021)是UniCL的一个规模扩大版本。该框架的示意图参见图2.10。
图 2.10:对图像文本和图像标签数据进行统一对比预训练的 UniCL。
- LiT (Zhai等,2022b)使用在JFT-3B数据集上进行有监督预训练学习到的预训练ViT-g/14图像编码器,然后通过在图像-文本数据上进行对比预训练学习额外的文本塔,从而使图像编码器具有开放式词汇表的能力。本质上,LiT教会了一个文本模型从一个预训练的图像模型中提取良好的表示,以执行新任务。
- MOFI (Wu等,2023d)提出从10亿个带有噪声实体注释的图像中学习图像表示的方法,并使用图像分类和对比损失进行模型训练。对于图像分类,与每个图像相关联的实体被视为标签,并进行大量实体的有监督预训练;对于对比预训练,实体名被视为自由文本,并进一步丰富了实体描述。
将 CLIP 与仅图像(非)对比学习结合
- SLIP (Mu等,2021)提出了一种将SimCLR(Chen等,2020a)和CLIP结合用于模型训练的概念简单的方法,并表明SLIP在零样本迁移和线性探针设置上都优于CLIP。DeCLIP (Li等,2022g)挖掘每个模态上的自监督学习信号,使CLIP训练数据高效。在图像监督方面,使用了SimSam框架(Chen和He,2021)。
- xCLIP (Zhou等,2023c)通过引入从仅图像非对比学习文献中借用的额外的清晰度和平滑度正则化项,使CLIP 变为非对比。然而,作者表明仅非对比预训练(nCLIP)不足以在零样本图像分类上实现良好性能,需要与原始CLIP结合以增强性能。
CLIP和MIM结合
- 浅层交互
事实证明,从CLIP中提取的图像特征是MIM训练的良好目标,因为CLIP图像特征潜在地捕获了MIM训练中缺失的语义。沿着这一研究方向,如图2.11所示,MVP(Wei等,2022b)提出直接回归CLIP特征,而BEiTv2(Peng等,2022a)首先将CLIP特征中的信息压缩成离散的视觉标记,然后执行常规的BEiT训练。
在MIM训练目标中使用类似CLIP特征的还有EVA(Fang等,2023)、CAEv2(Zhang等,2022c)和MaskDistill(Peng等,2022b)。在EVA-02(Fang等,2023)中,作者提倡MIM和CLIP表示的交替学习。具体来说,使用现成的CLIP模型为MIM训练提供特征目标;同时使用MIM预训练的图像主干来初始化CLIP训练。MIM表示被用来微调各种下游任务,而学得的冻结CLIP嵌入使零-shot图像分类和其他应用成为可能。
图2.11:MVP、EVA和BEiTv2 的示意图。 (a) & (b) MVP和EVA直接回归CLIP特征进行MIM预训练。© BEiTv2将CLIP特征内的信息压缩成离散的视觉标记,然后进行常规的BEiT训练。(d) CLIP和MIM之间的替代学习。
- 深层融合
然而,与将 CLIP 作为 MIM 训练目标不同,如果目标是将CLIP和MIM结合进行联合模型训练,MIM似乎在大规模上不会提高CLIP模型的性能(Weers等人,2023;Li等人,2023m)。
**尽管目前阶段的CLIP和MIM组合结果不太令人满意,但 BERT 和BEiT的组合非常有前途。**正如BEiT-3(Wang等人,2022d)所证明的那样(图 2.12)。在BEiT-3中,作者展示了通过设计多路 Transformer,在图像/文本和联合图像-文本数据上可以执行遮蔽数据建模,并在广泛的视觉和视觉语言任务上实现了最新的性能。
图2.12:BEiT-3,通过多路 Transformer 对图像/文本和联合图像-文本数据进行掩码数据建模。
2.6 多模态融合,基于区域和像素的预训练
到目前为止,我们一直专注于从头开始预训练图像骨干的方法,但还没有讨论多模态融合、区域级和像素级图像理解的预训练方法。这些方法通常使用预训练的图像编码器进行第二阶段的预训练。以下我们简要讨论这些主题。
2.6.1 从多模态融合到多模态LLM
对于 CLIP(Radford等,2021)这样的双编码器,图像和文本被分别编码,模态交互仅通过图像和文本特征向量的简单点积来处理。这在对零样本图像分类和图像-文本检索非常有效。然而,由于缺乏深度的多模态融合,CLIP 在图像字幕生成(Vinyals等,2015)和视觉问答任务(Antol等,2015)上的表现较差。这需要预训练一个融合编码器,通常使用额外的 Transformer 层来建模图像和文本表示之间的深度交互。下面,我们回顾这些融合编码器预训练方法是如何随着时间发展的。
-
基于目标检测模型的方法
早期的大多数方法使用预训练的目标检测器(OD)来提取视觉特征。其中,ViLBERT(Lu等,2019)和LXMERT(Tan和Bansal,2019)使用协同注意力进行多模态融合,而VisualBERT(Li等,2019b)、Unicoder-VL(Li等,2020a)、VL-BERT(Su等,2019)、UNITER(Chen等,2020d)、OSCAR(Li等,2020b)、VILLA(Gan等,2020)和VinVL(Zhang等,2021)将图像特征视为要发送到多模态 Transformer中的文本输入的软提示。 -
端到端模型
现在,端到端的预训练方法成为主流。早期的一些方法使用 CNN来提取图像特征,如PixelBERT(Huang等,2020)、SOHO(Huang等,2021)和CLIP-ViL(Shen等,2022b),而ViLT(Kim等,2021)和ViTCAP(Fang等,2022)直接将图像块特征和文本标记嵌入馈送到多模态 Transformer 中。由于视觉Transformer(ViT) 的普及,现在大多数方法简单地将 ViT 用作图像编码器,例如纯 ViT(Dosovitskiy等,2021)和SwinTransformer(Liu等,2021)。突出的例子包括 ALBEF(Li等,2021b)、METER(Dou等,2022b)、VLMo(Wang等,2021b)、X-VLM(Zeng等,2022)、BLIP(Li等,2022d)、SimVLM(Wang等,2022g)、FLAVA(Singh等,2022a)和CoCa(Yu等,2022a)。
UNITER(Chen等,2020d)和CoCa(Yu等,2022a)的结构如图2.13所示。它们分别作为经典模型和现代模型的两个例子,对多模态融合进行预训练。CoCa还直接执行图像骨干预训练,因为所有模型组件都是从头开始训练的。请参阅Gan等人(2022)的第3章,了解全面的介绍。
图2.13:UNITER和CoCa的结构图,它们是对多模态融合进行预训练的经典和现代模型。CoCa还从头开始预训练图像骨干。具体而言,UNITER通过现成的对象检测器提取图像特征,并将图像特征视为要发送到多模式转换器的文本输入的软提示。该模型经过数百万对图像-文本对的预训练。对于CoCa,使用图像编码器和文本编码器,并在顶部堆叠多模式转换器。对比损失和字幕损失都用于模型训练,模型在数十亿个图像文本对和JFT数据上进行训练。
- 走向多模态语言模型
与使用遮蔽语言建模、图像-文本匹配和图像-文本对比学习不同,SimVLM(Wang等,2022g)使用简单的PrefixLM损失进行预训练。从那时起,多模态语言模型就变得流行起来。早期的模型侧重于大规模的预训练,如Flamingo(Alayrac等,2022)、GIT(Wang等人,2022a)、PaLI(Chen等人,2022h)、PavI-X(Chen等人,2023g),而最近的工作侧重于使用预训练的LLM进行指令调优,如LLaVA(Liu等人,2023c)和MiniGPT-4(Zhu等人,2023a)。
第5章对此主题进行了详细讨论。
2.6.2 区域级预训练(Region-Level Pre-training)
CLIP通过对比预训练学习全局图像表示。然而,对于需要细粒度图像理解的任务,如目标检测,CLIP并不足够。
目标检测包含两个子任务:定位和识别。 (i) 定位的目标是在图像中定位对象的存在并用边界框指示位置,而 (ii) 识别确定边界框内存在哪些对象类别。通过遵循将图像分类转化为图像检索的重新表述,可以实现通用的开放集目标检测。
具体而言,ViLD(Gu等,2021)和RegionCLIP(Zhong等,2022a)使用两阶段检测器从CLIP中提取知识,用于零样本目标检测。在MDETR(Kamath等,2021)和GLIP(Li等,2022e)(图2.14)中,作者提出将检测重新构建为短语定位问题,并进行有依据的语言-图像预训练。GLIPv2(Zhang等,2022b)和FIBER(Dou等,2022a)进一步为定位和视觉语言理解任务执行统一的预训练。OVR-CNN(Zareian等,2021)对图像-文本模型进行微调,以适用于有限词汇量的检测,并依靠图像-文本预训练来推广到开放词汇的设置。Detic(Zhou等,2022b)通过仅在仅有图像级别注释的示例上训练分类头部来提高弱监督下的长尾检测性能。其他工作包括OV-DETR(Zang等,2022)、X-DETR(Cai等,2022)、FindIT(Kuo等,2022)、PromptDet(Feng等,2022a)、OWL-ViT(Minderer等,2022)、GRiT(Wu等,2022b)等等。最近,有人提出将 Grounding DINO(Liu 等,2023h)与 DINO(Zhang 等,2022a)结合,并使用基于场景的预训练进行开放集物体检测。有关此主题的详细介绍请参阅第4.2节。
图2.14:GLIP概述,它为开放集对象检测执行基础语言图像预训练。
2.6.3 像素级预训练(Pixel-Level Pre-training)
Segment Anything Model(SAM)是一种最新的用于图像分割的视觉基础模型(Kirillov等,2023年),旨在执行像素级预训练。自其诞生以来,已经引起了广泛的关注,并激发了大量的后续工作和应用。下面,我们简要回顾一下SAM,作为像素级视觉预训练的代表性工作。
如图 2.15 所示,Segment Anything 项目的目标是开发用于分割的基础视觉模型。该模型旨在能够容易地适应各种现有的和新颖的分割任务,例如边缘检测、对象提案生成、实例分割、开放词汇分割等。这种适应性通过高度有效和用户友好的方式完成,得益于三个相互关联组件的集成。
-
任务
作者提出了可提示分割任务,其目标是在给定任何分割提示(如一组点、粗略的框或掩模,或自由文本)的情况下返回有效的分割掩模。 -
模型
SAM的架构在概念上很简单。它由三个主要组件组成:(i) 一个强大的图像编码器(MAE(He等人,2022a)预训练的ViT);(ii) 一个提示编码器(对于稀疏输入,如点、框和自由文本,使用CLIP文本编码器;对于密集输入,如遮罩,使用卷积操作);(iii) 基于 Transformer 的轻量级遮罩解码器。 -
数据
为了获取大规模的预训练数据,作者开发了一个数据引擎,用于执行与模型相关的数据集标注。
图 2.15:Segment Anything 项目概述,该项目旨在通过引入三个相互关联的组件来构建分割的视觉基础模型:可提示的分割任务、分割模型和数据引擎。
与SAM并行
人们也做出了许多努力来开发通用的分割模型。例如,OneFormer(Jain等,2023)开发了一个通用的图像分割框架;SegGPT(Wang等,2023j)提出了统一将不同的分割数据格式的通用上下文学习框架;SEEM(Zou等,2023b)进一步扩展了单一分割模型可以处理的受支持提示的类型,包括点、框、涂鸦、掩模、文本和另一幅图像的引用区域。
SAM的拓展
SAM 已经激发了许多后续工作,这些工作将SAM扩展到了广泛的应用领域,例如修复任意物体(Yu等,2023c)、编辑任意对象(Xie等,2023a)、任意风格迁移(Liu等,2023g)、描述任意对象(Wang等,2023g)、追踪任意对象(Yang等,2023b)、识别任意对象(Zhang等,2023n;Li等,2023f)、计算任意对象(Ma等,2023)、3D重建(Shen等,2023a)、医学图像分析(Ma,2023;Zhou等,2023d;Shi等,2023b;Zhang,2023),等等。
此外,最近的工作还尝试开发在开放词汇场景中检测和分割任意对象的模型,例如Grounding DINO(Liu等,2023h) 和 Grounding-SAM1。
如需全面了解,请参考Zhang等(2023a)和一些GitHub库(https://github.com/Hedlen/awesome-segment-anything)。
【本节完,待续】
参考资料:
Chuanyuan Li, Zhe Gan, Zhengyuan Yang, 等, Multimodal Foundation Models: From Specialists to General-Purpose Assistants, Microsoft Corporation, arxiv.org/html/2309.10020 v1
版权声明:
本文是对论文 “Multimodal Foundation Models: From Specialists to General-Purpose Assistants” 的翻译,仅供学习使用,版权属于论文作者和Microsoft Corporation。
youcans@xidian 作品,转载必须标注原文链接:
【微软报告:多模态基础模型】(2)视觉理解
Copyright 2024 youcans, XIDIAN
Crated:2024-11
相关文章:

【微软报告:多模态基础模型】(2)视觉理解
欢迎关注【youcans的AGI学习笔记】原创作品 【微软报告:多模态基础模型】(1)从专家到通用助手 【微软报告:多模态基础模型】(2)视觉理解 【微软报告:多模态基础模型】(3)…...
Linux 驱动
四十三、Linux设备树 43.1 DTS、DTB 和 DTC DTS 是设备树源码文件 DTB 是将DTS 编译以后得到的二进制文件。 DTC 工具将.dts 编译为.dtb 43.2 DTS语法 43.2.1 .dtsi 头文件 在.dts 设备树文件中,可以通过“#include”来引用.h、.dtsi 和.dts 文件。 …...
【数学二】线性代数-线性方程组-齐次线性方程组、非齐次线性方程组
考试要求 1、会用克拉默法则. 2、理解齐次线性方程组有非零解的充分必要条件及非齐次线性方程组有解的充分必要条件. 3、理解齐次线性方程组的基础解系及通解的概念,掌握齐次线性方程组基础解系和通解的求法. 4、理解非齐次线性方程组的解的结构及通解的概念. 5、会用初等行变…...
Git别名设置
在 Git 中设置命令别名可以让你更高效地使用常见的 Git 命令。通过为常用命令创建简短的别名,可以减少输入的字符数并加速工作流程。 参考链接 设置 Git 命令别名的方法: 使用 Git 配置命令: Git 允许通过 git config 命令来设置命令别名。这…...
算法基础 -- 红黑树原理与插入伪代码
红黑树原理与插入伪代码 红黑树的原理 红黑树是一种自平衡的二叉搜索树,通过对节点的颜色(红色或黑色)以及结构的约束条件来保持树的平衡。红黑树的原理可以通过以下五个特性描述: 节点是红色或黑色。根节点必须是黑色。所有叶…...

力扣 LeetCode 27. 移除元素(Day1:数组)
解题思路: 注意:数组只能覆盖,不能删除 erase方法的复杂度为O( n )而不是O( 1 ),因为需要把删除后后面的数组向前移动 方法一:双层for循环暴力 方法二:快慢指针 fast表示新数组的元素 slow表示新数组元…...

微服务链路追踪skywalking安装
SkyWalking是一个开源的分布式追踪系统,主要用于监控和分析微服务架构下的应用性能。 它提供了分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案,特别适用于微服务、云原生架构和基于容器的环境(如Docker、K8s、Mesos&…...
mqtt学习笔记(一)
以解决问题方式逐步学习探索 mqtt使用场景mqtt可能缺点mqtt学习疑问探索1、mqtt主题发布过的历史消息,全新连接的client能消费到吗?2、mqtt的client掉线如何重连,重连后订阅的topic配置还在不?3、mqtt的client掉线重连后ÿ…...
Kafka Eagle 安装教程
目录 前言 一、安装前的准备 1. 系统要求 2. 安装 JDK 3. 安装 Kafka 和 Zookeeper 4. MySQL 环境准备 二、下载并安装 Kafka Eagle 三、配置 Kafka Eagle 1. 编辑配置文件 2. 配置 Kafka 和 Zookeeper 信息 四、启动 Kafka Eagle 五、访问 Kafka Eagle 六、测试功…...

Ajax 获取进度和中断请求
HTML加入一些内容方便看效果和做交互: <div><p>当前传输进度:<span id"progress">0%</span></p><button id"send">发送</button><button id"btn">中断</button> …...

实验5:网络设备发现、管理和维护
实验5:网络设备发现、管理和维护 实验目的及要求: 通过实验,掌握Cisco 路由器和交换机的IOS配置管理。自动从NTP服务器获取时间信息。能够利用TFTP服务器实现路由器和交换机配置文件的备份和恢复。同时验证CDP协议和LLDP协议的网络参数。完…...

kafka 生产经验——数据积压(消费者如何提高吞吐量)
bit --> byte --> kb -->mb -->gb --> tb --> pb --> eb -> zb -->yb...
对等同步身份认证(Simultaneous Authentication of Equals,简称SAE)介绍
对等同步身份认证(Simultaneous Authentication of Equals,简称SAE)介绍 对等同步身份认证(Simultaneous Authentication of Equals,简称SAE)是一种基于密码的身份验证方法,用于安全地交换密钥…...

Ajax 与 Vue 框架应用点——随笔谈
老式 在老式的技术中,一个网页通常由前端工程师直接使用 HTML、CSS、JavaScript 编写而成 这种方式的优点很明显:简单粗暴,方便工程师以简单的思维完成工作 当然,缺点也很明显,包括但不限于: 直接原生开发…...

The Internals of PostgreSQL 翻译版 持续更新...
为了方便自己快速学习,整理了翻译版本,目前翻译的还不完善,后续会边学习边完善。 文档用于自己快速参考,会持续修正,能力有限,无法确保正确!!! 《The Internals of PostgreSQL 》 不是 《 PostgreSQL14 Internals 》…...

redis 原理篇 31 redis内存回收 内存淘汰策略
哦哦, 内存满了咋搞 就算过期key 删除,还是不够用, 这种问题没办法,只能了解一下啥解决方案了, 内存是有限的,一直存,肯定会满,这时,咋处理? 首先ÿ…...

微信小程序——实现二维码扫描功能(含代码)
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

【go从零单排】HTTP客户端和服务端
🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 在 Go 语言中,net/http 包提供了强大的 HTTP 客户端和服务器功能。 &…...
Android 配置默认输入法
1.背景 最近有个国内的项目,预制了输入法apk,但是无法调出软键盘。原因是没有配置默认输入法,本文主要记录下如何配置默认输入法。 2.代码设置 设置默认输入法需要配置Settings.Secure.ENABLED_INPUT_METHODS和Settings.Secure.DEFAULT_IN…...
交易术语汇总(Technical Trading Dictionary)
Arbitrage (套利) --- 一种利用交易所之间的差价获利的方法。 Accumulation (累积) --- 在一种资产中建立头寸的过程。 Ask/Bid (询价/竞价) --- 卖出订单是询价(Ask),买入订单是出价(Bid)。 ATH(历史最高价) --- All-time high 全时高。 Bearish MS…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...

【深度学习新浪潮】什么是credit assignment problem?
Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...