[論文メモ] MaxViT: Multi-Axis Vision Transformer
Google Research
入力画像サイズにスケーラブルなVision Transformer(ViT)の提案
ViTはモデルの能力が高く過学習しやすい。それを抑えるため大量の学習データを必要とした。
Swin Transformerはwindow-baseにしてうまく制御したが、window-baseにしたことで大域へのattentionが失われた。
global attentionとlocal attentionの相互作用のためには高解像度(階層ネットワークの場合は入力に近い層)でglobal attentionを行う必要があるがattentionはの計算コストがかかる。どうにか軽量なglobal attentionをしたいというお気持ち。
手法
localとglobalのインタラクションを可能にするmulti-axis self-attention(Max-SA)をつかったMaxViTを提案。
MaxViTのアーキテクチャの全体像は図2参照。
はじめに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について
画像を普通のViTならのシーケンスとしてattentionを行うが、BlockAttentionではにreshapeしての次元、つまりのwindowに分割してそのwindow内でattentionを行う。これはSwin Transformerと同じ。
window内でのattentionになるのでlocal。
globalなattentionを担うGridAttentionについて。
画像をにreshapeしての次元でattentionを行う。
これ故にMulti axis。
BlockAttentionとGridAttentionを図にしたのが図3。
Swin Transformerのattention部分の片方をGridAttentionで置き換えても計算量やパラメータは一切変わらないがglobalとのインタラクションが可能になる。
GridAttentionの実装も全然大変ではない。
例のごとくサイズ違いのモデルを複数用意(表1)
実験・結果
データセットはImageNet-1K(1.28M)、ImageNet-21K (12.7M)、JFT (300M)。細かい設定は論文参照。
パラメータや計算量でのスケールも良い。
ImageNet-21Kの結果。
MaxViTをバックボーンに使ったCOCO2017のObject Detectionの結果。
Ablations。結構色々試してる。GridAttentionの恩恵よりMBConvの恩恵のが大きく見える。
各階層でのブロック数のレイアウトをSwin Transformerに合わせて比較。MaxViTのレイアウトのが良い。
所感
attentionの次元を変えるのはたしかに良さそう。DilatedConvでよくない?と言われればそのとおりだが。
ぶっちゃけPixel Shufflerの逆操作。
気持ち的にglobal attentionに興味があったが、実験の結果的にはMBConvの結果が興味深かった。