Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Semantic segmentation 振り返り

D7ef5177ffe7ddec8dc5e11547963f99?s=47 Motoki Kimura
September 19, 2019

Semantic segmentation 振り返り

D7ef5177ffe7ddec8dc5e11547963f99?s=128

Motoki Kimura

September 19, 2019
Tweet

Transcript

  1. Semantic segmentation 振り返り Motoki Kimura AI本部 AIシステム部 AI研究開発第三グループ 株式会社ディー・エヌ・エー

  2. Semantic segmentation • 画像の各画素を、あらかじめ定められたK個のクラスに分類するタスク • 下図 (b) の例では、車載カメラの画像を、自動車, 歩行者, 信号機,

    道路, 歩道, … などあらかじ め定められたクラスに各画素を分類している • (発展的なタスクとして、instance segmentation, panoptic segmentation がある) 2 画像は[1]より引用
  3. Evaluation metrics • Mean IoUが使われることが多い • IoU = Intersection over

    Union • Mean IoU (=mIoU) は、各クラスで独立に計算した IoU を、全クラスで平均したもの 3 GT region Predicted region GT region Predicted region IoU =
  4. CNN を使った semantic segmentation とその課題 CNN: convolutionとdown sampling (pooling)を繰り返しながら、特徴を抽出 •

    深い層にいくにつれて receptive field (見る範囲) が広がり、高レベルな特徴が抽出される • 逆に、深い層にいくにつれて解像度が失われていく CNNを使ったsegmentationの課題: receptive fieldと解像度を、どう両立するか? 4 画像は[3]より引用
  5. Fully Convolutional Networks [2] (CVPR 2015) • 全結合層 (fc層) は、同じ入力領域をカバーする畳み込み層として再解釈できる

    • fc層の”畳み込み層化”を行うことで、画像識別のネットワーク (e.g., VGG16) を、粗いヒートマッ プを出力するモデル (FCN: Fully Convolutional Network) に再構築できる • このような再構築によって得られるヒートマップは解像度が非常に低い 5 参考: https://github.com/BVLC/caffe/blob/master/examples/net_surgery.ipynb 画像は[2]より引用
  6. Fully Convolutional Networks [2] (CVPR 2015) • FCN-32s: 再構築したFCNに対して、ピクセルレベルのラベルを教師として再学習を行う •

    FCN-16s, FCN-8s: 入力側に近い解像度の高い特徴マップと、deconvolution (次ページで説 明) によって得られたupsample後の特徴マップを加算 (skip connection) することで、物体の 輪郭など画像細部の復元を図る 6 : Deconvolution : Bilinear upsampling : Skip connection 16× 16× 8× 32× 8× 画像は[2]より引用
  7. Deconvolution • 入力特徴マップ上のある1ピクセルに対して、deconvolutionフィルタの各画素値 (w×h 個の学 習パラメータ) との積を計算する • この計算を入力特徴マップ上の各ピクセル上で行い、得られた積を出力特徴マップ上に 一定間

    隔 (=output stride) で順番に並べていく • output stride の倍率で、特徴マップが拡大される 7 k1 k2 k3 k4 k5 k6 k7 k8 k9 x1 k1x1 k2x1 k3x1 k4x1 k5x1 k6x1 k7x1 k8x1 k9x1 k1 k2 k3 k4 k5 k6 k7 k8 k9 x1 x2 k1x2 k2x2 k3x2 k4x2 k5x2 k6x2 k7x2 k8x2 k9x2 output stride
  8. Fully Convolutional Networks の問題点 • 少数のdeconvolution (+skip connection) では表現力に限界があり、(物体の境界などに現 れる)

    複雑な形状や細部の形状が復元できない • Deconvolution / convolution レイヤを重ねたdeepなネットワーク (decoder) を使って、画像 細部の復元を学習させる → Encoder Decoder Networks 8
  9. Deconvolution Network [3] (ICCV 2015) • Convolution / pooling で構成されたencoder

    (FCN化したVGG16) と、deconvolution / unpooling で構成されたdecoderを、対称に接続したネットワーク • Encoder側のpoolingレイヤのindex値を、対となるdecoder側のunpoolingレイヤに渡すこと で、画像の細部を効率よく復元している (skip connectionよりもメモリ効率が良い) 9 画像は[3]より引用
  10. Deconvolution Network [3] (ICCV 2015) • Decoder側の特徴マップのactivationを確認すると、層を重ねるにしたがって少しずつ形状が復 元されていることがわかる 10 14×14

    deconv. layer 28×28 unpooling layer 28×28 deconv. layer 56×56 unpooling layer input image 112×112 unpooling layer 112×112 deconv. layer 224×224 unpooling layer 224×224 deconv. layer 56×56 deconv. layer 画像は[3]より引用
  11. Deconvolution Network [3] (ICCV 2015) • FCNでは難しかった細部の形状も復元可能 • Receptive fieldもFCNより大きく、inconsistentな予測が改善されている

    11 Qualitative Comparison on PASCAL VOC 2012 val set 画像は[3]より引用
  12. SegNet [4] (TPAMI 2017) • DeconvNetと同様、VGG16をベースとしたencoder-decoder network • Pooling indexを、decoder側のunpoolingレイヤで参照するのもDeconvNetと同じ

    • (VGG16のfc層に相当する) pool5以降のconv層を削除することで、DeconvNetよりもパラメー タ数・メモリ使用量を大きく削減 12 画像は[4]より引用
  13. SegNet [4] (TPAMI 2017) • 推論速度、メモリ使用量、モデルサイズのいずれもDeconvNetから改善 • 比較的小さいモデルとして扱われており、より軽量なモデルとのベンチマークに使われることも多 い 13

    画像は[4]より引用
  14. SegNet [4] (TPAMI 2017) • mIoU はDeconvNetと同等だが、パラメータの少ないSegNetの方が短時間で学習できる • ただし、クラス境界の位置精度 (BF)

    は、DeconvNetに劣る 14 Qualitative & Quantitative Comparison on CamVid test set 画像は[4]より引用
  15. U-Net [5] (MICCAI 2015) • Skip connectionを採用したencoder-decoder network • Encoder側の特徴マップをdecoder側の特徴マップにconcat

    • Pooling indexを渡すよりメモリ効率は悪いが、decoder側で復元に使える情報は増える • コンペにもU-Netベースのモデルがよく登場している印象 15 画像は[5]より引用
  16. • U-Netのアーキテクチャにおいて encoder, decoder のそれぞれにdense blockを使用 Fully Convolutional DenseNet [6]

    (CVPR 2017 Workshop) 16 Architecture of FC-DenseNet FC-DenseNet103 画像は[6]より引用
  17. Fully Convolutional DenseNet [6] (CVPR 2017 Workshop) • CamVidデータセットにおいて当時のSoTA •

    他のモデルに比べてパラメータ数が少ないが、精度が高い 17 画像は[6]より引用
  18. RefineNet [7] (CVPR 2017) • Encoderは ResNet101 or ResNet152 •

    Decoderは1/4, 1/8, 1/16, 1/32サイズの特徴マップをencoderから受け取り (skip connection) RefineNet blockを用いて特徴マップをupsampleしていく • Decoderの出力は1/4サイズなので、bilinear upsampleによって元の画像サイズまで拡大 18 画像は[7]より引用
  19. RefineNet [7] (CVPR 2017) • RefineNet blockは任意の数の特徴マップを入力できるように一般化されている • Chained Residual

    Poolingでは、5×5のpoolingレイヤを階層的に行い、大域的な特徴を効率 的に抽出(stride=1 なので、poolingによって特徴マップのサイズは変わらない) 19 画像は[7]より引用
  20. RefineNet [7] (CVPR 2017) ResNet50 on NYUDv2/PersonPartsでは、Chained Residual Poolingによって精度が向上 PASCAL

    VOC 2012で当時のSoTA 20 画像は[7]より引用
  21. Decoder (deconvolution) の必要性の再考 • これまでの流れ • Encoder側の縮小でreceptive fieldが拡大できるが、解像度が失われてしまう • Decoderとskip

    connectionを組み合わせて、解像度を回復 • Encoder側で特徴マップの縮小を行うことなくreceptive fieldを拡大できれば、decoderは必要 ないのでは? → Dilated convolution 21
  22. Dilated convolution (atrous convolution) • フィルタを一定間隔で配置して、疎に畳み込む • stride=1 であれば、解像度を落とすことなくreceptive fieldを拡大できる

    • パラメータ数・計算量は通常のconvolutionと同じ 22 2D dilated conv. 1D dilated conv. dilation factor : フィルタの配置間隔を決めるハイパラ 画像は[8]より引用 画像は以下より引用 https://github.com/vdumoulin/conv_arithmetic
  23. DeepLab [8] (ICLR 2015) • FCN化したVGG16において、pool4, pool5 の2つのpoolingを削除し、解像度を1/8に保つ • pool4以降のconvはdilation=2,

    pool5以降のconvはdilation=4 のdilated convにそれぞれ 置き換えることで、receptive fieldをpoolingの削除前と同等に保つ • 後処理として、CRF (Conditional Random Field) による物体境界の高精度化を行う 23 3x3 conv, 64 3x3 conv, 64 3x3 conv, 128 3x3 conv, 128 3x3 conv, 256 3x3 conv, 256 3x3 conv, 256 3x3 conv, 512 3x3 conv, 512 3x3 conv, 512 3x3 conv, 512 3x3 conv, 512 3x3 conv, 512 7x7 conv, 4096 1x1 conv, 4096 1x1 conv, K pool x1/2 pool x1/2 pool x1/2 1× 2× 4× 8× 8× 8× pool x1/2 pool x1/2 dilation=2 dilation=4 input 画像は[8]より引用
  24. DeepLab v2 [9] (TPAMI 2017) • 異なるdilation factorを持つdilated convをパラレルに接続することで、マルチスケールで特徴 を抽出できる

    ASPP (Atrous Spatial Pyramid Pooling) を提案 • pool4とpool5を削除し、pool5以降 (前のページで緑色の箇所) をASPPに置き換える • v1と同様CRFによる高精度化を行う • EncoderはVGG16とResNet101の両方で実験している 24 ASPP (Atrous Spatial Pyramid Pooling) module ASPPによるマルチスケール特徴抽出 画像は[9]より引用
  25. DeepLab v2 [9] (TPAMI 2017) • PASCAL VOC 2012での評価では、RefineNet-ResNet101よりも2.7ポイント程度劣る •

    Cityscapesでの評価では、FCN-8s, SegNetよりも精度が高い(ただし、encoderをVGG16に 統一すると 65.94%@val-set となり、差は小さくなる) 25 画像は[9]より引用
  26. DeepLab v3 [10] (arXiv 2017) • v2で提案したASPPに、globalな特徴を抽出するimage pooling (= global

    average pooling + 1×1 conv + upsample) ブランチを追加 • EncoderをResNet50/101に変更(性能が向上したため、CRFによる後処理は削除) • block3以降でstride=1に固定することで特徴マップの解像度を1/16に保ち、block4の直後に改 良したASPPを接続 26 画像は[10]より引用
  27. DeepLab v3 [10] (arXiv 2017) • Eval(inference)を行うとき、block2のstrideを2→1と切り替えることで、ネットワークの出力を 1/16→1/8と高解像化することができる • Train時にはbatch

    sizeを稼ぐために出力1/16サイズで学習し、eval時には1/8サイズで推論を 行うことで精度が向上する 27 stride 2→1 8 8 8 画像は[10]より引用
  28. DeepLab v3+ [11] (ECCV 2018) • v3に軽量なdecoderを追加することで、精度を向上 • Decoder側では、encoderの1/4サイズの特徴マップと、ASPPが出力した1/16サイズの特徴 マップとをconcatし、入力画像サイズまでupsample

    • EncoderにXception構造を使用し、さらにASPP, decoderにおいてdepthwise separable convolutionを用いることで、v3の65%まで計算量を削減しつつ、精度を向上 28 4× 4× 16× 1× 画像は[11]より引用
  29. DeepLab v3+ [11] (ECCV 2018) • v3と比べてmIoUが2ポイント程度向上 • Decoderの効果で、細かな形状をより正確に復元できるようになっている 29

    画像は[11]より引用
  30. Dilated convolution の問題点 • 特徴マップが縮小されないので、メモリ効率が悪く計算量も多くなりがち • 特にResNetの場合、解像度1/16, 1/32のレイヤがネットワークの大部分を占めるため、これらの 解像度が1/8になると全体の計算量が大きく増えてしまう •

    例えばResNet101の場合、block4の23×3=69層の計算量は4倍に増え、block5の3×3=9層の 計算量は16倍に増える 30 1/16 1/32 1/8 1/4 画像は[12]より引用
  31. FastFCN [12] (arXiv 2019) • FCNの 1/8, 1/16, 1/32 の3つの解像度の特徴マップを組み合わせ、1/8サイズまで直接

    upsampleする JPU (Joint Pyramid Upsampling)モジュールを提案 • JPUでupsampleされた特徴マップに対して、ASPPなどでマルチスケールの特徴抽出 • Dilated convolutionを用いたモデルとは異なり、深い層は1/32サイズまで特徴マップが縮小さ れるので、メモリも計算量も少なくて済む 31 参考: dilated convを用いたモデル 画像は[12]より引用
  32. FastFCN [12] (arXiv 2019) • JPU内では、3つの特徴マップをconcatし、dilationの異なるdepthwise separable convでマ ルチスケールの特徴抽出を行う •

    1/8サイズの特徴マップをguidanceとして用いることで、1/16サイズの特徴マップをupsampleし ている(同様に、upsampleされた1/16サイズの特徴マップをguidanceとして、1/32サイズの特 徴マップをupsampleしている) 32 画像は[12]より引用
  33. FastFCN [12] (arXiv 2019) • ResNet50に対して、dilated convolutionを使用したモデルとJPUを使用したモデルで比較す ると、JPUの方が精度が高く、推論速度は2倍高速(ResNet101の場合は3倍高速) 33 dilated

    convを 用いたモデル 画像は[12]より引用
  34. FastFCN [12] (arXiv 2019) • Pascal Context datasetにおいて、encoder decoder network

    (RefineNet etc.) および、 dilated convolutionを用いたモデル (DeepLab v2, EncNet, etc.) よりも高い精度 34 画像は[12]より引用
  35. Multi-scale feature fusion • ネットワークのアーキテクチャによらず、semantic segmentationではマルチスケールで特徴を 抽出することが重要 (e.g. Atrous Spatial

    Pyramid Pooling) • 似ているクラスを正確に分類するためには、globalな特徴 (context) が重要 • 反対に、物体の輪郭を正確にsegmentationするには、localな特徴が重要 35
  36. PSPNet [13] (CVPR 2017) • Encoderはdilated convolutionを用いたResNet50 or ResNet101 (出力解像度1/8)

    • ResNetの 1/8サイズの特徴マップに対して、異なるサイズ (1×1, 2×2, 3×3, 6×6) になるよう max poolingを行い、得られたマルチスケールの特徴マップそれぞれを1×1で畳み込むことで チャネル数を削減する (Pyramid Pooling Module) • この特徴マップを1/8サイズまでbilinear upsampleし、元の1/8サイズの特徴マップとconcatす ることで、localな特徴とglobalな特徴の両方を持った特徴マップを得る 36 画像は[13]より引用
  37. EncNet [14] (CVPR 2018) • Encoderはdilated convolutionを用いたResNet50 or ResNet101 (出力解像度1/8)

    • 画像全体のcontextを抽出する Context Encoding Module を提案 • Context Encoding Moduleでは、画像全体の特徴にもとづいてvisual centerを学習し、各 visual centerからの距離によって画像をembeddingする • embeddingよって得られたベクトル (=encoded context) を用いて、特徴マップの各channel を重み付けする 37 画像は[14]より引用
  38. 高速・軽量な semantic segmentation モデル • 車載カメラからの走路認識など、リアルタイムでの推論が求められるケースもある • 下図において、高速な右側の領域に存在するモデル (ENet, ESPNet,

    ICNet)を紹介する 38 Cityscapesデータセットにおける mIoUと推論速度の関係 ESPNet 画像は[17]より引用
  39. ENet [15] (arXiv 2016) • 2層目で1/4のサイズまで特徴マップを縮小することで、全体の計算量を削減 • Encoderの各レイヤはbottleneck構造をしており、内部では異なるカーネルサイズのconvや dilated convが使用されている

    • Encoderよりも浅いdecoderで、元々の解像度までupsample 39 画像は[15]より引用
  40. ENet [15] (arXiv 2016) • モデルサイズ・計算量・推論速度のいずれも、SegNetより優れている 40 画像は[15]より引用

  41. ENet [15] (arXiv 2016) • Cityscapesデータセットでは、精度でもSegNetを上回る 41 画像は[15]より引用

  42. ESPNet [16] (ECCV 2018) • マルチスケールの特徴抽出を効率的に行うESP (Efficient Spatial Pyramid) モジュールを提案

    • ESPでは、1×1のconvで次元削減を行なったのち、異なる dilation factorのdilated convにより、マルチスケールでの特 徴抽出を行う • 特徴マップをconcatすることで、元のchannel数に戻す 42 ESP: Efficient Spatial Pyramid module ESPNet 画像は[16]より引用
  43. ESPNet [16] (ECCV 2018) • ENetと同程度のサイズ・パラメータ数でありながら、精度が高く推論も高速 43 Cityscapes test-setに対するパフォーマンス 画像は[16]より引用

  44. ICNet [17] (ECCV 2018) • オリジナルの画像に加えて 1/2, 1/4に縮小した3つの画像をネットワークに入力する • 最も小さい1/4サイズの画像に対して、PSPNetベースの深いモデルを用いて特徴抽出

    • 不足している解像度を補うため、1/2サイズおよびオリジナルサイズの画像に対して浅いネット ワークによるlocalな特徴抽出を行い、順次統合・upsampleする 44 CFF: Cascaded Feature Fusion 画像は[17]より引用
  45. ICNet [17] (ECCV 2018) • DeepLab v2 などを大きく上回る精度 • 30fps以上の速度で1024×2048サイズの画像を処理できる

    45 画像は[17]より引用
  46. まとめ • CNNを用いたsemantic segmentationにおいては、receptive fieldと解像度という相反する2 つの要素を両立させることが必要 • その両立のため、これまでに以下のようなモデルが提案されてきた • Encoder

    Decoder Networks: 画像識別のCNNと同様に画像を縮小しながらreceptive fieldを拡大し、decoder (+skip connection) で解像度を復元する • DilatedFCN: dilated convolutionで解像度を維持しつつ、receptive fieldを拡大する • FastFCN: FCN (w/o dilated convolution) と効率的なupsampling手法とを組み合わせ ることで計算量・メモリ使用量を大幅に改善 • 現在は DilatedFCN と multi-scale context head を組み合わせたモデル (e.g., DeepLab, PSPNet, EncNet, etc.) が多いが、FastFCNのような、効率的なupsampeモジュールが組み 込まれた (dilatedではない) FCNに回帰する流れも見られる • 連続フレームを処理できる軽量・高速なモデルも多数提案されている 46
  47. 参考にさせていただいた文献・資料 Preferred Networks, Inc., “A Brief Introduction to Recent Segmentation

    Methods,” https://www.youtube.com/watch?v=le1NvGzDWDk&feature=youtu.be, 2017 (2020年3月31日閲覧). 47
  48. References [1] A. Kirillov, K. He, R. Girshick, C. Rother,

    and P. Dollár, “Panoptic Segmentation,” In CVPR, 2019. [2] J. Long, E. Shelhamer, and T. Darrell, “Fully Convolutional Networks for Semantic Segmentation,” In CVPR, 2015. [3] H. Noh, S. Hong, and B. Han, “Learning Deconvolution Network for Semantic Segmentation,” In ICCV, 2015. [4] V. Badrinarayanan, A. Kendall, and R. Cipolla, “SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation,” TPAMI, 2017. [5] O. Ronneberger, P. Fischer, and T. Brox, “U-Net: Convolutional Networks for Biomedical Image Segmentation,” In MICCAI, 2015. [6] S. Jégou, M. Drozdzal, D. Vazquez, A. Romero, and Y. Bengio, “The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation,” In CVPR Workshop, 2017. [7] G. Lin, A. Milan, C. Shen, and I. Reid, “RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation,” In CVPR, 2017. [8] L. C. Chen, G. Papandreou, I. Kokkinos, K. Murphy, and A. L. Yuille, “Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs,” In ICLR, 2015. [9] L. C. Chen, G. Papandreou, I. Kokkinos, K. Murphy, and A. L. Yuille, “DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs,” TPAMI, 2017. 48
  49. References [10] L. C. Chen, G. Papandreou, F. Schroff, and

    H. Adam, “Rethinking Atrous Convolution for Semantic Image Segmentation,” arXiv:1706.05587, 2017. [11] L. C. Chen, Y. Zhu, G. Papandreou, F. Schroff, and H. Adam, “Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation. In ECCV, 2018. [12] H. Wu, J. Zhang, K. Huang, K. Liang, and Y. Yu, “FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation,” arXiv:1903.11816, 2019. [13] H. Zhao, J. Shi, X. Qi, X. Wang, and J. Jia, “Pyramid scene parsing network,” In CVPR, 2017. [14] H. Zhang, K. Dana, J. Shi, Z. Zhang, X. Wang, and A. Tyagi, “Context Encoding for Semantic Segmentation,” In CVPR, 2018. [15] A. Paszke, A. Chaurasis, S. Kim, and E. Culurciello, “ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation,” arXiv:1606.02147, 2016. [16] S. Mehta, M. Rastegari, A. Caspi, L. Shapiro, and H. Hajishirzi. “ESPNet: Efficient Spatial Pyramid of Dilated Convolutions for Semantic Segmentation,” In ECCV, 2018. [17] H. Zhao, X. Qi, X. Shen, J. Shi, and J. Jia, “ICNet for Real-Time Semantic Segmentation on High-resolution Images,” In ECCV, 2018. 49