【物体検出】Swin Transformer (V2)

1K Views

October 17, 24

スライド概要

profile-image

AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

2024年度後期輪読会 #3(2024/10/17) Swin Transformer, Swin Transformer V2 京都大学工学部理工化学科1回生 岡本 和優 0

2.

アジェンダ ◼ Swin Transformer ◼ Swin Transformer V2 1

3.

アジェンダ ◼ Swin Transformer ◼ Swin Transformer V2 2

4.

Swin Transformer Vision Transformerの問題点 Vision Transformerには次の2つの問題点がある。 • 問題点1:画像を特定サイズのパッチに分割しているため, 物体スケールの変化が捉えられない。 • 物体検出では画像において異なった大きさで現れる対象を認識する必要がある。 • 問題点2:画像の解像度が高くなると計算量が増える。 • これはSelf-Attentionの計算量がパッチ数の2乗に応じて大きくなることが原因。 • 画像認識では高解像度の画像を扱うことが多いが,このままでは扱えない。 3

5.

Swin Transformer Swin Transformerでの改善点 Swin Transformerは前述の問題点を次のようにして改善した。 • 改善点1:パッチサイズを段階的に変化させていく。 • 改善点2:Self-Attentionを画像全体ではなく,限られたWindow内のみに適用する。 パッチ(灰枠)サイズを変化させながら, Window(赤枠)内でのみSelf-Attentionを計算。 4

6.

Swin Transformer Swin Transformerのアーキテクチャ Vision Transformerからの主な改善点は次の2つ。 • Patch Merging: 特徴マップのサイズを段階的に変化させる。 • Swin Transformer Block: W-MSAとSW-MSA(後述)を交互に適用。それ以外は通常のTransformer。 5

7.

Swin Transformer Patch Partition,Linear Embedding • Patch Partition: ViTと同様に画像を固定サイズ(デフォルトは4 × 4)のパッチに分割する。 • Linear Embedding: パッチ特徴量を4 × 4 × 3 = 48次元から𝐶次元に変換する。 実際には2つをまとめてkernel_size=stride=パッチサイズのconv2dで行っている。 図はVision Transformer入門から。 6

8.

Swin Transformer Patch Merging 近傍2 × 2のパッチ特徴量をチャンネル方向に結合することで,特徴マップのサイズを縮小し, それにより得られた4𝐶次元の特徴量を全結合層により2𝐶次元に変換する。 これにより1つのパッチがより広範囲の特徴を得る(パッチを大きくすることに相当)。 Swin TransformerではPatch Mergingを重ねることで,特徴マップを最終的に𝐻/32 × 𝑊/32 ピクセルにまで縮小する。このときパッチ特徴量は8𝐶次元。 図はVision Transformer入門から。 7

9.

Swin Transformer Swin Transformer Block 基本的には通常のTransformerと同じ。 W-MSA(Window-Based Multi-head Self-Attention)と, SW-MSA(Shifted Window-Based Multi-head Self-Attention)を交互に適用している。 𝑧Ƹ 𝑙 = 𝑊-𝑀𝑆𝐴 𝐿𝑁 𝑧 𝑙−1 𝑧 𝑙 = 𝑀𝐿𝑃 𝐿𝑁 𝑧Ƹ 𝑙 + 𝑧 𝑙−1 , + 𝑧Ƹ 𝑙 , 𝑧Ƹ 𝑙+1 = 𝑆𝑊-𝑀𝑆𝐴 𝐿𝑁 𝑧 𝑙 + 𝑧𝑙 , 𝑧 𝑙+1 = 𝑀𝐿𝑃 𝐿𝑁 𝑧Ƹ 𝑙+1 + 𝑧Ƹ 𝑙+1 8

10.

Swin Transformer Window-based Multi-head Self-Attention(W-MSA) 特徴マップを𝑀 × 𝑀のWindowで分割し, Window内のパッチでのみSelf-Attentionを計算する。 このとき計算量は次のように削減される。 ℎ × 𝑤個のパッチがあるとき,Self-Attention全体の 計算量は下のようになる。 Ω 𝑀𝑆𝐴 = 4ℎ𝑤C2 + 2(ℎ𝑤)2 𝐶 第1項はクエリ・キー・バリューの計算と, 最後の線形変換を行う計4つの全結合層の計算量で, 第2項はクエリとキーの間の行列積に必要な計算量。 このとき計算量は(ℎ𝑤)2 に応じて大きくなってしまう。 一方𝑀 × 𝑀のWindow内のみでSelf-Attentionを行う 場合の計算量は, Ω W − 𝑀𝑆𝐴 = 4ℎ𝑤C2 + 2M2 ℎ𝑤𝐶 となり,𝑀を固定(デフォルトは7)したとき 計算量はℎ𝑤に従う。 9

11.

Swin Transformer Shifted-Window-based Multi-head Self-Attention(SW-MSA) Windowを 𝑀 2 , 𝑀 2 ピクセル移動させてW-MSAを行う。 しかし,Windowを単に移動するだけだと, Window数が増えてM×Mより小さいWindowができる。 パディングでWindowのサイズを揃えても計算量が増える。 そこで,特徴マップにcyclic shiftを行い,実際は 隣接しない複数のWindowが含まれるWindowには マスキングを施し,異なるWindow間のAttention を0にすることで効率的に計算を行っている。 Windowではなく特徴マップを動かすことで, Windowのサイズと数を計算上は固定している。 10

12.

