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


スポンサーリンク

関連記事

UnityユーザーがUnreal Engineの使い方を学ぶには?
C#で使えるNumPyライクな数値計算ライブラリ『NumSharp』
Adobe MAX 2015
.NETで使えるTensorFlowライクなニューラルネットワークライブラリ『NeuralNetwo...
BlenderProc:Blenderで機械学習用の画像データを生成するPythonツール
OpenCVの超解像(SuperResolution)モジュールを試す
takminさんが機械学習・画像認識の便利ツールを公開しています
GoogleのDeep Learning論文
openMVGをWindows10 Visual Studio 2015環境でビルドする
データサイエンティストって何だ?
インタラクティブにComputer Visionコーディングができるツール『Live CV』
OpenCVの三角測量関数『cv::triangulatepoints』
人間の顔をそっくりそのままCGで復元する『Digital Emily Project』
OpenCVで顔のモーフィングを実装する
C++の機械学習ライブラリ『Dlib』
OpenCV 3.1のsfmモジュールを試す
全脳アーキテクチャ勉強会
ZBrushトレーニング
Open3D:3Dデータ処理ライブラリ
3Dディープラーニング用のPyTorchライブラリ『Kaolin』
OpenCV3.3.0でsfmモジュールのビルドに成功!
書籍『OpenCV 3 プログラミングブック』を購入
PythonのStructure from Motionライブラリ『OpenSfM』
オープンソースのロボットアプリケーションフレームワーク『ROS (Robot Operating S...
TensorFlowでCGを微分できる『TensorFlow Graphics』
iPadをハンディ3Dスキャナにするガジェット『iSense 3D Scanner』
オープンソースの顔の動作解析ツールキット『OpenFace』
represent
画像からカメラの3次元位置・姿勢を推定するライブラリ『OpenGV』
FacebookがDeep learningツールの一部をオープンソース化
iOSで使えるJetpac社の物体認識SDK『DeepBelief』
SONY製のニューラルネットワークライブラリ『NNabla』
OpenCVのための軽量GUIライブラリ『cvui』
第25回コンピュータビジョン勉強会@関東に行って来た
3Dスキャンに基づくプロシージャルフェイシャルアニメーション
Faster R-CNN:ディープラーニングによる一般物体検出手法
ArUco:OpenCVベースのコンパクトなARライブラリ
ニューラルネットワークで画像分類
PyDataTokyo主催のDeep Learning勉強会
第1回 3D勉強会@関東『SLAMチュートリアル大会』
OpenCVでPhotoshopのプラグイン開発
Active Appearance Models(AAM)

コメント