中文CLIP:中文对比视觉-语言预训练及实践

431 阅读46分钟

Chinese CLIP: Contrastive Vision-Language Pretraining in Chinese

中文CLIP:中文对比视觉-语言预训练

摘要

视觉-语言基础模型的巨大成功推动了计算机视觉和多模态表示学习的研究与应用。然而,将这些基础模型有效地转移到特定语言场景仍然具有挑战性。在这项工作中,提出了中文CLIP,它采用了两阶段预训练方法,在第一阶段使用锁定图像调整,在第二阶段使用对比调整来训练模型。具体来说,我们开发了5种不同大小的中文CLIP模型,参数从7700万到9.58亿不等,已在收集到的大规模中文图像-文本对数据集上对它们进行了预训练。全面的实验表明,中文CLIP在MUGE、Flickr30K-CN和COCO-CN上实现了零样本学习和微调设置下的最新性能,并且在基于ELEVATER基准测试的零样本图像分类评估上能够实现有竞争力的性能。

1 引言

自从NLP中的预训练爆发以来,基础模型已经吸引了多个研究社区的注意。从大规模无监督或弱监督数据中学习的基础模型作为下游模型的基础。多模态表示学习中的基础模型(Bommasani等人,2021)的一个里程碑是CLIP(Radford等人,2021)。与常规的生成预训练不同,CLIP是基于对比学习的模型,它在大约4亿图像-文本对的大规模数据集上进行了预训练。尽管方法简单,CLIP不仅在视觉-语言检索中取得了出色的性能,更重要的是,它作为视觉基础模型,在一系列数据集上展示了零样本图像分类的最新性能。构建视觉与语言之间联系的CLIP已经改变了多模态表示学习和计算机视觉的研究。

尽管如此,将跨模态预训练模型有效地转移到另一种语言上存在几个难题。首先,学习建模特定语言的视觉和语言数据分布对于转移至关重要。尽管CLIP在大多数场景中表现为一个强大的基础模型,我们发现使用机器翻译的CLIP在中文原生跨模态检索基准测试中表现不佳。

图1展示了原始CLIP和我们的中文CLIP在所有模型规模上存在巨大的性能差距。我们认为,对于编码器来说,从语言原生的图像和文本中学习是至关重要的。其次,之前中文多模态预训练方法的性能受到了几个因素的制约。从头开始的预训练需要收集一个大规模的、高质量的特定语言的图像-文本对数据集,类似于OpenAI CLIP的Web Image Text (WIT)(Fei等人,2021; Xie等人,2022)。尽管可以通过使用CLIP初始化和锁定图像调整(Zhai等人,2022)快速将CLIP转移到中文数据,但视觉编码器仍然无法学习来自特定语言领域的图像信息(Gu等人,2022)。

因此,本文提出了中文CLIP,这是一个特定于语言的视觉-语言基础模型,它在公开可用的中文图像-文本对数据上进行了预训练。此外,仍然使用与OpenAI CLIP相同的架构。为了实现跨模态基础模型到中文数据的高效转移,我们开发了一种两阶段预训练方法,这种方法也适用于其他视觉-语言基础模型,例如ALIGN、Florence等。在这项工作中,我们以CLIP为例。具体来说,我们首先使用预训练模型初始化两个编码器,即来自CLIP的视觉编码器和来自RoBERTa-wwm-Chinese(Cui等人,2020)的文本编码器

  • 在第一阶段,冻结图像编码器,仅使用LiT优化文本编码器
  • 在第二阶段,使用对比调整同时训练两个编码器

通过这种方式,新模型可以通过初始化和LiT从基础模型中继承,并通过对比调整有效地转移到特定语言的数据上。

使用了3个中文跨模态检索数据集对中文CLIP进行了评估,包括MUGE2、Flickr30K-CN(Lan等人,2017)和COCO-CN(Li等人,2019c)。实验结果表明,无论是大型还是巨型的中文CLIP在这两个设置中的零样本学习和微调上都达到了最先进的性能。此外,还在ELEVATER基准测试(Li等人,2022b)的“野外图像分类”赛道上评估了零样本图像分类的能力。在分类数据集上,中文CLIP展现出与最先进方法相竞争的性能,并且超越了中文基线。此外,提供了NVIDIA TensorRT和ONNX模型用于部署,这些模型在推理时比PyTorch模型快约2到10倍。

简而言之,本文的贡献包括:

  • 提出了中文CLIP,这是一个简单的CLIP实现,它在我们收集的大规模中文图像-文本对数据上进行了预训练,并且提出了一个两阶段预训练方法,以实现高预训练效率和改进的下游性能。
  • 中文CLIP在零样本学习和微调设置中的跨模态检索上达到了最先进的性能,并且在零样本图像分类上展现出竞争性的性能。

2 方法(Method)

CLIP(Radford等人,2021)基于简单的视觉-语言对比预训练,在大规模弱监督数据上是一个重要的多模态表示学习基础模型。它可以直接转移到跨模态检索,其图像编码器可以作为视觉主干。在这项工作中,我们提出通过在大规模中文多模态数据上预训练视觉-语言模型来构建特定语言的CLIP模型。以下,提供了中文CLIP的方法设计和实现的详细信息。

2.1 数据(Data)

CLIP成功的关键在于预训练的大规模数据集。基于对CLIP重新实现(Ilharco等人,2021)的实验,扩大数据规模和延长训练过程可以持续改善模型在零样本学习中的性能。今年,最新的多模态预训练模型Wukong(Gu等人,2022)和R2D2(Xie等人,2022)在100百万图像-文本对的公共数据集和2.5亿样本的内部数据集上进行了预训练,其中只有2300万样本的一个子集被发布。为了便于重新实现,我们的目标是在尽可能多的公共数据上预训练中文CLIP,因此专注于收集高质量的公共数据集。我们从最新的LAION-5B(Schuhmann等人,2021)中提取了标记为“zh”的中文数据,并从Wukong数据集中收集了数据。然而,由于链接不可用的问题,我们只能从LAION-5B和Wukong分别收集到大约1.08亿样本和7200万样本。此外,还添加了从经典英文多模态数据集翻译过来的数据,包括Visual Genome(Krishna等人,2017)和MSCOCO(Chen等人,2015),其中测试集被移除。最终构建了一个大约有2亿图像-文本对的中文多模态预训练数据集

下面说明了数据预处理的程序:

  • 对于来自LAION-5B的数据部分,移除了mCLIP(Carlsson等人,2022)计算的CLIP分数低于0.26的样本。
  • 移除了包含内部黑名单中词汇的标题,黑名单包含与广告、图像文件名等相关的词汇。
  • 移除了那些太短(少于5个字符)或太长(超过50个字符)的样本。
  • 对于图像,将它们调整到224×224的分辨率,对于ViT-L/14@336px大多数情况下是336×336。

2.2 预训练方法(Pretraining Method)

预训练中文CLIP模型有多种设计选择,最简单的方法之一应该是从头开始预训练,其中图像和文本编码器都是随机初始化的。然而,我们假设其性能将受到当前预训练数据的数量和质量的限制。为了利用现有预训练模型的优势,使用官方发布的CLIP预训练检查点中的权重初始化图像编码器,并使用RoBERTa-wwm-ext和RBT3为文本编码器初始化。为了使模型适应引入的预训练数据,可以使用“对比调整”进行预训练,类似于将CLIP转移到下游检索数据的方式。与对比调整相比,锁定图像调整(LiT, 2022)在下游转移中展示了更好的性能。

