ALBEF
先对齐再融合:ALBEF提出跨模态注意力机制,让图像和文本在融合前先对齐同一频道,大幅提升视觉-语言预训练效果(NeurIPS 2021 Spotlight)
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
先对齐再融合:ALBEF提出跨模态注意力机制,让图像和文本在融合前先对齐同一频道,大幅提升视觉-语言预训练效果(NeurIPS 2021 Spotlight)
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2019-2020 年,CLIP 的出现让人们看到了"文本提示+图像理解"的可能性。但 CLIP 的图文对齐是在各自独立编码后才做对比的——就像两个说不同语言的人,各自带了翻译器对话,中间的语义损耗不可避免。Salesforce 研究院在 2021 年 NeurIPS Spotlight 论文 《Align Before Fuse: Vision and Language Representation Learning with Momentum Distillation》 中,提出了一个更优雅的思路:让图像和文本在融合之前,先"对齐同一频道"。
这个思路催生了 ALBEF,一个在视觉-语言预训练领域具有里程碑意义的框架。

图 1:ALBEF 预训练框架核心结构。先通过跨模态注意力(Cross-Attention)对齐视觉和文本表示,再通过图像-文本匹配进行融合。
早期视觉-语言模型(如早期 V&L 模型)通常采用 fuse-then-align 的策略:先将图像和文本各自编码为向量,然后在统一的特征空间中进行融合。这种方式存在两个核心问题:
ALBEF 针对上述问题提出了三项核心技术:
1. 跨模态注意力(Cross-Attention)对齐
不同于 CLIP 在融合后做对比,ALBEF 在文本编码器的各层中插入了 Cross-Attention 层,使图像特征可以直接作为文本注意力的 key/value 输入。这相当于让文本"透过"图像信息来理解自己,从而实现 token 级别的细粒度对齐。
2. 动量蒸馏(Momentum Distillation)
为了对抗训练数据中的噪声,ALBEF 引入了一个"教师模型"——使用指数移动平均(EMA)更新的动量模型。教师模型生成的伪标签比原始噪声标签更可靠,学生模型同时学习原始标签和教师标签,从而有效抑制噪声影响。
3. 三重损失联合训练
预训练阶段使用三个损失函数联合优化:
ALBEF 的代码库结构清晰,分为以下几个核心模块:
ALBEF/
├── Pretrain.py # 预训练入口
├── Retrieval.py # 图文检索微调
├── VQA.py # 视觉问答微调
├── VE.py # 视觉蕴含微调
├── NLVR.py # 自然语言视觉推理微调
├── Grounding.py # 视觉定位微调
├── models/
│ ├── model_pretrain.py # 预训练模型(含 ALBEF 架构)
│ ├── model_vqa.py # VQA 微调模型
│ ├── vit.py # Vision Transformer 实现
│ └── ...
├── configs/ # 各任务的 YAML 配置
└── dataset/ # 数据加载与预处理
预训练模型的核心实现由 models/model_pretrain.py 中的 ALBEF 类提供。根据配置文件 configs/config_bert.json,模型配置如下:
预训练超参数(configs/Pretrain.yaml):
代码原生支持多卡分布式训练(PyTorch DDP),预训练需要 8 张 A100 GPU。每张卡的显存需求约 16-20GB,总训练时间根据数据量而定。微调阶段资源需求相对较低,单卡 A100 即可完成。
ALBEF 不仅仅是一个预训练框架,还提供了多个下游任务的完整微调代码:
在 MSCOCO 和 Flickr30k 数据集上微调,可实现以图搜文和以文搜图。在 MSCOCO 1K 测试集上,Recall@1 达到 85.5%(以文搜图)和 69.5%(以图搜文),大幅领先同期方法。
在 VQA v2 和 Visual Genome 数据集上微调,需要额外的数据集 json 文件和图像。VQA 任务要求模型理解图像内容并生成自然语言答案。
在 SNLI-VE 数据集上微调,判断图像与文本描述之间的蕴含关系(蕴含、中立、矛盾)。
处理图像对输入,需要额外的文本分配(Text-Assignment)预训练步骤,适应双图场景。
在 RefCOCO+ 数据集上微调,实现"看图说话"——根据文本描述定位图像中的对应区域。项目提供了 visualize.ipynb 来可视化每个词对应的图像关注区域。

图 2:视觉定位结果示例。模型能够定位出与文本描述对应的图像区域,颜色深浅表示关注程度。
项目依赖明确,核心依赖:
git clone https://github.com/salesforce/ALBEF.git
cd ALBEF
pip install torch transformers timm ruamel.yaml
image(图片路径)和 caption(描述文本)configs/Pretrain.yaml 中的 train_file 路径python -m torch.distributed.launch --nproc_per_node=8 --use_env Pretrain.py --config ./configs/Pretrain.yaml --output_dir output/Pretrain
项目提供了可直接下载的预训练和微调权重:
以及针对各下游任务的微调权重(检索、VQA、视觉定位等)。
不想自己搭建环境?可以通过 Replicate 平台直接体验预训练模型的图文检索功能。
尽管 ALBEF 是一个重要的学术贡献,但它也存在一些局限:
ALBEF 的核心贡献——"先对齐再融合"——对后续多模态研究产生了深远影响:
从 GitHub Stars 曲线看,ALBEF 在 2021-2022 年增长迅速,是当时视觉-语言领域最受关注的开源项目之一。虽然后续被更强大的 LAVIS 框架整合,但它的设计思想至今仍被大量新模型所借鉴。
如果你正在进行视觉-语言相关的研究,或希望理解 CLIP 之后多模态预训练的发展脉络,ALBEF 是一个值得深入研究的经典项目。