Swin Transformer Relative position bias Swin TransformerはViTと異なり, 各パッチ特徴量に絶対的な位置情報は付与しない。 その代わりにRelative position bias: 𝐵を用いることで, Self-Attentionの計算のときWindow内の相対的な位置関係 に応じてAttentionの重みを調整している。 𝐴𝑡𝑡𝑒𝑛𝑡𝑖𝑜𝑛 𝑄, 𝐾, 𝑉 = 𝑆𝑜𝑓𝑡𝑀𝑎𝑥 𝑄𝐾 𝑇 𝑑 + 𝐵 𝑉 𝑀 × 𝑀のWindow内での相対的な位置関係は縦横 −𝑀 + 1, 𝑀 − 1 の範囲(右端から見た左端~左端から見た右端,までの範囲) にあるから,𝐵は(2𝑀 − 1)2 通りになる。 図はVision Transformer入門から。 11

13.

Swin Transformer クラス分類の実験結果 あ • CNNと比較して精度と速度のトレードオフが少し改善。 • RegNetやEfficientNetはアーキテクチャの探索の末に 得られたものだが,Swin Transformerは標準的な Transformerを用いているだけだから改善の余地あり。 12

14.

Swin Transformer 物体検出の実験結果 13

15.

Swin Transformer セマンティックセグメンテーションの実験結果 14

16.

Swin Transformer Ablation Study Shifted windows,Relative position biasを用いたときの方が性能が高い。 15

17.

アジェンダ ◼ Swin Transformer ◼ Swin Transformer V2 16

18.

Swin Transformer V2 Swin Transformerからの変更点 Swin Transformerからの主な変更点は以下の3つ。 • Layer Normalizationの位置を変更。 • Attentionのとき単に内積を取るのではなく, 学習可能なパラメータ𝜏でスケールする。 • MLPを用いてRelative Position Biasを生成する。 • ここでは相対位置を対数でスケールしている。 これらの工夫で,モデルを大きくすることに成功した。 17

19.

Swin Transformer V2 Post normalization post-normに変更することで,層が深くなるにつれて 活性化の値が大きくなってしまう問題を解消している。 各層で活性化の値の大きさに差があると学習が不安定になる。 post-norm場合は層が深くなっても, 分散が大きくなりにくい。 pre-normだと学習ができないこともある。 18

20.

Swin Transformer V2 Scaled cosine attention 特にpost-normの場合は,一部のピクセルの組が全体に大きな影響を与えてしまうことが多い。 この問題を緩和するために,Scaled cosine attentionが用いられている。 𝑆𝑖𝑚(𝒒𝑖 𝒌𝑗 ) = cos(𝒒𝑖 , 𝒌𝑗 )/𝜏 + 𝐵𝑖𝑗 𝜏は0.01以上の学習化なスケーラーで,それぞれのヘッドとレイヤーで独立している。 コサインで正規化されているため,Attentionの値が極端にならない。 19

21.

Swin Transformer V2 Continuous relative position bias Relative Position Bias:𝐵を直接最適化せずに,MLP(デフォルトではReLUを挟んで2層) を用いてこれを生成する。 𝐵(∆𝑥, ∆𝑦) = 𝒢(∆𝑥, ∆𝑦) 𝒢は任意の相対位置に対し連続的に𝐵を生成できるため,Windowサイズの変化に対応できる。 ただし,Windowサイズを大きく変化させる場合(小さいWindowの事前学習モデルから 大きいWindowのモデルにFine-tuningするとき)のために,相対位置の座標を 下のように対数を用いてスケールしている(Log-spaced coordinates)。 ෢𝑥 = 𝑠𝑖𝑔𝑛(𝑥) · log(1 + |∆𝑥|), Δ ෢ = 𝑠𝑖𝑔𝑛(𝑦) · log(1 + |∆𝑦|) ∆𝑦 20

22.

Swin Transformer V2 クラス分類の実験結果 SwinV2-Gではパラメータ数を30億にまで増やしている。 他の大規模なモデルと比較して,少ない学習回数と低い解像度でそれなりの精度を実現。 21

23.

Swin Transformer V2 物体検出,セマンティックセグメンテーションの実験結果 セマンティックセグメンテーション 物体検出 22

24.

Swin Transformer V2 Ablation Study post-normやscaled cosine attentionにより性能が改善している。 Log-spaced coordinatesは,Fine-Tuning前後で 画像サイズやWindowのサイズの差が大きくなるほど効果が顕著。 23

25.

まとめ Swin Transformer,Swin Transformer V2のまとめ • Swin Transformerは,Vision Transformerを 物体スケールの変化を捉え,高解像度の画像を処理することができるよう改良したもの。 • Patch mergingでパッチサイズを段階的に変化。 • Shifted windows内でのみAttentionを計算。 • Swin Transformer V2は,Swin Transformerをモデルが大きくできるよう改良したもの。 • post-norm,Scaled cosine attentionにより活性化の値を抑える。 • Continuous relative position biasによりWindowサイズの拡大に対応。 24

26.

参考文献 参考にした文献やページの一覧 • [2103.14030] Swin Transformer: Hierarchical Vision Transformer using Shifted Windows (arxiv.org) • [2111.09883] Swin Transformer V2: Scaling Up Capacity and Resolution (arxiv.org) • Vision Transformer入門 • Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料 | PPT (slideshare.net) • 【論文5分まとめ】Swin Transformer (zenn.dev) • [論文メモ] Swin Transformer V2: Scaling Up Capacity and Resolution - にんひどりんはんのう (hatenablog.com) 25