lucidrains/vit-pytorch

Implementation of Vision Transformer, a simple way to achieve SOTA in vision classification with only a single transformer encoder, in Pytorch

What it solves

该项目提供了 Vision Transformer(ViT)及其众多后续变体的完整 PyTorch 实现。它使研究人员和开发者能够轻松使用 transformer 架构而非传统卷积神经网络来实现最先进的视觉分类模型。

How it works

库实现了核心的 Vision Transformer 架构,将图像视为一系列 patch 并使用 transformer encoder 进行处理。同时还包含大量专门的变体,例如:

  • NaViT:通过掩码和灵活的 attention,在单个 batch 中处理多分辨率图像。
  • Distillation:提供将教师模型(如 ResNet)的知识蒸馏到 ViT 学生模型的工具。
  • Deep ViT & CaiT:实现提升训练稳定性和深层网络性能的技术。
  • Hybrid Models:包括 CvT、LeViT 等将卷积与 attention 结合以提升效率或性能的实现。
  • Specialized Architectures:包括 Token-to-Token ViT、CCT、Cross ViT、PiT 等修改 patch 嵌入方式或 token 交互方式的架构。

Who it’s for

  • 专注于计算机视觉和 transformer 架构的 AI 研究者。
  • 寻找可直接使用的各种 ViT 架构 PyTorch 实现以进行图像分类任务的机器学习工程师。

Highlights

  • Extensive Variety:支持大量 ViT 变体(如 NaViT、CaiT、MobileViT、MaxViT 等)。
  • Flexible Configuration:可细粒度控制图像尺寸、patch 大小、网络深度和 attention heads。
  • Distillation Support:内置用于将卷积网络知识蒸馏到 transformer 的包装器。
  • Multi‑resolution Support:NaViT 实现支持在同一 batch 中训练不同分辨率的图像。