ESPNetで セマンティックセグメンテーション

この記事は Convergence Lab. ブログより転載されました。

今回は、セマンティックセグメンテーションの手法の一つである、ESPNetを紹介します。ESPは Effective Spatial Pyramid of Dilated Convolutionの略で、ワシントン大学とアラン人工知能研究所によってECCV 2018で発表されました。論文のサイトがgithub上にあり、ソースコードも提供されています( https://sacmehta.github.io/ESPNet/ ) 。

S. Mehta, M. Rastegari, A. Caspi, L. Shapiro, and H. Hajishirzi, “ESPNet: Efficient Spatial Pyramid of Dilated Convolutions for Semantic Segmentation.”, ECCV 2018.

論文の手法のデモ動画も公開されています。

それでは手法の詳細について見ていきましょう。

ESP Module

論文から引用

ESP Net の根幹となる ESP Module は 上のFig. 1: (b) に当たります。Fig. 1: (a) から見ていきましょう。(a)は通常のCNNの演算が point-wise convolutionとspatial pyramid of dilated convolutionに分解できることを示しています。これを利用してCNNのパラメータ数を減らすことができます。MobileNetやResNext、Xception、DeepLabで採用されている技術です。 point-wise convolution や spatial pyramid of dilated convolutionについてはここでは説明しません。以下のサイトを参考にしてください。 http://liangchiehchen.com/projects/DeepLab.html

ESPNetでは CNNを Reduce, Split, Transform, Merge という4つの演算に分解することで、高速化を図っています。単体のGPUで112FPS、Jetson TX2 のようなエッジデバイス上でも 9FPSという高速高精度なセグメンテーションを達成しています。それぞれの処理について見ていきましょう。

Reduce

入力されたM次元の特徴マップをpoint-wise convolutionをつかって、N/K 個次元の出力を得ます。ここでNはESP Moduleから出力される特徴マップの次元数です。

Split

Reduceされた特徴マップをK本の枝に分岐させ並列処理にかけます。

Transform

分岐した枝のそれぞれに 異なる dilation rate をもちいて dilated convolution 演算を行います。

Merge

Hierarchical feature fusionという手法をもちいて、分岐した複数のFeatureMapをまとめます。Fig1:(b)に示したような順に要素和を取り、連結処理を行います。

これによって、n2MKだったCNNのパラメータ数が、(MN)/K +(nN)2/K に減少します。

ESP Net

ESPNet のネットワーク図は以下のようになります。

左側がEncoder、右側がDecoder です。ESPNet は ESP Module の他にも Residual Connectionや、ダウンサンプルした元画像を途中に連結したりする工夫が見られます。

精度とスピード

論文から引用

ノートパソコン上のGPU(GTX 960M)を用いたときの精度とスピードを他手法と比較したものです。上に行くほど精度がよく、右に行くほど速いことを示しています。ESPNetは他手法よりも圧倒的に速く、精度もそこそこであることがわかります。

まとめ

ESPNetによる セマンティックセグメンテーションについて紹介しました。ディープラーニングの進歩を感じますね。ちょっとまえでは専門家にも信じられなかったようなことが、どんどん実現しています。

セマンティックセグメンテーションを試したい方はぜひ Convergence Lab.へご相談ください。

ドキュメントアクション