多模态大模型看图的第一步,交给一个叫视觉编码器的部件。Kimi 看懂你发的截图、智谱清言分析你上传的资料,背后都是它在把图像翻译成模型能消化的表示。这篇按流程拆开,看它到底做了什么。
先把结论放前面:编码器的水平,很大程度上决定了模型读图的上限。后面环节再强,进来的素材不好也出不来好结果。
图像进模型前的三道处理
顺序是缩放、切块、编码。缩放把任意尺寸的图归一到模型接受的规格;切块把整图切成小方块,比如 224×224 的补丁;编码把每块变成一串向量。进来的是像素,出去的是向量序列,中间发生的一切都为一件事:保留信息的同时压缩数量。
三步各自动了什么手,代价分别落在哪。
| 步骤 | 这一步做什么 | 进来什么、出去什么 | 具体代价 |
|---|---|---|---|
| 缩放 | 把任意尺寸的图归一到模型接受的规格 | 任意尺寸的图 → 统一规格的图 | 可能丢小字 |
| 切块 | 把整图切成小方块,比如 224×224 的补丁 | 整图 → 一块块小补丁 | 可能切断物体 |
| 编码 | 把每块变成一串向量 | 像素块 → 向量序列 | 会抹平一部分色彩细节 |
三步各自的代价不同:缩放可能丢小字,切块可能切断物体,编码会抹平一部分色彩细节。好的实现会在每步之后留校验,发现关键信息丢失就回退重来。
类比:像把一幅大海报剪成拼图块,每块单独拍照存档。
切块切的是信息不是像素
为什么切块而不是整图一次编码?因为图像的信息是局部的:一块里通常是一个物体或纹理的一部分。切块让每个向量负责一小片区域,后续模型再把这些碎片拼回整体理解。切块的粒度是关键参数,块越小细节越足,但向量数量会暴涨。
类比失效处:拼图块的形状固定,切块的方案却因模型而异——方形网格、重叠滑窗各有拥趸,方案不同,保留的信息侧重也不同。
粒度的取舍可以记住一条:文字和表格密集的图,块要切细;风景和人物照片,块可以切粗。前者细节即信息,后者整体感更重要。
编码这一步做了什么
编码器主体是一组层层堆叠的特征提取层:前面的层认出边缘和颜色,中间的层认出纹理和部件,后面的层认出物体和关系。一张图进去,出来的是一串各自携带局部语义的向量。这些向量怎么被语言模型接住,见图像 token 是怎么接进语言模型的。
不少模型不止一个编码器:一个负责缩略图全局概览,一个负责高清局部细节,两路特征拼接后交给下游。全局路告诉你图里大概有什么,局部路把文字、小物件这些细节补齐,配合得好才不会「看个大概」。
分辨率和token数量的账
分辨率翻倍,块数大约翻四倍,计算量跟着涨。所以模型常用两招:一是缩略图全局看一遍,再切高清局部补看;二是动态分辨率,按图的复杂程度决定切多细。这也是为什么同一张长图,有的模型读得好、有的模型糊——账算得细不细,直接决定读图质量。文档类图片的落地例子,可看公式识别与手写识别的实际表现。
长图还有专门策略:先切成多页分别编码,再在序列里标注页与页的关系,漫画、长截图这类内容就靠这套办法保住阅读顺序。token 数超标时,优先压缩背景区域、保住文字区域,是通用经验。
视觉编码流程速查表
- 缩放:统一尺寸,控制算力
- 切块:划分局部,明确分工
- 编码:块变向量,携带语义
末句:三步的目标只有一个——信息保得住,数量压得下。
关于视觉编码器,问得最多的三个
- 切块会把物体切碎吗?:会切到,但后续层会跨块聚合信息,整体理解不依赖单块完整。
- 编码器和人眼像吗?:机制不同,人眼有注意力选择,编码器先无差别接收,再由后续层筛选。
- 同一编码器能换着用吗?:可以,它相对独立,语言模型换版本时编码器常被复用。
下次发图给模型时可以想想:你发的不是一张图,而是几百个向量的接力。编码器把视觉压成序列,理解才刚刚开始。


