图像搜索
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 多种语言的多语言 text2image 搜索的示例。
Image_Clustering.ipynb(Colab 版本)展示了如何执行 图像聚类。给定来自 Unsplash 的 25,000 张免费图片,我们找到相似图像的簇。您可以控制聚类的敏感度。
Image_Duplicates.ipynb(Colab 版本)展示了一个示例,说明如何在一个大型照片集中查找重复和近似重复的图像。
Image_Classification.ipynb(Colab 版本)是(多语言)零样本图像分类的示例。