[論文メモ] MaxViT: Multi-Axis Vision Transformer

arxiv.org

Google Research

入力画像サイズにスケーラブルなVision Transformer(ViT)の提案

ViTはモデルの能力が高く過学習しやすい。それを抑えるため大量の学習データを必要とした。
Swin Transformerはwindow-baseにしてうまく制御したが、window-baseにしたことで大域へのattentionが失われた。
global attentionとlocal attentionの相互作用のためには高解像度(階層ネットワークの場合は入力に近い層)でglobal attentionを行う必要があるがattentionは N^2の計算コストがかかる。どうにか軽量なglobal attentionをしたいというお気持ち。

手法

localとglobalのインタラクションを可能にするmulti-axis self-attention(Max-SA)をつかったMaxViTを提案。
MaxViTのアーキテクチャの全体像は図2参照。
f:id:Ninhydrin:20220406095459p:plain

はじめにConvしたあと(Stem)は基本Max-SAブロックを積むだけ。
Max-SAブロックはMBConv、BlockAttention、GridAttentionの3つのモジュールからなる。

MBConvはMobileNetv2で提案されたInverted Residual Block。Conv1x1でDepthwiseConv3x3とSqueeze-and-Excitationモジュールを挟んだもの。
MBConvを前に入れたのは、入れたほうが汎化性能が高くなり学習もしやすくなったから(実験による観測)。
またDepthwiseConvにはconditional position encoding (CPE)とみなすことができるので明示的なPEは入れてない。

メインはBlockAttention、GridAttention。
BlockAttentionがlocalなattentionでGridAttentionがglobalなattentionを担う。

まずBlockAttentionについて
画像 X=\mathbb{R}^{H \times W \times C}を普通のViTなら HWのシーケンスとしてattentionを行うが、BlockAttentionでは (\frac{H}{P} \times \frac{W}{P}, P\times P, C)にreshapeして P \times Pの次元、つまり P \times Pのwindowに分割してそのwindow内でattentionを行う。これはSwin Transformerと同じ。
window内でのattentionになるのでlocal。

globalなattentionを担うGridAttentionについて。
画像 X (G \times G, \frac{H}{G} \times \frac{W}{G}, C)にreshapeして G \times Gの次元でattentionを行う。
これ故にMulti axis。

BlockAttentionとGridAttentionを図にしたのが図3。
f:id:Ninhydrin:20220407091923p:plain

Swin Transformerのattention部分の片方をGridAttentionで置き換えても計算量やパラメータは一切変わらないがglobalとのインタラクションが可能になる。
GridAttentionの実装も全然大変ではない。

例のごとくサイズ違いのモデルを複数用意(表1)
f:id:Ninhydrin:20220407093021p:plain

実験・結果

データセットはImageNet-1K(1.28M)、ImageNet-21K (12.7M)、JFT (300M)。細かい設定は論文参照。
f:id:Ninhydrin:20220407093134p:plain

パラメータや計算量でのスケールも良い。
f:id:Ninhydrin:20220407093621p:plain

ImageNet-21Kの結果。
f:id:Ninhydrin:20220407093221p:plain

MaxViTをバックボーンに使ったCOCO2017のObject Detectionの結果。
f:id:Ninhydrin:20220407093822p:plain

Ablations。結構色々試してる。GridAttentionの恩恵よりMBConvの恩恵のが大きく見える。
f:id:Ninhydrin:20220407094001p:plain

各階層でのブロック数のレイアウトをSwin Transformerに合わせて比較。MaxViTのレイアウトのが良い。
f:id:Ninhydrin:20220407094309p:plain

所感

attentionの次元を変えるのはたしかに良さそう。DilatedConvでよくない?と言われればそのとおりだが。
ぶっちゃけPixel Shufflerの逆操作。
気持ち的にglobal attentionに興味があったが、実験の結果的にはMBConvの結果が興味深かった。