图像嵌入技术是计算机视觉领域的一个重要分支,它涉及到图像识别、图像聚类、构建大规模视觉数据搜索系统等多个任务。图像嵌入是将图像内容的语义信息编码成数值表示,通常由训练有大量文本和图像对的计算机视觉模型来计算。这些模型的目标是建立图像和文本之间关系的“理解”。通过这些模型,可以为图像和文本创建嵌入,然后进行比较,用于搜索、聚类等。
嵌入与原始图像形式不同。图像文件包含RGB数据,精确描述每个像素的颜色。而嵌入则编码代表图像内容的信息。这些嵌入在其原始形式下是不可读的,就像将图像读作数字列表时一样。只有当使用嵌入时,它们才开始变得有意义。
以下面的图像为例:这张图像包含一碗水果。图像嵌入将编码这些信息。然后可以将图像嵌入与文本嵌入如“水果”进行比较,看看“水果”这个概念与图像内容的相似度有多高。可以取两个提示,比如“水果”和“蔬菜”,看看每一个与图像的相似度如何。最相似的提示被认为是最能代表图像的。
接下来,讨论一下CLIP,这是一个由OpenAI创建的流行的图像嵌入模型,然后通过一些嵌入示例来看看可以用嵌入做什么。CLIP(Contrastive Language-Image Pretraining)是由OpenAI开发的多模态嵌入模型,于2019年发布。CLIP使用超过4亿对图像和文本进行训练。可以使用CLIP计算图像和文本嵌入,并进行比较。
CLIP是一个零样本模型,这意味着模型不需要任何微调就可以计算嵌入。对于分类任务,需要为每个潜在类别计算一个文本嵌入,为想分类的图像计算一个图像嵌入,然后使用余弦相似度等距离度量将每个文本嵌入与图像嵌入进行比较。相似度最高的文本嵌入就是与图像最相关的标签。
图像分类是一个任务,目标是为图像分配一个或多个标签,这些标签来自有限的类别。例如,考虑下面的停车场图像:可以通过比较这个图像与“停车场”和“公园”这两个词的相似度来分类。让将图像通过CLIP,一个流行的嵌入模型,并比较图像与每个提示的相似度。CLIP是一个由嵌入驱动的零样本分类模型。这意味着可以使用嵌入对图像进行分类,而不需要训练一个微调模型。
以下是嵌入比较的置信度结果。这些结果显示了CLIP认为给定文本标签与图像内容匹配的置信度有多高。停车场:0.99869776 公园:0.00130221 由于“停车场”类别具有最高的“置信度”,可以假设图像更接近停车场而不是公园。置信度是通过最接近1的数字来衡量的。可以将每个值乘以100以获取百分比。使用了OpenAI CLIP GitHub仓库中的演示代码来运行计算。
视频包含一系列帧。可以将每个帧视为一个独特的图像,可以对其进行分类。可以在视频中运行帧,通过CLIP进行零样本视频分类。可以找到每个帧,或者每n个帧与图像中的文本提示的相似度。以下视频显示了CLIP运行以分类视频帧与文本提示“咖啡杯”的接近程度:0:00 / 0:08 1× 可以使用CLIP来识别视频中何时出现对象。例如,如果CLIP确信视频帧包含一个人,可以添加一个标签说视频包含一个人。或者,可以跟踪包含猫的帧数,以便可以跟踪视频中的猫场景在哪里。如果想在自己的数据上尝试,请参阅端到端教程,了解如何使用CLIP分析视频。
使用CLIP进行视频分类有许多应用,包括识别视频中何时出现特定概念,以及视频是否不适合工作(由暴力或露骨内容的存在证明)。
嵌入可以用来聚类图像。可以将图像聚类到一个定义的组集合中(即三个组),或者可以在没有设定聚类数量的情况下聚类嵌入。在前一种情况下,可以在有限的聚类集合中识别图像之间的模式;在后一种情况下,可以计算数据集中图像之间的距离。聚类通常用于异常检测,目标是找到足够不同的图像。
k-means聚类通常用于将嵌入聚类到一个设定数量的类别中。有许多算法可以让根据嵌入将图像聚类到一个未定义数量的聚类中。DBSCAN就是这样的一个例子。已经编写了一个指南,介绍了如何聚类图像嵌入。
以下图像显示了使用CLIP聚类图像数据集,并使用Bokeh进行可视化:图像搜索与嵌入在上面,介绍了两个概念:1. 文本嵌入。2.图像嵌入。这些值都是由嵌入模型计算的。可以比较文本和图像嵌入,看看文本与图像有多相似。可以将嵌入保存在一个特殊的数据库中,称为向量数据库(用于存储嵌入),以在图像和文本嵌入之间进行高效搜索。这种高效搜索使能够构建一个“语义”图像搜索引擎。
语义图像搜索引擎是可以查询自然语言概念的搜索引擎。例如,可以输入“猫”来找到数据集中的所有猫,或者输入“安全帽”来找到与数据集中的安全帽相关的图像。构建这样的搜索引擎曾经是昂贵的,并且是一个技术挑战。有了嵌入和向量数据库,构建一个运行快速的图像搜索引擎是可能的。