ローカルとグローバルの両方でSelf-AttentionするViT【MaxViT】




**原論文**
- MaxViT: Multi-Axis Vision Transformer
https://arxiv.org/abs/2204.01697


**日本語解説**
- [論文メモ] MaxViT: Multi-Axis Vision Transformer
https://ninhydrin.hatenablog.com/entry/2022/04/07/095517



# 関連研究

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

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


Swin Transformerの解説
https://qiita.com/wakanomi/items/8fcedaaae7c8f4d94abd





# 結論
SwinのようなローカルなSAとそのwindowの分割方法を工夫したグローバルなSAをするViT





# 概要
ViTモデルはCNNモデル（カーネルサイズの範囲の特徴抽出）と比較して機能的バイアス（近い画素は関係が深い）が小さい．そのため，性能を向上させるために大量の学習データと膨大な計算量が必要がある．ViTの派生モデルとしてSwin Transformerがあり，Swinはself-attentionの処理の範囲を制限するWindowを採用し，計算量を削減し，ImageNet-1kでも精度向上した．しかし，Windowに制限したことによって大局的な認識を失うことになった．
近傍バイアスと大局的な認識，計算量の削減でImageNe-1kでの高精度を目指す．
MaxViTはMBConv，Block Attention，Grid Attentionのモジュールを使用して，目的を達成しようとする．




# モデル構造
Swinのような4ステージの階層型構造で，最初の処理（Stem)に畳み込みを採用（[パッチ特徴量をConvにする目的](https://qiita.com/wakanomi/items/616eeba23a9c615616d9)）する．
MaxViT　BlockはMBConv，Block Attention，Grid Attentionで構成され，ステージ間のダウンサンプリングは，MBConvのDepthwise Convのストライドを2に設定する．


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457775/2bbe8403-a875-ec51-ac50-7620136dc720.png)


## MBConv
MBConvはその後に行われる処理で大局的な認識を行うので，近傍バイアスの獲得のために畳み込み処理を行う．

### SE（Squeeze and Excitation Networks）
空間情報を圧縮（Excitation）して，$1 \times 1 \times C$の特徴マップにGAP（Global Average Pooling）で変換し，2層のNN（ニューラルネットワーク）を通して，各チャンネルの特徴マップの重みとする．最後に圧縮する前の特徴マップに重み付けする．
また，DepthwiseConvはconditional position encoding (CPE)とのような役割をするため，位置埋め込みを行なっていない．


![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3235353534302f30396636376437642d313266642d303861322d396362312d3432666664663430336536392e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457775/51590bb3-f3b3-7436-7200-584865473f1d.png)

[画像引用](https://arxiv.org/abs/1709.01507)








## Block AttentionとGrid Attention
Block AttentionはSwinのように特徴マップを4つに分割し，受容野を制限して各色の範囲でSAの処理を行い，近傍バイアスと計算量の削減する．Grid Attentionは特徴マップの4分割の方法を工夫して広域の情報を捉えるように各色の範囲でSAの処理をする．




![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457775/b1bbdd2a-bc84-3123-58e5-54184bc0c939.png)





### 認識受容野
MaxViTの受容野を下図で示し，緑の広い受容野と青の制限された受容野の範囲を考慮する．近傍バイアスを持ちながら大局的な認識も行う．また，受容野がスカスカなので，計算量が削減される．


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457775/61f0e68f-3b50-6266-bf8c-123b26a92bfd.png)

[画像引用](https://www.researchgate.net/figure/Comparison-of-Axial-attention-and-our-proposed-Multi-Axis-attention_fig2_359729147)



# 実験

## 画像分類

ImageNet-1kではパラメータや計算量を削減して従来手法を上回る性能になった．


![スクリーンショット 2023-05-30 7.08.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457775/d2ca8d0d-f6f0-3844-ae29-b82c2782a39c.png)


また，ImageNet-21kのデータセットも従来手法を上回る．

![スクリーンショット 2023-05-30 7.08.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457775/76b72935-9730-67c7-a173-12ee9042812b.png)



## MaxViT　Blockの3つのモジュールの順番
MaxViT　BlockはMBConv，Block Attention，Grid Attentionで構成されており，畳み込み，ローカルなSA，グローバルなSAで，ステージの後半につれてグローバルな認識にすると精度が向上する．


![スクリーンショット 2023-05-30 7.59.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457775/57e44dd2-42fe-fd92-c85a-8f93dbb8a232.png)


## 考察

この傾向は[ステージの前半に畳み込み，後半にSAが重要な役割](https://qiita.com/wakanomi/items/ea820aea2ebeb50898e4)と一致している．CNNのカーネルサイズ問題があるように，SAの受容野と畳み込みの受容野で様々な受容野で認識して問題を解消し，精度が向上するのかなと思う．


## まとめ
今回は，ローカルとグローバルの両方でSelf-AttentionするViT【MaxViT: Multi-Axis Vision Transformer】について解説した．MaxViT　BlockにMBConv，Block Attention，Grid Attentionのモジュールを使用することで性能向上した．