图像搜索¶
SentenceTransformers 提供了一些模型,可以将图像和文本嵌入到同一个向量空间中。这不仅允许查找相似的图像,还能实现图像搜索。
安装¶
确保你已安装 transformers 以使用图像-文本模型,并使用最新版本的 PyTorch(测试版本为 PyTorch 1.7.0)。图像-文本模型自 SentenceTransformers 1.0.0 版本起被引入,目前仍处于实验阶段。
使用方法¶
SentenceTransformers 为 OpenAI CLIP 模型 提供了一个封装,该模型在多种(图像,文本)对上进行了训练。
from sentence_transformers import SentenceTransformer
from PIL import Image
# 加载 CLIP 模型
model = SentenceTransformer("clip-ViT-B-32")
# 编码一张图片:
img_emb = model.encode(Image.open("two_dogs_in_snow.jpg"))
# 编码文本描述
text_emb = model.encode(
["两只狗在雪中", "桌上的一只猫", "一张伦敦夜景的照片"]
)
# 计算相似度
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 版本) 展示了多语言零样本图像分类的示例。