1 of 41

ニューラル3D表現の最新動向

2022.06.09

加藤 大晴 (Preferred Networks)

2 of 41

SSII 2022 技術動向解説セッション

ニューラル3D表現の最新動向

2022-06-09

加藤 大晴 (Preferred Networks)

2

ボクセル

点群

メッシュ

ニューラル場

3 of 41

自己紹介

加藤大晴(かとうひろはる)

  • 博士(情報理工学)
  • Preferred Networks, Inc. リサーチャー
  • 3Dコンピュータビジョン
  • 過去の SSII
    • 微分可能レンダリングの最新動向, 2020�(技術動向解説セッション)
    • モダリティ変換と画像生成, 2018�(オーガナイズドセッション マルチモーダル深層学習)
  • 論文リストなど hiroharu-kato.com
  • 問い合わせ hiroharu.kato.1989.10.13@gmail.com

#3

4 of 41

          発展的なトピック

#4

3D形状表現はメッシュ,ボクセル,点群などが使われてきた

形状もニューラルネットワークで表現する手法が登場し始めている

✔ 複雑なシーンを柔軟に表現可能

✗ まだ発展途上

[Niemeyer+ 2020]

[Mildenhall+ 2020]

もしかしたら今後主流になるかも

SSII 2020 加藤講演資料

5 of 41

コンピュータビジョン?

  • 2D画像から3D世界を理解する技術
    • 深度推定,カメラポーズ推定,…

  • ほとんどの2Dのタスク (e.g. 画像識別) で間接的に3D推定が必要
          • 球体(3D形状),赤い → リンゴ

#5

6 of 41

ニューラル3D表現

ニューラルネットワークで3D情報を表現

  • 論文数が指数的に増加中
  • CVPR 2019 で3本同時に出たのがきっかけ
  • いま話題の NeRF でも使用

詳細の前に,従来的な表現を復習

  • ボクセル,点群,メッシュ
  • 深度マップ,多視点深度マップ,複数平面画像 (multiplane images),…

#6

7 of 41

ボクセル

ピクセルを3Dに拡張したもの

  • float pixels[H][W];
  • float voxels[D][H][W];

✔ 画像を認識・生成する方法論 (CNN etc.) をほとんどそのまま使い回せる

✗ メモリ消費量が膨大で,解像度は2563くらいが限界

  • シンプルな物体ひとつなら表せるが,それ以上はきびしい

#7

[Image: URL]

1603

803

403

8 of 41

階層的ボクセル (octree)

細かく表現したいところだけボクセルを分割

✔ 高解像度の表現が可能

✗ 生成/管理が複雑

✗ 深層学習との相性の良さが失われる

#8

[Image: URL]

9 of 41

点群

3Dシーンを点の集合で表現

  • `float points[N][3];`

✔ ボクセルよりコンパクト

  • 3D空間全体ではなく,物体の表面 (2D的) だけを表現すればよい

✗ 面を表現できない

✗ 深層学習で扱うのがやや難しい

#9

[Image: URL]

10 of 41

メッシュ

3Dシーンを三角形(多角形)の集合で表現

  • float vertices[N][3]; // 3D points
  • int faces[M][3]; // Triangles

✔ とてもコンパクト

  • 表面全体に点を打つ必要はない

✗ よいメッシュを得るためには職人技が必要

  • 頂点数はいくつか,どこに置くか,自己交差はないか,…

✗ 深層学習で扱うのはかなり難しい

  • グラフ構造をどう扱うか?

#10

[Image: URL]

11 of 41

(非ニューラル)陰関数表現

3D座標 p と関数 f について,f (p) = 0 となるところが物体の表面

✔ とてもとてもコンパクト

✗ 形状の作成がとても難しい

✗ 一般に,表面の位置を陽に求められない

  • 方程式が解析的に解けない

#11

[Figure: URL]

12 of 41

ニューラル3D表現 (neural field)

3D座標 pニューラルネットワーク f について,�f (p) が座標 p の3D情報 (モノがあるか,色,etc. ) を表す

  • e.g. f (p) = 1 のときモノの内部, f (p) = 0 のとき外部
  • e.g. f (p) = 0 のときモノの表面(このとき前スライドと一致)

この表現はニューラル場 (neural field) と呼ばれる

#12

ボクセル

点群

メッシュ

ニューラル場

13 of 41

ニューラル3D表現の利点

3D空間内の点 p の3D情報 = ニューラルネットワーク(p)

✔ コンパクトかつ柔軟

  • 任意の解像度,トポロジーが表現できる
  • 表現できる3D情報の精細さ ∝ NN の表現力 ≒ パラメータ数
  • NN は形状が複雑なところの表現に多数のパラメータを使おうとする,はず

