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