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


スポンサーリンク

関連記事

Adobeの手振れ補正機能『ワープスタビライザー』の秘密
Pix2Pix:CGANによる画像変換
PGGAN:段階的に解像度を上げて学習を進めるGAN
.NETで使えるTensorFlowライクなニューラルネットワークライブラリ『NeuralNetwo...
Structure from Motion (多視点画像からの3次元形状復元)
TensorSpace.js:ニューラルネットワークの構造を可視化するフレームワーク
TensorFlowでCGを微分できる『TensorFlow Graphics』
OpenCV 3.1とopencv_contribモジュールをVisual Studio 2015で...
OpenCVでカメラ画像から自己位置認識 (Visual Odometry)
iPadをハンディ3Dスキャナにするガジェット『iSense 3D Scanner』
PythonのStructure from Motionライブラリ『OpenSfM』
CGAN (Conditional GAN):条件付き敵対的生成ネットワーク
iPhoneで3D写真が撮れるアプリ『seene』
AfterEffectsプラグイン開発
オープンソースのStructure from Motionライブラリ『Theia』
データサイエンティストって何だ?
畳み込みニューラルネットワーク (CNN:Convolutional Neural Network)
UnityでPoint Cloudを表示する方法
OpenCVのfindEssentialMat関数を使ったサンプルを読んでみる
AR (Augmented Reality)とDR (Diminished Reality)
Fast R-CNN:ディープラーニングによる一般物体検出手法
Multi-View Stereoによる3次元復元ライブラリ『OpenMVS』
OpenCV 3.1のsfmモジュールを試す
コンピュータビジョンの技術マップ
オープンソースの顔の動作解析ツールキット『OpenFace』
PyDataTokyo主催のDeep Learning勉強会
SSII 2014 デモンストレーションセッションのダイジェスト動画
OpenCVベースの背景差分ライブラリ『BGSLibrary』
画像中の人物表面のUV座標を推定する『DensePose』
R-CNN (Regions with CNN features):ディープラーニングによる一般物体...
Mask R-CNN:ディープラーニングによる一般物体検出・Instance Segmentatio...
オープンソースの顔認識フレームワーク『OpenBR』
C#で使える機械学習ライブラリ『Accord.NET Framework』
OpenCV
Runway ML:クリエイターのための機械学習ツール
写真に3Dオブジェクトを違和感無く合成する『3DPhotoMagic』
ニューラルネットワークで画像分類
OpenCVで顔のモーフィングを実装する
OpenCVの超解像(SuperResolution)モジュールを試す
3Dスキャンに基づくプロシージャルフェイシャルアニメーション
PyTorch3D:3Dコンピュータービジョンライブラリ
Deep Learningとその他の機械学習手法の性能比較

コメント