探索视觉变换器 (ViT) 在计算机视觉中的强大功能。了解它们如何通过捕捉全局图像上下文来超越 CNN。
Vision Transformer(ViT)标志着计算机视觉(CV)领域的一个重要发展,它将最初为自然语言处理(NLP)而设计的非常成功的Transformer 架构应用于基于图像的任务。传统的卷积神经网络(CNN)使用局部滤波器逐层处理图像,与之不同的是,ViTs 将图像划分为固定大小的片段,将其视为一系列标记(类似于句子中的单词),并使用 Transformer 的自我关注机制对其进行处理。这使得 ViTs 能够比许多 CNN 架构更有效地捕捉图像中的全局上下文和长距离依赖关系,从而在各种基准测试中取得最先进的结果,尤其是在ImageNet 等大型数据集上进行训练时。
ViT 的核心理念是重塑图像处理模式。输入图像首先被分割成一个个不重叠的斑块网格。每个斑块被平铺成一个矢量,然后线性投影到一个嵌入空间。为了保留空间信息,位置嵌入被添加到这些斑块嵌入中。这一连串矢量现在代表了图像斑块及其位置,并被输入到标准的变换器编码器中,详见最初的"一幅图像价值 16x16 个字 "论文。
Transformer 编码器由多个层组成,在很大程度上依赖于自我注意机制。这种机制使模型能够动态地权衡不同片段之间的重要性,从而学习图像远处之间的关系。这种全局感受野与 CNN 通常的局部感受野形成鲜明对比,使 ViT 在理解整体场景背景方面更具优势。The Illustrated Transformer(图解变形器)等资源提供了对变形器基本概念的直观解释。框架,如 PyTorch和 TensorFlow等框架提供了这些组件的实现。
视觉变换器因其可扩展性和令人印象深刻的性能,尤其是在大规模预训练的情况下,已成为现代深度学习的重要组成部分。它们对全局上下文进行建模的能力使其适用于基本图像分类之外的各种 CV 任务,包括
ViT 越来越多地集成到Ultralytics HUB等平台和Hugging Face Transformers 等库中,使它们可以用于研究和部署。它们还可以针对NVIDIA Jetson 等设备上的边缘人工智能部署进行优化。
虽然 ViT 和 CNN 都是计算机视觉领域的基础架构(参见 "视觉模型的历史"),但它们在方法上有很大不同:
选择 ViT 还是 CNN 通常取决于具体任务、可用数据和计算资源。ViT 通常在有大量训练数据的情况下表现出色,而 CNN(如 "Ultralytics "中的 CNN)则需要更多的计算资源。 Ultralytics YOLO系列中的 CNN 仍然高效,尤其适用于在受限设备上进行实时物体检测。