第一章:视觉语言模型概述

大家好,我是你们这门课的讲师。在正式开始之前,我想先聊聊一个很酷的话题——为什么我们需要让计算机“看”懂图片的同时还能“说”人话?

这就是视觉语言模型(VLM)要解决的核心问题。简单来说,VLM就是给大语言模型装上一双“眼睛”。

1.1 究竟什么是视觉语言模型?

传统的语言模型,比如GPT系列,它们只能处理文字。你给一段文本,它回你一段文本。但现实世界的信息是多元的——一张产品设计图、一段监控视频、一份医疗影像报告,光靠文字描述会丢失大量细节。

VLM的出现打破了这个瓶颈。它能同时理解“图像”和“文本”两种模态的信息,然后完成跨模态的推理任务。

  • 你可以问它:“这张电路板照片里,哪个电容看起来有鼓包?”
  • 或者:“根据这个UI设计图,帮我生成相应的HTML代码。”

说白了,VLM是让AI建立了从“像素”到“语义”的桥梁。

核心概念回顾: VLM = 视觉编码器 + 语言模型 + 跨模态连接器。

视觉编码器负责提取图像特征;语言模型负责理解和生成文本;连接器负责对齐两种特征空间。

1.2 主流模型有哪些?

这个领域发展很快。我2023年初刚接触时,开源社区还在摸索。到现在,已经有几个比较公认的标杆了。我个人习惯把主流模型分成两派来记。

模型派系 代表模型 核心思路 我的评价
LLaVA 系列 LLaVA-1.5, LLaVA-NeXT 用简单的线性层或MLP连接CLIP视觉编码器和LLaMA语言模型 架构清爽,易于上手,社区生态最好
Qwen-VL 系列 Qwen-VL, Qwen-VL-Chat 通义千问的多模态版本,采用更复杂的跨模态注意力机制 中文能力强,OCR和文档理解表现突出
其他重要模型 CogVLM, InternVL 各有独特设计,比如CogVLM引入了视觉专家模块 适合模型架构研究,但集成生态不如前两者

这里我想强调一点。你别看表格里把模型分得清清楚楚,其实底层的设计哲学是相通的。都是把图像转换成特征向量,然后塞进语言模型的输入层。

我的个人经验: 如果你想快速验证一个VLM想法,从LLaVA-1.5的架构开始改,成本最低。我曾经直接拿它的代码库,换掉视觉编码器,两天就跑通了初步实验。

1.3 它们能干什么?——应用场景大盘点

光说不练假把式。我们来看看VLM到底能在哪些地方真正落地。我按我用过的场景优先级排个序。

场景一:图文理解和问答

这是最基础也是最通用的能力。给一张图片,问相关问题。

比如我做过一个项目,需要自动分析工厂产线上的设备仪表读数。以前得用OCR+复杂的规则逻辑。后来直接用Qwen-VL,输入照片,问一句“这个压力表读数是多少?”模型直接给出数值。准确率比我的老方案提高了15%。

场景二:文档和表格理解

这个场景对做办公自动化的人特别有用。VLM不仅能识别文字,还能理解文档的结构布局。发票、合同、报表,它都能处理。

你想想看,一个模型能看懂“这个表格第三行第二列的数据是什么”,这在以前得靠专门的表格解析模型+规则才能做到。

场景三:视觉定位与指代

这个稍微进阶一点。模型能把图像中的某个区域和文字描述对应起来。

比如我对着一张街景图说:“那辆红色的出租车在哪里?”模型能回答:“在红绿灯下面,左侧车道。”或者直接输出一个边界框坐标。

场景四:多轮对话与推理

这考验的是模型对上下文的理解。不是简单地一问一答。

我记得有一次调试,我先给模型看了一张卡车的照片,问它这是什么车。然后我又给了它一张被撞坏的栏杆图,问它“这两张图片有什么关联?”它能推理出:“可能是一辆卡车撞坏了栏杆。” 这种跨图像的连续推理能力,在很多安防和巡检场景里非常实用。

避坑指南: 不要过分相信VLM的“数数”能力。我曾经用它来统计一张图片里有多少个零件,结果模型经常数错。这种精细计数的任务,VLM远不如专门的视觉检测模型。术业有专攻。

1.4 VLM的“大脑”长什么样?

刚才提到了架构。我画一张简图,帮你直观理解VLM的流水线。这是全书的基石,务必吃透。

视觉语言模型(VLM)典型架构流水线 输入图像 视觉编码器 (如 CLIP ViT) 输入文本 文本嵌入层 跨模态连接器 (MLP / Q-Former) 大语言模型 (LLM) (如 Qwen / LLaMA) 输出文本 流程说明:图像和文本各自编码,通过连接器对齐特征,由LLM联合理解并生成输出

简单解释一下这张图:

  1. 图像和文本是分别输入的。图像走视觉分支,文本走语言分支。
  2. 在中间的“跨模态连接器”,两类特征被对齐到同一个语义空间里。
  3. 然后,LLM(语言模型)拿到融合后的特征,开始生成最终的文本回复。

关于连接器,我的经验: 很多初学者会纠结于这部分细节。其实不用。在实践层面,你只要知道连接器负责把图像特征“翻译”成语义特征就行了。在Llama.cpp里集成时,我们主要关注模型的权重文件是否包含了这些连接器层。好的框架会帮你处理好这些。

1.5 为什么选择Llama.cpp来跑VLM?

这个问题其实是我设计这门课的初衷。你可能也听说过,VLM模型通常很大,动辄几十GB。想在普通显卡甚至CPU上跑起来,这在以前是做梦。

但Llama.cpp改变了这一切。它最核心的价值在于:

  • 量化支持: 能把模型从FP16压缩到4-bit甚至2-bit,显存占用降低到原来的1/4甚至1/8。
  • CPU推理: 没有顶级显卡?没关系,纯CPU也能跑,虽然慢一点,但能用。
  • 跨平台: Windows, Linux, macOS, 甚至手机,都能部署。

我个人习惯把Llama.cpp看作是VLM落地的“最后一公里”工具。它能让你的VLM模型从云端跑在本地,从实验室跑在边缘设备上。

嗯,到这里第一章的基础知识铺垫得差不多了。你理解了VLM是什么、长什么样、能干什么,也知道了我们为什么要用Llama.cpp去跑它。接下来,我们会一步步深入到具体的技术细节里去。