项目介绍:clip-retrieval
简介
Clip-retrieval 是一个使得计算 CLIP 嵌入和构建相关的检索系统变得简单的项目。利用它,用户可以在 20 小时内处理 1 亿对文本+图像的嵌入,使用硬件为 NVIDIA 3080 显卡。
项目组成
该项目由多个模块构成,每个模块对应不同功能:
- clip client:通过 Python 远程查询后端服务的客户端。
- clip inference:快速计算图像和文本的嵌入。
- clip index:基于嵌入建立高效的索引。
- clip filter:利用索引筛选数据。
- clip back:利用简单的 Flask 服务托管这些索引。
- clip front:提供一个简单的用户接口用于查询后端。
- clip end2end:一个端到端的流程,结合了图像下载、推理、索引构建和前后端应用的启动,方便用户快速上手。
使用方法
用户可以安装 clip-retrieval 软件包,并根据自己的需求选择不同模块进行使用。
pip install clip-retrieval
使用 clip client,用户可以通过文本或图像进行查询,项目提供了一系列 API 可供调用。以下是一些基本示例:
文本查询
通过文本查找相似的图像:
from clip_retrieval.clip_client import ClipClient
client = ClipClient(url="https://knn.laion.ai/knn-service", indice_name="laion5B-L-14")
results = client.query(text="an image of a cat")
print(results[0])
图像查询
通过图像查找相似的图像:
cat_results = client.query(image="cat.jpg")
clip end2end 使用示例
选择一个带有图像链接及其说明的文件,然后执行以下命令可以构建一个完整的搜索系统:
wget https://github.com/rom1504/img2dataset/raw/main/tests/test_files/test_1000.parquet
clip-retrieval end2end test_1000.parquet /tmp/my_output
访问 http://localhost:1234 即可查看结果。
clip back 服务
clip back 提供了一个简单易用的 KNN 服务,其中包含相关的 API 供调用。用户可以自定义所需的模型及参数以优化索引及服务效率。
clip front 界面
clip front 是一个简单的用户界面,用于展示搜索结果。用户可以通过 clip-retrieval ui 查看并使用这个界面。
适用场景
clip-retrieval 常用于以下场景:
- 大规模数据集的多模态语义检索。
- 各类图像和文本的快速匹配和筛选。
- 在学术研究及工业应用中,针对语义搜索构建上层产品及服务。
贡献者与社区
如果您有兴趣为项目贡献代码或想了解更多关于数据的可复用工具,欢迎加入 DataToML 讨论。
相关项目
clip-retrieval 还与多个相关项目整合使用,例如 all_clip 以加载任意 clip 模型,img2dataset 用于从 URL 下载图像,open_clip 训练 clip 模型,CLIP_benchmark 评估 clip 模型等。
clip-retrieval 项目以其便捷性和高效性,适合需要快速搭建图像及文本检索系统的用户,在数据科学和机器学习领域拥有广泛应用。