视觉+语言的多模态大模型目前主流方法是:借助预训练好的大语言模型和图像编码器,用一个图文特征对齐模块来连接,从而让语言模型理解图像特征并进行更深层的问答推理。
这样可以利用已有的大量单模态训练数据训练得到的单模态模型,减少对于高质量图文对数据的依赖,并通过特征对齐、指令微调等方式打通两个模态的表征。
主要的几个方法梳理如下:
CLIP
(Contrastive Language-Image Pre-training)
基本思想:CLIP的基本算法原理是文本和图像在特征域进行对齐。
模型结构:
为了对image和text建立联系,首先分别对image和text进行特征提取,image特征提取的backbone可以是resnet系列模型也可以是VIT系列模型;text特征提取目前一般采用bert模型。
特征提取之后,由于做了normalize,直接相乘来计算余弦距离,同一pair对的结果趋近于1,不同pair对的结果趋近于0,因为就可以采用对比损失loss(info-nce-loss)【这里要比较大的batch size才能有效果,类似于维护一个大的特征相似度矩阵】
BLIP
(Bootstraping language image pre-training)
基本思想:
兼顾图文理解和生成的多模态模型(Multimodal mixture of Encoder-Decoder),同时在三个视觉语言目标上联合预训练:图像文本对比学习ITC、图像文本匹配ITM、图像条件语言建模LM;同时提出了一种高效利用网络收集的嘈杂图文对的采样+过滤机制。
bootstraping翻译成“自举”有点别扭,我还是习惯理解为有放回抽样/迭代优化。
BLIP2
基本思想:
如标题所言 Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models,分两个阶段,通过利用预训练好的视觉模型和语言模型来提升多模态效果和降低训练成本。
模型结构:
BLIP-2 由预训练的Image Encoder,预训练的Large Language Model,和一个可学习的 Q-Former
组成。
Image Encoder:从输入图片中提取视觉特征,尝试了两种网络结构,CLIP 训练的 ViT-L/14和EVA-CLIP训练的 ViT-g/14(去掉了最后一层)。
Large Language Model:大语言模型进行文本生成,尝试了接入decoder-based LLM 和 encoder-decoder-based LLM两种结构。
Q-Former:弥补视觉和语言两种模态的modality gap,可以理解为固定图像编码器和固定LLM之间的信息枢纽,选取最有用的视觉特征给LLM来生成文本。
LLaVA(Large Language and Vision Assistant)
基本思想:
使用仅限语言的GPT-4生成多模态语言图像指令跟随数据,提出一种连接视觉编码器和LLM的端到端训练多模态大模型。
模型结构:
使用视觉编码器CLIP ViT-L/14+语言解码器LLaMA构成多模态大模型,然后使用生成的数据进行指令微调。输入图片X经过与训练好的视觉编码器的到图片特征Z,图片特征Z经过一个映射矩阵W转化为视觉Token H,这样Vison Token H_v与Language Token H_q指令就都在同一个特征空间,拼接后一起输入大模型。这里的映射层W也可以替换为更复杂的网络来提升性能,比如Flamingo中用的gated cross-attentio,BLIP-2中用的Q-former。
MiniGPT-4
基本思想:
GPT-4 具有先进的多模态生成能力的主要原因在于利用了更先进的大型语言模型(LLM),因此提出仅用一个投影层将一个冻结的视觉编码器和一个冻结的 LLM(Vicuna
)对齐。
模型结构:
类似BLIP2,包括一个冻结的视觉编码器(ViT-G/14 + Q-Former), 一个冻结的 LLM(Vicuna), 一个投影层。
两阶段训练:
第一阶段在大量对齐的图像文本对上对模型进行预训练,以获取基础的视觉语言知识。 在第二阶段,使用规模较小但更高质量的图文对数据集和精心设计的对话模板对预训练模型进行微调,以增强模型的生成可靠性和可用性。关于loss设计论文没有讲太细,看代码里面应该主要是计算language modeling loss: https://github.com/Vision-CAIR/MiniGPT-4/blob/main/minigpt4/models/mini_gpt4.py#L320
InstructBLIP(Instruction Tuning)
基本思想:
基于 BLIP-2 提出指令微调的范式,借助额外的 instruction 提取更有用的视觉特征。
模型结构:
InstructBLIP 的架构和 BLIP-2 相似,从预训练好的 BLIP-2 模型初始化,由图像编码器、LLM 和 Q-Former 组成。为了进行指令微调,在BLIP-2的基础上把 instruction text tokens也作为输入同时给到Q-former和LLM。其中可学习的K个queries 通过Q-former中共享的 self-attention 和输入指令交互,通过 cross-attention 和输入图片的特征交互,鼓励提取与任务相关的图像特征。
训练:和BLIP-2一致,分两个阶段
第一个vision-language表示学习阶段,将 Q-Former 连接到冻结的图像编码器image encoder,目标是Q-Former学习与文本最相关的视觉表示。
第二个vision-to-language生成学习阶段,将 Q-Former 连接到冻结的大语言模型LLM,将 Q-Former 的输出给到冻结的 LLM 来执行视觉到语言的生成学习,目标是训练Q-Former使其输出的视觉表示对LLM可用。
MME多模态大模型评估体系
链接: A Comprehensive Evaluation Benchmark for Multimodal Large Language Models
基本思路:
针对多模态大模型提出评估基准MME,在14个子任务上评估了目前比较前沿的12个大模型的感知和认知能力。
通用的全面评估基准应具备以下四个特点:
涵盖不同层次的能力,包括感知和认知能力。前者指识别特定对象,如对象的存在、数量、位置和颜色。后者指通过组合LLM中的感知信息和知识推导出更复杂的答案(前者是后者的前提)。
数据或注释应尽可能不来自现有的公开可用数据集,以避免数据泄漏的风险。
指令应尽可能简明扼要,并符合人类的认知。所有模型应在相同统一的指令下进行测试,以进行公平比较,一个优秀的MLLM也应能够推广到这种简明扼要的指令。
MLLM对指令的响应应直观且便于定量分析。
对应的设计:
MME涵盖了感知和认知能力的考察,总共有14个子任务:
感知能力:OCR能力和粗粒度识别、细粒度识别,前者识别对象的存在、数量、位置和颜色,后者识别电影海报、名人、场景、地标和艺术作品。
认知能力:包括常识推理、数值计算、文本翻译和代码推理。
所有的指令-答案对都是人工构建的。对于涉及到的少数公共数据集,也仅使用图像,而不直接依赖于其原始注释。同时,我们努力通过真实照片和图像生成来收集数据。
MME的指令设计简明扼要,以避免对模型输出的影响,基本假设是一个好的MLLM应能够适配简单且常用的指令。
根据MLLM的输出准确&客观,主要是以"是""否"问答,便于进行定量统计。需要注意的是,文中还尝试设计了带有多项选择题的指令,但发现当前的MLLM可能无法遵循复杂的指令。