Vision Transformer (ViT)
探索视觉 Transformer (ViT) 的强大功能。了解自注意力机制和分块 Token 化如何通过 Ultralytics 打破 CNN 局限,彻底改变计算机视觉。
视觉 Transformer (ViT) 是一种深度学习架构,它将最初为 自然语言处理 (NLP) 设计的自注意力机制应用于解决视觉任务。与处理图像时依赖局部像素网格层级的传统 卷积神经网络 (CNN) 不同,ViT 将图像视为一系列离散的图像块(patches)。这一方法因具有里程碑意义的研究论文 "An Image is Worth 16x16 Words" 而普及,该论文证明了纯 Transformer 架构可以在不依赖卷积层的情况下,在 计算机视觉 (CV) 领域实现顶尖性能。通过利用全局注意力机制,ViT 能够从第一层开始捕捉整张图像中的长距离依赖关系。
Link to this section视觉 Transformer 的工作原理#
ViT 的根本创新在于它构建输入数据的方式。为了使图像能够兼容标准的 Transformer,模型将视觉信息分解为一系列向量,模仿语言模型处理单词序列的方式。
-
图像块标记化 (Patch Tokenization): 输入图像被划分为固定大小的方形网格,通常为 16x16 像素。每个方形区域被展平为一个向量,从而有效地变成了一个视觉 token。
-
线性投影 (Linear Projection): 这些展平后的图像块通过一个可训练的线性层,以创建密集的 嵌入 (embeddings)。这一步骤将原始像素值映射到模型可以处理的高维空间中。
-
位置编码 (Positional Encoding): 由于该架构并行处理序列,且缺乏对顺序或空间的固有理解,因此需要将可学习的 位置编码 (positional encodings) 添加到图像块嵌入中。这使得模型能够保留每个图像块在原始图像中对应位置的空间信息。
-
自注意力机制 (Self-Attention Mechanism): 该序列进入 Transformer 编码器,其中 自注意力 (self-attention) 允许每个图像块同时与其他所有图像块进行交互。这使网络能够学习全局上下文,从而理解左上角的像素与右下角的像素之间存在何种关系。
-
分类头 (Classification Head): 对于 图像分类 (image classification) 等任务,通常会在序列开头添加一个特殊的“分类 token”。该 token 的最终输出状态作为图像的聚合表示,随后被送入分类器(例如 多层感知机 (MLP))中进行处理。
Link to this section视觉 Transformer 与 CNN 的对比#
While both architectures aim to understand visual data, they differ significantly in their operational philosophy. CNNs possess a strong "inductive bias" known as translation invariance, meaning they inherently assume that local features (like edges and textures) are important regardless of their position. This makes CNNs highly data-efficient and effective on smaller datasets.
相反,视觉 Transformer 的图像特定偏置较少。它们必须使用海量的 训练数据 (training data)(例如 JFT-300M 或完整的 ImageNet 数据集)从零开始学习空间关系。虽然这使得训练过程对计算资源的要求更高,但也使 ViT 能够实现卓越的扩展能力;在拥有足够数据和 计算能力 (compute power) 的情况下,它们可以通过捕捉局部卷积可能错过的复杂全局结构来超越 CNN。
Link to this section实际应用#
理解全局上下文的能力使得 ViT 在复杂、高风险的环境中特别有用。
- 医学图像分析: 在 医疗 AI (healthcare AI) 中,ViT 被用于分析高分辨率扫描图像,如 MRI 或组织病理学切片。例如,在 肿瘤检测 (tumor detection) 中,ViT 可以将组织中微妙的纹理异常与切片中更广泛的结构变化关联起来,从而识别出局部处理可能忽略的恶性模式。
- 卫星影像与遥感: ViT 在 卫星图像分析 (satellite image analysis) 方面表现出色,因为物体之间的关系跨越了很大的距离。例如,将森林砍伐点与遥远的伐木道路联系起来,需要理解景观的“宏观图景”,在这种任务中,ViT 的全局注意力机制优于标准 CNN 有限的感受野。
Link to this section利用 Ultralytics 使用 Transformer#
ultralytics 库支持基于 Transformer 的架构,最显著的是 RT-DETR (实时检测 Transformer)。虽然旗舰模型 YOLO26 因其在边缘设备上速度与准确性的平衡而常被优先选用,但 RT-DETR 为优先考虑全局上下文的场景提供了一个强大的替代方案。
以下 Python 示例展示了如何加载预训练的基于 Transformer 的模型并进行推理:
from ultralytics import RTDETR
# Load a pre-trained RT-DETR model (Vision Transformer-based)
model = RTDETR("rtdetr-l.pt")
# Run inference on an image source
# The model uses self-attention to detect objects globally
results = model("https://ultralytics.com/images/bus.jpg")
# Display the detection results
results[0].show()Link to this section未来展望#
研究正快速演进以解决 ViT 的高计算成本问题。FlashAttention 等技术正在使这些模型变得更快、内存效率更高。此外,结合了 CNN 的效率与 Transformer 注意力机制的混合架构正变得越来越普遍。对于希望管理这些先进工作流程的团队,Ultralytics Platform 提供了一个统一的环境,用于标注数据、通过云端训练复杂模型,并将它们部署到各种端点。






