- Transformer #まとめ編
- 画像処理の手法
- yhayato1320.hatenablog.com
Index
Vision Transformer とは
しかし、画像分野では、未だCNN が強く、Self Attention の利用は共存するケースくらいだ.
しかも、特殊な Attention を利用してしまうと、計算が多くなってしまうようだ、、、
したがって、CNN を 多く繋げた ResNet 系(BiT)が強いようだ、、、
(NLP で利用されている Transformer のスケーリングをアイディアとして、)
Transformer においても、画像データを適用した手法.
そのために、画像をパッチ化 (分割)して、Transformer に入力する.
(このパッチは、NLP でいうトークンのようなもの.)
タスクは、教師ありの画像分類問題.
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) であった.
では、画像をどのように入力できる形式に変換するのか.
画像 をバッチごとに分割する.
(このパッチが、Transformer でいう単語トークンにあたる.)
のサイズの正方形のパッチに分割する.
パッチの数 は、 個になる.
パッチに分けても、画像は画像だから、まだ (P x P x C) の 3次元ベクトル.
なので、次は、各パッチを平滑化する. ()
これにて、Transformer に入力できる形式になりそう.
その場合は、平滑化はいらないのか、?
Class Token
BERT の [class] token 同様、入力情報の頭 (系列データでは、ないので横に添えるだけ)に [class] トークンをくっつける.
(N+1 個の入力)
Position Embeddings
Transformer 同様、このままだと、各パッチの位置情報が抜け落ちたままになってしまうので、位置情報を追加する.
Encoder
Encoder は Multi Head Self Attention と MLP を交互に繰り返している.
Normalization
Layer Normalization を利用.
Pre Normalization : Transformer では、処理の後に行っていた.
Attention
Transformer 同様、Multi Head Self Attention を利用.
Self Attention
Multi Head 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
書籍
Vision Transformer入門
- 1 Transformer から Vision Transformer への進化
- 1.1 自然言語処理における Transformer の登場
- 1.1.1 Transformer の提案
- 1.1.2 事前学習言語モデル
- 1.1.3 Transformer の改良
- 1.2 Vision and Language への拡張
- 1.2.1 動画 + テキスト
- 1.2.2 画像 + テキスト
- 1.2.3 Vision and Language における派生
- 1.3 コンピュータビジョンにおける Transformer
- 1.3.1 DETR による物体検出
- 1.3.2 iGPT による画像の補間
- 1.3.3 ViT の出現
- 1.3.4 静止画以外への応用
- 1.3.5 実タスクへの応用
- 1.3.6 最近の研究傾向
- 1.1 自然言語処理における Transformer の登場
- 2 Vision Transformer の基礎と実装
- 3 実験と可視化による Vision Transformer の探求
- 4 コンピュータビジョンタスクへの応用
- 5 Vision and Language タスクへの応用
- 6 Vision Transformer の派生手法
- 7 Transormer の謎を読み解く
- 8 Vision Transformer の謎を読み解く
- 1 Transformer から Vision Transformer への進化