- 「Vision Transformer」について学びたいけど理解できるか不安・・・
- 「Vision Transformer」についてどこから学んでいいか分からない?
- 「Vision Transformer」を体系的に教えて!
「Vision Transformer」は言語処理用に開発されたTransformerを分類タスクに応用したモデルですが、難しそうで何から学んだらよいか分からず、勉強のやる気を失うケースは非常に多いです。
私は過去に基本情報技術者試験(旧:第二種情報処理技術者試験)に合格し、2年程前に「一般社団法人 日本ディープラーニング協会」が主催の「G検定試験」に合格しました。現在、「E資格」にチャレンジ中ですが3回不合格になり、この経験から学習の要点について学ぶ機会がありました。
そこでこの記事では、「Vision Transformer」のポイントについて解説します。
この記事を参考に「Vision Transformer」のポイントを理解できれば、E資格に合格できるはずです。
<<「Vision Transformer」の学習のポイントを今すぐ知りたい方はこちら
目次
1.Vision Transformer(ViT)の概要
概要
- 画像特徴量の入力方法・・・画像の”トークン”系列化
1.画像をパッチに分割し系列化・・・N個の画像パッチで構成される系列
2.パッチごとにFlatten化・・・”トークン(単語)”化→これを入力値に使用 - ViTの構造・・・Transformer Encoderを使用
Transformer Encoderへの入力値の準備
Transformer Encoder・・・言語処理向けのオリジナルと同等の構造
MLP Head・・・「CLS」Token系列値の出力特徴量から分類結果を出力 - 事前学習とファインチューニング
1.大規模なデータセットでの事前学習
2.ファインチューニング・・・事前学習より高解像度な画像を入力
2.ViTの画像特徴量の処理
ViTの画像特徴量の処理
- 入力画像をパッチに分割する
- パッチごとにFlatten処理を行い、”トークン”系列を得る
- Embedding表現(埋込表現)に変換する
- CLS Tokenを系列データの最初に付加する
- Position Embedding(パッチの位置)を付加する
3.ViTの構造
Vitの計算過程
Vitの計算過程
- 画像x∈RH×W×C(高さH、幅C、チャンネルC)を、縦幅がPのパッチで分割した画像はx∈RN×(P2・C) (N=HW/P2はパッチ数)
- パッチ画像をD次元の特徴量Z0に変換しTransformer Encoderに入力
Z0=[Xclass;X1PE;X2PE;…;XNPE]+Epos - Transformer EncoderはL回(L層)重ね、ℓ層目について、
Layer NormをLN MultiーHead self attentionをMSAとし、
Z’ℓ=MSA(LN(Zℓー1))+Zℓ-1 (ℓ=1…L)
Zℓ=MLP(LN(Z’ℓ))+Z’ℓ (ℓ=1…L) - Transformer Encoderの最終層では[CLS]トークに当たる特徴量を出力
y=LN(Z0L) - このyをMLP Headに入力し、最終的な分類結果を得る。
4.事前学習とファインチューニング
事前学習
- Vitの事前学習は教師ラベル付きの大規模なデータセットで行われる
- 事前学習の手順
事前学習時にはMLP Headを出力層に使用
ファインチューニングにより低解像度の画像を使用
ファインチューニング
- 分類クラスの変更
Transformer EncoderはD次元の特徴量出力を行う
MLP HeadでD次元をKクラスへ変換する
ファインチューニング時にはMLP HeadをLinear層に取り換え - 入力解像度の変更
バッチサイズは変更せず、入力時のPosition Embeddingを付替え
事前学習よりファインチューニングでは高解像度の画像を使用
3.まとめ
最後まで読んで頂きありがとうございます。
皆様のキャリアアップを応援しています!!
コメント