作为2021年的重要里程碑,CLIP 一经问世便吸引了广大研究人员的关注。但是4亿的图片-文本对数据,数百张的GPU卡需求,让研究者望而生畏。
为了解决CLIP训练的Data efficiency 问题,商汤科技推出DeCLIP 已被ICLR 2022接受,其DeCLIP-ResNet50可以在比CLIP使用的数据少7.1倍的同时,在ImageNet上达到60.4% Zero-Shot准确率,比CLIP-ResNet50高出0.8%!另外,基于DeCLIP提出了图像文本对预训练相关的Benchmark,整合了目前的CLIP,SLIP,FILIP等相关工作。DeCLIP和Benchmark的相关数据、代码、模型及训练脚本现已开源,欢迎使用!
DeCLIP (ICLR 2022):
https://arxiv.org/abs/2110.05208
CLIP-Benchmark:
https://arxiv.org/abs/2203.05796
Code(已开源): https://github.com/Sense-GVT/DeCLIP
1. Motivation
大规模语言-图像对比学习预训练已经在零样本学习以及下游任务上取得很好的效果(如CLIP)。但是例如CLIP这样的模型需要400M的数据进行预训练,为了提高训练的效率,让模型在较少的训练数据下依然取得不错的效果,本文提出一种高效的多模态预训练范式DeCLIP。不同于CLIP仅仅使用图像文本对匹配作为自监督信号,DeCLIP使用了多种监督信号:
2. Method
如下图所示,本文提出了一种数据利用效率更高的多模态预训练范式DeCLIP。使用更多的监督信息,从而实现对数据的高效利用。
2.1 CLIP回顾
首先回顾一下CLIP, CLIP直接进行图像和文本对之间的对比学习,使用两个encoder分别编码图片信息和文本信息。图像encoder一般使用CNN或者VIT,文本encoder一般使用transformer。之后将文本和图像嵌入映射到相同空间中,使用对比学习的思想,将匹配的图片-文本embedding的距离拉近,将不匹配的embedding拉远。
2.2 模态内的自监督学习 (Self-Supervision within each modality,SS)
每个模态内分别单独进行自监督学习,包括图像的自监督学习和文本的自监督学习。
(a) 图像自监督学习
按照SimSiam提出的方式进行图像级别的自监督学习。图像通过两个数据增强得到两个视图,它们会先被共享权重的图像编码器编码,然后其中一个视图会通过一个两层的MLP进行特征的增强,并与另一个视图的输出计算余弦相似度并回传梯度。
(b) 文本自监督学习
按照BERT中的方法进行文本自监督学习。首先在每个序列中随机选择 15%的token,然后将该token (1) 80%概率替换为[mask] (2) 10%概率替换为随机token (3) 10%概率不进行修改。最后使用相应位置的语言模型输出来预测原始token,并使用交叉熵损失进行优化。
2.3. 跨模态Multi-View监督学习(Multi-View Supervision,MVS)
2.4. 最近邻监督学习(Nearest-Neighbor Supervision,NNS)
因为相同的图像可能会有类似的语言描述,因此选择语言描述相似的图文对进行对比学习。通过维护一个先入先出(FIFO)的队列来模拟整个数据分布,从这个队列中选取最相似的句子作为正样本,并在选取的
之间使用InfoNCE损失函数作为最近邻损失函数。
最终将三种loss加权求和,得到最终的loss。
3. Experiments
3.1. 数据集
DeCLIP数据集包含现有开源的29M和互联网爬取的59M两部分,共88M数据。
3.2. Zero-Shot与Finetune的准确率
3.3. 三种监督的效果以及训练速度对比
4. CLIP-Benchmark
目前CLIP系列相关Paper基于的数据、超参等都有区别,为了方便社区使用,本文在DeCLIP的基础上提出了CLIP-Benchmark,其中包含高质量的YFCC15M-V2数据集、目前已有相关Paper的复现代码与结果对比(CLIP,SLIP,FILIP,DeCLIP)和一个集大成者的训练方法DeFILIP。具体方法和效果如下图所示。