图像搜索
SentenceTransformers 提供了可以将图像和文本嵌入到相同向量空间的模型。这使得查找相似图像以及实现**图像搜索**成为可能。
安装
请确保您已安装 transformers 以使用图像-文本模型,并使用最新的 PyTorch 版本(已使用 PyTorch 1.7.0 进行测试)。图像-文本模型已在 SentenceTransformers 1.0.0 版本中添加。图像-文本模型仍处于实验阶段。
用法
SentenceTransformers 为 OpenAI CLIP 模型提供了一个包装器,该模型在各种(图像、文本)对上进行了训练。
from sentence_transformers import SentenceTransformer
from PIL import Image
# Load CLIP model
model = SentenceTransformer("clip-ViT-B-32")
# Encode an image:
img_emb = model.encode(Image.open("two_dogs_in_snow.jpg"))
# Encode text descriptions
text_emb = model.encode(
["Two dogs in the snow", "A cat on a table", "A picture of London at night"]
)
# Compute similarities
similarity_scores = model.similarity(img_emb, text_emb)
print(similarity_scores)
您可以使用 CLIP 模型进行
文本到图像 / 图像到文本 / 图像到图像 / 文本到文本搜索
您可以使用常规的 SentenceTransformers 训练代码,在您自己的图像和文本数据上对其进行微调。
示例
Image_Search.ipynb(Colab 版本)展示了一个更大的示例,用于使用来自 Unsplash 的 25,000 张免费图片进行**文本到图像**和**图像到图像**搜索。
Image_Search-multilingual.ipynb(Colab 版本)是针对 50 多种语言的多语言文本到图像搜索示例。
Image_Clustering.ipynb(Colab 版本)展示了如何执行**图像聚类**。给定来自 Unsplash 的 25,000 张免费图片,我们找到了相似图像的簇。您可以控制聚类的敏感度。
Image_Duplicates.ipynb(Colab 版本)展示了一个示例,说明如何在大量照片集中查找重复和近似重复的图像。
Image_Classification.ipynb(Colab 版本)是一个(多语言)零样本图像分类示例。