前言
(Frankly speaking,博主太懒了)章节一只对CLIP、BLIP、BLIP2、InstructBLIP进行了整理,章节二以CLIP、VisualGLM作为实践案例。
实际上多模态模型除了CLIP、BLIP、BLIP2、InstructBLIP,还有LLaVA、miniGPT4,以及国内清华的VisualGLM、阿里的Qwen-VL等。(更多多模态原理可以看文末的参考说明)
一、多模态模型 & 理论
1. CLIP
图1. CLIP结构
paper: https://arxiv.org/abs/2103.00020
github: https://github.com/openai/CLIP
基本思想:CLIP通过大规模的图像和文本对进行对比学习,学习在特征空间中对齐文本和图像,从而理解图像内容和文本描述之间的关联。
模型结构:
- 图像编码器:通常使用Vision Transformer (ViT) 或者其他卷积神经网络 (CNN) 如ResNet作为backbone。
- 文本编码器:通常采用BERT或类似基于Transformer的模型。
- 特征提取后,图像和文本特征通过归一化处理,然后通过点积计算余弦相似度,使用对比损失(InfoNCE loss)进行训练。
2. BLIP
图2. BLIP结构
paper: https://arxiv.org/abs/2201.12086
github: https://github.com/salesforce/BLIP
基本思想:BLIP旨在通过自举方法来提升模型在视觉-语言理解和生成任务上的性能。BLIP还可以通过生成合成图像描述并使用过滤器去除噪声描述,有效地利用了网络上收集的噪声图像-文本对。
模型结构: BLIP模型采用了多模态混合编码器-解码器(Multimodal Mixture of Encoder-Decoder, MED)架构,该架构可以作为单模态编码器、图像引导的文本编码器或图像引导的文本解码器来操作。MED模型通过三种视觉-语言目标进行联合预训练:图像-文本对比学习(image-text contrastive learning)、图像-文本匹配(image-text matching)和图像条件语言建模(image-conditioned language modeling)。
- 图像编码器:使用视觉Transformer(如ViT)作为图像编码器,将输入图像分割成多个小块(patches),并将其编码为一系列嵌入向量,同时使用额外的[CLS]标记来表示整个图像的特征。