Swin Transformer: 階層型Vision Transformer まとめ

Transformerの画像処理への応用にあたってはViT(Vision Transformer)などが有名である一方で、画像の局所特徴量の抽出の観点からは少々処理が非効率です。当記事では階層型のAttentionを用いることで改善を行なった研究であるSwin Transformerについて取りまとめを行いました。
「Swin Transformer: Hierarchical Vision Transformer using Shifted Windows」の内容を参考に作成を行いました。

・用語/公式解説
https://www.hello-statisticians.com/explain-terms

前提の確認

Transformerの概要

Dot Product Attentionに主に基づくTransformerの仕組みについては既知である前提で当記事はまとめました。下記などに解説コンテンツを作成しましたので、合わせて参照ください。

・直感的に理解するTransformerの仕組み(統計の森作成)

ViT

Swin Transformer

パッチの作成と連結

Swin Transformerでは$4 \times 4$のピクセル単位でパッチの作成を行います。基本的にはRGB値を持つカラー画像が入力であるので、それぞれのパッチが持つ要素数は$4 \times 4 \times 3 = 48$となります。

このように作成を行なったパッチを処理を行うにつれて隣接するパッチと連結を行い、Feature Mapの作成を行います。

この「パッチの連結によるFeature Mapの作成」はVGGNetやResNetにおけるpoolingを用いたFeature Mapの作成と対応づけて抑えておくと良いです。

Swin Transformerの処理概要

Swin Transformer論文 Figure$\, 3, (a)$

Swin Transformerの処理の全体は上図のように表されます。まず$H \times W \times 3$の入力を$4 \times 4$単位でパッチの作成を行います。

$4 \times 4$単位でそれぞれ$48$の要素を持つパッチの作成を行うことで、$H \times W \times 3$の入力を$\displaystyle \frac{H}{4} \times \frac{W}{4} \times 48$の表現に変換することができます。この処理がPatch Partitionに対応します。

Swin Transformer論文 Figure$\, 3, (b)$

次にLinear Embedding(MLP処理)を通して$48$次元を$C$次元に変換したのちにSwin Transformer Blockを用いて処理を行います。Swin Transformer Blockの処理は上図のように表されますが、Swin Transformer Blockの詳細は次項以降で取り扱います。

ここまでのLinear Embedding・Swin Transformer Block・Patch Mergingの処理の組み合わせによって、Swin TransformerではFeature Mapの作成が行われます。

W-MSA

Swin Transformer論文 Figure$\, 3, (b)$

W-MSAはWindowを用いたMultihead Self Attention処理の略です。Windowはパッチの集合を表しており、$M \times M$の場合は$M^2$個のパッチをまとめて取り扱います。

全てのパッチ同士で計算を行うViTに対して、W-MSAではWindowの内部のパッチだけを元にAttention処理を行います。このような処理を行うことで計算量の削減が可能になります。

SW-MSA

W-MSAを用いることで計算量の削減が可能になる一方で、W-MSAではWindowの境界におけるパッチ間の相関を取り扱うことができないという課題があります。この解決にあたってW-MSAと併用されるのがSW-MSAです。

W-MSAのみを用いる場合、上図の左のように毎回Windowの境界のパッチが同じパッチになります。このような問題の解決にあたってSwin Transformerでは、上図の右のようにWindowをずらした上で(Shifted Window)Attention処理を行うSW-MSAという処理が用いられます1

Swin Transformer論文 Figure$\, 3, (b)$

このようにWindowをずらすことでWindowの境界のパッチが毎回同じ位置にならないようにすることができます。

cyclic shifting

参考

・Transformer論文:Attention is All you need[$2017$]
・Swin Transformer論文

  1. Swin TransformerのSwinがShifted Windowの略であることも合わせて抑えておくと良いです。 ↩︎