Logo

CLIP-as-service: 高效可扩展的图像和文本嵌入服务

clip-as-service

CLIP-as-service简介

CLIP-as-service是一个基于CLIP(Contrastive Language-Image Pre-Training)模型的高效可扩展服务,用于生成图像和文本的嵌入向量表示。它具有以下主要特点:

  • ⚡ 快速:使用TensorRT、ONNX运行时和PyTorch无JIT方式提供CLIP模型服务,单GPU可达800QPS。采用非阻塞双工流式处理请求和响应,适用于大数据和长时间运行的任务。

  • 🫐 弹性:可在单个GPU上水平扩展多个CLIP模型,自动负载均衡。

  • 🐥 易用:客户端和服务器端设计简约,无学习成本。为图像和句子嵌入提供直观一致的API。

  • 👒 现代化:支持异步客户端。可轻松在gRPC、HTTP、WebSocket协议之间切换,支持TLS和压缩。

  • 🍱 集成:与Jina和DocArray等神经搜索生态系统无缝集成。可快速构建跨模态和多模态解决方案。

CLIP-as-service采用客户端-服务器架构设计,包含clip-serverclip-client两个独立的Python包。服务器端负责加载CLIP模型并提供推理服务,客户端负责发送请求和接收结果。这种设计使得系统具有很好的灵活性和可扩展性。

CLIP-as-service架构

安装与快速入门

安装

CLIP-as-service支持Python 3.7+环境。服务器端和客户端可以独立安装:

服务器端安装(PyTorch版):

pip install clip-server

客户端安装:

pip install clip-client

快速入门

  1. 启动服务器:
python -m clip_server
  1. 创建客户端连接:
from clip_client import Client

c = Client('grpc://0.0.0.0:51000')
  1. 获取句子嵌入:
r = c.encode(['First do it', 'then do it right', 'then do it better'])
print(r.shape)  # [3, 512]
  1. 获取图像嵌入:
r = c.encode(['apple.png',  # 本地图像
              'https://clip-as-service.jina.ai/_static/favicon.png',  # 远程图像
              'data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7'])  # 图像URI

print(r.shape)  # [3, 512]

主要功能

CLIP-as-service提供了以下主要功能:

1. 文本和图像嵌入

可以对文本和图像进行嵌入,生成512维的向量表示。支持批量处理,可以一次性对多个文本或图像进行编码。

2. 跨模态搜索

基于CLIP模型的语义理解能力,可以实现文本到图像、图像到文本的跨模态搜索。例如,输入一段文字描述,找到最匹配的图像;或者输入一张图片,找到最贴切的文字描述。

3. 视觉推理

CLIP模型具有强大的视觉推理能力,可以对图像内容进行分析和理解。例如,可以判断图像中物体的数量、颜色、空间关系等。

4. 排序

提供了/rank端点,可以对跨模态匹配结果进行重新排序,提高搜索质量。

5. 索引和搜索

支持对大规模数据集进行索引和搜索,可以快速找到最相似的结果。

应用示例

文本到图像搜索

以下是一个简单的文本到图像搜索示例,使用Totally Looks Like数据集:

from docarray import DocumentArray
from clip_client import Client

# 加载图像数据集
da = DocumentArray.pull('ttl-original', show_progress=True, local_cache=True)

# 创建客户端连接
c = Client('grpc://0.0.0.0:51000')

# 对图像进行编码
da = c.encode(da, show_progress=True)

# 交互式搜索
while True:
    vec = c.encode([input('sentence> ')])
    r = da.find(query=vec, limit=9)
    r[0].plot_image_sprites()

这个例子展示了如何通过输入文本描述来搜索匹配的图像。

图像到文本搜索

我们还可以实现图像到文本的搜索,以下是一个使用《傲慢与偏见》全文作为文本数据集的示例:

from docarray import Document, DocumentArray
from clip_client import Client

# 加载文本数据集
d = Document(uri='https://www.gutenberg.org/files/1342/1342-0.txt').load_uri_to_text()
da = DocumentArray(
    Document(text=s.strip()) for s in d.text.replace('\r\n', '').split('.') if s.strip()
)

# 创建客户端连接
c = Client('grpc://0.0.0.0:51000')

# 对文本进行编码
r = c.encode(da, show_progress=True)

# 加载图像嵌入
img_da = DocumentArray.load_binary('ttl-image')

# 随机选择图像并搜索匹配的文本
for d in img_da.sample(10):
    print(da.find(d.embedding, limit=1)[0].text)

这个例子展示了如何通过输入图像来搜索最匹配的文本描述。

性能与扩展性

CLIP-as-service在设计上注重性能和可扩展性:

  1. 支持TensorRT、ONNX等高性能推理引擎,单GPU可达800QPS。

  2. 采用非阻塞双工流式处理,可以高效处理大规模数据。

  3. 支持在单GPU上水平扩展多个CLIP模型,自动负载均衡。

  4. 客户端支持异步接口,易于集成到其他异步系统中。

  5. 支持批处理和预取,可以根据实际需求调整参数以获得最佳性能。

总结

CLIP-as-service为构建跨模态AI应用提供了强大而灵活的工具。它将CLIP模型的强大能力封装成易用的服务,使开发者可以专注于应用逻辑,而不必关心底层细节。无论是构建智能搜索引擎、内容推荐系统,还是视觉问答系统,CLIP-as-service都能提供关键的支持。

随着多模态AI技术的不断发展,CLIP-as-service也在持续优化和扩展其功能。未来,它有望在更多领域发挥重要作用,推动AI应用的创新与落地。

最新项目

Project Cover
豆包MarsCode
豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。
Project Cover
AI写歌
Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。
Project Cover
商汤小浣熊
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。
Project Cover
有言AI
有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。
Project Cover
Kimi
Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。
Project Cover
吐司
探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。
Project Cover
SubCat字幕猫
SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。
Project Cover
AIWritePaper论文写作
AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。
Project Cover
稿定AI
稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。
投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号