Soup's Blog

Back

Vision-Language Models(VLM)学习(一)原理Blur image

视觉大模型(VLM)是多模态人工智能模型,能够同时处理和理解图像和文本数据。与传统的单模态模型(如仅处理图像的卷积神经网络或仅处理文本的语言模型)相比,VLM通过学习视觉和语言之间的关联,能够处理更复杂的任务。例如,VLM可以根据图像生成描述性文本(图像描述),回答基于图像的问题(视觉问答),甚至根据文本生成图像(多模态生成)。

VLM的出现得益于大规模预训练技术的发展。研究人员利用网络上几乎无限的图像-文本对数据(如网页抓取数据)进行预训练,使VLM能够在零样本(Zero-Shot)场景下完成多种视觉识别任务,而无需针对每个任务进行专门的训练。这种能力显著降低了模型开发的时间和成本。

为什么VLM重要? VLM的重要性体现在以下几个方面:

  1. 多模态任务处理:VLM能够同时处理视觉和语言信息,适用于需要跨模态理解的任务,如图像描述、视觉问答和多模态推理。
  2. 广泛的应用场景:VLM在医疗诊断(如分析医学影像并生成报告)、教育(生成交互式学习内容)、娱乐(生成创意图像或视频)和机器人(理解环境并执行语言指令)等领域具有巨大潜力。
  3. 零样本学习能力:通过大规模预训练,VLM可以在未见过的数据上表现出色,减少了对标注数据的需求。

例如,CLIP(2021年由OpenAI发布)通过学习图像-文本对,展示了强大的零样本图像分类能力,超越了许多专门训练的视觉模型。这种能力为后续VLM的发展奠定了基础。

结合下面的介绍一下VLM模型的原理: 在这里插入图片描述 核心思想:将图片使用Visual encoder(一般都是Vision Transformer)进行编码,然后与文本的编码特征进行拼接,再送到大模型里面进行预测后面的内容。

对于Text,跟大模型的操作一样,首先经过tokenizer生成token IDs,注意token IDs的长度为196+9,这个196是占位符,用于后续替换成Imagefeature,这个例子中文本被编码的长度是9。然后对token IDs做线性层映射,目的是映射到与LLM的输入维度dim一样长。

对于Image,首先将一张图片分成块(例如16*16),然后展开成一列196维,每一个维度都映射到长度为768的空间,就变成了(196, 768)的向量,然后与文本的编码特征向量进行concat操作(注意,这里不是赋值替换占位符,需要保留反向传播梯度图的可导性采用concat),这样就组成了大模型的输入特征,然后进行预测后面的位置的概率分布(也就是答案)。

对于LLM来说,他只认识来自Text的编码特征,因为这是之前预训练过的,并不认识来自Image的编码特征。所以这个流程可以理解为,Image编码特征是来辅助Text编码特征进行预测的,在训练阶段,模型就会结合这些特征做预测,在这个过程中去理解图像和问题。需要注意的是,输入的数据包括(图像、问题和答案),在计算损失的时候,Image部分是不需要进行计算Loss的,只对文本计算Loss

训练过程中,一般来说,视觉大模型(Visual encoder)是已经预训练过的,以及大语言模型LLM也是预训练过的,所以在某些阶段是可以冻结的。主要训练的是project层,这个层给人的感受就是,将Image Embedding映射成Text Embedding

Vision-Language Models(VLM)学习(一)原理
http://www.soupcola.top/blog/vlm_blogs/vlm_blog-1
Author Soup Cola
Published at 2026年1月31日