狠狠撸

狠狠撸Share a Scribd company logo
第3回 3D勉強会@関東 (Deep SLAM論文読み会)
Neural scene representation and
rendering (Science)
東京大学 相澤研究室所属
M1 金子 真也 (@syinari0123)
1
自己紹介
? 氏名
– 金子 真也 (かねこ まさや)
? 所属
– 東京大学大学院 学際情報学府 相澤研 M1
? Recently
– 2018年8月-9月 Sony Internship (SLAM)
– 2018年9月- 産総研 Research Assistant (櫻田先生)
? 深層学習やVisual SLAMと戯れています
? 就活に向けて情報収集中なのでSLAM関連でおすすめの企業があり
ましたらぜひ教えてください
まさや
(@syinari0123)
2
本論文
Neural scene representation and rendering
– [Eslami, Rezende, et al. (DeepMind), Science(2018)]
– 著者はVAEを作ったRezende氏, Last authorにHassabis氏
– Scienceに掲載
3
どのようなものか?
? Generative Query Network (GQN) の提案
– あるマップを複数視点から撮影した画像群から, 別視点の画像を
生成するネットワーク (Rendererの実現)
4
どのようなものか?
? Generative Query Network (GQN) の提案
– あるマップを複数視点から撮影した画像群から, 別視点の画像を
生成するネットワーク (Rendererの実現)
1. 複数視点の画像群からScene Representationを作成
5
どのようなものか?
? Generative Query Network (GQN) の提案
– あるマップを複数視点から撮影した画像群から, 別視点の画像を
生成するネットワーク (Rendererの実現)
1. 複数視点の画像群からScene Representationを作成
2. Scene Representationを手掛かりとして, ある視点位置
が入力されたらそこから見える画像を生成
6
どのようなものか?
? Generative Query Network (GQN) の提案
– あるマップを複数視点から撮影した画像群から, 別視点の画像を
生成するネットワーク (Rendererの実現)
どこかで見たことあるような気がする…???
SfM/SLAM …???
三次元地図…??
7
関連研究:SfM/SLAM
? SfM/SLAM [Structure from Motion / Simultaneous Localization and Mapping]
– 画像群から, 抽出した特徴点の三次元位置と各画像のカメラ姿勢
(三次元地図)を同時に求める
三次元地図の作成
(点の三次元位置+カメラ姿勢)
画像群
[1] Building Rome in a Day [Agarwal+, ICCV2009]
8
関連研究:SfM/SLAM
? SfM/SLAM [Structure from Motion / Simultaneous Localization and Mapping]
– 画像群から, 抽出した特徴点の三次元位置と各画像のカメラ姿勢
(三次元地図)を同時に求める
– 三次元地図を使い, 画像から位置推定もできる(Localization)
三次元地図の作成
(点の三次元位置+カメラ姿勢)
画像群
Localization
カメラ姿勢
[1] Building Rome in a Day [Agarwal+, ICCV2009]
9
関連研究:SfM/SLAM
? SfM/SLAM [Structure from Motion / Simultaneous Localization and Mapping]
– 画像群から, 抽出した特徴点の三次元位置と各画像のカメラ姿勢
(三次元地図)を同時に求める
– 三次元地図を使い, 画像から位置推定もできる(Localization)
– 逆に位置から画像の推定も可能 (Rendering)
三次元地図の作成
(点の三次元位置+カメラ姿勢)
画像群
Localization Rendering
カメラ姿勢
[1] Building Rome in a Day [Agarwal+, ICCV2009]
10
関連研究
? SfM/SLAM vs GQN
– 両者の大きな違いは三次元地図を特徴量として保持している点
– 地図の可視性/Localization機能は失われるが, 深層学習で空間
情報を容易に扱うことができる (非常に重要)
手法 SfM/SLAM GQN
目標 三次元構造の復元 Rendererの実現
三次元地図 Pointcloud表現 特徴量ベクトル
地図の可視性 〇 ×
Localization
(画像→位置)
〇 ×
Rendering
(位置→画像)
〇 〇
深層学習との相性 × 〇
11
関連研究
? 三次元地図のPointcloud表現
– 人間が空間把握するには非常にわかりやすい表現
– 一方, CNNで取り扱うには非常に難しい表現
? 座標値が並んでいるだけなので隣接関係が分からず畳み込み
が容易ではない
? 様々な手法が近年提案されているが決定的な手法はない印象
– PointNet++ [NIPS’17], SPLATNet [CVPR’18], …
– 皆川さんのスライドが非常にわかりやすいです
(/takmin/cvpr2018pointcloudcnnsplatnet)
??1, ??1, ??1
??2, ??2, ??2
??3, ??3, ??3
…
? 三次元地図のPointcloud表現
– 人間が空間把握するには非常にわかりやすい表現
– 一方, CNNで取り扱うには非常に難しい表現
? 座標値が並んでいるだけなので隣接関係が分からず畳み込み
が容易ではない
? 様々な手法が近年提案されているが決定的な手法はない印象
– PointNet++ [NIPS’17], SPLATNet [CVPR’18], …
– 皆川さんのスライドが非常にわかりやすいです
(/takmin/cvpr2018pointcloudcnnsplatnet)
12
関連研究
??1, ??1, ??1
??2, ??2, ??2
??3, ??3, ??3
…
直接三次元地図の特徴量を得るGQNは以下が期待できる
1. 難しいとされる点群畳み込みを介さないため,
良い特徴量を抽出できそう
2. 畳み込まないので地図のスケールが増えても,
計算量は増大しない
13
手法解説
? どのように実現するか?
– 目標1:あるマップを複数視点から撮影した画像群から, 未知の
視点のマップ画像を生成したい
複数視点からマップを
撮影した画像群
新しい視点の画像
新しい視点の画像の生成
14
手法解説
? どのように実現するか?
– 目標1:あるマップを複数視点から撮影した画像群から, 未知の
視点のマップ画像を生成したい
複数視点からマップを
撮影した画像群
新しい視点の画像
マップ
マップがまず存在して
そこから画像が生成される
15
手法解説
? どのように実現するか?
– 目標1:あるマップを複数視点から撮影した画像群から, 未知の
視点のマップ画像を生成したい
? マップ画像をうまく生成するようなモデルを推定すればよい
– Variational Autoencoder [Kingma+, 2013]が使える
複数視点からマップを
撮影した画像群
新しい視点の画像
マップ画像を生成する
モデル
?
16
関連研究:VAE
? Variational Autoencoder (VAE) [Kingma+, ICLR’14]
– 画像??が自身を再構成するように低次元の潜在変数??を抽出
入力 ?? 再構成 ???
Inference
??(??|??)
Generation
??(??|??)
潜在変数 ??
入力 ??
Loss
17
関連研究:VAE
? Variational Autoencoder (VAE) [Kingma+, ICLR’14]
– 画像??が自身を再構成するように低次元の潜在変数??を抽出
– 正規分布に従うような制約を??にかけ, ??空間での連続性を保つ
正規分布 ??(0, ??)
入力 ?? 再構成 ???
Inference
??(??|??)
Generation
??(??|??)
潜在変数 ??
入力 ??
Loss
Loss
18
関連研究:VAE
? Variational Autoencoder (VAE) [Kingma+, ICLR’14]
– 画像??が自身を再構成するように低次元の潜在変数??を抽出
– 正規分布に従うような制約を??にかけ, ??空間での連続性を保つ
入力 ?? 再構成 ???
Inference
??(??|??)
Generation
??(??|??)
潜在変数 ??
正規分布 ??(0, ??)
入力 ??
Loss
Loss
潜在変数空間[1] 生成画像[1]
[1] https://qiita.com/kenmatsu4/items/
b029d697e9995d93aa24
Inference
??(??|??)
Generation
??(??|??)
19
手法解説
? VAEによりマップの画像生成モデルを構築できそう
入力 ?? 再構成 ???
潜在変数 ??
正規分布 ??(0, ??)
入力 ??
Loss
Loss
学習時
複数視点からマップを撮影した画像群
20
手法解説
? VAEによりマップの画像生成モデルを構築できそう
– 現段階では未知の潜在変数を動かし新しい画像生成するのみ
– 目標2:潜在変数をうまく取り扱いたい
Generation
??(??|??)
画像生成 ???
潜在変数 ??
潜在変数zを動かすことで
新しい画像生成推論時
21
手法解説
? VAEによりマップの画像生成モデルを構築できそう
– 現段階では未知の潜在変数を動かし新しい画像生成するのみ
– 目標2:潜在変数をうまく取り扱いたい
1. 様々なマップに対応するモデルを生成したい
マップの複数視点画像
Generation
??(??|??)
画像生成 ???
潜在変数 ??改良案
22
手法解説
? VAEによりマップの画像生成モデルを構築できそう
– 現段階では未知の潜在変数を動かし新しい画像生成するのみ
– 目標2:潜在変数をうまく取り扱いたい
1. 様々なマップに対応するモデルを生成したい
Generation
??(??|??)
画像生成 ???
潜在変数 ??改良案
マップの複数視点画像
23
手法解説
? VAEによりマップの画像生成モデルを構築できそう
– 現段階では未知の潜在変数を動かし新しい画像生成するのみ
– 目標2:潜在変数をうまく取り扱いたい
1. 様々なマップに対応するモデルを生成したい
2. さらに視点を指定して対応する画像を生成したい
視点
Generation
??(??|??)
画像生成 ???
潜在変数 ??改良案
マップの複数視点画像
24
手法解説
? VAEによりマップの画像生成モデルを構築できそう
– 現段階では未知の潜在変数を動かし新しい画像生成するのみ
– 目標2:潜在変数をうまく取り扱いたい
1. 様々なマップに対応するモデルを生成したい
2. さらに視点を指定して対応する画像を生成したい
Generation
??(??|??)
画像生成 ???
潜在変数 ??改良案
マップの複数視点画像 視点
25
手法解説
? VAEによりマップの画像生成モデルを構築できそう
– 現段階では未知の潜在変数を動かし新しい画像生成するのみ
– 目標2:潜在変数をうまく取り扱いたい
1. 様々なマップに対応するモデルを生成したい
2. さらに視点を指定して対応する画像を生成したい
– Conditional VAE [Sohn+, 2015]が使える
Generation
??(??|??)
画像生成 ???
潜在変数 ??改良案
マップの複数視点画像 視点
26
関連研究:CVAE
? Conditional VAE (CVAE) [Sohn+, NIPS’15]
– VAEに任意の情報yを条件づけたモデル
入力 ?? 再構成 ???
Inference
??(??|??, ??)
Generation
??(??|??, ??)
潜在変数 ??
入力 ??
Loss
学習時
27
関連研究:CVAE
? Conditional VAE (CVAE) [Sohn+, NIPS’15]
– VAEに任意の情報yを条件づけたモデル
入力 ?? 再構成 ???
Inference
??(??|??, ??)
Generation
??(??|??, ??)
潜在変数 ??
入力 ??
Loss
「9」
条件 ??
学習時
28
関連研究:CVAE
? Conditional VAE (CVAE) [Sohn+, NIPS’15]
– VAEに任意の情報yを条件づけたモデル
– 条件yから直接潜在変数zを推論するPriorを付加
入力 ?? 再構成 ???
Inference
??(??|??, ??)
Generation
??(??|??, ??)
潜在変数 ??
入力 ??
Loss
「9」
条件 ??
Prior
??(??|??)
潜在変数 ??
Loss
学習時
29
関連研究:CVAE
? Conditional VAE (CVAE) [Sohn+, NIPS’15]
– VAEに任意の情報yを条件づけたモデル
– 条件yから直接潜在変数zを推論するPriorを付加
生成 ??
Generation
??(??|??, ??)
「9」
条件 ??
Prior
??(??|??)
潜在変数 ??
推論時
ラベル「9」から潜在変数zを推論し,
モデル空間の生成が期待される
30
関連研究:CVAE
? Conditional VAE (CVAE) [Sohn+, NIPS’15]
– 条件として数字ラベルを与え, 潜在変数を動かして生成した例
[1] https://github.com/hwalsuklee/tensorflow-mnist-CVAE
31
手法の概要
? CVAEを使ったGQNの構造概要
– 以下の構造によって目標を満たすことができる!
視点画像 ?? ??
推定結果 ??
Inference
??(??|??, ??)
Generation
??(??|??, ??)
潜在変数 ??
Loss
Prior
??(??|??)
潜在変数 ??
条件 ??
マップの複数視点画像+その視点 視点?? ??
??1 ??2 ??3
視点画像 ?? ??
Loss
32
手法の概要
? CVAEを使ったGQNの構造概要
– 以下の構造によって目標を満たすことができる!
視点画像 ?? ??
推定結果 ??
Inference
??(??|??, ??)
Generation
??(??|??, ??)
潜在変数 ??
Loss
Prior
??(??|??)
潜在変数 ??
視点画像 ?? ??
Loss
条件 ??
マップの複数視点画像+その視点 視点?? ??
??1 ??2 ??3
視点?? =[??, ??, ??, ???????? ?, ??????]
x
y
z
pitch
yaw
33
手法の概要
? CVAEを使ったGQNの構造概要
– 以下の構造によって目標を満たすことができる!
生成 ??
Generation
??(??|??, ??)
潜在変数 ??
Prior
??(??|??)
潜在変数 ??
条件 ??
マップの複数視点画像+その視点 視点?? ??
??1 ??2 ??3
34
手法の概要
? CVAEを使ったGQNの構造概要
– 以下の構造によって目標を満たすことができる!
生成 ??
Generation
??(??|??, ??)
潜在変数 ??
Prior
??(??|??)
潜在変数 ??
条件 ??
マップの複数視点画像+その視点 視点?? ??
??1 ??2 ??3
このままでは複雑な画像生成が難しいので
GQNではこの構造をいじっている
35
手法の実装
? 実際の構造
– 元のCVAEに対してどの部分が変化しているのかを解説する
マップの複数視点画像
視点?? ??
InferenceInference
Generation
(Prior)
Generation
潜在変数 ??
視点画像?? ??
Loss
視点画像
?? ??
推定結果
??
??1 ??2 ??3
潜在変数 ??
条件 ??
Prior
Loss
36
手法の実装
? 実際の構造 (train時)
1. Prior/Generation部分の一体化
マップの複数視点画像
視点?? ??
視点画像?? ??
Loss
視点画像
?? ??
推定結果
??
??1 ??2 ??3
条件 ??
InferenceInference
Generation
(Prior)
Generation
潜在変数 ??
潜在変数 ??
Prior
Loss
37
手法の実装
? 実際の構造 (train時)
1. Prior/Generation部分の一体化
マップの複数視点画像
視点?? ??
視点画像?? ??
Loss
視点画像
?? ??
推定結果
??
??1 ??2 ??3
条件 ??
InferenceInference
Generation
(Prior)
Generation
(Prior)
潜在変数 ??
Loss
潜在変数 ??
38
手法の実装
? 実際の構造 (train時)
1. Prior/Generation部分の一体化
2. 表現ネットワーク:複数視点画像群から特徴量を抽出
InferenceInference
Generation
(Prior)
Generation
(Prior)
潜在変数 ??
視点画像?? ??
Loss
Loss
視点画像
?? ??
推定結果
??
潜在変数 ??
マップの複数視点画像
視点?? ??
??1 ??2 ??3
条件 ??
39
手法の実装
? 実際の構造 (train時)
1. Prior/Generation部分の一体化
2. 表現ネットワーク:複数視点画像群から特徴量を抽出
InferenceInference
Generation
(Prior)
Generation
(Prior)
潜在変数 ??
視点画像?? ??
Loss
Loss
視点画像
?? ??
推定結果
??
潜在変数 ??
??1 ??2 ??3
??1
??2
??3
?? ?? ?? 表現ネットワーク
マップの複数視点画像+その視点
視点?? ??
条件 ??
??
Scene Representation
40
手法の実装
? 実際の構造 (train時)
1. Prior/Generation部分の一体化
2. 表現ネットワーク:複数視点画像群から特徴量を抽出
InferenceInference
Generation
(Prior)
Generation
(Prior)
潜在変数 ??
視点画像?? ??
Loss
Loss
視点画像
?? ??
推定結果
??
潜在変数 ??
??1 ??2 ??3
??1
??2
??3
?? ?? ?? 表現ネットワーク
マップの複数視点画像+その視点
視点?? ??
条件 ??
??
Scene Representation
? 観測結果を表現ネットワークに
よって1表現に要約
? 各視点の総和を取ることで,
順番や枚数に依存しない表現
41
手法の実装
? 実際の構造 (train時)
1. Prior/Generation部分の一体化
2. 表現ネットワーク:複数視点画像群から特徴量を抽出
InferenceInference
Generation
(Prior)
Generation
(Prior)
潜在変数 ??
視点画像?? ??
Loss
Loss
視点画像
?? ??
推定結果
??
潜在変数 ??
??1 ??2 ??3
??1
??2
??3
?? ?? ?? 表現ネットワーク
マップの複数視点画像+その視点
視点?? ??
条件 ??
??
Scene Representation
? 表現ネットワークの詳細構造
42
手法の実装
? 実際の構造 (train時)
1. Prior/Generation部分の一体化
2. 表現ネットワーク:複数視点画像群から特徴量を抽出
3. 自己回帰モデル:潜在変数を複数の条件付き分布の積で表現
視点画像?? ??
Loss
視点画像
?? ??
推定結果
??
??1 ??2 ??3
??1
??2
??3
?? ?? ?? 表現ネットワーク
マップの複数視点画像+その視点
視点?? ??
条件 ??
??
Scene Representation
InferenceInference
Generation
(Prior)
Generation
(Prior)
潜在変数 ??
Loss
潜在変数 ??
43
手法の実装
? 実際の構造 (train時)
1. Prior/Generation部分の一体化
2. 表現ネットワーク:複数視点画像群から特徴量を抽出
3. 自己回帰モデル:潜在変数を複数の条件付き分布の積で表現
??1 ??2 ??3
マップの複数視点画像+その視点
視点?? ??
??1
??2
??3
?? ?? ??
??
Scene Representation
視点画像?? ??
Loss
視点画像
?? ??
推定結果
??
条件 ??
表現ネットワーク
Inference
??1 ????…
Inference
Generation
(Prior)
Generation
(Prior)
??1 ????…
Loss
自己回帰モデル (ConvLSTM)
44
手法の実装
? 実際の構造 (train時)
1. Prior/Generation部分の一体化
2. 表現ネットワーク:複数視点画像群から特徴量を抽出
3. 自己回帰モデル:潜在変数を複数の条件付き分布の積で表現
??1 ??2 ??3
マップの複数視点画像+その視点
視点?? ??
??1
??2
??3
?? ?? ??
??
Scene Representation
視点画像?? ??
Loss
視点画像
?? ??
推定結果
??
条件 ??
表現ネットワーク
Inference
??1 ????…
Inference
Generation
(Prior)
Generation
(Prior)
??1 ????…
Loss
自己回帰モデル (ConvLSTM)
DRAW [Gregor+,2015] に似た構造
? VAEをRNNを使うことで自己回帰
的にモデル化
45
手法の実装
? 実際の構造 (train時)
1. Prior/Generation部分の一体化
2. 表現ネットワーク:複数視点画像群から特徴量を抽出
3. 自己回帰モデル:潜在変数を複数の条件付き分布の積で表現
??1 ??2 ??3
マップの複数視点画像+その視点
視点?? ??
??1
??2
??3
?? ?? ??
??
Scene Representation
視点画像?? ??
Loss
視点画像
?? ??
推定結果
??
条件 ??
表現ネットワーク
Inference
??1 ????…
Inference
Generation
(Prior)
Generation
(Prior)
??1 ????…
Loss
自己回帰モデル (ConvLSTM)
DRAW [Gregor+,2015] に似た構造
? まずは大雑把に, 徐々に細かく画像
が生成される
46
手法の実装
? 実際の構造 (train時)
1. Prior/Generation部分の一体化
2. 表現ネットワーク:複数視点画像群から特徴量を抽出
3. 自己回帰モデル:潜在変数を複数の条件付き分布の積で表現
??1 ??2 ??3
マップの複数視点画像+その視点
視点?? ??
??1
??2
??3
?? ?? ??
??
Scene Representation
視点画像?? ??
Loss
視点画像
?? ??
推定結果
??
条件 ??
表現ネットワーク
Inference
??1 ????…
Inference
Generation
(Prior)
Generation
(Prior)
??1 ????…
Loss
自己回帰モデル (ConvLSTM)
ネットワークの詳細構造
47
手法の実装
? 実際の構造 (train時)
– 最終的な構造まとめ
??1 ??2 ??3
マップの複数視点画像+その視点
視点?? ??
??1
??2
??3
?? ?? ??
??
Scene Representation
Inference
??1 ????…
Inference
Generation
(Prior)
Generation
(Prior)
??1 ????…
視点画像?? ??
Loss
Loss
視点画像
?? ??
推定結果
??
条件 ??
表現ネットワーク
自己回帰モデル (ConvLSTM)
48
手法の実装
? 実際の構造 (Test時)
– 最終的な構造まとめ
??1 ??2 ??3
マップの複数視点画像+その視点
視点?? ??
??1
??2
??3
?? ?? ??
??
Scene Representation
Generation
(Prior)
Generation
(Prior)
??1 ????…
推定結果
??
条件 ??
表現ネットワーク
自己回帰モデル (ConvLSTM)
49
実験環境
? 4種類の環境での実験を行った
2. Mazes
4. Robot arms3. Shepard-Metzler objects
1. Rooms
50
実験結果
1. Rooms
– ランダムな四角い部屋にランダムに物体を配置
– 200万种类のシーン(各シーン5视点)で学习した结果
51
実験結果
1. Rooms
– Scene representationの可視化結果 (GQN vs VAE)
– GQNではシーンの三次元構造に基づいた空間分布
– VAEでは画像の色合いに基づいた分布しかなっていない
GQN VAE
52
実験結果
1. Rooms
– Scene representationの足し算引き算
? シーンに写っている物体の意味や位置に関して
足し算引き算ができるような特徴量
53
実験結果
2. Mazes
– 7x7グリッドのランダムな迷路
– 200万シーン(各300視点)を学習させた結果
? ミニバッチで1~20枚の視点で学習
54
実験結果
3. Shepard-Metzler objects
– ランダムな色と形の3D物体
– 視点の物体からの距離は一定
– 200万種類のシーン(15視点)を学習した結果
55
実験結果
4. Robot arms
– 仮想環境上のアームをターゲットに近づける
1. GQNによって三次元マップを学習
56
実験結果
4. Robot arms
– 仮想環境上のアームをターゲットに近づける
1. GQNによって三次元マップを学習
2. 学習したScene表現を使い, A3Cで強化学習
– 三次元構造に関する特徴量を使うことで適切に学習が進む
57
実験環境
? 4種類の環境での実験を行った
2. Mazes
4. Robot arms3. Shepard-Metzler objects
1. Rooms
すべてのCG環境において非常に高い
性能を出すことができた!
58
まとめ
? GQNの提案
– マップ画像群から三次元構造を反映した特徴量の抽出が可能
– 深層学習への融和性が非常に高い
? 深層学習で実際に性能向上させることができた
? 三次元地図作成において構造だけでなく, より高次元の情報
抽出が期待される(texture, object meaning, light…)
59
おまけ:GQNの発展
DeepMindからGQNの後続論文がいくつか出ている模様
1. Consistent GQN [Kumar+, 2018]
? 動画生成(一貫性を持つような生成)
2. SLIM [Pamalho+, 2018]
? 文章からの画像生成
3. Reversed-GQN [Rosenbaum+, 2018]
? RenderingでなくLocalization(画像から位置を推定)
60
参考文献
1. Neural scene representation and rendering
– DeepMindのブログ記事です. 一番詳しいです(それはそう)
– https://deepmind.com/blog/neural-scene-representation-and-rendering/
2. [DL輪読会] GQNと関連研究,世界モデルとの関係について(by 鈴木さん)
– 非常にわかりやすいまとめです. 世界モデルと関連付けた解説はとても面白いです.
– /DeepLearningJP2016/dlgqn-111725780
3. 再現実装
– Chainer (by musyoku氏)
? https://github.com/musyoku/generative-query-network
– Pytorch
? https://github.com/wohlert/generative-query-network-pytorch
– TensorFlow
? https://github.com/ogroth/tf-gqn

More Related Content

Neural scene representation and rendering の解説(第3回3D勉強会@関東)