图像也是一门语言?微软提出19亿参数的超大通用模型BEIT-3,刷榜多个CV和多模态任务!

【写在前面】

语言、视觉和多模态预训练的大融合正在出现。在这项工作中,作者引入了一个通用的多模态基础模型 BEIT-3,它在视觉和视觉语言任务上都实现了最先进的迁移性能。具体来说,作者从三个方面推进大融合:骨干架构预训练任务模型扩展。作者为通用建模引入了 Multiway Transformers,其中模块化架构支持深度融合和特定于模态的编码。基于共享主干,作者以统一的方式对图像(Imglish)、文本(English)和图像-文本对(“parallel sentences”)进行掩码“语言”建模。实验结果表明,BEIT-3 在对象检测 (COCO)、语义分割 (ADE20K)、图像分类 (ImageNet)、视觉推理 (NLVR2)、视觉问答 (VQAv2)、图像字幕方面获得了最先进的性能(COCO)和跨模态检索(Flickr30K,COCO)。

1. 论文和代码地址

Image as a Foreign Language: BEIT Pretraining for All Vision and Vision-Language Tasks

论文地址:https://arxiv.org/abs/2208.10442

代码地址:https://aka.ms/beit-3

2. 动机

近年来,语言、视觉和多模态预训练大融合的趋势。通过对海量数据进行大规模预训练,可以轻松地将模型迁移到各种下游任务。可以预训练一个处理多种模态的通用基础模型,这很有吸引力。在这项工作中,作者从以下三个方面推进视觉语言预训练的收敛趋势。

首先,Transformers的成功是从语言翻译运用到视觉和多模态的问题。网络架构的统一使我们能够无缝地处理多种模态。对于视觉语言建模,由于下游任务的不同性质,有多种方法可以应用 Transformer。例如,双编码器架构用于高效检索,编码器-解码器网络用于生成任务,融合编码器架构用于图像-文本编码。然而,大多数基础模型必须根据特定架构手动转换最终任务格式。此外,参数通常不能有效地跨模态共享。在这项工作中,作者采用** Multiway Transformers **进行通用建模,即为各种下游任务共享一个统一架构。模块化网络还综合考虑了特定于模态的编码和跨模态融合。

其次,基于掩码数据建模的预训练任务已成功应用于各种模态,例如文本 、图像和图像-文本对。当前的视觉语言基础模型通常会同时处理其他预训练目标(例如图像-文本匹配),从而导致放大不友好且效率低下。相比之下,本文只使用一个预训练任务,即 mask-then-predict,来训练一个通用的多模态基础模型。通过将图像视为一门外语(即 Imglish),作者以相同的方式处理文本和图像,而没有基本的建模差异。因此,图像-文本对被用作“平行句子”,以学习模态之间的对齐。作者还表明,这种简单而有效的方法学习了强大的可迁移表示,在视觉和视觉语言任务上都实现了最先进的性能。显着的成功证明了生成式预训练的优越性。

第三,**扩大模型规模和数据规模普遍提高了基础模型的泛化质量,以便可以将它们转移到各种下游任务中。**作者遵循这一理念并将模型规模扩大到数十亿个参数。此外,作者在实验中扩大了预训练数据的大小,同时仅将可公开访问的资源用于学术。尽管没有使用任何私人数据,但本文的方法在相当大的程度上优于依赖内部数据的最先进的基础模型。此外,扩大规模得益于将图像视为外语,因为作者可以直接重用为大规模语言模型预训练开发的管道。