在这项工作中,提出了一个两阶段的预训练方法,如图2所示。核心思想是首先利用LiT使文本编码器能够从OpenAI CLIP的基础视觉模型中读取高质量的表示,然后将整个模型转移到引入的预训练数据的领域。仅使用LiT预训练中文CLIP是不够的,因为图像编码器需要学习中文数据集中的图像信息并建模这些数据的分布。在两阶段预训练之前,首先使用预训练模型初始化两个编码器。

  • 在第一阶段,通过在预训练期间冻结其参数来“锁定”图像编码器,仅预训练文本编码器以实现视觉-语言对齐,基于的假设是具有预训练权重的视觉主干已经是一个强大的视觉基础模型(Zhai等人,2022;Gu等人,2022)。预训练直到在下游任务中没有显著的性能提升,即使延长预训练进程,然后切换到第二阶段,通过启用其优化来“解锁”图像编码器。
  • 在第二阶段,继续预训练,没有任何参数冻结,以便图像编码器可以学习建模来自中文网站图像数据的分布。

在消融研究中,我们讨论了预训练检查点的初始化和预训练方法对下游性能的影响。实验结果表明,两阶段预训练方法可以胜过从头开始预训练或直接从预训练模型进行微调**。

3 评估(Evaluation)

为了全面探索中文CLIP的效果,首先评估其基本的跨模态检索能力,即文本到图像检索和图像到文本检索,在包括电子商务和一般领域在内的不同领域。此外,由于基于对比学习的预训练构建了与自然语言语义连接的基础视觉模型,我们遵循Radford等人(2021)评估其零样本分类能力。具体来说,我们在ELEVATER基准测试(Li等人,2022b)的分类数据集上验证中文CLIP,这被称为“野外图像分类(ICinW)”。

3.1 跨模态检索(Cross-modal Retrieval)

3.1.1 数据集和指标

在这项工作中,对中文CLIP进行了验证,使用了三个跨模态检索数据集,分别是MUGE-Retrieval、Flickr30K-CN(Lan等人,2017) 和COCO-CN(Li等人,2019c)。MUGE-Retrieval是一个从中国电子商务网站提取数据的图像-文本检索数据集。Flickr30K-CN和COCO-CN是基于经典数据集Flickr30K和MSCOCO-1K构建的,其文本被翻译成中文。评估包括零样本学习和微调两种设置。

  • 在零样本学习中,使用中文CLIP模型计算图像和文本之间的相似度分数,并返回最相似的前K个候选。
  • 在微调中,使用对比调整对中文CLIP模型进行微调,以进行跨模态检索,评估与零样本学习中的评估相同。

评估指标是Recall@K,其中K = {1, 5, 10},以及平均召回率(MR,即Recall@K的平均值)。为了比较,选择了基线大小和大尺寸的Wukong和R2D2作为基线,这些是中文多模态表示学习中的先前SOTA模型。按照这些基线,我们在MUGE上报告验证性能,在Flickr30K-CN和COCO-CN上报告测试性能。注意,在微调设置中,R2D2本质上是一个端到端的检索和排名模型。

3.1.2 结果

表1报告了在MUGE-Retrieval上模型的性能。对于基线尺寸模型,CN-CLIPViT-B/16在零样本学习和微调的两种设置中,在所有指标上都超过了基线。具体来说,对于基线尺寸模型,CN-CLIPViT-B/16在零样本学习中以17.0 MR超过了WukongViT-B/32,在微调中以8.7 MR超过了R2D2ViT-B。此外,小型模型CN-CLIPRN50在零样本学习中以8.9 MR超过了基线尺寸的WukongViT-B/32,在微调中以8.0 MR超过了它。对于大尺寸模型,CN-CLIPViT-L/14在所有指标上都超过了两个基线,而在更大分辨率图像上预训练的CN-CLIPViT-L/14@336px能够达到最先进的性能。CN-CLIPViT-L/14@336px在零样本学习中以6.6 MR超过了R2D2ViT-L/14,在微调中以3.8 MR超过了它。当扩展到CN-CLIPViT-H/14时,性能得到了进一步提高。与最佳大尺寸模型CN-CLIPViT-L/14@336px相比,CN-CLIPViT-H/14在零样本学习中以2.7 MR超过了它,在微调中以2.3 MR超过了它。

表2和表3报告了在Flickr30K-CN和COCO-CN上模型的性能,关注R@1的评估。在两个数据集中,CN-CLIP都比基线表现更好。对于基线尺寸模型,在Flickr30K-CN的零样本学习设置中,CN-CLIPViT-B/16在文本到图像检索中以17.0 R@1超过了WukongViT-B/32,在图像到文本检索中以8.4 R@1超过了它,而在微调设置中,CN-CLIPViT-B/16在图像检索中以0.8 R@1超过了R2D2ViT-B,在文本检索中以0.9 R@1超过了它。同样,在COCO-CN的微调设置中,CN-CLIPViT-B/16在图像检索中以1.9 R@1超过了R2D2ViT-B,在文本检索中以1.3 R@1超过了它。对于小型CN-CLIPRN50,在Flickr30K-CN和COCO-CN的几个指标上再次实现或超过了WukongViT-B/32的性能。具体来说,CN-CLIPRN50在Flickr30K-CN图像检索的零样本学习中以3.1 R@1超过了WukongViT-B/32,在COCO-CN文本检索的微调中以2.6 R@1超过了它。

对于大尺寸模型,在Flickr30K-CN的零样本设置中,CN-CLIPViT-L/14在文本到图像检索中以16.3 R@1超过了WukongViT-L/14,在图像到文本检索中以4.1 R@1超过了它。CN-CLIPViT-L/14@336px在图像检索中进一步将CN-CLIPViT-L/14提高了1.0 R@1,在文本检索中提高了3.1 R@1。在微调设置中,CN-CLIPViT-L/14在文本检索中以0.5 R@1超过了R2D2ViT-L/14。CN-CLIPViT-L/14@336px在图像检索中与R2D2ViT-L/14表现相当,而在文本检索中以1.0 R@1超过了它。同样,在COCO-CN的微调设置中,CN-CLIPViT-L/14在文本检索中以0.9 R@1超过了R2D2ViT-L/14。CN-CLIPViT-L/14@336px在图像检索中进一步以1.0 R@1超过了R2D2ViT-L/14,在文本检索中以1.9 R@1超过了它。在Flickr30K-CN和COCO-CN上,从CN-CLIPViT-L/14扩展到CN-CLIPViT-H/14几乎在所有指标上都提高了性能。具体来说,在Flickr30K-CN的零样本设置中,CN-CLIPViT-H/14在图像检索中以3.2 R@1超过了CN-CLIPViT-L/14,在文本检索中以1.4 R@1超过了它。此外,在COCO-CN的微调设置中,CN-CLIPViT-H/14甚至在图像检索中以1.4 R@1超过了具有更大图像分辨率的CN-CLIPViT-L/14@336px,在文本检索中以2.3 R@1超过了它。此外,还将CN-CLIPViT-H/14与一个巨大的类似CLIP的模型T-Bletchley7进行了比较。这个模型有25亿参数,并且在数十亿的多语言图像-标题对上进行了预训练。在COCO-CN的微调设置中,尽管模型参数和预训练数据集的规模较小,CN-CLIPViT-H/14仍然以3.9 MR超过了T-Bletchley。

