PSPNet (Pyramid Scene Parsing Network):ディープラーニングによるSemantic Segmentation手法

FCN, SegNet, U-Netに引き続きディープラーニングによるSemantic Segmentation手法のお勉強。


ディープラーニングによるSemantic Segmentationアルゴリズムまとめ
これまで勉強したディープラーニングによるSemantic Segmentation手法のアルゴリズム一覧。


次はPSPNet (Pyramid Scene Parsing Network)について。


スポンサーリンク

PSPNet (Pyramid Scene Parsing Network)

PSPNet (Pyramid Scene Parsing Network)CVPR 2017で発表されたPyramid Scene Parsing Networkで提案されたSemantic Segmentation手法。

Pyramid Scene Parsing Network (CVPR 2017)

SegNetU-Netの登場以降、ディープラーニングによるSemantic SegmentationではEncoderDecoder構造が定番となった。

PSPNetでは、EncoderResNet101(大規模データで学習済み)の特徴抽出層を利用しており、EncoderDecoderの間にPyramid Pooling Moduleを追加している↓

Fast R-CNNの記事で触れたSPPNetで、似た名前のSpatial Pyramid Pooling(空間ピラミッドプーリング)が使われていた。



同じなのは複数の解像度でmax-poolingを行うという点だけです(笑)


スポンサーリンク

Pyramid Pooling Module

Encoderによって入力画像から抽出された特徴マップのサイズは、ダウンサンプリングされて元の入力画像の1/8になる。
Pyramid Pooling Moduleでは、Encoderで抽出された特徴マップに対して、複数の解像度でmax-poolingをかけてそれぞれのスケールで捉えた特徴マップを得る。これによって、画像の大域的なコンテキストと小さな部分の情報の両方を拾うことができる。

Pyramid Pooling Moduleの階層数や各階層での特徴マップのサイズは、入力される特徴マップのサイズに合わせて設計する。Pyramid Pooling Moduleの階層の数をNとすると、削減後の各特徴マップのチャンネル数は1/Nになる。

論文の例では、以下の図のように階層的に4つの異なるカーネルサイズ(1×1, 2×2, 3×3, 6×6)でmax-poolingを行い、得られた複数スケールの特徴マップを1×1で畳み込んでチャンネル数を削減する。

そして、このチャンネル数を削減した特徴マップをバイリニア補間で元の特徴マップと同じサイズにアップサンプリングする。
アップサンプリングしたこれらの特徴マップを元の特徴マップにチャンネルを追加する形で連結し、大域的なコンテキストと局所的な情報の両方を持った特徴マップとする。
最終的に、この連結した特徴マップに対して1×1の畳み込みを行ってSemantic Segmentationの結果を得る。

Pyramid Scene Parsing Network (CVPR 2017)

あれ、何か妙に情報があっさりだぞ。。。

次はRefineNet (Multi-Path Refinement Network)について勉強しよう。


ディープラーニングによるSemantic Segmentationアルゴリズムまとめ
これまで勉強したディープラーニングによるSemantic Segmentation手法のアルゴリズム一覧。


スポンサーリンク

関連記事

Open3D:3Dデータ処理ライブラリ
C#で使える機械学習ライブラリ『Accord.NET Framework』
SONY製のニューラルネットワークライブラリ『NNabla』
複数視点画像から3次元形状を復元するライブラリ『openMVG』
AI英語教材アプリ『abceed』
OpenGVの用語
Active Appearance Models(AAM)
動画で学ぶお絵かき講座『sensei』
オープンソースのPhotogrammetryフレームワーク『Alice Vision』
AfterEffectsプラグイン開発
PyDataTokyo主催のDeep Learning勉強会
NumSharp:C#で使えるNumPyライクな数値計算ライブラリ
U-Net:ディープラーニングによるSemantic Segmentation手法
OpenCVで顔のモーフィングを実装する
ディープラーニングに対応したPythonの機械学習ライブラリ『Pylearn2』
ZBrushトレーニング
OpenCVでiPhone6sのカメラをキャリブレーションする
Deep Neural Networkによる顔の個人識別フレームワーク『OpenFace』
Multi-View Stereoによる3次元復元ライブラリ『OpenMVS』
takminさんが機械学習・画像認識の便利ツールを公開しています
DCGAN (Deep Convolutional GAN):畳み込みニューラルネットワークによる敵...
ポイントクラウドコンソーシアム
OpenCV 3.1のsfmモジュールを試す
OpenCVの三角測量関数『cv::triangulatepoints』
オープンソースのSLAMライブラリ『Cartographer』
OpenCVの超解像(SuperResolution)モジュールを試す
読みやすくて高速なディープラーニングのフレームワーク『Caffe』
UnityユーザーがUnreal Engineの使い方を学ぶには?
オープンソースのStructure from Motionライブラリ『Theia』
GAN (Generative Adversarial Networks):敵対的生成ネットワーク
PGGAN:段階的に解像度を上げて学習を進めるGAN
Pix2Pix:CGANによる画像変換
画像からカメラの3次元位置・姿勢を推定するライブラリ『OpenGV』
Facebookの顔認証技術『DeepFace』
iPhoneで3D写真が撮れるアプリ『seene』
Point Cloud Libraryに動画フォーマットが追加されるらしい
オンライン英会話ネイティブキャンプを始めてみた
3Dスキャンに基づくプロシージャルフェイシャルアニメーション
Leap MotionでMaya上のオブジェクトを操作できるプラグイン
「ベンジャミン·バトン数奇な人生」でどうやってCGの顔を作ったのか
CGのためのディープラーニング
Deep Learningとその他の機械学習手法の性能比較

コメント