在这项工作中,作者利用上述想法来预训练一个通用的多模态基础模型** BEIT-3**。通过对图像、文本和图像-文本对执行掩码数据建模来预训练 Multiway Transformer。在预训练期间,作者随机屏蔽一定比例的文本标记或图像块。自监督学习的目标是在给定损坏的输入的情况下恢复原始标记(即文本标记或视觉标记)。该模型是通用的,因为无论输入模态或输出格式如何,它都可以重新用于各种任务。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pbABggTE-1661823629908)(https://files.mdnice.com/user/18705/6a5cbbb0-b44e-4b56-9244-9a194486ed9b.png)]

如上图和上表所示,BEIT-3 在广泛的视觉和视觉语言任务中实现了最先进的迁移性能。作者在广泛的下游任务和数据集上评估 BEIT-3,即对象检测 (COCO)、实例分割 (COCO)、语义分割 (ADE20K)、图像分类 (ImageNet)、视觉推理 (NLVR2)、视觉问答 (VQAv2) ,图像字幕(COCO)和跨模态检索(Flickr30K,COCO)。具体来说,尽管作者只使用公共资源进行预训练和微调,但本文的模型优于以前的强大基础模型。该模型也比专门的模型获得了更好的结果。此外,BEIT-3 不仅在视觉语言任务上表现出色,而且在视觉任务(如对象检测和语义分割)上也表现出色。

3. 方法

如上图所示,BEIT-3 使用共享的 Multiway Transformer 网络通过对单模态和多模态数据的掩码数据建模进行预训练。该模型可以转移到各种视觉和视觉语言下游任务。

3.1 Backbone Network: Multiway Transformers

作者使用 Multiway Transformers 作为主干模型来编码不同的模态。如上图所示,每个 Multiway Transformer 模块都由一个共享的自注意模块和一个用于不同模态的前馈网络(即模态专家)池组成。根据其形式将每个输入token路由给专家。在本文的实现中,每一层都包含一个视觉专家和一个语言专家。此外,前三层有专为融合编码器设计的视觉语言专家。使用模态专家池鼓励模型捕获更多特定于模态的信息。共享的自注意模块学习不同模态之间的对齐,并为多模态(例如视觉语言)任务实现深度融合。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GWZYDK7b-1661823629909)(image/image_EF8bZIz0Pb.png)]

如上图所示,统一的架构使 BEIT-3 能够支持广泛的下游任务。例如,BEIT-3 可以用作各种视觉任务的图像主干,包括图像分类、对象检测、实例分割和语义分割。它还可以微调为双编码器,用于高效的图像-文本检索,以及用于多模态理解和生成任务的融合模型。

3.2 Pretraining Task: Masked Data Modeling

通过统一的掩码数据建模目标对单模态(即图像和文本)和多模态数据(即图像-文本对)进行预训练 BEIT-3。在预训练期间,作者随机屏蔽一定百分比的文本标记或图像块,并训练模型以恢复被屏蔽的标记。统一的掩码然后预测任务不仅学习表示,还学习不同模态的对齐。具体来说,文本数据由 SentencePiece 标记器 进行标记。图像数据通过 BEIT v2 的分词器进行分词,得到离散的视觉分词作为重建目标。作者从图像-文本对中随机屏蔽 15% 的单模态文本标记和 50% 的图文对中的文本标记。对于图像,作者使用 BEIT 中的分块屏蔽策略屏蔽 40% 的图像块。

作者只使用一个预训练任务,这使得训练过程的扩展友好。相比之下,以前的视觉语言模型通常采用多个预训练任务,例如图文对比、图文匹配和单词-patch/区域对齐。作者展示了一个小得多的预训练batch大小可以用于 mask-then-predict 任务。相比之下,基于对比的模型通常需要非常大的batch size进行预训练,这带来了更多的工程挑战,例如GPU内存成本。

3.3 Scaling Up: BEIT-3 Pretraining

Backbone Network

BEIT-3 是继 ViTgiant搭建之后的巨型基础模型。如上表所示,该模型由一个 40 层的 Multiway Transformer 组成,具有 1408 的隐藏大小、6144 的中间大小和 16 个注意力头。所有层都包含视觉专家和语言专家。视觉语言专家也采用于前三个 Multiway Transformer 层。自注意力模块在不同的模态中共享。 BEIT-3总共由1.9B个参数组成,其中视觉专家参数692M,语言专家参数692M,视觉语言专家参数52M,共享自注意力模块参数317M。请注意,当模型用作视觉编码器时,仅激活与视觉相关的参数(即,与 ViT-giant 相当的大小;大约 1B)。

Pretraining Data

BEIT-3 在上表中显示的单模态和多模态数据上进行了预训练。对于多模态数据,从五个公共数据集中收集了大约 1500 万张图像和 2100 万张图文对:Conceptual 12M (CC12M)、Conceptual Captions (CC3M) 、SBU Captions (SBU) 、COCO 和视觉基因组 (VG) 。对于单模态数据,使用来自 ImageNet-21K 的 14M 图像和来自英语 Wikipedia、BookCorpus 、OpenWebText3、CC-News 和 Stories 的 160GB 文本语料库。

