微信扫码
与创始人交个朋友
我要投稿
技术总结专栏
本文将对热门的SORA的视频生成中使用到的模型Clip进行原理介绍。
CLIP(Contrastive Language-Image Pre-training)。它是多模态领域的经典之作,后续也作为基础模型,被广泛用在DALLE2,Stable Diffusion等重要文生图大模型中,是多模态领域的一个神器。
论文地址:https://arxiv.org/pdf/2103.00020.pdf
项目地址:https://github.com/openai/CLIP
核心思想
CLIP的整体训练过程及标签数据格式如上,可以分为三个阶段:
从训练集中随机取出一张图片和标签文本,然后分别使用编码器进行编码。编码器的主体模型结构是相同的,但是在前期处理中,image encoder多增加了一步patch embedding(后文进一步介绍)。
Text Encoder和Image Encoder输出的embedding向量,然后用基于余弦相似度(cosine similarity)损失来比较两个embedding向量的相似性,以判断随机抽取的标签文本和图片是否匹配。
将计算得到的损失进行梯度反向传播,不断优化训练。
完成CLIP的训练后,输入配对的图片和标签文本,则Text Encoder和Image Encoder可以输出相似的embedding向量,如果是计算余弦相似度就可以得到接近1的结果。同时对于不匹配的图片和标签文本,输出的embedding向量计算余弦相似度则会接近0。在实际应用时,就是获取Text Encoder和Image Encoder的输出向量,作为跨模态领域的沟通桥梁。
CLIP损失函数
上图为CLIP模型的前向训练的过程,需要将N个标签文本和N个图片的两两组合预测出N对可能的文本-图片对的余弦相似性,即上图所示的矩阵。这里共有N个正样本,即真正匹配的文本和图片(矩阵中的对角线元素),而剩余文本-图片对为负样本,这时CLIP模型的训练目标就是最大N个正样本的余弦相似性(每个格子上对应的向量点积),同时最小化负样本的余弦相似性。
完成CLIP的训练后,输入配对的图片和标签文本,则Text Encoder和Image Encoder可以输出相似的embedding向量,计算余弦相似度就可以得到接近1的结果。同时对于不匹配的图片和标签文本,输出的embedding向量计算余弦相似度则会接近0。以下为代码实现:
# cosine similarity as logits
logit_scale = self.logit_scale.exp()
logits_per_text = torch.matmul(text_embeds, image_embeds.t()) * logit_scale
logits_per_image = logits_per_text.t()
loss = None
if return_loss:
loss = clip_loss(logits_per_text)
if not return_dict:
output = (logits_per_image, logits_per_text, text_embeds, image_embeds, text_outputs, vision_outputs)
return ((loss,) + output) if loss is not None else output
总结
CLIP模型具有非常大的优点,包括:
多模态学习:CLIP模型能够同时处理文本和图像数据,从而在多种任务上展现出强大的性能。
零样本学习能力:CLIP模型通过对大规模数据进行预训练,具备了良好的零样本学习能力,可以在见过的类别之外泛化和识别新的类别。
语义理解:CLIP模型通过学习文本和图像之间的语义联系,能够实现对图像内容的更深层次理解,这使得它在一些文本提示下执行图像任务时表现出色。
但是,它也具有一些不足之处:
计算资源需求:CLIP模型由于其庞大的规模和复杂性,需要大量的计算资源和存储空间来进行训练和部署,这增加了使用该模型的成本。
数据依赖性:尽管CLIP模型在许多情况下表现出色,但其性能仍然高度依赖于预训练数据的质量和多样性,对于某些特定领域或语言的应用可能泛化能力较差。
对抗攻击:与许多深度学习模型一样,CLIP模型也容易受到对抗性攻击,即针对输入进行微小修改以欺骗模型,这可能会导致错误的预测或行为不稳定。
CLIP模型表现的还是十分强大,作为SORA、STABLE DIFFUSION等模型的基础,赶紧学起来~
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-05-14
2024-04-26
2024-03-30
2024-04-12
2024-05-10
2024-07-18
2024-05-22
2024-05-28
2024-04-25
2024-04-26
2024-11-15
2024-11-14
2024-11-13
2024-11-13
2024-11-13
2024-11-12
2024-11-11
2024-11-08