资讯动态

Vision Transformer(ViT)深入浅出

发布时间:2026/10/26 10:20:15 来源:尧图企业网站定制
Vision TransformerViT 深入浅出简介结构整体架构输入分类标记cls token位置编码Positional Encoding多头注意力机制Multi-HeadAttention, MHA前馈神经网络Feedforward Neural Network, FFN网络层次实验分析数据大小预训练计算量内部表征分析在了解ViT之前首先你要知道什么是Transformer对于Transformer的学习可以看我的文章Transformer深入浅出简介具体怎么实现可以见项目Vision-Transformer结构整体架构Patch embedding是一种方法用于将图像分割成固定大小的块patches。例如如果输入图像的大小是224x224并且将图像分成 16x16 大小的块这样就会得到 224/16*224/16196 个块patches。每个块的大小是 16x16 像素每个像素通常由 RGB 三个通道组成因此每个块的维度是 16x16×3768。然后通过线性投射将每个 768 维的块映射到一个更高维度的向量空间。例如如果线性投射的维度是N通常与patch的维度相同那么投射后的每个块的维度仍然是 N。因此整个图像被转换成一个长度为 196 的序列每个序列元素都那是一个 N 维的向量。在这个过程中通常会添加一个特殊的标记例如CLS标记使得最终的序列长度为197。这样的处理方式将一个视觉问题转换成了一个序列到序列seq2seq的问题。ViT同样需要加入位置编码positional encoding来为输入序列引入位置信息。位置编码可以被理解为一个表格其有N行N的大小与输入序列的长度相同。每一行代表一个向量这个向量的维度与输入序列embedding的维度相同768。需要注意的是位置编码的操作是将其与输入序列的embedding进行加法操作sum而不是简单地将其拼接在一起concatenate。加入位置编码信息之后整个序列的维度依然是197x768。输入分类标记cls token位置编码Positional Encoding多头注意力机制Multi-HeadAttention, MHA首先我们来看Transformer里的多头注意力机制是什么样子我们的ViT的就是把带有位置编码的词向量改为了带有位置编码的图在原文中也就是197x768大小也就是L197d768。从代码的角度来看就是这样的原本的Transformer中是三个线性层进行三次变换这里只用一个线性层然后扩展了三倍最后再拆分开。原理是采用了 8 个注意力头h8模型的隐藏维度 768 被均分给 8 个头因此每个头的维度 dk 768/896前馈神经网络Feedforward Neural Network, FFN我们也可以叫他为多层感知机Multi-Layer Perceptron, MLP。网络层次以ViT-Base为例解释为12 层隐藏维度 768MLP 中间维度 307212 个注意力头总参数量 86M8600 万其中Model模型名称Layers TransformerEncoder 层数Hidden size D特征向量维度token embedding 的维度MLP sizeEncoder 里面 MLP 中间层的维度Heads多头自注意力的头数Params模型总参数量实验分析结论更大规模的预训练数据很关键patch更细通常更强,但更耗算力ViT的算力性价比突出多个数据集上过强CNN基线,但预训练成本远低于当时的强基线。数据大小数据大小对结果的影响ViT主要是对于大规模的数据集效果非常好对于我们切割小的patch也会提升效果预训练计算量结论ViT在性能/计算量权衡上总体优于ResNetHybrid在小算力预算下略优于纯ViT但模型做大后优势消肖失ViT在实验范围内看起来还没饱和继续堆规模/算力还有上升空间其中Hybrid代表的意思是混合模型。内部表征分析分别对Patch Embedding/位置编码/注意力范围做了分析如果我们增加Patch效果会更好但超参数对其学习影响会加深

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