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がPostprocessingでRescalingしやすいように、空間の相対関係に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つのネットワークで構成されています。
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になります。
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を変えた。
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
全てにおいて提案手法が上回っている。
KITTI
・56scenes中Trainingに28scene,Testに28scene
・Image Sizeは1224x368から半分にDownsampling
・800images/scene 止まっているshotは除いた
全てにおいて提案手法が上回っている。
NYUDepth 左から、原画、Coarse,Fine,GroundTruth、KITTI上から原画、Coarse,Fine,GroundTruth