CLIP模型在Roboflow推理服务器上的应用

CLIP模型能够用于零样本分类、语义图像搜索等多种场景。在Roboflow推理服务器上,可以通过三种方式利用CLIP模型:

图像嵌入(embed_image):用于计算图像嵌入。嵌入图像的过程类似于将图像信息压缩到更易于管理的大小。当嵌入一张图像时,输入的是包含数万个像素的图像,并将其精炼到仅有几百个数字的嵌入向量。这些嵌入向量对人类眼睛特别有意义,但与其他嵌入向量相比,它们可以证明非常有用。

# 定义请求负载 infer_clip_payload = { "image": { "type": "url", "value": "https://i.imgur.com/Q6lDy8B.jpg", }, } # 定义推理服务器URL(localhost:9001, infer.roboflow.com等) base_url = "https://infer.roboflow.com" # 定义Roboflow API密钥 api_key = <YOUR API KEY HERE> res = requests.post( f"{base_url}/clip/embed_image?api_key={api_key}", json=infer_clip_payload, ) embeddings = res.json()['embeddings'] print(embeddings)

可以一次请求嵌入多张图像:

# 定义请求负载 infer_clip_payload = { "image": [ { "type": "url", "value": "https://i.imgur.com/Q6lDy8B.jpg", }, { "type": "url", "value": "https://i.imgur.com/Q6lDy8B.jpg", } ] } res = requests.post( f"{base_url}/clip/embed_image?api_key={api_key}", json=infer_clip_payload, )

文本嵌入(embed_text):CLIP模型可以像处理图像一样为文本生成嵌入。

# 定义请求负载 infer_clip_payload = { "text": "the quick brown fox jumped over the lazy dog", } res = requests.post( f"{base_url}/clip/embed_text?api_key={api_key}", json=infer_clip_payload, ) embeddings = res.json()['embeddings'] print(embeddings)

可以将多个文本块批量到一个请求中:

# 定义请求负载 infer_clip_payload = { "text": [ "the quick brown fox jumped over the lazy dog", "how vexingly quick daft zebras jump" ] } res = requests.post( f"{base_url}/clip/embed_text?api_key={api_key}", json=infer_clip_payload, )

比较(compare):CLIP模型的真正价值在于嵌入的比较。比较是使用余弦相似度计算两个嵌入之间的数学距离。这个距离可以被认为是一个相似度分数。如果两个嵌入的余弦相似度接近1,则它们是相似的。

执行比较时,需要定义一个提示和一个或多个主题。由于可以比较任何组合的文本或图像,还必须定义提示类型和主题类型。

# 定义请求负载 infer_clip_payload = { "prompt": { "type": "url", "value": "https://i.imgur.com/Q6lDy8B.jpg", }, "prompt_type": "image", "subject": "A very cute raccoon", "subject_type": "text", } res = requests.post( f"{base_url}/clip/compare?api_key={api_key}", json=infer_clip_payload, ) similarity = res.json()['similarity'] print(similarity) infer_clip_payload = { "subject": { "type": "url", "value": "https://i.imgur.com/Q6lDy8B.jpg", }, "subject_type": "image", "prompt": [ "A very cute raccoon", "A large dog", "A black cat", ], "prompt_type": "text", }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485