长久以来,高分辨率图像处理一直是视觉-语言模型(VLM)领域难以攻克的瓶颈。传统的 VLM 往往被迫将高分辨率图像粗暴地缩放到较低分辨率(如 ),导致模型丢失关键的细节信息,极大限制了其在精细场景理解和细粒度识别方面的能力。
这种分辨率的妥协,使得 AI 无法真正“看清”世界。
今天,我们将深入探讨 BLIP-3(也被称为 xGen-MM)的核心突破:Any-Resolution Vision Token Sampling。
这项创新技术彻底打破了分辨率的限制,它不再依赖单一的低分辨率输入,而是通过一套精巧的机制,实现了对任意分辨率图像的深度、高效理解。
本文将详细揭示 BLIP-3 如何通过图像分块编码构造出丰富的高分辨率视觉信息,以及如何巧妙地利用可扩展的 Perceiver Resampler 将这些海量的视觉 Token 压缩并输入到大型语言模型(LLM)中,从而在保证效率的同时,让 BLIP-3成为多模态开源领域的sota方法。下面准备好探索这项让多模态 AI 迈向新高度的关键技术吧。
一、BLIP-3核心架构组成部分
BLIP-3(也被称为xGen-MM)是一个用于开发大型多模态模型(LMMs)的开放框架。它的架构设计旨在简化并优化视觉和语言信息的融合,特别是为了高效处理高分辨率图像。
BLIP-3 的核心组成部分主要分为以下三个模块:
视觉编码器
- 作用:负责从输入图像中提取高维度的视觉特征。
- 具体实现:通常采用强大的[Vision Transformer (ViT)]模型家族(例如 ViT-G 或 EVA-CLIP 等变体)作为骨干网络。
- 关键创新点:视觉编码器与Any-Resolution Vision Token Sampling策略协同工作,通过以下方式保留图像细节:
- 分块编码 (Patch-wise Encoding):将高分辨率图像分割成多个小块(patches)并分别编码。
- 全局信息融合:同时编码一个缩小版的原始图像以提供全局上下文。
- 输出:产生数量庞大的视觉 Token 序列(包含局部细节和全局信息)。
视觉 Token 采样器
- 作用:作为视觉信息和语言模型之间的高效连接器,将视觉编码器产生的大量 Token 压缩成固定且可管理的长度。
- 具体实现:采用可扩展的 [Perceiver Resampler](感知器重采样器)。
- 关键创新点:
- 取代 Q-Former:它取代了 BLIP-2 中使用的 Q-Former,通过更简洁的纯交叉注意力机制实现高效的 Token 采样和降维。
- 信息瓶颈:将数千个高分辨率视觉 Token 压缩成固定数量的精炼 Token(例如 个或 个),从而使大型语言模型能够高效处理。
大型语言模型
- 作用:负责处理多模态输入(压缩后的视觉 Token 和文本 Token),进行自回归生成和推理。
- 具体实现:常常使用现有的高性能预训练 LLM,例如Phi-3 系列模型。
- 融合机制:压缩后的固定数量的视觉 Token 会被拼接 (Concatenate) 到文本 Token 序列的开头,作为 LLM 的输入。LLM 然后通过自注意力机制学习视觉信息与文本信息的对齐和融合。
- 训练目标:简化为仅对文本 Token 应用自回归损失 (Auto-Regressive Loss),使得模型学习在多模态上下文中的文本生成能力。
BLIP-3 的这种模块化和简化的架构,特别是引入 Any-Resolution Vision Token Sampling 和可扩展的 Perceiver Resampler,使其在处理复杂的多模态任务时,同时实现了对高分辨率图像的深度理解和对模型的高效率。
二、Perceiver Resampler
[Perceiver Resampler] 的主要作用是接收视觉编码器输出的大量视觉 Token,并将其“重采样”(即压缩/降维)成一个固定、简短的序列,从而使这些视觉信息可以高效地输入到大型语言模型(LLM)中进行处理。
核心功能:
高效降维输入(长序列): 来自[视觉编码器](如 ViT)的、数量庞大的视觉特征序列。在 BLIP-3 中,由于采用了 Any-Resolution 策略(分块编码),这个输入序列通常包含数千个 Token,信息丰富但长度过长 。
输出(短序列): 一组固定数量且高度精炼的输出 Token(例如 或 个)。这个短序列携带了输入图像中最关键、最有用的语义信息。
目的: 将视觉 Token 序列的长度大幅缩短,以适应 LLM 对输入序列长度的限制,同时最大程度地保留视觉语义。
技术机制
Cross Attention
Cross Attention 是一种特殊的[注意力机制],它在 Transformer 架构中尤其常见,特别是在 Decoder 部分。它的核心思想是让来自 一个序列 (作为 Query, ) 的信息去“查询”和“关注”来自 另一个序列 (作为 Key, 和 Value, ) 的信息。
为什么需要 Cross Attention?
Cross Attention 的主要目的是在两个 不同的信息流 之间建立 联系 和 信息传递:
- 在经典的 Transformer 中 : 它允许 Decoder 在生成目标语言的每个词时,能够回顾和聚焦于 Encoder 输出 中最重要的、与当前生成词汇相关的 源语言信息。这是实现序列到序列 (Seq2Seq) 任务的关键。
- 在 Perceiver Resampler 等模型中: 是一个固定的、可学习的 Latent Array (潜在表示),而 是原始的、可能 非常大 的输入数据。Cross Attention 使得这个小的 Latent Array 能够从巨大的输入中 提取 出所有必要的信息,从而实现 计算复杂度的解耦
简而言之,Cross Attention 在这里起到了一个高效的 信息瓶颈/压缩器 的作用,使得模型能够处理超大的输入,同时保持可管理的计算成本和深度。
Perceiver Resampler的机制
Perceiver Resampler 的本质功能:
把任意数量、任意排列的视觉 token(patch token、region token、pixel token、缩略图 token 等)压缩为固定长度的 latent tokens,再交给 LLM。
无论输入多少 token(比如高分辨率图像可能产生几千甚至几万 ViT patch tokens)—— LLM 都只看到固定长度,如 128 个 latent tokens。
这解决了多模态模型两个大麻烦:
- 视觉 patch 数量随着分辨率线性增加 → LLM 输入会爆炸
- 不同图像分辨率产生不同数量 patch → LLM 的序列长度不统一
实现伪代码
理解方便打个比喻
一个有 M 个记者(M 个 query)的新闻摘要小组。无论你要总结一篇文章(1 张图)还是一整套百科全书(长视频),你都只派这 M 个记者去阅读所有材料。他们反复来回跑(多层 cross-attention),互相讨论(self-attention),最后每个人写好一篇高度浓缩的摘要(最终的 M 个 token)。这 M 篇摘要交给大语言模型看,LLM 就知道整个视频讲了什么。
四、Any-Resolution Vision Token Sampling
如何高效处理任意分辨率图像输入已成为提升模型通用性和计算效率的关键挑战。传统视觉-语言模型(如 CLIP 或早期 BLIP 系列)通常局限于固定分辨率(如 224×224 或 384×384)的图像编码,这在面对高分辨率图像(如文档扫描件、4K 照片)或多图像交织输入时,往往导致视觉 token 序列过长、计算开销激增,甚至丢失细粒度细节。
BLIP-3(也称 xGen-MM)作为 Salesforce xGen 系列的最新开源框架,通过引入“Any-Resolution Vision Token Sampling”策略,巧妙解决了这一痛点。
该策略的核心在于动态高分辨率图像编码机制,利用 Perceiver Resampler(受 Flamingo 模型启发)对视觉嵌入进行高效下采样,将 token 序列长度压缩 5 倍以上,同时保留全局与局部信息,实现无缝支持从低分辨率到超高分辨率的任意输入。
对任意分辨率图像的高效处理:
- Patch-wise 编码
- 原始图像被切分成多个 patch,每个 patch 单独经过 ViT 编码。
- 这样可以保留局部高分辨率信息。
- 全局信息融合
- 除了 patch,还会用一个 downsized 原图 提供全局语义信息(类似图像的“摘要”)。
- Perceiver Resampler 下采样
- 对每个 patch 的 embedding(包括 downsized image embedding)独立下采样。
- 输出固定数量的 vision tokens(长度可控),大大降低了 LLM 的输入序列长度。
- 典型下采样比例可达到 5 倍以上(取决于 query token 数量)。
- 缩略图 token + patch token → 统一输入 Perceiver Resampler。
- 输入顺序:缩略图 token 在前 → patch token 按空间顺序排列。
- Perceiver Resampler 输出固定长度 token 供 LLM 使用。
处理步骤
step1: 找到最优分辨率
原则: 最大化有效像素 最小化黑边浪费在所有候选分辨率中,选能放下最大(保持原图比例)的图像的那个; 如果有多个都能放下同样大的图像,就选其中加黑边最少的那个。 下面把代码里的步骤和判断用数学式子和一句话总结清楚。 设原图大小为 ( ),候选分辨率之一为 ( )。对每个候选分辨率计算:
- 缩放比例(保持宽高比):
- 缩放后图像的整数像素尺寸(向下取整):
- 实际保留下来的原始像素数(不含 padding,且不超过原图总像素):
- 在候选帧 ( ) 中被黑边浪费的像素数:
最终的“最优分辨率”按下面的准则选取:
也就是说先最大化保留的原始像素数 (E),若多个候选 (E) 相同,则选取浪费像素 ® 最小 的那个。
step2: 动态切分patch
1 张全局图 + N 张(至多 12 patches)高分辨率局部图 的 AnyRes 实现
step3: 计算每个patch的image embedding
一个384x384的图片经过ViT-SO400M-16-SigLIP-384后得到576个token
step4: 分别提取每个patch的vision token再拼接
每个patch独立给perceiver resampler处理,处理完再拼接
图像处理伪代码
# 1. 先用 select_best_resolution 选出最优目标尺寸best_resolution = select_best_resolution(image.size, possible_resolutions)# 例如原始图 1408×1058 → 选出 (768, 768)# 2. 把原图等比缩放 + 中心填充黑边到这个尺寸image_padded = resize_and_pad_image(image, best_resolution)# 3. 再按 base_size 切成若干小图块patches = divide_to_patches(image_padded, base_size)# 4. 额外再加一张全局的缩略图image_original_resize = image.resize((base_size, base_size))# 5. 所有图块 + 全局图 一起过 image_processor(CLIP ViT-L/16@384px)image_patches = [image_original_resize] + patchesimage_patches = [processor(p) for p in image_patches]如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。