4.实验

上表展示了本文方法在三个多模态数据集上的实验结果。

多模态检索数据集上的结果。

多模态检索数据集上的Zero-shot结果。

目标检测和实例分割的实验结果。

语义分割的实验结果。

图像分类的实验结果。

5. 总结

在本文中,作者提出了 BEIT-3,这是一种通用的多模态基础模型,它在广泛的视觉和视觉语言基准测试中实现了最先进的性能。 BEIT-3 的核心思想是图像可以建模为一门外语,这样就可以统一对图像、文本和图文对进行蒙版“语言”建模。作者还展示了 Multiway Transformers 可以有效地对不同的视觉和视觉语言任务进行建模,使其成为通用建模的有趣选择。 BEIT-3简单有效,是扩大多模态基础模型的一个有前途的方向。对于未来的工作,作者正在努力对多语言 BEIT-3 进行预训练,并在 BEIT-3 中加入更多的模态(例如音频),以促进跨语言和跨模态的迁移,并推动大规模预训练跨任务的大融合、语言和方式。

【技术交流】

已建立深度学习公众号——FightingCV,关注于最新论文解读、基础知识巩固、学术科研交流,欢迎大家关注!!!

请关注FightingCV公众号,并后台回复ECCV2022即可获得ECCV中稿论文汇总列表。

推荐加入FightingCV交流群,每日会发送论文解析、算法和代码的干货分享,进行学术交流,加群请添加小助手wx:FightngCV666,备注:地区-学校(公司)-名称

面向小白的顶会论文核心代码库:https://github.com/xmu-xiaoma666/External-Attention-pytorch

面向小白的YOLO目标检测库:https://github.com/iscyy/yoloair

【赠书活动】

为感谢各位老粉和新粉的支持,FightingCV公众号将在9月10日包邮送出4本**《深度学习与目标检测:工具、原理与算法》来帮助大家学习,赠书对象为当日阅读榜和分享榜前两名。想要参与赠书活动的朋友,请添加小助手微信FightngCV666**(备注“城市-方向-ID”),方便联系获得邮寄地址。

