LoginSignup
14
11

More than 5 years have passed since last update.

[Survey]Depth Map Prediction from a Single Image using a Multi-Scale Deep Network

Last updated at Posted at 2016-03-06

Single ImageからDepth Mapを推定するという論文
この後更に改良したバージョンの論文が出ています。

Depth Estimationはシーンの幾何学的な理解のために重要です。Stereo ImageからのDepth Estimationに比べてSingle ImageからのDepth Estimationは少ないです。Single ImageからのDepth Estimationでは、Depthの手がかりとなる、line angle, perspective, object size, image position, atmospheric effectを使う必要があります。GlobalなSceneではこのような関係は必要になるかもしれないけれど、LocalなSceneではStereoで十分です。
 Single ImageからのDepth Estimationは、ill pose問題なので、与えられたImageのDepthは無限に可能性が存在します。
例えば、Scaleの問題では、実際の部屋なのかdoll houseなのかとか、家具でも様々なサイズがあります。
 彼らは、実際に使用するApplicationがPostprocessingRescalingしやすいように、空間の相対関係にFocusして、scale dependent errorsに加えて、scale invariant errorsも使ってこの問題に対処しました。
 Depth Estimationには、GlobalなScene情報を推定するNetworkと、Local情報を使ってRefinementするNetworkの2つのNeural Networkを使用ししています。

Approach

Depth EstimationのNetworkはGlobal Coarse-Scale NetworkとLocal Fine Scale Networkの2つのネットワークで構成されています。

範囲を選択_122.png

Global Coarse Scale Network

Global Coarse Scale Networkでは、SceneのGlobalな情報を使って画面全体のDepth構造を推定します。Network途中のMax poolingで周辺の情報を結合して、最後のFully connected layerで画像全体の情報を使っています。

HiddenLayerでは layer7の出力以外はReLUを使っています。Dropoutをlayer6で使っています。
Randomでもそれほど大きな差ではないけど、初期値はImageNetのDatasetでPretrainingしたものを使用しています。

Local Fine Scale Network

Global Coarse Scale Networkで推定した結果をLocal Fine Scale NetworkでRefinementします。
入力をstrideとmax poolingで1/4したFeature MapとGlobal Coarse Scale Netowrkの出力を結合して、以降はサイズが小さくならないようにConvolutionだけを行っています。最終的には入力画像の1/4のサイズ(74x55)のDepth Mapが推定されます。
activate function にはReLUを使っています。最終LayerだけLinearです。

Scale Invariant Error

英語が何言っているかわからなかったが、この式は推定値と正解値の差の平均を基準にしているようです。
推定値と正解値の差の平均と同じだけ対象位置の推定値と正解値の差があれば0になります。

範囲を選択_123.png
範囲を選択_124.png
範囲を選択_125.png
範囲を選択_126.png

Training Loss

Loss functionは下記の通り。$\lambda\in [0,1]$で$\lambda=0$だとL2 Normで$\lambda=1$だとscale-invariant errorになる。
$\lambda=0.5$にした。
正解データには、特にオブジェクト境界、WindowやSpecular表面でDepth Dataが無い場所がある。データが無い場所は使わないようにしてnを変えた。

範囲を選択_127.png

Data Augmentation

・Scale: $s\in[1,1.5]$
・Rotation: $r\in[-5,5]$degrees
・Translation: Random cropping
・Color:random RGB x c $c\in[0.8,1.2]^3$
・Flip: 50% horizontally flipping

※Input画像をScalingするとDepthと合わなくなるので1/s倍した

# Experiments & Result

NYU Depth

・464 indoor scenes
Training:249 scene, Test: 215 scene
・Training Set 120K, Test Set 694
・Batch Size 32
・Input Imageは640x480から320x240にDownsampling
・Coarse Networkを最初に学習して、Coarseを固定してFine Nextworkを学習
・Learning Rate: Coarse:0.001 (conv1-5), 0.1 (layer6-7), fine: 0.01
範囲を選択_128.png
全てにおいて提案手法が上回っている。

KITTI

・56scenes中Trainingに28scene,Testに28scene
・Image Sizeは1224x368から半分にDownsampling
・800images/scene 止まっているshotは除いた
範囲を選択_129.png
全てにおいて提案手法が上回っている。

NYUDepth 左から、原画、Coarse,Fine,GroundTruth、KITTI上から原画、Coarse,Fine,GroundTruth
範囲を選択_130.png

14
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
11