CLIP 与 SigLIP 文本图像对其算法学习理解

本文介绍了CLIP和SigLIP两种文本图像配对算法的区别。CLIP通过图文对进行多分类softmax计算,而SigLIP则采用二分类sigmoid策略。此外,文章还提供了计算损失的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:
https://github.com/openai/CLIP

简单理解两者区别

CLIP:batch内的图文对做多分类softmax;比如下图第一行表示第一个文本与batch内哪个图片匹配(多分类);除了行还计算列,比如第一列表示第一个图片与batch内哪个文本匹配

SigLIP:batch内的图文对做二分类sigmod;比如下图第一行表示 第一个文本分别与batch内每个图片做二分类
在这里插入图片描述

计算损失-代码实现

CLIP
在这里插入图片描述

SigLIP
在这里插入图片描述

2*np.eye(n) - np.ones(n) 构建了label的矩阵,-1或者1的二分类;例如下列n=3
在这里插入图片描述

### SIGLIP RAG 技术概述 SIGLIP是一种专注于跨模态理解的技术框架,其核心目标在于提高图像文本之间的关联性和匹配度。它通过构建一种高效的视觉-语言嵌入空间来解决传统方法中存在的语义鸿沟问题[^3]。具体而言,SIGLIP的设计初衷是为了克服现有模型在处理复杂场景下的局限性,尤其是在涉及多模态输入的情况下。 当SIGLIP被集成到RAG(Retrieval-Augmented Generation)架构中时,可以显著提升系统的性能表现。这种组合不仅能够利用外部知识库中的结构化信息,还能够在面对复杂的多模态查询时提供更加精准的结果。例如,在处理带有图片说明的任务时,SIGLIP可以帮助识别并提取图片中的关键特征,并将其映射至相应的自然语言描述上[^4]。 以下是基于SIGLIP的RAG实现的一个简化版本: ```python import torch from transformers import RagTokenizer, RagTokenForGeneration, SiglipProcessor class SiglipRagModel: def __init__(self): self.tokenizer = RagTokenizer.from_pretrained("facebook/rag-token-base") self.model = RagTokenForGeneration.from_pretrained("facebook/rag-token-base") self.siglip_processor = SiglipProcessor.from_pretrained("google/siglip-base-patch16-224") def encode_image(self, image_path): """加载并预处理图片""" from PIL import Image image = Image.open(image_path).convert('RGB') inputs = self.siglip_processor(images=image, return_tensors="pt", padding=True) with torch.no_grad(): outputs = self.siglip_processor.get_text_features(**inputs) return outputs.pooler_output.numpy() def generate_response(self, question, context_embeddings=None): """生成最终的回答""" input_ids = self.tokenizer(question, truncation=True, max_length=128, return_tensors='pt')['input_ids'] if context_embeddings is not None: # 将上下文向量传递给模型作为额外条件 model_inputs = { 'context_input_ids': ..., 'retrieved_doc_embeds': context_embeddings, 'question_hidden_states': ... } else: model_inputs = {'input_ids': input_ids} generated_answer = self.model.generate(**model_inputs) decoded_answer = self.tokenizer.decode(generated_answer[0], skip_special_tokens=True) return decoded_answer ``` 上述代码展示了如何将SIGLIP标准RAG模型结合起来的工作流程。首先定义了一个`SiglipRagModel`类用于封装必要的组件;其次提供了两个主要功能——一个是负责编码输入图像的数据流管道(`encode_image`),另一个则用来根据提问以及可选的情境表示生成答案(`generate_response`)。 #### 多模态数据支持的重要性 随着AI领域的发展趋势表明,未来的应用程序越来越依赖于多种感官形式的数据交互方式。因此,像SIGLIP这样的工具对于推动下一代智能系统至关重要,因为它允许机器更好地理解和回应人类世界的多样性需求[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

loong_XL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值