3.1.3 消融实验

在这里提供了对提出的两阶段训练方法的消融研究。为了验证其重要性和有效性,为消融研究设计了几个设置。整个实验是在CN-CLIPViT-B/16上进行的。为了评估初始化的影响,从头开始预训练一个模型,为了检查LiT的影响,预训练一个不冻结图像编码器的模型。为了更好地展示,报告了不同数据集上零样本检索的模型性能曲线,以预训练进度为指标,用处理的样本数量表示。

图3显示了在不同任务上的性能,即MUGE文本到图像检索,以及在Flickr30K-CN和COCO-CN上的文本到图像和图像到文本检索。与使用预训练模型初始化的预训练相比,从头开始的预训练表现得要糟糕得多,尽管它在预训练进度方面显示出一致的性能提升。至于LiT的重要性,在不同数据集上观察到了不同的现象。在MUGE上,一个最初从中文网站收集样本的数据集,发现不使用LiT的预训练可能是最佳解决方案,尽管它与两阶段预训练的性能差距非常小。然而,在其他数据集上,即Flickr30K-CN和COCO-CN,其样本是从英文数据集中翻译过来的,发现两阶段预训练比不使用LiT的预训练表现得明显更好。此外,观察到一个普遍现象,即在两阶段预训练中,从第一阶段切换到第二阶段可以有效提升模型性能到一个更高的水平,这反映了使预训练模型适应中文多模态数据的分布的重要性,特别是那些与视觉信息相关的数据

3.2 零样本图像分类

3.2.1 中文开放领域图像分类基准测试

基于图像-文本对的对比预训练构建了视觉和自然语言之间的联系。自然语言监督而不是众包标记赋予了模型通过计算给定图像和候选集中标签的文本描述之间的相似度来进行零样本图像分类的能力。最近在这个领域的进展是ELEVATER基准测试(Li等人,2022b)。ICinW的轨道包括一系列图像分类数据集,包括ImageNet(Deng等人,2009)、CIFAR(Krizhevsky等人,2009)、MNIST(Deng,2012)等。为了评估中文CLIP在这些数据集上的性能,首先通过将标签和提示翻译成中文来转换数据集,以适应中文模型。

3.2.2 实验结果

表4报告了英文模型和中文模型的性能。在英文数据上预训练的基线包括DeCLIP(Li等人,2021b)、ALIGN(Jia等人,2021)、CLIP(Radford等人,2021)和OpenCLIP(Ilharco等人,2021),而在中文数据上预训练的基线包括BriVL(Fei等人,2021)和Wukong(Gu等人,2022)报告了这些模型中下游性能最好的变体的结果。首先关注与中文基线的比较,在包括ImageNet分类在内的所有数据集上,中文CLIP都显著超过了两个基线,并且在一些数据集上的相对成就超过了100%。此外,还比较了中文CLIP与在英文数据上预训练的基础模型,例如CLIP和ALIGN。可以发现,中文CLIP在CIFAR-10、CIFAR-100、FER-2013、KITTIDistance、MNIST、PatchCamelyon和PascalVOC-2007上超过了CLIP或ALIGN。同时,在分类一般概念或在西方和东方文化中常见的对象的数据集上,中文CLIP一致地实现了更好的性能,这表明中文CLIP能够对图像进行分类到一般原型。

然而,对于涉及专有名词的分类,例如FGVC-Aircraft,所有模型都难以实现高准确率。假设相关的图像和文本在预训练数据集中不常见,而且模型在没有微调的情况下也难以理解飞机的名称。特别是对于中文模型,翻译甚至音译可以显著影响中文CLIP的性能,这鼓励我们建立一个“中文模型野外图像分类”的基准测试。

3.2.3 分析

对手工提示的敏感性

虽然ELEVATER基准测试为每个数据集提供了特定的提示,我们发现这并不总是最佳选择,与基线相比,即OpenAI CLIP提供的提示的翻译,大约有90个提示的基线平均表现最好。然而,对于某些数据集,用人类知识设计的特定提示可以显著提升性能。一个典型案例是飞机分类。用与飞机知识相关的特定提示测试CN-CLIPViT-L/14,例如“标签,一架飞机的照片”、“标签,一张战斗机的放大图像”等,以及OpenAI提示的翻译。实验结果表明,模型使用特定提示可以达到16.0的准确率,而使用OpenAI提示的翻译只有13.8的准确率。

理解否定的无能为力 先前的研究(Khandelwal和Sawant,2019;Hosseini等人,2021)表明,即使是强大的NLP预训练模型也经常在否定问题上犯错误。我们通过在KITTI-Distance(Fritsch等人,2013)和PatchCamelyon(Veeling等人,2018)上进行实验来探索CLIP理解否定的能力。KITTI-Distance为模型提供了4个判断选项,包括“紧挨着汽车”、“靠近汽车”、“远离汽车”和“没有汽车”。最后一个选项涉及到否定,比较了模型使用“没有汽车”和“其他”这两个文本作为最后一个标签的性能,观察到模型很难理解否定。通过将标签从“其他”改为“没有汽车”,准确率下降了48.1%(49.9对25.9)。同样,在PatchCamelyon的实验中,通过将标签从“主要是红色”和“中间有绿色块”更改为“中间没有绿色块”和“中间有绿色块”,性能从63.5下降到50.2。这表明CLIP在学会否定方面存在局限性。预训练数据集中的文本大多是对图像的描述,这些描述指出了它们的对象或特征,但往往不指出对象的缺失

3.3 部署

为了部署,基于PyTorch预训练的中文CLIP模型开发了基于ONNX和TensorRT的模型。正如预期的那样观察到,推理效率显著提高,而性能几乎没有损失。具体来说,基于TensorRT的模型的推理效率大约比基于PyTorch的模型快2到10倍。更多的统计数据列在附录A.6中

4 相关工作

之前的视-语言预训练模型大多是基于BERT/T5风格(Devlin等人,2019;Raffel等人,2020),这涉及到跨模态融合(Chen等人,2020;Li等人,2019a,b;Lu等人,2019;Lin等人,2020;Li等人,2020;Huang等人,2020;Xu等人,2021;Zhang等人,2021;Shen等人,2021;Wang等人,2021b, 2022a;Li等人,2021a, 2022c,a;Wang等人,2021a, 2022b)。相比之下,CLIP(Radford等人,2021)是一个基于对比学习的双塔模型,它可以作为一个视觉基础模型。在CLIP之后,一系列类似的基于对比学习的多模态预训练模型被提出,并在跨模态检索和零样本分类方面达到了新的SOTA(Jia等人,2021;Yao等人,2021;Yuan等人,2021)。此外,CLIP可以适应其他模型,一个典型的例子是CLIP对许多图像生成模型至关重要,例如DALL-E(Ramesh等人,2021)、DALL-E 2(Ramesh等人,2022)、Stable Diffusion(Rombach等人,2022)等。多模态预训练的成功鼓励了将现有方法转移到中文预训练上,包括生成预训练模型(Lin等人,2021a;Fei等人,2021;Yang等人,2021;Lin等人,2021b;Wang等人,2022a)和对比预训练模型(Fei等人,2021;Gu等人,2022;Xie等人,2022;Chen等人,2022b)。

