takuroooのブログ

勉強したこととか

Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation(ECCV2018)

SemanticSegmention関連の論文メモ
図は論文からの引用

GoogleのDeepLabv3の進化版であるDeepLabv3の論文。

目次

概要

オブジェクト境界のセグメンテーション結果を強化するためにDeepLabv3にシンプルなデコーダモジュールを追加したDeepLabv3+を提案。

論文リンク

https://arxiv.org/pdf/1802.02611v3.pdf

著者

  • Google Inc
    • Liang-Chieh Chen
    • Yukun Zhu
    • George Papandreou
    • Florian Schroff
    • Hartwig Adam

提案手法

f:id:takuroooooo:20190504210142p:plain

DeepLabv3からの変更点

  • DeepLabv3のベースネットワークをResNetからベースのネットワーックを改良版Xceptionに変更。
  • より鮮明なセグメンテーションを得るためにDeepLabv3にデコーダモジュール追加。
  • 計算量とパラメータ数を削減するためにDepthwise separable convolution をASPP(Atrous Spatial Pyramid Pooling)とデコーダに適用。

Atrous Spatial Pyramid Pooling

初代DeepLabからあるモジュールだけど少し補足。
f:id:takuroooooo:20190504213140p:plain

  • SPPNetSpatial pyramid poolingをAtrous convolutionで実行
  • 異なるrateでAtrous convolutionを実行することでマルチスケールのコンテキスト情報をキャプチャ。
  • PSPNetではこれをAtrous convolutionではなくPooling(Max/Avg)で処理していた。
  • Atrous convolutionのrateを大きくしていくとフィルタの有効な重みが小さくなる問題がある。(下記Figure4参照 図はDeepLabv3の論文から引用。
  • この問題に対応するためにImage PoolingをDeepLabv3で導入。Image Poolingではグローバルなコンテキスト情報をキャプチャするために、Global Average Pooling + 1x1 convを使う。
  • DeepLabv3+ではAtrous Spatial Pyramid PoolingにDepthwise separable convolutionを導入した。

f:id:takuroooooo:20190504214730p:plain

改良版Xception

f:id:takuroooooo:20190504215442p:plain

改良点
1. レイヤー数を増加
2. max pooling をDepthwise separable convolutionに置き換え。
3. batch normalizationを追加。

結果

f:id:takuroooooo:20190504220029p:plain
PSPNetよりもmIOUが高い。

実装

github.com

参考リンク

developers-jp.googleblog.com