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 実装を提供します。研究者や開発者が、従来の畳み込みニューラルネットワークの代わりにトランスフォーマーアーキテクチャを用いた最先端の画像分類モデルを簡単に実装できるようにします。

How it works

ライブラリは、画像をパッチのシーケンスとして扱い、トランスフォーマーエンコーダで処理するコア Vision Transformer アーキテクチャを実装しています。また、以下のような多数の特殊バリエーションも含まれています。

  • NaViT: マスキングと柔軟なアテンションを用いて、単一バッチ内で複数解像度の画像を処理します。
  • Distillation: 教師モデル(例: ResNet)から ViT 学習者へ知識を蒸留するツールを提供します。
  • Deep ViT & CaiT: 深さが増した際の学習安定性と性能を向上させる手法を実装しています。
  • Hybrid Models: CvT や LeViT のように、畳み込みとアテンションを組み合わせて効率性または性能を向上させる実装を含みます。
  • Specialized Architectures: Token-to-Token ViT、CCT、Cross ViT、PiT など、パッチの埋め込み方法やトークン間の相互作用を変更するモデルを含みます。

Who it’s for

  • コンピュータビジョンとトランスフォーマーアーキテクチャに焦点を当てた AI 研究者。
  • 画像分類タスク向けに様々な ViT アーキテクチャの PyTorch 実装をすぐに利用したい機械学習エンジニア。

Highlights

  • Extensive Variety: NaViT、CaiT、MobileViT、MaxViT など、膨大な数の ViT バリエーションをサポート。
  • Flexible Configuration: 画像サイズ、パッチサイズ、深さ、アテンションヘッド数を細かく制御可能。
  • Distillation Support: 畳み込みネットワークからトランスフォーマーへの知識蒸留用ラッパーを内蔵。
  • Multi‑resolution Support: NaViT 実装により、異なる解像度の画像を 1 バッチにまとめて学習可能です。