[論文メモ] Masked-attention Mask Transformer for Universal Image Segmentation
panoptic・instance・semantic segmentation用のMasked-attention Mask Transformer(Mask2Former)を提案。
手法
Mask2Formerは3つのコンポーネントから成る。
1) 特徴量を抽出するバックボーン
2) 低解像度の特徴量を高解像にするため徐々にupsamplingするpixel decoder
3) 最終的な予測を行うTransformer Decoder
この中でもTransformer Decoderの改良がメイン。
Masked attention
Transformer-based modelは収束が遅いといわれており、cross-attentionの学習に
彼らは局所的な特徴はクエリ特徴の更新で十分で、コンテキスト情報はself-attentionで吸収出来ると仮定。
一般的なcross-attentionは以下。は層インデックス、は番目の層の特徴量でがシーケンス長、が特徴量の次元。あとはよしなに。
提案するmasked attentionは以下の式(2)。
は以下の式(3)で定義されるattentionマスク。
は()番目(1つ前)のdecoder layerから予測したバイナリマスクで、各座標()毎。
となので注意。
またはから予測するらしいが、は入力画像に非依存な気がするのだがどういうこと?
High-resolution features
高解像度の特徴で処理したほうが精度は良くなるが計算コスト等の問題がある。
そこでpixel decoderにfeature pyramidの戦略を導入する。
pixel decoderの各解像度の特徴量には正弦波positional encoding()と学習可能な解像度毎のembbeding を加算する。
は層でのheightとwidth。
Optimization improvements
一般的なTransformer decoderはself-attention(SA)、cross-attention(CA)、feed-forward network(NNF)の3つから構成される。
このdecoderに対して3つの変更を加える
1つ目はSAとCAの入れ替え。
一番はじめのSAはpixel decoderからの特徴が入ってきておらずSAの意味がない。
なので一般的にはSA->CAの順番だがこれをCA->SAにする。
2つ目は一番はじめのクエリ特徴 を学習可能パラメータにする。
3つ目はdropoutの削除。試してみてdropoutは必要なくパフォーマンスが下がることがわかった。
Improving training efficiency
高解像度のマスクを扱うとメモリ消費が大きい(MaskFormerなんかは画像1枚でGPUメモリを32GB消費する)。
PointRendという手法ではセグメンテーションのマスクのlossを全体ではなくK個のランダムサンプリングした点で行うことでメモリ消費を抑えており、それに倣った方法で18~6GBの消費に抑えた。
実験・結果
詳しくは論文参照。
所感
実装はdetectron2らしく誰でも触れそう。
このあとに出た「Mask2Former for Video Instance Segmentation」の事前知識として読んだ。
NLPでのattention-maskとは意味は異なるが、画像でもマスクしてattentionするというのは面白い発想。
ただ、そのマスクがどれだけ信頼できるのかなどが少々気になる。masked-attention自体は効果があることがAblationで示されてはいる。
をから予測するのは謎。解像度も小さそうだし、画像非依存なら別にマスクいらないのでは?