<think>嗯,用户想要找一个适合处理包含图片、声音表格数据的多模态分类任务模型。首先,我得回忆一下多模态模型的相关知识。多模态模型通常需要处理不同模态的数据,比如图像、音频、文本等,每种数据都需要特定的编码器。 用户提到的数据包括图片、音频表格数据。图片音频是常见的模态,但表格数据比较结构化,可能需要不同的处理方式。首先,我需要确定哪些模型能够同时处理这三种数据类型。 我记得有一些主流的模型框架,比如Transformer-based的模型,例如Google的ViT(Vision Transformer)音频方面的AST(Audio Spectrogram Transformer)。不过这些可能主要是处理单一模态的。多模态模型可能需要将不同模态的特征融合起来,比如使用早期的融合、中间的融合或者晚期的融合策略。 另外,像CLIP这样的模型处理图像文本,但可能不支持音频或表格数据。可能需要一个更灵活的框架,允许集成不同的编码器。比如,微软BEiT-3或者DeepMind的Flamingo,但这些可能更偏向于视觉语言多模态,不一定支持表格数据。 表格数据通常使用传统的机器学习方法,比如梯度提升树,或者深度学习中的MLP、TabNet。不过在多模态框架中,可能需要将表格数据转换为嵌入向量,然后与其他模态的特征结合。这时候可能需要自定义编码器,比如使用MLP来处理表格数据,再与其他模态的编码器输出进行融合。 有没有现成的多模态框架支持这三种数据类型呢?HuggingFace的Transformers库可能支持图像音频,但表格数据可能需要自定义处理。或者像MMF(Facebook的多模态框架)或OpenMMLab的项目,但不确定是否支持表格数据。 可能需要推荐用户使用模块化的框架,自行组合不同模态的编码器。比如,图像用ResNet或ViT,音频用AST或Wav2Vec,表格用MLP或TabNet,然后通过一个融合层(如Transformer或Concatenate+Dense层)进行联合训练。同时,需要处理不同模态的数据预处理特征对齐问题。 另外,数据量的大小也很重要。如果数据量不大,可能需要使用预训练的编码器进行特征提取,然后在下游任务中微调。如果数据量足够,可以考虑端到端的训练。 还需要考虑不同模态之间的交互方式。比如,是否需要在早期就融合特征,或者在中间层进行交叉注意力机制。例如,使用Co-MLP或CrossModal Transformer结构来促进模态间的信息交互。 最后,可能需要推荐一些具体的模型架构,如自定义的多模态Transformer,或者现有的库如PyTorch Lightning或HuggingFace提供的灵活组件,让用户能够组合不同编码器。同时,注意引用相关的文献或框架文档,确保建议的可靠性。</think>### 多模态分类模型推荐 针对包含图像、音频表格数据的多模态分类任务,需选择能有效整合不同模态特征的模型架构。以下是关键推荐实现方法: --- #### **1. 模型架构设计思路** 多模态模型的核心在于**模态编码器****特征融合策略**: - **图像编码器**:推荐使用预训练的视觉模型(如ResNet、ViT[^1]),提取图像特征。 $$ \mathbf{h}_{\text{image}} = \text{VisionEncoder}(\mathbf{X}_{\text{image}}) $$ - **音频编码器**:可采用Wav2Vec 2.0或AST(Audio Spectrogram Transformer),将音频转化为频谱图后编码。 $$ \mathbf{h}_{\text{audio}} = \text{AudioEncoder}(\mathbf{X}_{\text{audio}}) $$ - **表格数据编码器**:使用多层感知机(MLP)或TabNet,处理结构化数据。 $$ \mathbf{h}_{\text{table}} = \text{MLP}(\mathbf{X}_{\text{table}}) $$ - **特征融合**: - **拼接+全连接层**:将各模态特征向量拼接后输入分类器。 $$ \mathbf{h}_{\text{fused}} = \text{Concat}(\mathbf{h}_{\text{image}}, \mathbf{h}_{\text{audio}}, \mathbf{h}_{\text{table}}) $$ - **跨模态注意力机制**:通过Transformer层实现模态间交互[^1]。 $$ \mathbf{h}_{\text{fused}} = \text{Transformer}(\mathbf{h}_{\text{image}}, \mathbf{h}_{\text{audio}}, \mathbf{h}_{\text{table}}) $$ --- #### **2. 推荐框架与工具** - **PyTorch Lightning + Transformers**: 灵活组合HuggingFace的预训练编码器(如ViT、Wav2Vec),自定义表格编码器融合层。 - **MMF(Facebook多模态框架)**: 支持图像文本,可通过扩展添加音频表格处理模块。 - **自定义TensorFlow/Keras流水线**: 使用Keras函数式API构建多输入模型,示例代码如下: ```python # 图像分支 image_input = Input(shape=(224, 224, 3)) image_features = ResNet50(weights=&#39;imagenet&#39;)(image_input) # 音频分支 audio_input = Input(shape=(16000,)) audio_features = Wav2Vec2Model.from_pretrained("facebook/wav2vec2-base")(audio_input) # 表格分支 table_input = Input(shape=(num_features,)) table_features = Dense(128)(table_input) # 特征融合与分类 merged = Concatenate()([image_features, audio_features, table_features]) output = Dense(num_classes, activation=&#39;softmax&#39;)(merged) model = Model(inputs=[image_input, audio_input, table_input], outputs=output) ``` --- #### **3. 训练优化建议** 1. **预训练编码器冻结**:在小数据集上先冻结图像/音频编码器,仅训练表格分支分类层。 2. **模态对齐损失**:添加对比损失(如CLIP风格[^1]),约束不同模态特征在隐空间的对齐。 3. **数据增强**:对图像/音频进行随机裁剪、加噪,表格数据使用SMOTE过采样。 --- #### **4. 典型应用场景** - **医疗诊断**:CT图像(视觉)、心音记录(音频)、患者指标(表格)联合分类。 - **工业质检**:产品外观图像(视觉)、异常噪声(音频)、传感器读数(表格)融合判断。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值