論文へのリンク
[1706.05587] Rethinking Atrous Convolution for Semantic Image Segmentation
DeepLabV3
[1802.02611] Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
DeepLabV3+
筆者・所属機関
Liang-Chieh Chen(Google), Yukun Zhu(Google), George Papandreou(Google), Florian Schroff(Google), and Hartwig Adam(Google)
投稿日付
2017/6/17 (DeepLabV3)
2018/2/7 (DeepLabV3+)
概要(一言まとめ)
Image Segmentationのサーベイ論文 - からログで性能のよかったとされているGoogle製のモデル「DeepLabV3」と「DeepLabV3+」の論文
手法の概要
DeepLabV3
恐らく、Atrous convolutionとSpatial pyramid poolingの組み合わせがキモなのではないかと思う。この組み合わせはASPP(Atrous Spatial Pyramid Pooling)モジュールと呼ばれて初代のDeepLabからあるもよう。
Atrouns convolutionは以下のようなちょっと変わったCNN。
いまいちrateの定義が使われている場所によって数字が異なり分からない…dilation rateでスキップしているピクセルを表していると思うのだけど…
最初に、このAtrouns convolutionを直列(カスケード)につないでrateとstrideを調整しようとしたのが以下のモデル。
でも、これだとセマンティックセグメンテーションにはストライドが悪さしてよくないらしい。
なので、以下のように並列化(パラレル)したモデルにしている。
ここで、poolingをしているのは、Actrouns convolutionのフィルターがrateを大きくしていくとフィルタの問題点に対する対策らしい。ここがDeepLabV3での改善点のポイントのようだけど、ちょっと理解しきれなかった。
DeepLabV3+
セマンティックセグメンテーションは、主にSPP(Spatial pyramid pooling)モジュールか、エンコーダー・デコーダー構造が使われて、DeepLabV3は、前者に属していたけどDeepLabV3+ではこの両方を組み合わせて性能改善したぜ(エンコーダー・デコーダー構造を取り入れた)というのがポイントの模様。
あとは、Deep learning with depthwise separable convolutionsに、Xceptionを取り入れたらしい(こっちは、他の多くの最新のモデルで取り入れられているのを真似した様子)
コメント
かなり色々な工夫をして精度を高めていることが分かった。よくこんなことを思いつくなという感じはするが、ベースとなるアイディア(ASPP)の他は、他の手法をうまく組み合わせたら性能良くなったという感もある。やはり発想には、うまく組み合わせるセンスに加えて、知識のベースラインが重要だなと実感した。
関連情報
ディープラーニングにおけるセマンティックセグメンテーションのガイド2017年版 | POSTD
GitHub - mrgloom/awesome-semantic-segmentation: awesome-semantic-segmentation
セマンティック・セグメンテーションの基礎 MathWorks(pdf)
DeepLab v3+でオリジナルデータを学習してセグメンテーションできるようにする - Qiita
GitHub - jfzhang95/pytorch-deeplab-xception: DeepLab v3+ model in PyTorch. Support different backbones.
「DeepLabV3+」のPyTorch実装。少し試したけど、なかなか良さそう
Deeplabv3-ResNet101 | PyTorch
「DeepLabV3」のPyTorchオフィシャル実装。Google Colabページへのリンクもあり
物体検出、セグメンテーションをMask R-CNNで理解してみる (初心者) - Qiita
「画像認識をやってみました」の次にすること - Sigfossブログ
Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation(ECCV2018) - takuroooのブログ
Google Developers Japan: TensorFlow での DeepLab によるセマンティック イメージ セグメンテーション
【AI自動運転】Deeplabv3+を用いたセマンティックセグメンテーション | ALIS
Semantic segmentation 振り返り - Speaker Deck
次に読む論文
[1610.02357] Xception: Deep Learning with Depthwise Separable Convolutions
depthwise separable convolutionsというのが、恐らくbackboneモデルのことだと思うが、あんまり分かってないので
自分なりのアウトプット
気になった英単語・英語表現
- atrous 専門用語(atrouns畳み込み)。関連情報参照
- backbone 背骨だが、ここでは専門用語として使っている。関連情報参照