5 结论

在这项工作中提出了中文CLIP,这是一个特定于中文的视觉-语言基础模型。具体来说,构建了一个大约包含2亿个样本的预训练数据集,并使用提出的两阶段预训练方法预训练了一系列中文CLIP模型,这提高了预训练的效率和效果。实验的全面评估表明,中文CLIP在多个跨模态检索数据集上能够达到零样本学习和微调的最新性能。此外,展示了中文CLIP模型在10个数据集上的零样本图像分类任务中也能取得有竞争力的性能

限制

许多问题反映了这项工作的局限性,同时也指出了未来研究的一些方向。在这一节中,总体上讨论了关于数据规模和模型的一些局限性。

数据

CLIP预训练的核心是在极大规模数据上进行简单但有效的大规模对比预训练。尽管已经利用了大约2亿个样本,但与最近的研究(Yuan等人,2021;Chen等人,2022a)相比,预训练数据规模相对较小。因此,下一步的研究之一是扩大预训练数据的数量,以评估数据规模增加带来的性能提升。此外,仍然发现很难确定什么是CLIP的“高质量”数据集。在以前的研究(Jia等人,2021;Li等人,2021b)中,预处理方法大多是简单的,以避免数据丢失。然而,仍然有很多样本的图像和文本匹配不当,这可能会为预训练提供负面信息。在未来的研究中,计划使用预训练的中文CLIP模型为更大的数据集中的每个图像-文本对计算一个分数,过滤掉那些分数低于指定阈值的样本,并用新数据预训练新模型,这是探索数据质量和预训练效果之间关系的一个可能的解决方案。此外,这样的循环可能会在下游任务中带来持续的性能提升。

模型

最近观察到,在许多领域中模型规模的扩大可以带来持续的性能提升(Gordon等人,2021;Wei等人,2022)。在这项工作中也发现,对于中文CLIP来说,模型规模的扩大可以在不同的下游任务中实现稳定的性能提升,包括检索和分类。最近的研究已经将ViT以及类似CLIP的模型扩展到比我们最大的CN-CLIPViT-H/14更大的规模,例如,3B的SwinV2(Liu等人,2022),4B的ViT-e(Chen等人,2022a)等。未来将继续探索与数据规模扩大相一致的模型规模扩大,以构建更有效的中文CLIP。

与实际应用相关的另一个模型规模问题是如何构建有效的小型模型。实验结果表明,最小的中文CLIP CN-CLIPRN50的性能比ViT变体差得多。然而,在实际应用中,可供部署的有效小型模型通常更受欢迎。因此,有必要探索CLIP的蒸馏技术,以便将大型模型的能力转移到小型模型中以便于应用。

伦理声明

提出的模型是一个基于对比学习的视-语言基础模型,它为图像和文本生成特征。这些特征可以代表视觉和语言信息,它可以支持搜索引擎、推荐系统等应用。此外,这个模型可以作为一个基础模型,支持最新的图像生成模型,例如扩散模型(Ramesh等人,2022)。这可能会带来风险,因为人工智能生成的内容可能反映有害信息,如仇恨、偏见、色情等。在大多数情况下,这些情况应该归因于图像生成模型的训练。尽管如此,无法避免CLIP表示对生成的负面影响。未来将研究如何过滤预训练数据以避免潜在风险。

附加

A.1 模型架构细节

开发了5种不同大小的中文CLIP模型,参数范围从大约7700万到9.58亿。其中包括1个ResNet-50模型CN-CLIPRN50和4个ViT模型,即CN-CLIPViT-B/16、CN-CLIPViT-L/14、CN-CLIPViT-L/14@336px和CN-CLIPViT-H/14,这些模型都是在224×224分辨率的图像上进行预训练的,没有特别说明。表5展示了模型架构的详细信息。最小的模型CN-CLIPRN50由一个ResNet-50图像编码器和一个RBT3文本编码器组成。基础尺寸模型CN-CLIPViT-B/16由一个ViT-B/16@224px图像编码器和一个RoBERTa-wwm-Base文本编码器组成。大尺寸模型CN-CLIPViT-L/14由一个ViT-L/14@224px图像编码器和一个RoBERTa-wwm-Base文本编码器组成,而CN-CLIPViT-L/14@336px由一个ViT-L/14@336px和一个RoBERTa-wwm-Base组成。具体来说,通过在预训练的CN-CLIPViT-L/14基础上继续预训练来预训练CN-CLIPViT-L/14@336px。为了适应更大的分辨率,通过插值方法初始化图像位置嵌入,遵循Ilharco等人(2021)的方法。巨型尺寸模型CN-CLIPViT-H/14由一个ViT-H/14图像编码器和RoBERTa-wwm-Large文本编码器组成。更多的实现细节在附录A中展示。

在表6和表7中提供了它们模型架构的更多细节。保持ResNet-50、ViT-B/16和ViT-L/14主干架构与OpenAI CLIP一致,并将ViT-H/14架构与LAION CLIP保持一致。这使得能够使用它们的权重来初始化中文CLIP图像编码器。文本编码器是中文Roberta模型(Cui等人,2020)。具体来说,最轻量的微型中文CLIP使用了3层RBT3模型架构,基础尺寸和大尺寸中文CLIP模型使用了12层的RoBERTa-wwm-Base架构。对于巨型尺寸的CN-CLIP,使用了24层的RoBERTa-wwm-Large架构。文本分词器的词汇表大小为21,128

A.2 预训练细节

初始化 如第2.2节所述,使用OpenAI CLIP的权重来初始化CN-CLIPRN50、CN-CLIPViT-B/16和CN-CLIPViT-L/14的图像编码器。CN-CLIPViT-H/14的图像编码器使用LAION CLIP进行初始化。除了ResNet或ViT参数外,温度和视觉输出投影参数也使用预训练的CLIP权重进行初始化。对于文本编码器,使用相应模型规模发布的中文RoBERTa权重来初始化参数,不包括pooler权重。文本输出投影权重则使用正态分布随机初始化。

第一阶段 第一阶段的预训练超参数如表8所示,这些参数对CN-CLIPRN50、CN-CLIPViT-B/16、CN-CLIPViT-L/14和CN-CLIPViT-H/14都是通用的。这些超参数的值通常与OpenAI CLIP(Radford等人,2021)中的相似。至于数据增强,在输入图像上使用随机尺寸裁剪和AutoAugment(Cubuk等人,2019)利用跨GPU工人的all-gather通信来计算全局批次的对比损失。上述4个模型在这个阶段分别预训练了大约20、44、64和26个周期,同时冻结图像编码器。对于CN-CLIPRN50,在这个阶段不更新批量归一化层的运行方差和均值。预训练的最佳周期数是通过在训练期间测量3个下游零样本检索任务下的均值召回率来确定的。启用了混合精度训练。在这个阶段,使用64个NVIDIA V100 GPU对CN-CLIPRN50预训练了1.6天,使用128个NVIDIA V100 GPU对CN-CLIPViT-B/16预训练了4.5天,使用128个NVIDIA V100 GPU对CN-CLIPViT-L/14预训练了11.5天,以及使用184个NVIDIA A100 GPU对CN-CLIPViT-H/14预训练了3.8天。

