跳到主内容
快讯直播
AI智模界
AI 词典

Patch Embedding:ViT 是怎么把图片切成词语的

一句话定义:Patch AI 词典:Embedding">Embedding(图像分块嵌入)就是把一张图片切成固定大小的小方块(patch),再把每个小方块压成一个向量,让 Transformer 能像处理句子里的单词一样处理图像。

它是怎么发生的

以 ViT(Vision Transformer)为例走一遍流程:

假设输入是一张 224×224 的 RGB 图片,patch 大小取 16×16。先按 16×16 的网格切下去,横竖各切 14 刀,得到 14×14 = 196 个小方块。每个方块包含 16×16×3 = 768 个像素值,按固定顺序(逐行、逐列、逐通道)摊平成一条 768 维的向量——这一步叫 flatten(拍平)。然后乘上一个可学习的线性变换矩阵,把它映射到模型真正使用的维度 D(比如 768)。于是图片变成 196 个长度为 D 的 token。

打个比方:这就像把一张大拼图剪成一张张小卡片,每张卡片摊平成一串数字,再用同一台"翻译机"把每串数字翻译成模型能听懂的一句话。剪的时候不重叠、不遗漏,步长(stride)通常就等于方块边长。很多实现干脆用一个卷积层来做这件事,效果等价,写起来更省事。

切块打乱了原来的空间顺序,所以要再叠加一个位置编码(positional embedding),告诉模型"这块原本在左上角"。注意:patch embedding 和 positional embedding 是两个东西,名字像,作用完全不同,初学者常在这里绕晕。

和卷积的区别

处理方式感受野典型代表
卷积(CNN)滑窗逐层扫,局部信息层层累积由浅到深逐渐扩大ResNet 等
Patch Embedding一次性切块、拍平、投影成 token一开始就是全局可见ViT

一句话:CNN 是"慢慢看",ViT 是"一眼看全部",代价是注意力计算量随 token 数平方增长。

块大小怎么选

这是最关键的旋钮,直接影响算力和精度:

  • 块变小(如 8×8):token 数量翻两番,注意力开销约为 O(N²),粗略算下来算力涨十几倍。好处是细节保留得好,小目标、细纹理、文字识别更准。
  • 块变大(如 32×32):token 少、跑得快、省显存,但一整片区域被压成一个向量,细节被"平均"掉了,密集预测任务容易吃亏。
  • 折中:16×16 是常见的默认值。高分辨率场景要么用小块,要么用窗口注意力、层次化结构之类的办法把成本压回来。

对从业者的意义

调图像模型时,patch size 往往是继输入分辨率之后第二个要动的参数:它同时决定了显存占用、推理延迟和精度上限。做文档、遥感、医疗影像这类"看不清就全错"的业务,块大小选大了,字和病灶就糊在同一个 token 里,后面再怎么调都救不回来。反过来,如果只是做个粗分类,用小块的算力纯属浪费。具体模型的推荐配置,以官方页面和论文为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。