3次元タスクにおけるディープラーニングの
最新動向① DeepStereo	
2016/3/01
株式会社ウェブファーマー
大政 孝充
今回取り上げるのはこれ	
[1]John Flynn, Ivan Neulander, James Philbin, NoahSnavely.
“DeepStereo: Learning to Predict New Views from the
World’s Imagery” arXiv:1506. 06825, 2015.
ディープラーニングを使って、新たな視点における画像を
作り出す!
何ができるの?	
[1]のFigure 2より
複数の視点から撮影した風景画像をもとに
新たな視点から見た画像を生成する!
V1およびV2の視点から撮影した画像をもとに
Cの視点から撮影した画像を生成する
実際に作り出した画像がこれ!	
[1]のFigure 1より
この2枚から
これを生成!
何が難しいの?	
近くのこの物体は
結構動く
遠くのこの物体は
あまり動かない
視点が変わると、見え方が変わる!
→それぞれの物体の距離がわからなければダメ!
じゃあどうするの?	
DeepStereoではplane-sweep volumesという考え方を使う
V2から見えてる家が全
てdDの距離にあったなら
Cから見た場合、家が左
によって見える
逆にV2から見えてる家
がd1の距離にあったなら
Cから見た場合、家が右
によって見える
[1]のFigure 3を変形
じゃあどうするの?	
このようにして、D個の深さそれぞれに対するCから見た画像を生成する
V2の視点からは距離D個
に対応するD枚の画像が
生成される
[1]のFigure 3を変形
じゃあどうするの?	
V1の視点からも距離D個
に対応するD枚の画像が
生成される
どのように学習するの?	
これらを全てディープラーニングに放り込み、
C視点から見えるであろう、もっともらしい画像を出力させる
V1視点
からのD枚
V2視点
からのD枚
ディープ
ラーニング
出力画像
どのように学習するの?	
この出力と実際にC視点から撮影した画像との誤差を求め、
学習させる
実際の
C視点画像
ディープ
ラーニング
①誤差を
求め
②学習
させる
どのように学習するの?	
別の画像セットでも同様に学習させる
実際の
C視点画像
ディープ
ラーニング
①誤差を
求め
②学習
させる
どのように学習するの?	
そのうちにモデルのパラメータが適正化されて、
C視点からの画像を高精度で生成できるようになると期待される
ディープ
ラーニング
よく似て
くる
実際の
C視点画像
普通のCNNで可能か?	
畳み込み〜プーリング〜全結合といった普通のCNNでは
学習できないだろう
→このタスクに特化したモデルが必要
モデルの詳細(1)
全体の構造	
モデルを2つに分ける。
①物体までの距離を推定する部分(Selection Tower)
②物体の色を推定する部分(Color Tower)
[1]のFigure 4より
各物体までの
距離を推定
する
距離ごとに
各物体の色を
推定する
モデルの詳細(2)
Selection Towerの入力	
・Selection Towerでは、まず各距離ごとに複数の視点からの
 画像を入力する
[1]のFigure 5より
距離d1
距離dk
距離dD
視点V1 視点V2
モデルの詳細(3)
Selection TowerのStage 1	
・Selection TowerのStage 1では、距離ごとに畳み込み、Reluにかける
・重みは距離に渡って共有する
[1]のFigure 5より
重みを共有
距離ごとに畳み込み、
Reluで活性化
モデルの詳細(4)
Selection TowerのStage 2	
・Selection TowerのStage 2では、全ての距離に渡って畳み込む
・これにより、オクルージョンのような各距離間の相互作用を考慮する
全ての距離に渡って畳み
込み、tanhで活性化 [1]のFigure 5より
モデルの詳細(5)
Selection Towerの出力	
・Selection TowerのStage 2ではさらに、softmaxで正規化する
・正規化はピクセルごとに、距離に渡って行う
 
softmaxでピクセルごとに正規化することで、
ある距離における各ピクセルの存在確率を求める
si, j,z
z=1
D
∑ =1
i, j( )
z
:ピクセル
:距離
この辺は遠い
距離に判定さ
れている
この辺は浅い
距離に判定さ
れている
[1]のFigure 5より
モデルの詳細(6)
Color Towerの入力	
・Color TowerではSelection Towerと同じく、各距離ごとに複数の視点
からの画像を入力する 
[1]のFigure 6より
距離d1
距離dk
距離dD
視点V1 視点V2
モデルの詳細(7)
Color Towerの畳み込み	
・Color Towerでは各距離ごとに畳み込み、Reluで活性化する
・重みは共有する 
[1]のFigure 6より
重みを共有
距離ごとに畳み込み、
Reluで活性化
モデルの詳細(8)
Color Towerの出力	
・Color Towerでは距離ごとに画像を出力する
・出力画像はR,G,Bの3チャンネルを持つ
[1]のFigure 6より
モデルの詳細(9)
Selection TowerとColor Towerとの統合	
①それぞれの距離において、ピクセルごとにSelection TowerとColor
 Towerの出力をかけあわせる
②それを距離に渡って足し合わせる
[1]のFigure 4より
ci, j
f
= si, j,z∑ ×ci, j,z
ci, j
f
si, j,z
ci, j,z
i, j( )
z
:ピクセル
:距離
:統合した出力
:Selection Towerからの出力
:Color Towerからの出力
②足す
①かける
モデルの詳細(10)
誤差を求める	
・統合した出力画像と実際に撮影したC視点の画像から誤差を求める
・ピクセルごとに差をとり、画像全体に渡って足し合わせる
[1]のFigure 4より
L
ci, j
f
ci, j
t
i, j( ) :ピクセル
:統合した出力
:実際に撮影したC視点の画像
L = ci, j
t
−ci, j
f
i, j
∑
:誤差
モデルの詳細(11)	
これがモデル全体の詳細図!
[1]のFigure 7より
モデルの詳細(12)	
[1]のFigure 7より
・実際には各Towerへの入力は、解像度により4つに分ける
・それぞれの解像度で3回畳み込んだのちに、統合する
結果はこうなった(1)	
[1]のFigure 8より
これら5つの
視点から
この結果だ
これが実際
の撮影画像
似てる
結果はこうなった(2)	
[1]のFigure 9より
これら5つの
視点から
この結果だ
これが実際
の撮影画像
似てる
今後の課題は	
課題①
計算処理に膨大な時間がかかる。real-timeな処理は不可能。
→RNNを用いることで早くできないだろうか?
課題②
このモデルでは入力として5つの視点からの画像が必要。
この数は変えられない。
→これもRNNを用いるなどで解決できないだろうか?

3次元タスクにおけるディープラーニングの最新動向1DeepStereo