ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

走进 VLM(三):CLIP 如何连接视觉与语言?从图文对齐到多模态理解

走进 VLM(三):CLIP 如何连接视觉与语言?从图文对齐到多模态理解 专栏走进 VLM——从视觉语言模型到多模态 Agent 的技术实战本文是专栏第 3 篇共 20 篇。关键词CLIP、Contrastive Learning、Image Encoder、Text Encoder、Embedding、Vision-Language Alignment、多模态学习一、为什么 VLM 需要 CLIP在前两篇中我们已经了解传统计算机视觉Image ↓ CNN / ViT ↓ 分类结果只能回答“图片是什么”例如输入 一张猫的图片 输出 Cat但是 VLM 想实现Image Question ↓ VLM ↓ Answer例如输入图片中为什么有人撑伞输出因为天空可能正在下雨人们使用雨伞遮挡雨水。这里出现了一个核心问题图片和语言本来属于两个完全不同的世界图片像素 ↓ 视觉特征文字Token ↓ 语言特征二者没有天然联系。那么如何让机器知道图片中的狗 ≈ 文字“一只狗”这就是 CLIP 要解决的问题。二、CLIP 是什么CLIPContrastive Language–Image Pre-training中文对比语言-图像预训练由 OpenAI 在 2021 年提出。它提出了一个非常重要的思想不要只训练模型识别图片而是让图片和文字进入同一个语义空间。简单理解传统模型Image ↓ Classifier ↓ DogCLIPImage ↓ Image Encoder ↓ Image Vector Text ↓ Text Encoder ↓ Text Vector ↓ 比较两个 Vector 是否接近三、CLIP 的整体结构CLIP 是一个双塔结构Image ↓ ┌────────────────┐ │ Image Encoder │ │ ViT / CNN │ └────────────────┘ ↓ Image Embedding ↑ Similarity ↓ ┌────────────────┐ │ Text Encoder │ │ Transformer │ └────────────────┘ ↑ Text两个 Encoder1. Image Encoder负责看懂图片。例如输入猫图片输出[0.21,0.53,0.77,...]2. Text Encoder负责理解文字。例如输入一只猫输出[0.20,0.51,0.75,...]然后计算两个向量的相似程度。四、什么叫 Embedding理解 CLIP 必须理解 Embedding。计算机不能直接理解猫也不能直接理解一张猫图片所以需要转换成数字。例如文字猫转换[0.23, 0.51, 0.89, 0.12]图片猫图片转换[0.22, 0.52, 0.87, 0.13]可以发现二者非常接近。这就是Embedding Space向量空间五、CLIP 最核心的思想对比学习CLIP 的关键Contrastive Learning对比学习训练数据大量图片 文本描述例如数据Image: 一只狗在草地上 Text: A dog running on grass训练目标让正确匹配Image Dog ↓ Text Dog距离变近。错误匹配Image Dog ↓ Text Car距离变远。六、CLIP 的训练过程假设一个 Batch包含 4 张图片Image1 Image2 Image3 Image4对应Text1 Text2 Text3 Text4经过 Encoder图片I1 I2 I3 I4文字T1 T2 T3 T4计算相似度矩阵T1 T2 T3 T4 I1 0.9 0.1 0.2 0.3 I2 0.2 0.8 0.1 0.4 I3 0.3 0.2 0.9 0.1 I4 0.1 0.3 0.2 0.8目标让I1-T1 I2-T2 I3-T3 I4-T4最大。七、数学原理Cosine SimilarityCLIP 常用余弦相似度。公式[similarity \frac{A \cdot B}{||A||||B||}]简单理解两个向量方向越接近相似度越高。例如猫图片: [1,0.9] 猫文字: [1,0.8] 方向接近 ↓ 高相似度汽车[0.1,0.2] ↓ 距离远八、为什么 CLIP 如此重要因为它第一次大规模解决了视觉世界和语言世界的连接。之前CV图片 → 标签NLP文字 → 语义CLIP图片 ↓ 视觉语义空间 ↑ 文字这一步直接推动图像搜索文生图VLM多模态 Agent的发展。九、CLIP 如何影响现代 VLM现在主流 VLM例如LLaVABLIPQwen-VLMiniGPT-4GPT-4V很多都继承了 CLIP 的思想。典型结构Image ↓ Vision Encoder (CLIP ViT) ↓ Visual Feature ↓ Projector ↓ LLM ↓ Answer区别CLIPImage ↓ Embedding ↓ SimilarityVLMImage ↓ Embedding ↓ LLM ↓ Generate Text也就是说CLIP 解决图片和文字如何对齐。VLM 进一步解决图片和文字如何进行复杂推理。十、代码实践使用 CLIP 做图片搜索下面实现一个简单功能输入一张图片。让模型判断它更接近哪个文本。安装pip install transformers torch pillow代码import torch from PIL import Image from transformers import ( CLIPProcessor, CLIPModel ) model_name openai/clip-vit-base-patch32 model CLIPModel.from_pretrained( model_name ) processor CLIPProcessor.from_pretrained( model_name ) image Image.open( test.jpg ) texts [ a dog, a cat, a car, a person ] inputs processor( texttexts, imagesimage, return_tensorspt, paddingTrue ) with torch.no_grad(): outputs model(**inputs) scores outputs.logits_per_image probabilities scores.softmax( dim1 ) for text, score in zip( texts, probabilities[0] ): print( text, float(score) )输出例如a dog 0.91 a cat 0.05 a car 0.02 a person 0.02说明模型认为图片≈ dog十一、代码实践提取图片 EmbeddingCLIP 最重要的能力生成视觉向量。代码import torch from PIL import Image from transformers import ( CLIPProcessor, CLIPModel ) model CLIPModel.from_pretrained( openai/clip-vit-base-patch32 ) processor CLIPProcessor.from_pretrained( openai/clip-vit-base-patch32 ) image Image.open( test.jpg ) inputs processor( imagesimage, return_tensorspt ) with torch.no_grad(): embedding model.get_image_features( **inputs ) print( embedding.shape )输出torch.Size([1,512])这个 512 维向量可以用于图片搜索图片聚类多模态 RAG相似图片推荐十二、CLIP 与 RAG 的关系为什么后面讲 Multimodal RAG 必须先理解 CLIP因为传统 RAGText ↓ Embedding ↓ Vector Database只能搜索文字。但是图片怎么办例如用户找出所有类似这张图的文档。传统 Embedding无法处理。CLIP可以Image ↓ Image Embedding ↓ Vector Database ↓ Similarity Search于是图片也可以进入知识库。这就是Multimodal Retrieval。十三、CLIP 的局限虽然 CLIP 非常强但是它不是完整 VLM。原因1. 只能判断相似例如图片一个人在拿刀切苹果CLIP 可以知道≈ cooking但是无法回答为什么这个人这样做2. 缺少生成能力CLIPImage ↓ Vector不能Image ↓ 详细描述3. 推理能力有限复杂问题例如图片中的人下一步可能做什么需要LLM。所以CLIP LLM才产生真正意义上的VLM。十四、从 CLIP 到 VLM 的关键一步核心变化CLIPImage Encoder Text Encoder ↓ SimilarityVLMImage Encoder ↓ Visual Token ↓ LLM ↓ Reasoning ↓ Answer也就是说CLIP 负责建立视觉和语言之间的桥。LLM 负责利用这座桥进行推理。十五、总结这一篇我们理解了1. CLIP 是什么一句话CLIP 是让图片和文字进入同一个语义空间的模型。2. CLIP 的核心结构Image ↓ Image Encoder Text ↓ Text Encoder ↓ Contrastive Learning ↓ Alignment3. 为什么 CLIP 对 VLM 重要因为没有 CLIP图片世界 × 语言世界有了 CLIP图片世界 ≈ 语言世界4. VLM 的核心演进CNN ↓ ViT ↓ CLIP ↓ Vision Encoder ↓ VLM ↓ Multimodal Agent下一篇《走进 VLM四拆开一个 VLM——Vision Encoder Projector LLM 到底如何协同工作》下一篇我们会真正打开 VLM 的内部结构为什么需要 Projector视觉 Token 如何进入 LLMLLaVA 的架构为什么简单却强大一个完整 VLM 的数据流到底是什么
返回列表