オムライスの備忘録

数学・統計学・機械学習・プログラミングに関することを記す

【深層学習】Vision Transformer / ViT #アルゴリズム編

Index

Vision Transformer とは

Self Attention が NLP の世界に席巻している.
しかし、画像分野では、未だCNN が強く、Self Attention の利用は共存するケースくらいだ.
しかも、特殊な Attention を利用してしまうと、計算が多くなってしまうようだ、、、
したがって、CNN を 多く繋げた ResNet 系(BiT)が強いようだ、、、



(NLP で利用されている Transformer のスケーリングをアイディアとして、)
Transformer においても、画像データを適用した手法.

そのために、画像をパッチ化 (分割)して、Transformer に入力する.
(このパッチは、NLP でいうトークンのようなもの.)

タスクは、教師ありの画像分類問題.

ちなみに ImageNet での精度は、ResNet 系よりもちょびっと低いくらい.
ImageNet-21k や他のデータセットで行うと、ResNet 系よりも精度がよかったよ.

Architecture

Vision Transformer の Network Architecture は、Transformer の Encoder を模倣した Architecture になっている.

  • Input

    • Patch Embeddings
    • Position Embeddings

  • Encoder (Encoder Layer x L)

    • Attention
    • MLP

Input

Patch Embeddings

Transformer では、単語ベクトルの系列情報 (Batch x Embedding Dim x Word Num) であった.
では、画像をどのように入力できる形式に変換するのか.

画像  x \in R^{H \times W \times C} をバッチごとに分割する.
(このパッチが、Transformer でいう単語トークンにあたる.)



 P \times P のサイズの正方形のパッチに分割する.
パッチの数  N は、 \displaystyle \frac{W}{P}\ \times\ \displaystyle \frac{H}{P}\ =\ \displaystyle \frac{WH}{P^{2}} 個になる.



パッチに分けても、画像は画像だから、まだ (P x P x C) の 3次元ベクトル.

なので、次は、各パッチを平滑化する. ( x_{p}\ \in\ R^{C \cdot P \cdot P})



これにて、Transformer に入力できる形式になりそう.

生のパッチをそのまま使うわずに、CNN で特徴量抽出する Hybrid Architecture も良さそう.
その場合は、平滑化はいらないのか、?

Class Token

BERT の [class] token 同様、入力情報の頭 (系列データでは、ないので横に添えるだけ)に [class] トークンをくっつける.
(N+1 個の入力)

Position Embeddings

Transformer 同様、このままだと、各パッチの位置情報が抜け落ちたままになってしまうので、位置情報を追加する.



これは、なんだ

Encoder

Encoder は Multi Head Self Attention と MLP を交互に繰り返している.

Normalization

Attention

Transformer 同様、Multi Head Self Attention を利用.

MLP

活性化関数には、GELU を利用.

Classifier (MLP Head)

Encoder からの、[class] に対応された出力を取り出し、MLP で分類.



事前学習されたモデルを利用.

Pre Training と Fine Turning

Vision Transformer の学習も通常の Transformer 同様、Pre Training と Fine Turning にわかれる.

参考

  • An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
    • [2020 Google] 発表論文
    • 1 Introduction
    • 3 Method
      • 3.1 Vision Transformer (ViT)
      • 3.2 Fine-Turning And Higher Resolution
    • arxiv.org

書籍

Web サイト

  • 画像認識の大革命。AI界で話題爆発中の「Vision Transformer」を解説!