Self-Attentionの受容野を制限【Swin】



**原論文**
- Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
https://arxiv.org/abs/2103.14030

**日本語解説**
- [DL輪読会]Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
https://www.slideshare.net/DeepLearningJP2016/dlswin-transformer-hierarchical-vision-transformer-using-shifted-windows



# 関連研究

Vison Transformerの解説
https://qiita.com/wakanomi/items/55bba80338615c7cce73

CNN+ViTモデルの傾向【サーベイ】
https://qiita.com/wakayama_90b/items/96bf5d32b09cb0041c39




# 結論
ViTの問題点として，画像全体を同時に捉える処理を行うため，計算量が膨大になる問題点をViTの受容野を強制的に制限することで計算量の削減する．またローカルな認識により，ViTでは達成できなかった細かい認識（物体検出やセグメンテーションタスク）の性能が向上した．


# 概要
Swin Transformer (Swin)とはViTの派生モデルでCNNの特性に近づけるように構成された階層化したモデルである．階層（ステージ）を重ねるにつれて，Self-Attentionの計算範囲を拡大する．これにより，大きさが固定されていたパッチが変化し，スケールの頑健性が向上し，局所的な範囲で計算するため計算量を削減できる．
初めのステージで局所的な範囲をSelf-Attentionを行うことで，CNNの特性である近くにある画素は関係が深いという局所的に特徴を捉える帰納的バイアスも獲得する．また，SwinはResNetのようにステージで分割されており，ResNet-50 (3:4:6:3) に対してSwin-Tは (2:2:6:2) で最終ステージの1つ前を深くする方向は変更していないが，その深さをより強く強調する．
SwinはViTと比較して，計算量を削減しながらも画像分類，物体検出，セグメンテーションタスクにおいて精度向上を達成した．


# モデル構造
ステージ4までの階層型モデルを採用する．ステージが進むにつれて特徴マップの空間を半分にして，チャンネル数を2倍にする．Swin Transformer Blockの処理を図の右（b）に示す．W-MSA（Window Multi Self-Attention）とSW-MSA（Shift Window Multi Self-Attention）のブロックは層ごとに交互に行う．
初めに行う処理としてパッチ分割（Patch Partition）とパッチ特徴量変換（Linear Embedding）を採用する．

![スクリーンショット 2023-05-28 0.31.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457775/12514c10-46a1-6c4f-f981-801a6d33c738.png)


## ステージ間のダウンサンプリング
ステージ間のダウンサンプリングには特徴マップ（$H \times W \times C$）の近傍4画素をチャンネル方向に重ねる．重ねた特徴マップ（$H/2 \times W/2 \times 4C$）を全結合層に通すことで，特徴マップ（$H/2 \times W/2 \times 2C$）にチャンネル方向に圧縮する．
チャンネルを1回4倍にしてから全結合層を通して2倍に戻す処理を行う．

![スクリーンショット 2023-05-28 1.05.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457775/6619edc2-a834-258c-08bf-8b1588dc46e7.png)

ViTは浅い層から深い層までのパッチと受容野の変化がないのに対して，Siwnはステージが上がるにつれてself-attentionの受容野（下図の赤枠の範囲）とパッチの受容野が広くなり，浅い層では局所的な範囲の認識，深い層では大局的な範囲の認識を行う．また，self-attentionの範囲を制限したことで計算量の削減効果がある．


![スクリーンショット 2023-05-28 1.07.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457775/33b06c8d-4d56-0bc2-1010-69a6ac31de77.png)




## LocalなSA（W-MSA）とshifted window（SW-MSA）

左の図は受容野（赤枠）の範囲（window）に制限，左の図は($\mathrm{width}/2,\mathrm{height}/2$) サイズのwindowで分割，右に($\mathrm{width}/2,\mathrm{height}/2$) サイズのwindowの位置をずらしたshifted windowを示す．左の分割方法をW-MSA，右のシフトした場合のwindowをSW-MSAと表記する．２種類の分割方法は層ごとに交互に行う．その理由として，毎回同じ分割方法の場合に情報が偏るため，それを回避するために異なるwindow間の情報を効率的に混合する目的がある.


![スクリーンショット 2023-05-28 1.23.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457775/f51f2590-ebdb-f655-9e07-baf3a7202400.png)



### shifted window（SW-MSA）の計算方法
SW-MSAのwindowをそのまま使用するとサイズの異なる9個のwindowが存在し計算量がW-MSAと比較して増加してしまう．そこで下図のような工夫を行う．本来，左上にあるA，B，Cの特徴マップの一部を右したに移動して，W-MSAと同じようにサイズの同じ4つのwindowとする．左上以外のwindow内には他の位置にある特徴マップの情報が格納されているため，その部分はmaskを利用してattention weight（類似度計算の値）を0にする．最後に，元の位置に戻す処理を行う．


![スクリーンショット 2023-05-28 1.35.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457775/19d20ba0-5fe6-3dcb-3b6f-63c4c1c6c127.png)


## 相対位置の埋め込み
ViTには位置の埋め込みとして基本的に絶対位置埋め込みが採用されている．Swinでは位置埋め込みを相対位置埋め込みを採用する．



# 実験結果

Swinは画像分類，物体検出，セグメンテーションタスクにおいて精度向上を達成した．画像分類タスクではImageNet-1k，ImageNet-21kどちらのデータセットにおいても従来手法を上回る精度を達成した．

![スクリーンショット 2023-05-28 1.46.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457775/b8f9e478-ddbe-f085-b387-72801bb22070.png)







# 考察（ViTとSwin）
Swinの構造上，浅い層では受容野を制限した認識を行い，深い層では本来self-attentionの利点である画像全ての受容野（大局的な認識）が可能になる構造である．CNNの畳み込みでは実現できないself-attentionの受容野を制限しても精度が向上する理由として，ViTの論文から以下の図を引用する．
これは浅い層では局所的な認識と大局的な認識，深い層では大局的な認識のみを行う傾向を示す．
浅い層ではCNNのような局所的な認識を好む傾向にあり，浅い層で受容野を制限したSwinは優れた認識と計算量を同時に獲得したのかな？

![スクリーンショット 2023-05-27 18.02.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457775/5292e2aa-c7f0-ebed-3442-42897ffc67ce.png)




# おわりに
Swin Transformer (Swin)とはViTの派生モデルでCNNの特性に近づけるように構成された階層化したモデルであり，様々なタスクにおいて精度向上を達成した．
ViTの派生モデルとしてグローバルなSAでなく，ローカルに制限したSAモデルはSwin以外にも発表されており，ViTの発展を望みます．