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手法のアルゴリズム一覧。


スポンサーリンク

関連記事

iPadをハンディ3Dスキャナにするガジェット『iSense 3D Scanner』
UnityでOpenCVを使うには?
第1回 3D勉強会@関東『SLAMチュートリアル大会』
機械学習に役立つPythonライブラリ一覧
オープンソースのStructure from Motionツール『Regard3D』
Adobe MAX 2015
顔検出・認識のAPI・ライブラリ・ソフトウェアのリスト
OpenCVで平均顔を作るチュートリアル
OpenCVで顔のモーフィングを実装する
OpenCVベースの背景差分ライブラリ『BGSLibrary』
OpenCVで顔のランドマークを検出する『Facemark API』
PythonのStructure from Motionライブラリ『OpenSfM』
画像中の人物表面のUV座標を推定する『DensePose』
OpenCV 3.1のsfmモジュールのビルド再び
OpenCV 3.3.0 contribのsfmモジュールのサンプルを動かしてみる
今年もSSII
AfterEffectsプラグイン開発
オープンソースのSLAMライブラリ『Cartographer』
GAN (Generative Adversarial Networks):敵対的生成ネットワーク
.NETで使えるTensorFlowライクなニューラルネットワークライブラリ『NeuralNetwo...
C++の機械学習ライブラリ『Dlib』
機械学習で流体シミュレーションを近似する『Physics Forests』
顔追跡による擬似3D表示『Dynamic Perspective』
機械学習について理解するための可視化ツール『MLDemos』
写真に3Dオブジェクトを違和感無く合成する『3DPhotoMagic』
WordPressで数式を扱う
写真から3Dメッシュの生成・編集ができる無料ツール『Autodesk Memento』
COLMAP:オープンソースのSfM・MVSツール
iPhoneで3D写真が撮れるアプリ『seene』
SONY製のニューラルネットワークライブラリ『NNabla』
SSII 2014 デモンストレーションセッションのダイジェスト動画
OpenCVの顔検出過程を可視化した動画
機械学習での「回帰」とは?
OpenCV 3.1とopencv_contribモジュールをVisual Studio 2015で...
BlenderProc:Blenderで機械学習用の画像データを生成するPythonツール
OpenMVSのサンプルを動かしてみる
OpenCV 3.1から追加されたSfMモジュール
ニューラルネットワークで画像分類
RefineNet (Multi-Path Refinement Network):ディープラーニン...
TensorFlowでCGを微分できる『TensorFlow Graphics』
画像認識による位置情報取得 - Semi-Direct Monocular Visual Odome...
Adobeの手振れ補正機能『ワープスタビライザー』の秘密

コメント