第二阶段 在第二阶段,解冻图像编码器并更新所有模型参数。除了峰值学习率、批量大小和训练周期外,所有其他在第一阶段提到的超参数保持不变,将学习率降低到2e-5以进行更精细的优化。对于CN-CLIPRN50、CN-CLIPViT-B/16和CN-CLIPViT-L/14,由于GPU内存的限制,批量大小分别减少到16,384、16,384和4,608。当扩展到CN-CLIPViT-H/14时,实施了梯度检查点,这使得批量大小可以增加到32,768。这4个模型在第二阶段分别预训练了大约44、15、7和7个周期。在这个阶段,使用64个NVIDIA V100 GPU对CN-CLIPRN50预训练了5.8天,使用128个NVIDIA V100 GPU对CN-CLIPViT-B/16预训练了3.0天,使用128个Nvidia V100 GPU对CN-CLIPViT-L/14预训练了8.0天,以及使用184个NVIDIA A100 GPU对CN-CLIPViT-H/14预训练了2.2天。

为了预训练一个更高分辨率的模型,对CN-CLIPViT-L/14的图像位置嵌入实施了插值,以适应更大的分辨率,并继续使用336×336分辨率的图像进行预训练。从CN-CLIPViT-L/14开始,并额外预训练了2个周期。这次预训练仅使用了128个NVIDIA A100 GPU,共0.7天。

A.3 微调细节

如表1、2和3所报告的,主要在3个跨模态检索数据集上对CN-CLIP进行微调:MUGE、Flickr30K-CN和COCO-CN。大多数微调实验是在32个NVIDIA A100 GPU上进行的。微调策略和损失函数与预训练过程保持一致。为了时间效率和充分利用计算资源,尽可能地设置较大的批量大小。在CN-CLIPViT-L/14@336px和CN-CLIPViT-H/14的微调过程中实施了梯度检查点,以便使用更大的批量大小。表9显示了微调过程中批量大小、峰值学习率、最大周期和预热迭代的具体设置,将其他超参数默认设置为与预训练中相同的值,在每个周期结束时保存模型参数。对于MUGE,报告在验证集上的最佳结果。对于Flickr30K-CN和COCO-CN,选择在验证集上表现最佳的检查点,并在测试集上报告结果。

A.4 长文本跨模态检索

第3.1.2节报告的结果展示了中文CLIP在跨模态检索方面的卓越能力。需要注意的是,MUGE、Flickr30K-CN和COCO-CN的平均文本长度分别为7.4、19.7和16.8。我们还在平均文本长度为45.3的ICR(Xie等人,2022)数据集上进行了微调实验,实验结果如表10所示。由于ICR数据集中的文本较长,将微调时的最大文本长度设置为128。结果显示,中文CLIP在处理较长文本的跨模态检索任务上达到了最先进的性能。

A.5 零样本图像分类实验细节

在表11中展示了ELEVATER基准测试中ICinW赛道的20个图像分类数据集的数据统计和指标。为了使中文CLIP适应以英文为母语的基准测试,应用了一系列预处理策略。具体来说,将标签的文本描述和手动提示的模板翻译成中文。例如,CIFAR-10中的标签包括“汽车、狗……”,手动将这些词翻译成中文。也有一些特殊情况,如FGVCAircraft(Maji等人,2013)中的标签,这些标签难以翻译或音译。在谷歌上搜索这些名称,并为每个标签找出最合适的中文名称。尽管如此,不能保证我们有最佳的中文翻译,更重要的是,对于中文预训练模型来说,理解某些概念仍然很难,这可能导致相关下游任务的性能不尽如人意。至于模板,对于某些数据集,使用了ELEVATER工具包提供的模板的翻译,而对于其他数据集,使用了OpenAI CLIP的模板翻译。

在表12中展示了所有中文CLIP模型在零样本图像分类上的实验结果。可以发现,模型规模的扩大可以持续提升模型性能。中文CLIP规模扩大的可预测改进表明,我们可以进一步扩大模型规模以在未来的工作中获得更好的性能。然而,令人遗憾的是,微型CN-CLIPRN50的性能明显比大得多的ViT变体差很多。这表明小型模型仍有改进的空间,并且将CLIP从大型模型转移到小型模型的知识转移应该是多模态表示学习中的一个重要研究课题

A.6 部署

中文CLIP支持部署到基于ONNX和基于TensorRT的模型中,这可以加快文本和视觉表示的生成速度(特别是在线推理)。在本节中提供了有关模型转换以及性能提升的更多细节。具体来说,使用PyTorch中的ONNX模块和ONNXMLTOOLS包将中文CLIP PyTorch模型转换为FP16精度的基于ONNX的模型。在ONNXRUNTIME-GPU包的支持下,基于ONNX的模型能够在NVIDIA GPU上进行推理。TENSORRT包使得从基于ONNX的模型获得的TensorRT模型成为可能,并提供了GPU推理运行时,基于TensorRT的模型也是FP16精度的。

使用一台装有单个NVIDIA T4 GPU的服务器,该服务器包含16个Intel Xeon (Skylake) Platinum 8163 CPU核心和64GB内存,来对实现在PyTorch中的中文CLIP模型与转换后的基于ONNX和基于TensorRT的模型进行基准测试。对于每个模型,对100批视觉和文本表示进行推理,并计算平均时间。模拟在线部署场景,使用批量大小为1。所有模型都以FP16精度进行推理。表13显示了推理时间成本的比较。对于几乎所有模型规模,基于ONNX和基于TensorRT的模型都比原生PyTorch实现的中文CLIP模型有优化的推理速度,特别是在较小的模型尺寸上。对于视觉表示推理,基于TensorRT的模型速度大约是PyTorch模型的1.3倍(CN-CLIPViT-H/14)到9.5倍(CN-CLIPRN50)。对于文本表示推理,基于TensorRT的模型速度大约是PyTorch模型的6.2倍(CN-CLIPViT-H/14)到8.2倍(CN-CLIPViT-L/14)。还通过测量它们在MUGE检索数据集上的零样本性能来评估基于ONNX和基于TensorRT的模型表示的质量。表14提供了实验性的零样本结果,这表明转换后的基于ONNX或基于TensorRT的模型保持了视觉和文本表示的质量,检索性能的下降不超过0.1 MR。