✔ 形状の生成が簡単

  • 教師データ (e.g. 物体内部の点と外部の点の集合) を用いて NN を最適化するだけ

✔ 深層学習と組み合わせるのが簡単

  • システム全体を NN で構成できる

#13

14 of 41

いろいろな形の表現

占有率: p が物体の中にある確率 = NN(p)

符号付き距離: p から物体の表面までの距離 = NN(p)

  • 符号がマイナスのとき物体の中,プラスなら外
  • 物体の表面まで素早く到達できるので,レンダリングが高速

密度: レイが p を通るときにそこで物体にぶつかりそうな度合い = NN(p)

  • レイが空間中を進むときにどこでぶつかりそうか,を確率で表せる
    • 最適化のときに局所解に陥りにくい
  • NeRF (neural radiance fields) で用いられる

#14

15 of 41

形以外も表現できる

テクスチャ: p の色 = NN(p)

マテリアル: p のマテリアル = NN(p)

シーンフロー: 時刻 tp にある点の移動速度と向き = NN(p, t)

#15

16 of 41

ニューラル場の最適化

ニューラル場に変換したい3Dモデルを持っているとき,

それを直に教師データとして用いて NN を最適化すればよい

たとえば

  • モデル: p が物体の中にある確率 = NN(p)
  • 教師データ: 3D空間内の適当な点 qi とそれが物体の内部かどうかのラベル ti
  • 損失関数: torch.binary_cross_entropy(NN(qi), ti)

ただ,既存のモデルをニューラル場に変換したい場面は現実的にあまりない

多視点画像からニューラル場を得られないか?

#16

17 of 41

画像からニューラル場を最適化

#17

観測画像 (2D)

カメラパラメータ

ほしいもの (3D)

18 of 41

画像からのニューラル場の最適化

ニューラル場をレンダリングした画像と,観測画像との違い

小さくなるように NN を最適化すればよい

  • {qi}: カメラから出発し,あるピクセルを通るレイ上の点の集合
  • ct: 観測画像でのそのピクセルの色

勾配法でNNを最適化するには,レンダリング関数が微分可能でなければならない

  • 微分可能レンダリングに関する加藤の過去の講演資料:�SSII 2020, VC 2021, CVIM 2022-03

#18

観測画像 (2D)

ほしいもの (3D)

レイ上の点 {qi}

それぞれの点の3D情報

(モノがあるか? 色は?)

NN

ピクセルの色 c

Render

正解 ct

誤差最小化

19 of 41

Neural radiance field (NeRF)

#19

NeRF はきわめて高性能な自由視点画像生成手法

点の色は見る向きによって異なってもよい,とモデル化することが特徴

σ = NNσ(p), c = NNc(p, d)

また,微分可能ボリュームレンダリングを用いることに特徴がある

p にモノがありそう度

3D座標

p の色

見ている向き

20 of 41

NeRFによる自由視点画像生成

#20

観測画像

観測にない視点からレンダリング

NNを最適化

21 of 41

NeRFによる自由視点画像生成

#21

視点によって

見え方が変わる

22 of 41

動画への拡張

#22

静止した NeRF

σ = NNσ(q)

c = NNc(q, d)

に加えて,その変形を最適化

q = NNq(p, t)

各フレームでの3D座標

時刻

静止した空間�での3D座標

23 of 41

動画への拡張

#23

24 of 41

撮影条件が揃っていない写真からのNeRF

#24

  • 定常的なものと一時的なもの(観光客など)の2種類の NeRF を同時学習
  • 画像ごとに少し見え方が変わってもよい,とする

25 of 41

条件付きニューラル場

#25

1シーンついてそれぞれ NN を最適化するのは大変

  • クルマが1000台あったとして,NN を1000個用意するのか?
  • 1つのNNでいろいろなシーンを表現できないか?

条件付きニューラル場: シーンを表現する特徴ベクトル z として,

3D情報 = NN(p, z)

とすることで,ひとつの NN でいろいろな3Dシーンを表現

26 of 41

単一画像物体再構成

#26

画像から形状コードを推定する NNr と,�それをデコードして形状を出力する NNd を同時に学習

適当な点 p

正解の�3Dモデル

画像

NNr

形状コード z

モノがある度

NNd(p, z)

p にモノが�あるかどうか

予測誤差

再構成

学習

27 of 41

単一画像物体再構成

#27

  • 既存の3D表現を用いた場合と同等以上の性能
  • ごく少数のパラメータで,2563のボクセルと同程度の表現力

