[論文メモ] Panoptic SegFormer

arxiv.org

transformerを使ってPanoptic Segmentation(PSと略す)を行った論文。テクニカルレポート。
PAはSemantic Segmentation(画像中の全てのピクセルをクラス分類. SSと略す)とInstance Segmentation(物体毎に領域分割しインスタンスを区別する. ISと略す)の複合。

PSでは画像内の物体をthingsとstuffに分ける。
Things ) 人や車など可算な物体でユニークなidで他の同じ種類の物体と区別できる
Stuff ) 空や雪など不可算な物体でidで区別できない

このthingsとstuffは予測する際にも影響する。PAの既存手法はthings -> IS、stuff -> SSとPAをSSとISに分離して解くことが多い。
だが、これだとモデルが複雑になりアーティファクト等も起こる。
最近ではFCN構造でtop-downとbottom-upを組み合わせる手法もある。

またViT系の物体検出としてDETRがあり、これはクエリ特徴がRoI特徴のような役割をするらしい。

この論文ではViTを使ったend-to-endのPAフレームワーク、Panoptic SegFormerを提案する。
1) thingsもstuffも均一にするためにstuffは単一のインスタンスIDを持つクエリを設定
2) location decoderはセグメンテーションの質を高めるためthings とstuffのバランスを取る
3) マスク毎のpost processでthigsとstuffのセグメンテーションを結合する
f:id:Ninhydrin:20210914094701p:plain

手法

アーキテクチャの全体像は図2を参照。
バックボーンのマルチスケールの特徴をtransformer encoderに通して各解像度の特徴を得る。それらをFCに通して256次元に揃えflattenして連結し長いシーケンスとする。transformerに通し、その出力をlocation decoderとmask decoderに入れる。
location decoderは物体の位置予測、mask decoderはlocation decoderの出力も受け取り最終的に得たいマスクの生成とクラス分類を行う。

f:id:Ninhydrin:20210910094741p:plain

Transformer Encoder

セグメンテーションタスクにおいて高解像・マルチスケール特徴は重要。
でもmulti-head attentionはコストが高く、既存手法では低解像の特徴で使われているがこれではセグメンテーションのパフォーマンスに影響する。
そこでdeformable attention layer(DAL)を導入。

Location Decoder

位置情報はPSにおいてthingsのidを割り当てる時に重要になる。そこでthinsgとstuffの位置情報を学習可能なクエリにするlocation decoderを作成。
ランダムに初期化されたN個のクエリとtransformer encoderで作られた特徴から位置を認識したN個のクエリを出力。
学習時はMLPヘッドをつけて物体の中心位置とスケールの予測を行いlossを取る。あくまで学習時に使うヘッドなので予測のとき使用せず、セグメンテーションマスクの予測も必要ない。

Mask Decoder

アーキテクチャは図3を参照。
Mask DecoderはLocation Decoderの出力をQuery、Transformer Encoderの出力をKeyとValueとして受け取り物体のマスクとクラス分類を行う。
decoderの最後の出力 \displaystyle Q_{refine} \in \mathbb{R}^{N \times 256}にFCレイヤーをつけてクラス分類を行う。Nはクエリ数。
マスクの予測では、各解像度のAttention map(図3のA)を最大解像度に合わせてアップサンプリング+ concatし1x1の畳み込みで予測する。
マスク予測では完全なattention mapが必要なのでDALではなく一般的なmulti-head attentionを採用。
f:id:Ninhydrin:20210914090559p:plain

Loss Function

よくある感じの重み付き和
 L= \lambda_{cls}L_{cls} + \lambda_{seg}L_{seg} + \lambda_{loc}L_{loc}
 L_{cls}ではFocal Lossを導入。 L_{loc}は式4参照。物体がある時だけ中心座標( \hat{u}_{\sigma(i)})とスケール( \hat{v}_{\sigma(i)})についてL1 lossをとる( f_c(m_i) f_s(m_i)は中心座標とスケールのラベル、 m_iはターゲットのマスク)。
f:id:Ninhydrin:20210914092531p:plain

Mask-Wise Inference

PSでは各ピクセルにクラスラベルとインスタンスidを割り当てる。
一般的なのはヒューリスティックな手法でピクセル毎にargmaxして割り当てる方法だが、外れ値的なピクセルでノイズのある結果になってしまう。
そこでピクセルレベルではなくマスクレベルでのヒューリスティック処理でオーバーラップの無い出力を得る。アルゴリズムはAlgorithm1を参照。
確信度(s)順にソートして、確信度が一定値以下は破棄。あとはマスクとidを割り当てる。m[i]&(SemMsk > 0)でオーバーラップ除去。これはSemMsk==0の間違いでは?SemMsk>0だと出力がオーバーラップのピクセルだけになりそう。
f:id:Ninhydrin:20210914093550p:plain

実験

実験は省略
f:id:Ninhydrin:20210914094543p:plain
f:id:Ninhydrin:20210914094604p:plain

所感

Panoptic Segmentationというものを知らなかった。
なので手法としてのデファクトスタンダードも知らず、既存手法の問題点を聞いても正直なるほどとしかならなかった。
マルチスケールの特徴をTransformer Encoderに通して得られたAttention Mapをconcatとするのはマルチスケール+transformerとしては良さそう。
マルチスケールの特徴を全て連結してTransformer Encoderに通してマルチスケール間でattentionを取るのも面白い。各解像度で協調できそう。
attention mapからマスクを生成しているはなるほどといった感じ。確かにクラス分類などにも使うので物体位置に対して注目してそう。