参考

  • Rishi Bommasani, Drew A Hudson, Ehsan Adeli, Russ Altman, Simran Arora, Sydney von Arx, Michael S Bernstein, Jeannette Bohg, Antoine Bosselut, Emma Brunskill, et al. 2021. "On the opportunities and risks of foundation models." arXiv preprint arXiv:2108.07258.

  • Lukas Bossard, Matthieu Guillaumin, and Luc Van Gool. 2014. "Food-101–mining discriminative components with random forests." In European conference on computer vision, pages 446–461. Springer.

  • Fredrik Carlsson, Philipp Eisen, Faton Rekathati, and Magnus Sahlgren. 2022. "Cross-lingual and multilingual clip." In Proceedings of the Language Resources and Evaluation Conference, pages 6848–6854, Marseille, France. European Language Resources Association.

  • Xi Chen, Xiao Wang, Soravit Changpinyo, AJ Piergiovanni, Piotr Padlewski, Daniel Salz, Sebastian Goodman, Adam Grycner, Basil Mustafa, Lucas Beyer, et al. 2022a. "Pali: A jointly-scaled multilingual language-image model." arXiv preprint arXiv:2209.06794.

  • Xinlei Chen, Hao Fang, Tsung-Yi Lin, Ramakrishna Vedantam, Saurabh Gupta, Piotr Dollár, and C. Lawrence Zitnick. 2015. "Microsoft COCO captions: Data collection and evaluation server." CoRR, abs/1504.00325.

  • Yen-Chun Chen, Linjie Li, Licheng Yu, Ahmed El Kholy, Faisal Ahmed, Zhe Gan, Yu Cheng, and Jingjing Liu. 2020. "UNITER: universal image-text representation learning." In ECCV 2020, volume 12375 of Lecture Notes in Computer Science, pages 104–120. Springer.

  • Zhong-Yong Chen, Guangyi Liu, Bohan Zhang, Fulong Ye, Qinghong Yang, and Ledell Yu Wu. 2022b. "Altclip: Altering the language encoder in clip for extended language capabilities." ArXiv, abs/2211.06679.

  • Gong Cheng, Junwei Han, and Xiaoqiang Lu. 2017. "Remote sensing image scene classification: Benchmark and state of the art." Proceedings of the IEEE, 105(10):1865–1883.

  • Mircea Cimpoi, Subhransu Maji, Iasonas Kokkinos, Sammy Mohamed, and Andrea Vedaldi. 2014. "Describing textures in the wild." In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 3606–3613.

  • Ekin D Cubuk, Barret Zoph, Dandelion Mane, Vijay Vasudevan, and Quoc V Le. 2019. "Autoaugment: Learning augmentation strategies from data." In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 113–123.

  • Yiming Cui, Wanxiang Che, Ting Liu, Bing Qin, Shijin Wang, and Guoping Hu. 2020. "Revisiting pre-trained models for Chinese natural language processing." In Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: Findings, pages 657–668, Online. Association for Computational Linguistics.

  • Jia Deng, Wei Dong, Richard Socher, Li-Jia Li, Kai Li, and Li Fei-Fei. 2009. "Imagenet: A large-scale hierarchical image database." In 2009 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR 2009), 20-25 June 2009, Miami, Florida, USA, pages 248–255. IEEE Computer Society.

  • Li Deng. 2012. "The mnist database of handwritten digit images for machine learning research [best of the web]." IEEE signal processing magazine, 29(6):141–142.

  • Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. 2019. "BERT: pre-training of deep bidirectional transformers for language understanding." In NAACL-HLT 2019, pages 4171–4186. Association for Computational Linguistics.

  • Mark Everingham, Luc Van Gool, Christopher K. I. Williams, John M. Winn, and Andrew Zisserman. 2010. "The pascal visual object classes (VOC) challenge." Int. J. Comput. Vis., 88(2):303–338.

  • Nanyi Fei, Zhiwu Lu, Yizhao Gao, Guoxing Yang, Yuqi Huo, Jingyuan Wen, Haoyu Lu, Ruihua Song, Xin Gao, Tao Xiang, et al. 2021. "Wenlan 2.0: Make ai imagine via a multimodal foundation model." arXiv preprint arXiv:2110.14378.

  • Li Fei-Fei, Rob Fergus, and Pietro Perona. 2004. "Learning generative visual models from few training examples: An incremental bayesian approach tested on 101 object categories." In 2004 conference on computer vision and pattern recognition workshop, pages 178–178. IEEE.

  • Jannik Fritsch, Tobias Kuehnl, and Andreas Geiger. 2013. "A new performance measure and evaluation benchmark for road detection algorithms." In 16th International IEEE Conference on Intelligent Transportation Systems (ITSC 2013), pages 1693–1700. IEEE.

  • Mitchell A. Gordon, Kevin Duh, and Jared Kaplan. 2021. "Data and parameter scaling laws for neural machine translation." In EMNLP 2021, pages 5915–5922. Association for Computational Linguistics.

  • Jiaxi Gu, Xiaojun Meng, Guansong Lu, Lu Hou, Minzhe Niu, Hang Xu, Xiaodan Liang, Wei Zhang, Xin Jiang, and Chunjing Xu. 2022. "Wukong: 100 million large-scale chinese cross-modal pre-training dataset and a foundation framework." arXiv preprint arXiv:2202.06767.

  • Patrick Helber, Benjamin Bischke, Andreas Dengel, and Damian Borth. 2019. "Eurosat: A novel dataset and deep learning benchmark for land use and land cover classification." IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing, 12(7):2217–2226.

  • Arian Hosseini, Siva Reddy, Dzmitry Bahdanau, R Devon Hjelm, Alessandro Sordoni, and Aaron Courville. 2021. "Understanding by understanding not: Modeling negation in language models." arXiv preprint arXiv:2105.03519.

  • Zhicheng Huang, Zhaoyang Zeng, Bei Liu, Dongmei Fu, and Jianlong Fu. 2020. "Pixel-bert: Aligning image pixels with text by deep multi-modal transformers." CoRR, abs/2004.00849.

  • Gabriel Ilharco, Mitchell Wortsman, Ross Wightman, Cade Gordon, Nicholas Carlini, Rohan Taori, Achal Dave, Vaishaal Shankar, Hongseok Namkoong, John Miller, Hannaneh Hajishirzi, Ali Farhadi, and Ludwig Schmidt. 2021. "Openclip." If you use this software, please cite it as below.

  • Chao Jia, Yinfei Yang, Ye Xia, Yi-Ting Chen, Zarana Parekh, Hieu Pham, Quoc V Le, Yunhsuan Sung, Zhen Li, and Tom Duerig. 2021. "Scaling up visual and vision-language representation learning with noisy text supervision." arXiv preprint arXiv:2102.05918.

  • Aditya Khandelwal and Suraj Sawant. 2019. "Negbert: a transfer learning approach for negation detection and scope resolution." arXiv preprint arXiv:1911.04211.

  • Douwe Kiela, Hamed Firooz, Aravind Mohan, Vedanuj Goswami, Amanpreet Singh, Pratik Ringshia, and Davide Testuggine. 2020. "The hateful memes challenge: Detecting hate speech in multimodal memes." Advances in Neural Information Processing Systems, 33:2611–2624.

  • Jonathan Krause, Michael Stark, Jia Deng, and Li Fei-Fei. 2013. "3d object representations for fine-grained categorization." In Proceedings of the IEEE international conference on computer vision workshops, pages 554–561.

  • Ranjay Krishna, Yuke Zhu, Oliver Groth, Justin Johnson, Kenji Hata, Joshua Kravitz, Stephanie Chen, Yannis Kalantidis, Li-Jia Li, David A. Shamma, Michael S. Bernstein, and Li Fei-Fei. 2017 "Visual genome: Connecting language and vision using crowdsourced dense image annotations." IJCV, 123(1):32–73.

  • Alex Krizhevsky, Geoffrey Hinton, et al. 2009. "Learning multiple layers of features from tiny images."

  • Weiyu Lan, Xirong Li, and Jianfeng Dong. 2017. "Fluency-guided cross-lingual image captioning." Proceedings of the 25th ACM international conference on Multimedia.

  • Chenliang Li, Haiyang Xu, Junfeng Tian, Wei Wang, Ming Yan, Bin Bi, Jiabo Ye, Hehong Chen, Guohai Xu, Zheng Cao, et al. 2022a. "mplug: Effective and efficient vision-language learning by cross-modal skip-connections." arXiv preprint arXiv:2205.12005.

  • Chunyuan Li, Haotian Liu, Liunian Harold Li, Pengchuan Zhang, Jyoti Aneja, Jianwei Yang, Ping Jin, Yong Jae Lee, Houdong Hu, Zicheng Liu, et al. 2022b. "Elevater: A benchmark and toolkit for evaluating language-augmented visual models." arXiv preprint arXiv:2204.08790.

  • Gen Li, Nan Duan, Yuejian Fang, Daxin Jiang, and Ming Zhou. 2019a. "Unicoder-vl: A universal encoder for vision and language by cross-modal pretraining." CoRR, abs/1908.06066.

  • Junnan Li, Dongxu Li, Caiming Xiong, and Steven Hoi. 2022c. "Blip: Bootstrapping language-image pretraining for unified vision-language understanding and generation." arXiv preprint arXiv:2201.12086.

  • Junnan Li, Ramprasaath R. Selvaraju, Akhilesh Gotmare, Shafiq R. Joty, Caiming Xiong, and Steven Chu-Hong Hoi. 2021a. "Align before fuse: Vision and language representation learning with momentum distillation." In NeurIPS 2021, pages 9694–9705.

  • Liunian Harold Li, Mark Yatskar, Da Yin, Cho-Jui Hsieh, and Kai-Wei Chang. 2019b. "Visualbert: A simple and performant baseline for vision and language." ArXiv, abs/1908.03557.

  • Xirong Li, Chaoxi Xu, Xiaoxu Wang, Weiyu Lan, Zhengxiong Jia, Gang Yang, and Jieping Xu. 2019c. "Coco-cn for cross-lingual image tagging, captioning, and retrieval." IEEE Transactions on Multimedia, 21:2347–2360.

  • Xiujun Li, Xi Yin, Chunyuan Li, Xiaowei Hu, Pengchuan Zhang, Lei Zhang, Lijuan Wang, Houdong Hu, Li Dong, Furu Wei, Yejin Choi, and Jianfeng Gao. 2020. "Oscar: Object-semantics aligned pre-training for vision-language tasks." In ECCV.

  • Yangguang Li, Feng Liang, Lichen Zhao, Yufeng Cui, Wanli Ouyang, Jing Shao, Fengwei Yu, and Junjie Yan. 2021b. "Supervision exists everywhere: A data efficient contrastive language-image pre-training paradigm." arXiv preprint arXiv:2110.05208.

  • Junyang Lin, Rui Men, An Yang, Chang Zhou, Ming Ding, Yichang Zhang, Peng Wang, Ang Wang, Le Jiang, Xianyan Jia, Jie Zhang, Jianwei Zhang, Xu Zou, Zhikang Li, Xiaodong Deng, Jie Liu, Jinbao Xue, Huiling Zhou, Jianxin Ma, Jin Yu, Yong Li, Wei Lin, Jingren Zhou, Jie Tang, and Hongxia Yang. 2021a. "M6: A chinese multimodal pretrainer." CoRR, abs/2103.00823.

  • Junyang Lin, An Yang, Jinze Bai, Chang Zhou, Le Jiang, Xianyan Jia, Ang Wang, Jie Zhang, Yong Li, Wei Lin, Jingren Zhou, and Hongxia Yang. 2021b. "M6-10T: A sharing-delinking paradigm for efficient multi-trillion parameter pretraining." CoRR, abs/2110.03888.

  • Junyang Lin, An Yang, Yichang Zhang, Jie Liu, Jingren Zhou, and Hongxia Yang. 2020. "Interbert: Vision-and-language interaction for multi-modal pretraining." CoRR, abs/2003.13198.

  • Ze Liu, Han Hu, Yutong Lin, Zhuliang Yao, Zhenda Xie, Yixuan Wei, Jia Ning, Yue Cao, Zheng Zhang, Li Dong, et al. 2022. "Swin transformer v2: Scaling up capacity and resolution." In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 12009–12019.

  • Jiasen Lu, Dhruv Batra, Devi Parikh, and Stefan Lee. 2019. "Vilbert: Pretraining task-agnostic visiolinguistic representations for vision-and-language tasks." In NeurIPS 2019, pages 13–23.

  • Subhransu Maji, Esa Rahtu, Juho Kannala, Matthew Blaschko, and Andrea Vedaldi. 2013. "Fine-grained visual classification of aircraft." arXiv preprint arXiv:1306.5151.

  • Maria-Elena Nilsback and Andrew Zisserman. 2008. "Automated flower classification over a large number of classes." In 2008 Sixth Indian Conference on Computer Vision, Graphics & Image Processing, pages 722–729. IEEE.

  • Omkar M. Parkhi, Andrea Vedaldi, Andrew Zisserman, and C. V. Jawahar. 2012. "Cats and dogs." In 2012 IEEE Conference on Computer Vision and Pattern Recognition, pages 3498–3505. IEEE Computer Society.

  • Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh, Gabriel Goh, Sandhini Agarwal, Girish Sastry, Amanda Askell, Pamela Mishkin, Jack Clark, Gretchen Krueger, and Ilya Sutskever. 2021. "Learning transferable visual models from natural language supervision." In ICML 2021, volume 139 of Proceedings of Machine Learning Research, pages 8748–8763. PMLR.

  • Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, and Peter J. Liu. 2020. "Exploring the limits of transfer learning with a unified text-to-text transformer." J. Mach. Learn. Res., 21:140:1–140:67.

  • Aditya Ramesh, Prafulla Dhariwal, Alex Nichol, Casey Chu, and Mark Chen. 2022. "Hierarchical text-conditional image generation with clip latents." arXiv preprint arXiv:2204.06125.

  • Aditya Ramesh, Mikhail Pavlov, Gabriel Goh, Scott Gray, Chelsea Voss, Alec Radford, Mark Chen, and Ilya Sutskever. 2021. "Zero-shot text-to-image generation." In ICML 2021, volume 139 of Proceedings of Machine Learning Research, pages 8821–8831. PMLR.

  • Robin Rombach, Andreas Blattmann, Dominik Lorenz, Patrick Esser, and Björn Ommer. 2022. "High-resolution image synthesis with latent diffusion models." In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 10684–10695.

  • Christoph Schuhmann, Richard Vencu, Romain Beaumont, Robert Kaczmarczyk, Clayton Mullis, Aarush Katta, Theo Coombes, Jenia Jitsev, and Aran Komatsuzaki. 2021. "Laion-400m: Open dataset of clip-filtered 400 million image-text pairs." arXiv preprint arXiv:2111.02114.

  • Sheng Shen, Liunian Harold Li, Hao Tan, Mohit Bansal, Anna Rohrbach, Kai-Wei Chang, Zhewei Yao, and Kurt Keutzer. 2021. "How much can clip benefit vision-and-language tasks?" arXiv preprint arXiv:2107.06383.

  • Johannes Stallkamp, Marc Schlipsing, Jan Salmen, and Christian Igel. 2011. "The german traffic sign recognition benchmark: A multi-class classification competition." In IJCNN 2011, pages 1453–1460. IEEE.

  • Bastiaan S Veeling, Jasper Linmans, Jim Winkens, Taco Cohen, and Max Welling. 2018. "Rotation equivariant cnns for digital pathology." In International Conference on Medical image computing and computer-assisted intervention, pages 210–218. Springer.

  • Peng Wang, An Yang, Rui Men, Junyang Lin, Shuai Bai, Zhikang Li, Jianxin Ma, Chang Zhou, Jingren Zhou, and Hongxia Yang. 2022a. "Unifying architectures, tasks, and modalities through a simple sequence-to-sequence learning framework." CoRR, abs/2202.03052.

  • Wenhui Wang, Hangbo Bao, Li Dong, Johan Bjorck, Zhiliang Peng, Qiang Liu, Kriti Aggarwal, Owais Khan Mohammed, Saksham Singhal, Subhojit Som, et al. 2022b. "Image as a foreign language: Beit pretraining for all vision and vision-language tasks." arXiv preprint arXiv:2208.10442.

  • Wenhui Wang, Hangbo Bao, Li Dong, and Furu Wei. 2021a. "Vlmo: Unified vision-language pretraining with mixture-of-modality-experts." CoRR, abs/2111.02358.

  • Ziru Wang, Jiahui Yu, Adams Wei Yu, Zihang Dai, Yulia Tsvetkov, and Yuan Cao. 2021b. "Simvlm: Simple visual language model pretraining with weak supervision." CoRR, abs/2108.10904.

  • Jason Wei, Yi Tay, Rishi Bommasani, Colin Raffel, Barret Zoph, Sebastian Borgeaud, Dani Yogatama, Maarten Bosma, Denny Zhou, Donald Metzler, et al. 2022. "Emergent abilities of large language models." arXiv preprint arXiv:2206.07682.

  • Chunyu Xie, Heng Cai, Jianfei Song, Jincheng Li, Fanjing Kong, Xiaoyu Wu, Henrique Morimitsu, Lin Yao, Dexin Wang, Dawei Leng, et al. 2022. "Zero and r2d2: A large-scale chinese cross-modal benchmark and a vision-language framework." arXiv preprint arXiv:2205.03860.

  • Haiyang Xu, Ming Yan, Chenliang Li, Bin Bi, Songfang Huang, Wenming Xiao, and Fei Huang. 2021. "E2e-vlp: End-to-end vision-language pretraining enhanced by visual learning." arXiv preprint arXiv:2106.01804.

  • An Yang, Junyang Lin, Rui Men, Chang Zhou, Le Jiang, Xianyan Jia, Ang Wang, Jie Zhang, Jiamang Wang, Yong Li, Di Zhang, Wei Lin, Lin Qu, Jingren Zhou, and Hongxia Yang. 2021. "Exploring sparse expert models and beyond." CoRR, abs/2105.15082.

  • Lewei Yao, Runhui Huang, Lu Hou, Guansong Lu, Minzhe Niu, Hang Xu, Xiaodan Liang, Zhenguo Li, Xin Jiang, and Chunjing Xu. 2021. "FILIP: fine-grained interactive language-image pre-training." CoRR, abs/2111.07783.

  • Lu Yuan, Dongdong Chen, Yi-Ling Chen, Noel Codella, Xiyang Dai, Jianfeng Gao, Houdong Hu, Xuedong Huang, Boxin Li, Chunyuan Li, Ce Liu, Mengchen Liu, Zicheng Liu, Yumao Lu, Yu Shi, Lijuan Wang, Jianfeng Wang, Bin Xiao, Zhen Xiao, Jianwei Yang, Michael Zeng, Luowei Zhou, and Pengchuan Zhang. 2021. "Florence: A new foundation model for computer vision." CoRR, abs/2111.11432.

  • Xiaohua Zhai, Xiao Wang, Basil Mustafa, Andreas Steiner, Daniel Keysers, Alexander Kolesnikov, and Lucas Beyer. 2022. "Lit: Zero-shot transfer with locked-image text tuning." In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 18123–18133.

  • Pengchuan Zhang, Xiujun Li, Xiaowei Hu, Jianwei Yang, Lei Zhang, Lijuan Wang, Yejin Choi, and Jianfeng Gao. 2021. "Vinvl: Revisiting visual representations in vision-language models." In CVPR 2021, pages 5579–5588. Computer Vision Foundation / IEEE.