28 of 41

単一画像物体再構成を画像から学習

#28

正解の3Dモデルを持っていなくても,�レンダリングを介すれば画像を用いて学習できる

適当なピクセル p の�レイ上の点 {pi}

正解の画像

画像

NNr

z

モノがある度,色

{NNd(pi, z)}

p の色

予測誤差

再構成

学習

Render

レンダリングされた色

29 of 41

3D形状生成モデル

#29

敵対的生成ネットワーク (GAN) と同様の枠組みで,3D形状の生成モデルを訓練可能

判別器

ランダムな形状コード z

ボクセル

本物らしい度

生成

学習

ボクセル化

ニューラル場 NNd

30 of 41

生成モデル?

#30

デコーダ

・ピクセルの逐次生成

・低解像度→高解像度

中間表現

画像

3D世界

2D画像

投影

多くの画像生成モデル

実際の画像の生成プロセス

高解像度化が難しい

回転・拡大縮小は苦手

解像度は問題にならない

回転・拡大縮小も容易

*1

SSII 2018 加藤講演資料

31 of 41

3Dを介した画像生成モデル

#31

ニューラル場,微分可能レンダリング,敵対的学習の合わせ技

判別器

ランダムな形状コード z

画像

本物らしい度

生成

学習

レンダリング

ニューラル場 NNd

32 of 41

3D空間での compositionality を考慮した画像生成モデル

#32

複数の要素 (e.g. 前景,背景) を別個のニューラル場で表すことで

シーン中の要素を独立にコントロールして画像を生成

前景だけ動かす

物体を増やす

33 of 41

ニューラル3D表現の欠点

✗ 多数の点を NN にクエリする必要があり,形状推定/レンダリングが遅い

  • ロボットの物体把持(形状推定)
  • インタラクティブな可視化(レンダリング)

✗ 単純な NN ですべてを表すのは効率的ではないかもしれない

  • 地球全体をひとつの NN で表すべきか? NYのことを考えながら東京を最適化するか?
  • 局所的には共通の部品があるのでは? (e.g. クルマが100台並んでいるとき)

✗ 人間による編集が難しい

  • VR/ゲーム/映画向けの3Dアセット作成などで重要

#33

34 of 41

ボクセルの併用によるシーン表現の効率化

#34

シーンをグリッド状に配置されたプリミティブの集合として表すことで

効率的かつ高精度に3D形状を表現できる

  • 各プリミティブはニューラル場で表す

35 of 41

点群の併用によるシーン表現の効率化

#35

シーンを点群上に配置されたプリミティブの集合として表す

36 of 41

NNを分割して街を表現

#36

37 of 41

ニューラル場って本当に必要?

#37

y = NN(p) は,以下の処理から成るはず

  1. 座標の値 p をいい感じの内部表現に変換
  2. それをデコードして3D情報 (密度 etc.) に変換

本当に重要なのはどちらか?

そこをうまく作り込めば,NN のサイズを小さくできるのでは?

38 of 41

レンダリングの高速化 (グリッド&ニューラル場)

#38

シーンを大きな NN 1つで表すのではなく

グリッドごとに小さな NN を持つことで

性能を落とさずレンダリングを2500倍高速化

グリッドの併用は「座標の値 p を内部表現に変換」する手間を低減することになる,はず�(個人的な解釈)

39 of 41

最適化の高速化 (グリッド&ハッシュ化&ニューラル場)

#39

ハッシュ化とグリッドを駆使して p を前処理しておくことで NN を小さくでき,最適化を4時間から5秒にまで高速化

p を内部表現へ変換するプロセスを�人手で作り込んだものといえる

40 of 41

最適化の高速化 (疎なボクセル)

#40

疎で高解像度のボクセルを使えば,そもそも NN を一切使わなくてもよい

  • NeRFと同程度の性能
  • 最適化が100倍くらい高速

正解

NeRF++

Plenoxels (No NN)

41 of 41

ニューラル3D表現の最新動向 まとめ

#41

ニューラル場: NN が3D座標を受け取り,その点の3D情報を出力

  • 柔軟かつコンパクトで,活用できる場面は多い
  • 幾何形状 (占有率,符号付き距離,密度) のほか,色や素材,フローも表現可能
  • 話題の neural radiance fields (NeRF) もニューラル場を用いている
  • 条件付きニューラル場で,3D再構成や3D生成モデルも学習可能

ニューラル場を使えば万事オーケーなのか?

  • 従来的な表現と組み合わせた細やかな作り込みの方が高性能
  • 応用によっては,実はニューラル場は不要かも

ボクセル

点群

メッシュ

ニューラル場