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 中訓練不同解析度的影像。