如何使用MetaCLIP?

如何使用MetaCLIP?

人工智能一直在不断发展,而 Open AI 的 CLIP 因其性能和架构而一直是一项突出的技术。该模型还拥有多模态能力,使其能够推动 OWL-ViT 和 DALL-E 等其他模型的发展。Facebook 的研究人员利用 CLIP 数据整理概念创建了 MetaCLIP。该模型对 MetaAI 进行了升级,纳入了零镜头图像分的各种特征。与 CLIP 相比,它还使数据整理过程更加透明。 因此,让我们来讨论一下该模型在零镜头分类和其他特征(如图像相似性)方面的工作原理。我们还将强调与 CLIP 相比,MetaCLIP 的动态和性能。

学习目标

  • 了解 MetaCLIP 在 CLIP 架构的基础上向前迈进了一步。
  • 了解 MetaCLIP 的性能基准。
  • 深入了解该模型的架构。
  • 在 MetaCLIP 上运行推理,进行零镜头图像分类和图像相似性检查。
  • 强调 MetaCLIP 的局限性和一些实际应用。

什么是MetaCLIP?

MetaAI 开发了 MetaCLIP,该模型采用了一种全新的语言图像预训练方法。它以数据整理为重点来执行任务,拥有超过 4 亿个图像-文本对,该模型以极高的准确率提供了出色的研究成果。

该模型利用“揭开 CLIP 数据的神秘面纱”一文中介绍的 CLIP 概念,从元数据中获取数据。MetaCLIP 还具有各种应用功能。该模型允许您根据形状、颜色等特征对图像进行聚类。您还可以对两幅图像进行比较,并将文本与图像进行匹配。

了解MetaCLIP:比CLIP更进一步

要理解 MetaCLIP 的特殊性,您需要了解 CLIP 发展的基本要素。首先,CLIP 是一个杰出的模型,因为它将零镜头分类引入了计算机视觉领域。但这一模型的一个引人入胜之处在于,其基础和结构来自于其精细的数据整理过程。

然而,CLIP 的数据源无法访问,这使得数据整理过程充满了不确定性。这就是 MetaCLIP 介入的原因,它提供了一种使用元数据但借助 CLIP 概念的更可行的方法。不过,MetaCLIP 改进并共享了数据收集过程。

性能基准

与 CLIP 的数据相比,MetaCLIP 在各种基准测试中提供的数据更加精确,数据源和流程更加完善。例如,在一个包含 4 亿个图像-文本对的数据集上,该模型的零镜头分类准确率达到了 70%。这一数字略微超过 CLIP,达到 68%。

当扩展到 10 亿个数据点时,准确率甚至提高到 72%。在不同规模的 VT 模型上,MetaCLIP 的准确率甚至高达 80%。

模型架构

如前所述,该模型(CLIP)的基础是数据集而不是架构。但由于关于 CLIP 数据源的信息很少,MetaCLIP 决定采用元数据策划数据集的方法,其原则如下;

  • 研究人员使用了一个全新的数据集,其中包含来自不同在线资料库的超过 4 亿个文本-图片对。
  • MetaCLIP 还确保元数据文本条目具有链接,并与其对应的文本内容具有清晰的映射关系。
  • 元数据还为数据整理过程建立了正式算法,以提高可扩展性并降低空间复杂性。
  • 该模型还使用了一种特定的匹配技术来弥合非结构化文本和结构化元数据之间的差距。
  • 利用清晰的地图和文本内容,还为每个条目添加了主题。这有助于确保数据分布均衡,并可进行预训练。

CLIP架构

Source: HuggingFace

如何使用MetaCLIP?

MetaCLIP 在各种任务中表现出色,从零镜头图像分类到图像相似性检测。虽然该模型还有其他使用方法,包括图像检索(提示)和聚类,但我们将重点介绍零镜头图像分类。

步骤 1:导入必要的库

本代码从 transformers 库中导入管道函数,该函数用于将预先训练好的模型应用于各种人工智能任务。它还从 PIL (Pillow) 库中导入了图像模块,用于处理图像处理任务,如打开和修改图像。

from transformers import pipeline
from PIL import Image

步骤 2:加载图像

虽然您可以使用图像 URL 加载零拍摄分类所需的图像,但对于本地设备上的图像,使用图像路径是一种有效的替代方法。因此,“Image.open”功能有助于使用 PIL 库打开图像,并为进一步处理做好准备。

image_path = "/content/Bald doctor.jpeg"
image = Image.open(image_path)

秃头医生

步骤 3:初始化模型

现在我们将初始化模型。

 pipe = pipeline("zero-shot-image-classification", model="facebook/metaclip-b16-fullcc2.5b")

步骤 4:定义标签

下一步是设置候选标签,即模型可以对输入图像进行分类的可能类别。

 # Define candidate labels
candidate_labels = ["doctor", "scientist", "businessman", "teacher", "artist"]

该模型将处理图像,并根据标签分数给出结果。因此,你可以得到以下标签的预测得分:医生、科学家、商人、教师或艺术家。由于该模型具有文本-图像匹配功能,因此它可以提供哪些标签与图像匹配的百分比。

