2023-08-23 ML勉強会

 

An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

 

Abstract

Transformerアーキテクチャは自然言語処理タスクのデファクトスタンダードとなっているが、コンピュータビジョンへの応用はまだ限られている。コンピュータビジョンにおいては、注意機構は畳み込みネットワークと組み合わせて適用されるか、畳み込みネットワークの全体的な構造を維持したまま、特定のコンポーネントを置き換えるために使用される。我々は、このCNNへの依存は必要なく、画像パッチのシーケンスに直接適用される純粋なTransformerが、画像分類タスクで非常に良い性能を発揮できることを示す。大量のデータで事前学習を行い、複数の中・小規模画像認識ベンチマーク(ImageNet、CIFAR-100、VTABなど)にて転移学習した場合、Vision Transformer(ViT)は最先端の畳み込みネットワークと比較して優れた結果を得るとともに、学習に必要な計算資源が大幅に削減される。
org.
While the Transformer architecture has become the de-facto standard for natural language processing tasks, its applications to computer vision remain limited. In vision, attention is either applied in conjunction with convolutional networks, or used to replace certain components of convolutional networks while keeping their overall structure in place. We show that this reliance on CNNs is not necessary and a pure transformer applied directly to sequences of image patches can perform very well on image classification tasks. When pre-trained on large amounts of data and transferred to multiple mid-sized or small image recognition benchmarks (ImageNet, CIFAR-100, VTAB, etc.), Vision Transformer (ViT) attains excellent results compared to state-of-the-art convolutional networks while requiring substantially fewer computational resources to train.1
 

雑サマリー

  • Vision Transformer(ViT)についての論文(ICLR2021)
  • NLPやVision Languageで大活躍のTransformerをCV領域で活かしたい。
  • 画像をパッチに分割し、それぞれをトークンのように扱ってほぼオリジナルと同じTransformer(Encoder)に突っ込む。
  • ImageNetで学習しても同じサイズのResNetに負けた。これはTransformerは帰納バイアスが少ないからだ。→もっと巨大なコーパス(JFT-300M)で学習させたら画像分類タスクでSoTA
  • 当時のSoTAモデルに比べて計算コストもかなり(1/15程度)落ちている。
 

モデルアーキテクチャ

 
 

Input

  • 画像をバッチに分割して(flattenして)入力に利用。
    • 画像サイズが256*256だとしてパッチサイズが128*128なら、4つのパッチに分けられる。
  • パッチをLinear層(学習対象)に通してから埋め込み表現を獲得する。
  • 先頭に[CLS]トークンを追加。
  • Position Embedding(学習対象)を加算

Transformer Encoder

  • オリジナルのTransformerとのdiff
    • Layer Normalization(LN)がMulti-Head AttentionとMLPの前に存在
    • 活性化関数にGELUを採用(つまりBERT同様)

MLP Head

  • [CLS]トークンの最終出力のみを利用。
  • LN + Linear
 
実験に使った具体的なモデル構造

事前学習

  • データセット
    • ILSVRC-2012 ImageNet: 1000クラス1.3M枚
    • ImageNet-21k: 21kクラス14M枚
    • JFT-300M: 18kクラス300M枚(private)
  • Optimizer: Adam
  • バッチサイズ:4096
  • 画像サイズ: 224

ファインチューニング

  • 事前学習時よりもファインチューニング時のほうが解像度の大きな画像を利用
    • パッチの大きさは一定なのでパッチ数が増える。
  • MLP HEAD置き換えて転移学習
  • データセット
    • ILSVRC-2012 ImageNet
    • ImageNet Real
    • CIFAR-10/100
    • Oxford-IIIT Pets
    • Oxford Flowers-102
  • VTAB
    • 19個のタスクでそれぞれ1000例ずつ。
  • Optimizer: SGD momentum
  • バッチサイズ:512
  • 画像サイズ: 384
 

実験結果

vs. SoTA

  • ViT-H/{パッチサイズ}
  • CNNベースの当時のSoTAたちに勝利。
  • TPUを利用した数*学習日数が約10kからViT-Hで1/4、ViT-Lで1/15くらいに。
 

事前学習データセットの比較

  • データセットが小さいと性能微妙

性能とコスト比較(コスパ)

  • Hybrid: ViTのinputでCNN使って画像特徴獲得
  1. ViTはCNNベースよりコスパ良い
  1. コスト小さければHybridが強い
  1. ViTはまだまだ伸びそう(スケーリング即がきいてそう)

感想

  • とりあえずTransformerはすごいなと。
  • データ量は正義。
  • ViT本はまじでおすすめ。
 

refs

  • [Dosovitskiy21]Alexey Dosovitskiy, Lucas Beyer, et al. “An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale” ICLR, 2021.