基于ChineseClip进行零样本分类尝试

安装

按照git上项目进行安装: GitHub - OFA-Sys/Chinese-CLIP: Chinese version of CLIP which achieves Chinese cross-modal retrieval and representation generation.

git clone下载之后执行:

pip install -r requirements.txt

pip install cn_clip
# cd Chinese-CLIP
# pip install -e .

实践

零样本分类的思想是你准备文本标签,将待标注的图片送到模型中,模型计算图像特征和标签特征的关联度,并按照分数进行排序后选取最大分数的作为预标注标签。

代码如下:

import os
import sys
import json
import torch
import numpy as np
from PIL import Image

import cn_clip.clip as clip
from cn_clip.clip import load, load_from_name, available_models

CURRENT_DIR = os.path.abspath(os.path.dirname(__file__)) + '/'
LABEL_NAMES = ["猫", "狗", "花"]  # 预标注图像的标签


class ChineseClip:
    def __init__(self, model_name='ViT-H/14'):
        print("Available models:", available_models())
        # ['ViT-B-16', 'ViT-L-14', 'ViT-L-14-336', 'ViT-H-14', 'RN50']  # 可选的模型
        download_root = os.path.join(CURRENT_DIR, "../models/cv/")  # 模型下载位置

        self.device = "cuda" if torch.cuda.is_available() else "cpu"
        self.model, self.preprocess = load_from_name(
            "ViT-H-14", device=self.device, download_root=download_root)
        self.model.eval()

    def infer(self, image_path):
        image = self.preprocess(Image.open(image_path)).unsqueeze(0).to(self.device)
        text = clip.tokenize(LABEL_NAMES).to(self.device)

        with torch.no_grad():
            image_features = self.model.encode_image(image)
            text_features = self.model.encode_text(text)

            image_features /= image_features.norm(dim=-1, keepdim=True)
            text_features /= text_features.norm(dim=-1, keepdim=True)

            logits_per_image, logits_per_text = self.model.get_similarity(image, text)
            probs = logits_per_image.softmax(dim=-1).cpu().numpy()
        return probs

    def get_label_name(self, probs):
        label_index = np.argmax(probs)
        return LABEL_NAMES[label_index]


if __name__ == "__main__":
    image_path = sys.argv[1]
    cc = ChineseClip()
    probs = cc.infer(image_path)
    label_name = cc.get_label_name(probs)
    print(probs)
    print(label_name)

以自家猫为例进行预测,结果如下:

[[9.951e-01 4.467e-03 3.610e-04]]

可以看到输出的标签及概率里面,标签为猫的概率分数最大,表明该模型能够完成简单的零样本预标注任务。