步骤 5:打印输出

 result = pipe(image, candidate_labels=candidate_labels)

这里的函数(管道)将访问图像并为每个标签分配一个概率分值。因此,您将得到每个标签的结果及其相关的置信度得分。

输出:

 print(result)

图像识别得分和分类

输出结果显示,与其他标签相比,“医生”的置信度得分最高(0.99106)。

使用MetaCLIP进行图像-文本相似性分析

该模型的另一个神奇之处在于,它能通过给出置信度分数,几乎准确地定义两张图片的相似度。下面我将说明如何使用 MetaCLIP 比较两张图像:

导入库

虽然 MetaCLIP 已存在于环境中,但我们仍可导入必要的库,就像在零镜头分类中一样。

from transformers import pipeline
from PIL import Image

初始化MetaCLIP模型

接下来,我们将初始化负责图像相似性任务的 MetaCLIP 模型。图像输入是这一过程的另一个重要步骤。加载和处理要检查相似性的图像的步骤如下所示:

 pipe = pipeline("zero-shot-image-classification", model="facebook/metaclip-b16-fullcc2.5b")

图像处理

我们需要加载要检查相似性的两幅图像。这需要从指定路径打开图像。image.open “函数使用 PIL 库来完成这一过程。因此,我们有了 image1,其中包含文件路径为“/content/Alphine Loop Apple Band.jpg”的第一张图片。

Image2 存储文件路径中的第二张图片:“/content/Apple Watch Reset.jpg”。

image1 = Image.open("/content/Alphine Loop Apple Band.jpg")
image2 = Image.open("/content/Apple Watch Reset.jpg")

我们输入图像路径来加载要处理的图像。下面是图片:

智能手表

description1 = "An orange apple watch"  # Example for image1
description2 = "An apple watch with a black band"       # Example for image2

由于 MetaCLIP 是一个文本-图像匹配模型,因此请用文本形式描述每张图像。然后,就可以检查图像 1 和图像 2 如何相互匹配了。

结果

这段代码使用 MetaCLIP 管道的零镜头分类方法对两幅图像进行交叉相似性检查。第一张图像(image1)使用第二张图像(description2)的文本描述进行分类,反之亦然(image2 使用 description1)。由此得出的置信度分数(result1 和 result2)表示每张图像与另一张图像的描述的匹配程度。

result1 = pipe(image1, candidate_labels=[description2])
result2 = pipe(image2, candidate_labels=[description1])

打印结果最后,通过“打印”显示相似度得分。第一行显示图像 1 与图像 2 描述的匹配程度,反之亦然。

print("Similarity Score (Image1 → Image2):", result1)
print("Similarity Score (Image2 → Image1):", result2)

如果两个分数都很高,则认为图像相似;如果两个分数都很低,则认为图像不同。然而,如下图所示,相似性是显而易见的。(分数 = 1.0)

图像相似得分

您可以通过链接查看 Colab 上的代码文件 。

MetaCLIP的应用

该模型在各行各业的应用方式多种多样。其中包括

  • MetaCLIP 可帮助创建用于图像搜索的人工智能系统。MetaCLIP 的图像聚类能力意味着它可以对具有特定属性的图像进行分组,并在与文本匹配时进行识别。
  • 图像标题和生成是 CLIP 模型的另一项应用。MetaCLIP 可以使用文本提示生成图像。
  • 该模型还可用于图像组合,因为您可以使用文本提示合并不同图像中的元素。

MetaCLIP的局限性

现在让我们探讨一下 MetaCLIP 的局限性:

  • 潜在偏差:MetaCLIP 会从其在线训练数据中继承偏差,从而导致公平性问题。
  • 数据依赖性:该模型的性能在很大程度上依赖于元数据整理的质量和多样性。
  • 计算成本:训练和推理需要大量资源,因此较小规模的应用无法使用。
  • 可解释性有限:零镜头分类的决策过程缺乏充分的可解释性。
  • 伦理问题:与数据隐私和负责任地使用人工智能相关的问题仍然是一个挑战。

小结

MetaCLIP 提高了数据整理的透明度,完善了图像-文本配对,是 CLIP 的重大进步。它在零镜头分类和图像相似性任务中的卓越表现,展示了它在各种人工智能应用中的潜力。MetaCLIP 采用结构良好的元数据方法,提高了可扩展性和准确性,同时解决了 CLIP 的一些数据限制。

然而,有关数据来源和潜在偏见的伦理问题仍然是一个挑战。尽管如此,MetaCLIP 的创新架构和高准确性使其成为推进多模态人工智能应用的强大工具。

  • MetaCLIP 带来的数据透明度是一个突出因素。它利用基于元数据的数据集(包含 4 亿多个图像-文本对)改进了数据整理过程。
  • MetaCLIP 在零镜头图像分类方面的表现是该模型性能基准的另一个重要收获。
  • MetaCLIP 可用于图像搜索、聚类、标题,甚至文本到图像的生成。

Resources

评论留言