Vortex Pooling
コンテンツ
C.-W. Xie, et al. “Vortex pooling: Improving context representation in semantic segmentation” (2018)
概要
- DeepLab v3のAtrous Spatial Pyramid Pooling(ASPP) moduleを改良したVortex Pooling moduleを提案し、Semantic Segmentationで精度が向上することを確認
論文情報
リンク
著者
Nanjing University(南京大学)のグループ
内容
- 単純な畳み込み層では実効的なreceptive fieldが狭く、Globalなコンテキストが有効に活用できない
- そこで、DeepLabのAtrous Spatial Pyramid Pooling (ASPP) moduleやSpatial Pyramid Pooling moduleのような複数のスケールの特徴量を合体させる手法が提案されてきた
- ASPP moduleとPSP moduleを合体させたようなVortex Poolingを提案した
- DeepLab v3のASPP moduleに比べて、少し精度が上がり、少し処理時間が増えた
先行研究: Atrous Spatial Pyramid Pooling (ASPP)
- 異なるdilation(例えば1, 12, 24, 36)のAtrous conv (=Dilated conv)をConcateすることで、様々なスケールの特徴量を利用する(下図)
- DeepLab v3のASPPでは、4つのdilation convに加えて、global average poolingもconcateする
先行研究: Spatial Pyramid Pooling
- 入力特徴量の解像度に依らず、固定のBox数のAverage Poolingを行い、concateする(下図)
Vortex Pooling
- ASPPでは、入力特徴量のほんの一部のpixelしか出力に寄与しない
- そこで、dilated convをする前にkxk average poolingをすることで、寄与するpixelを増やす(下左図: Module A)
- 大きいdilationのdilated convほどGlobalな情報なので、average poolingのカーネルを大きくする(下右図: Module B = Vortex Pooling)
- Module Bの方がModule Aより精度が高くなり、工夫して計算することで計算量も減らせる
- ave poolingの後に3x3 convを行っているが、これが1x1 convならSpatial Pyramid Poolingっぽくなる(厳密には、Spatial Pyramid Poolingはbilinear補間するのに対し、Vortex poolingは全部真面目に計算するので別物)
- Module B (Vortex Pooling)は、average poolingのカーネルを$k, k^2, k^3$のようなサイズに設定することで、下図のように小さいカーネルのaverage poolingの計算結果を元に次に大きいカーネルのaverage poolingの計算を行える。
- DeepLab v3と同様に、Global Average Poolingと合わせてConcateする
感想
- ASPPに比べてけっこう計算量が増えそう。ただ、Dilated convは演算量が少なくてもキャッシュ効率が悪いので、演算量ほど差はないかも知れない。
- 処理時間は、ネットワーク全体のものしか書かれていないが、ASPP vs Vortex pooingのところだけだとどれくらいの比なのか気になった
- Module B (Vortex Pooling)の入力は前段のネットワークで計算した特徴量だが、それを画像だと思うとImage Pyramidに似ている
- 厳密にはカーネルが大きくなっても解像度は小さくならないので、Image Pyramidとは少し違う
- Spatial Pyramid Poolingの方がまんまImage Pyramid
- そう考えると、ASPPはlow-pass filterをしてないImage Pyramidみたいになっている。ASPPはエイリアスが発生しそう。
- なぜ、Vortex Poolingって名前?