Slide 1

Slide 1 text

CVIM & PRMU 研究会 チュートリアル 微分可能レンダリング 2022-03-10 加藤 大晴 (Preferred Networks) 1 入力: 2D画像 出力: 3Dモデル 2D画像 ニューラル ネットワーク 微分可能 レンダリング 誤差 最適化 Example from [Kato+ 2018]

Slide 2

Slide 2 text

自己紹介 加藤大晴(かとうひろはる) - 博士(情報理工学) - Preferred Networks, Inc. リサーチャー - 職歴 - 2014-2018 ソニー (株) - 2018- 現職 - 専門: 3Dコンピュータビジョン - 論文リストなど hiroharu-kato.com - 問い合わせ [email protected] #2

Slide 3

Slide 3 text

目次 1. 微分可能レンダリングの考え方 2. 微分可能レンダリングの使い道 a. 3Dシーンの最適化 b. 3D再構成の学習 c. NeRF によるビュー補間 3. 微分可能レンダリングの仕組み a. メッシュ (ラスタライズ) b. メッシュ (物理ベースレンダリング) c. ニューラル場 (Radiance Field) 4. 微分可能レンダリングのライブラリ #3

Slide 4

Slide 4 text

たくさんの画像から3Dモデルをつくりたい #4 観測画像 (2D) ほしいもの (3D)

Slide 5

Slide 5 text

たくさんの画像から3Dモデルをつくりたい #5 観測画像 (2D) ほしいもの (3D) カメラ姿勢は既知であると仮定 典型的な方法 特徴点を検出し,画像間で対応点を探し, 三角測量で3D空間での位置を求める 微分可能レンダリング ”観測画像のように見える” 3Dモデルを最適化で直接求める

Slide 6

Slide 6 text

たくさんの画像から3Dモデルをつくりたい #6 観測画像 (2D) ほしいもの (3D) ”観測画像のように見える” 3Dモデルを求める 3Dモデル π はどう “見える” か? → レンダリングして画像に変換してみればよい 3Dモデルをレンダリングして画像にする関数を R とすると, 見え方 I’ = R(π) と書くことができる 2D画像

Slide 7

Slide 7 text

たくさんの画像から3Dモデルをつくりたい #7 観測画像 (2D) ほしいもの (3D) ”観測画像のように見える” 3Dモデルを求める その見え方 I’ は “観測画像 I のように見える” か? → 画像同士の違いを測る適当な方法を使えばよい 画像同士の距離を測る関数 L を用いて 観測画像のように見えない度 = L(I, I’) と書くことができる

Slide 8

Slide 8 text

たくさんの画像から3Dモデルをつくりたい #8 観測画像 (2D) ほしいもの (3D) ”観測画像のように見える” 3Dモデルを求める 結局,観測画像のように見える3Dモデル π* は π* = argmin π L(I, I’) = argmin π L(I, R(π)) と書くことができる 3Dモデルを レンダリングした画像 観測画像 画像の違い

Slide 9

Slide 9 text

たくさんの画像から3Dモデルをつくりたい #9 観測画像 (2D) ほしいもの (3D) そのような π* をどうやって求めるか? 素朴に考えると,適当な初期値 π から勾配法で最適化したい 更新式: π ← π - μ ∂L/∂π = π - μ (∂L/∂R)(∂R/∂π) 距離関数 L が微分可能であると仮定すると, ∂R/∂π つまり “レンダリング関数 R を3Dモデル π で微分した値” さえ わかればよい → 微分可能レンダリング

Slide 10

Slide 10 text

NeRF: Neural Radiance Fields #10 ニューラルネットワークで表される3Dシーン π と 微分可能なボリュームレンダリング関数 R で驚異的な性能を達成 入力画像 得られたもの 詳細は後述 [Mildenhall+ 2020]

Slide 11

Slide 11 text

PFN 3D Scanner (公式ページ) #11 PR

Slide 12

Slide 12 text

目次 1. 微分可能レンダリングの考え方 2. 微分可能レンダリングの使い道 a. 3Dシーンの最適化 b. 3D再構成の学習 c. NeRF によるビュー補間 3. 微分可能レンダリングの仕組み a. メッシュ (ラスタライズ) b. メッシュ (物理ベースレンダリング) c. ニューラル場 (Radiance Field) 4. 微分可能レンダリングのライブラリ #12

Slide 13

Slide 13 text

微分可能レンダリングとは ∂ピクセル/∂3D形状 ∂ピクセル/∂物性・色 ∂ピクセル/∂照明 ∂ピクセル/∂カメラ 微分可能レンダリング (Differentiable rendering, DR) → これらが提供されるレンダリング関数 #13 3D形状 物性・色 照明 カメラ 3Dシーン レンダリング 2D画像(ピクセル) Image: http://www.cs.mun.ca/~omeruvia/philosophy/WireframeBunny.html

Slide 14

Slide 14 text

微分可能レンダリングによる3Dシーンの最適化 ∂ピクセル/∂3D形状 ∂ピクセル/∂物性・色 ∂ピクセル/∂照明 ∂ピクセル/∂カメラ #14 3Dシーン 2D画像 なんらかの 目的関数 評価値 これらがわかると,画像の “良さ” を高めるように, 3Dシーンのパラメータを勾配法で最適化できる 最適化 “良さ” を計算 レンダリング

Slide 15

Slide 15 text

物体の3D位置の最適化 #15 レンダリングさ れた画像 誤差 与えられたターゲット画像に似るように物体の3D位置を最適化 (∂誤差/∂物体の位置) を使って 3D位置を勾配降下法で最適化 ターゲット画像 物体の3D位置 その他シーン情報 最適化中の様子 [Li+ 2018]

Slide 16

Slide 16 text

照明とカメラの位置の最適化 #16 [Zeltner+ 2021]

Slide 17

Slide 17 text

3D形状とテクスチャの最適化 #17 [Loubet+ 2019]

Slide 18

Slide 18 text

クルマの3D位置推定 #18 クルマの - 3次元空間上での位置 - 形状パラメータ - テクスチャパラメータ カメラに映っているクルマは何メートル先にあるのか? (Preferred Networks, TRI, Woven の共同研究) 誤差 レンダリング 最適化 PR [Beker+ 2020]

Slide 19

Slide 19 text

複雑な評価関数を使った最適化 #19 評価関数はターゲット画像との平均二乗誤差ではなく 微分可能な関数 (ニューラルネットワーク etc.) が出力するなにかでもよい 3Dシーン 2D画像 評価値 最適化 NN 微分可能 レンダリング New!

Slide 20

Slide 20 text

画像のスタイルを3Dモデルへ転移 #20 3Dシーン 評価値 最適化 画像のスタイルの近さを測 るNN 最適化結果 [Kato+ 2018] 2D画像

Slide 21

Slide 21 text

ニューラルネットが苦手なケースを探す #21 3Dモデル, ライティング レンダリング 最小化 画像 訓練済みの ニューラルネット 標識だと 思う度 標識だと認識されるものについて, 光の当て方を変えて,そう認識されないようにする 初期状態: 標識と認識 最適化後: 給水塔と認識 [Liu+ 2019]

Slide 22

Slide 22 text

3D ディープドリーム #22 3Dシーン なにかが 映っている度 最適化 画像識別器 最適化結果 [Kato+ 2018] 2D画像 SKIP

Slide 23

Slide 23 text

写真を見せるだけでなんでも3Dにできるようになる? → そうはならない - 勾配法でよい解に到達するのは難しく, 正解にかなり近い状態から始めないとうまくいかない - 画像に合う3Dシーンというものは無数にある 微分可能レンダリングを用いた3D推定の弱点 #23 [Loubet+ 2019] [Adelson & Pentland 1996]

Slide 24

Slide 24 text

3Dシーンの最適化 まとめ - 微分可能レンダリングで,3D形状,物性,照明,カメラを レンダリングした画像が期待する出力画像に合うように最適化できる - 「画像の違い」を測るのは NN でもよい - e.g. 画像のスタイルの近さを測るNN - 目的関数は画像との比較でなくてもよい - e.g. 画像識別器の予測結果 #24 3Dシーン 2D画像 なんらかの 目的関数 評価値 最適化

Slide 25

Slide 25 text

目次 1. 微分可能レンダリングの考え方 2. 微分可能レンダリングの使い道 a. 3Dシーンの最適化 b. 3D再構成の学習 c. NeRF によるビュー補間 3. 微分可能レンダリングの仕組み a. メッシュ (ラスタライズ) b. メッシュ (物理ベースレンダリング) c. ニューラル場 (Radiance Field) 4. 微分可能レンダリングのライブラリ #25

Slide 26

Slide 26 text

ディープラーニングは微分可能な層の組み合わせ #26 最初の層 W なんらかの層 なんらかの層 犬度 イヌ画像に対して高い「犬度」を出力するように ニューラルネットワークを学習したい 最初の層がパラメータ W を持つとすると W ← W + μ ∂犬度/∂W という形でパラメータを更新する ∂犬度/∂W を計算するには、後続の層すべてが 微分可能である(勾配が計算できる)必要がある 逆に,微分可能な処理ならばだいたい何でも ディープラーニングの層として使うことができる Wを少し変えたとき 犬度はどう変わるか?

Slide 27

Slide 27 text

深層学習とつなげる #27 微分可能レンダリングで,3Dシーンのパラメータではなく 3Dシーンを出力するニューラルネットワーク (NN) も最適化できる 3Dシーン 2D画像 ターゲット画像と の差 最適化 なにか NN New! New! 微分可能 レンダリング

Slide 28

Slide 28 text

一般化したパイプライン #28 2D画像 評価値 微分可能 レンダリング NNの画像認識 モジュールなど 最適化 3Dシーン NNのシーン生成 モジュールなど なんらかの入 力 最適化 微分可能レンダリングは巨大なNNを構成するモジュールのひとつとみなせる SKIP

Slide 29

Slide 29 text

教師付き学習による3D推定 #29 画像から3Dモデルを推定する NN を考える 素直な方法は {2D画像, 3Dモデル} の学習データを用いた教師付き学習 予測された 3Dモデル 2D画像 NNなど 予測誤差 正解の 3Dモデル 誤差が小さくなるよ うに最適化

Slide 30

Slide 30 text

教師付き学習はデータセット作成が大変 #30 {2D画像, 3Dモデル} のデータの作成は - 専門的なスキルが必要になる - 専門家に依頼するとたいへんな 時間とお金がかかる - あるいは正確さを犠牲にすることになる 似た形のものをデータベースから選び 画像にフィッティング [Xiang+ 2014] 3Dモデルを使わずに学習したい

Slide 31

Slide 31 text

レンダリングを介することで2D画像を教師データとして使うことができる 予測された 2D画像 そこで微分可能レンダリング 予測された3D モデル 予測誤差 正解の2D画像 2D画像 NN レンダリング 学習データを作成するコストが下がる 正解の3Dモデル 予測誤差 #31

Slide 32

Slide 32 text

3D再構成を2D画像から学習 #32 学習データ = {物体をいろいろな視点から見た画像 , レンダリングのためのカメラ情報 } 3Dシーン 差 最適化 3D推定NN ターゲット画像 画像 [Kato+ 2018], [Kato & Harada 2019] 2D画像

Slide 33

Slide 33 text

典型的なユースケース #33 画像から3D構造を推定するニューラルネットワークを学習したいが - 3Dの学習データが手に入らない - 手に入るが数が少ない/あまり正確でない 場合に,代わりにレンダリングされた画像を学習に使うことで - 学習の実現 - 補助情報として使い精度向上 を目指す SKIP

Slide 34

Slide 34 text

パラメトリック形状モデル 3D構造を推定するNNが簡単に設計できるとカンタン 例: 身体や手については,いくつかのパラメータを受け取り形状・ポーズを出力するモデ ルが広く用いられている NNはそのパラメータを予測すればよい #34 MANO hand model [Romero+ 2017] SMPL body model [Loper+ 2015]

Slide 35

Slide 35 text

身体の3D再構成 #35 キーポイントと シルエットを推定 人体モデルの変形 パラメータの推定 レンダリングして 合っているかを確認 [Pavlakos+ 2018] ほか [Lassner+ 2017] [Wang+ 2020] など

Slide 36

Slide 36 text

手のポーズの推定 #36 手のスケルトンを学習データとして 使えるが,それは粗い情報しか含まない 2D画像の手のシルエットを追加の 教師情報として用いることで性能向上 入力 シルエットを使わない 学習の結果 シルエット使用 [Baek+ 2019] ほか [Zhang+ 2019] [Zimmermann+ 2019] など

Slide 37

Slide 37 text

ニューラル形状生成モデル 複雑な形状を球の頂点の位置を動かすことで生成可能 [Kato+ 2018] [Wang+ 2018] - だが,トポロジーが変えられない Graph Convolution, AtlasNet [Groueix+ 2018], 頂点の逐次的な生成 [Nash+ 2020] など - 微分可能レンダリングと組み合わせるにはまだ至っていない #37

Slide 38

Slide 38 text

物体の3D再構成の学習 #38 入力 出力 パラメトリック生成モデルがない物体カテゴリも扱える 3D形状,照明,テクスチャ画 像を推定するNN レンダリングした画像を入力画像と近 付ける,という基準で学習 3D再構成の例 [Chen+ 2019] ほか [Kato+ 2018] [Kanazawa+ 2018] など

Slide 39

Slide 39 text

深度推定による顔画像の3D化 #39 顔画像の集合だけから3D形状 (= 深度),色,視点,照明推定を学習 画像さえあれば追加情報が不要なので いろいろな物体カテゴリ(e.g. ネコ)に適用可 [Wu+ 2021] ほか [Zhou+ 2020] など

Slide 40

Slide 40 text

物体を複数の視点から見た画像, 視点情報,シルエット [Kato+ 2018] 物体をひとつの視点から見た画像, 視点情報,シルエット [Kato & Harada 2019a] 物体をひとつの視点から見た画像 だけ [Kato & Harada 2019b] 教師データをどこまで減らせるか? 入力画像 [Kato+ 2018] [Kato & Harada 2019a] #40 入力画像 出力 学習データ 入力画像 出力 PR SKIP

Slide 41

Slide 41 text

3D再構成の学習 まとめ - 微分可能レンダリングを使うと,3Dシーンを直接最適化するだけでなく 3Dシーンを推定するNNを画像を使って学習できる - 3Dの教師データが不要/減らせることが利点 - さまざまな実応用の可能性がある - ロボットの物体把持,3Dモデリング - アバター生成,アニメーション制作 - ロボットの移動,自動運転

Slide 42

Slide 42 text

目次 1. 微分可能レンダリングの考え方 2. 微分可能レンダリングの使い道 a. 3Dシーンの最適化 b. 3D再構成の学習 c. NeRF によるビュー補間 3. 微分可能レンダリングの仕組み a. メッシュ (ラスタライズ) b. メッシュ (物理ベースレンダリング) c. ニューラル場 (Radiance Field) 4. 微分可能レンダリングのライブラリ #42

Slide 43

Slide 43 text

これまで紹介した手法のほとんどは,3D表現としてメッシュを用いていた NeRF は neural radiance field という3D表現を用いる σ = NN σ (p), c = NN c (p, d) ニューラルネットで複雑なシーンを柔軟に表現できる NeRF によるビュー補間 #43 p にモノがありそう度 3D座標 p の色 見ている向き

Slide 44

Slide 44 text

NeRFの最適化 #44 1. 訓練画像からランダムにピクセルを選ぶ 2. そのピクセルを通るレイ上で,たくさんの点を適当に選び その点にモノがありそうか,その点の色を NN に問い合わせる 3. カメラから出発してピクセルに向かって進んでいくと どのあたりでモノにぶつかるか,の確率分布を計算する 4. それをもとにピクセルの色の期待値を計算する 5. それが正解のピクセルの色に近付くように NN を最適化する 後述

Slide 45

Slide 45 text

NeRFによるビュー補間 #45 観測画像 観測にない視点からレ ンダリング NNを最適化

Slide 46

Slide 46 text

NeRFによるビュー補間 #46 視点によって 見え方が変わる

Slide 47

Slide 47 text

動画への拡張 #47 [Li+ 2021] 静止した NeRF σ = NN σ (q) c = NN c (q, d) に加えて,その変形を最適化 q = NN q (p, t) 各フレームでの 3D座標 時刻 静止した空間 での3D座標

Slide 48

Slide 48 text

動画への拡張 #48 [Park+ 2021] SKIP

Slide 49

Slide 49 text

撮影条件が揃っていない写真からのNeRF #49 [Martin-Brualla+ 2021] - 定常的なものと一時的なもの(観光客など)の2種類の NeRF を同時学習 - 画像ごとに少し見え方が変わってもよい,とする

Slide 50

Slide 50 text

街のNeRF #50 [Tancik+ 2022]

Slide 51

Slide 51 text

カメラポーズの最適化 #51 [Yen-Chen+ 2021] SKIP

Slide 52

Slide 52 text

NeRFの問題点 #52 レンダリングに時間がかかる - ブルドーザーは1枚1分 最適化に時間がかかる - ブルドーザーは4時間 (1GPU),ブランデンブルク門は2日 (8GPUs) ジオメトリが不正確 たくさんの視点からの画像が必要 - ブルドーザーは100枚,サンフランシスコは300万枚 [Gao+ 2020] ある点にモノがあるかは NN に 問い合わせないとわからない モノがありそう度の 閾値の決定が難しい

Slide 53

Slide 53 text

レンダリングの高速化 #53 シーンを大きな NN 1つで表すのではなく グリッドごとに小さな NN を持つことで レンダリングを2500倍高速化 まず普通の NeRF を得てから その知識を転移する ← 最適化は速くならない [Reiser+ 2021]

Slide 54

Slide 54 text

最適化の高速化 #54 NeRF の NN σ = NN σ (p) は p をいい感じの特徴量に変換するのに 時間をかけている ハッシュ化とグリッドを駆使して p を前処理 しておくことで NN を小さくでき,最適化を4 時間から5秒にまで高速化 [Müller+ 2022] 3D座標

Slide 55

Slide 55 text

ジオメトリの精緻化 #55 σ = NN σ (p) とすると,「モノがありそう度」から 表面の位置を求める閾値の設定が難しい NN の出力が「モノがありそう度」と 「SDF」(出力がゼロのところが表面) の 両方の役割を果たすようなパラメタ化を行う ことで,表面の位置を精緻に表現 [Wang+ 2021] ほか [Oechsle+ 2021] [Yariv+ 2021] p にモノがありそう度 SKIP

Slide 56

Slide 56 text

画像枚数が少ないときのNeRF #56 入力枚数が少ないとき「そのシーンを表すNeRF」の 最適化は自由度が高すぎて困難 数枚の画像から NeRF を生成する NN を いろいろなシーンを使って事前に学習しておく [Yu+ 2021] Input (3 views) PixelNeRF NeRF

Slide 57

Slide 57 text

画像枚数が少ないときのNeRF #57 3D再構成の学習でメッシュを NeRF に置き換えたものと解釈できる NN NeRF レンダリングさ れた画像 誤差 最適化 NN 微分可能 レンダリング 誤差 最適化 微分可能 レンダリング

Slide 58

Slide 58 text

NeRFによるビュー補間 まとめ - 画像集合をもとに,高品質な任意の視点から見た画像を生成 - 3Dシーンを NN で表すことで複雑なシーンを柔軟に表現 - 実用上いろいろな課題があるが1年で急速に片付けられている - レンダリング/最適化が遅い,ジオメトリが不正確, … - 今年も急発展すると思われるが,進展が速すぎてついていくのが大変 #58

Slide 59

Slide 59 text

目次 1. 微分可能レンダリングの考え方 2. 微分可能レンダリングの使い道 a. 3Dシーンの最適化 b. 3D再構成の学習 c. NeRF によるビュー補間 3. 微分可能レンダリングの仕組み a. メッシュ (ラスタライズ) b. メッシュ (物理ベースレンダリング) c. ニューラル場 (Radiance Field) 4. 微分可能レンダリングのライブラリ #59

Slide 60

Slide 60 text

ラスタライズ vs 物理ベースレンダリング #60 ラスタライズに基づくレンダリングは高速で深層学習と組み合わせやすい 物理ベースレンダリングは複雑な素材や光の反射を扱えるが遅い Image: link

Slide 61

Slide 61 text

3D表現と微分可能レンダリング #61 メッシュ ラスタライズ メッシュ 物理ベース NN ラスタライズ NN 物理ベース レンダリング速度 速 遅 遅 激遅 複雑なマテリアル 難 易 難 易 学習/最適化 難 難 易 易 微分可能レンダリング やや難 難 易 難 ボクセルや点群は「レンダリングして見比べる」枠組みに不向き メッシュとNN表現の微分可能レンダリングについて説明する

Slide 62

Slide 62 text

ラスタライズとピクセル積分 #62 スクリーン座標上の 三角形の集合 各ピクセルへ 三角形を割り当てる (ラスタライズ) ピクセル領域の色の平均 (ピクセル積分) ✔ 写実的レンダリングに拡張しやすい ✗ 計算が重い(モンテカルロ積分) ✔ 計算が高速 ✗ 非写実的 メッシュ SKIP

Slide 63

Slide 63 text

色勾配があるときのラスタライズの微分 #63 v1 v2 v3 w1 w2 w3 たとえば左図では - ピクセルの色 c p は各頂点色の 重み付け w i 和で表され, - その重み付け w i は各頂点の座標値 v i を 用いて計算される - つまり c p は v i の関数 p ✔ (∂ピクセル色/∂頂点座標) は解析的に計算できる SKIP

Slide 64

Slide 64 text

素直な微分の問題点 #64 ピクセルの中心点の 三角形の色をサンプリング 三角形の色が一様な場合, 頂点座標を微小変化させてもピクセルの色は変わらない → “∂色/∂頂点座標” は常にゼロ ✗ 素直な微分では物体の形状の最適化が行えない

Slide 65

Slide 65 text

ラスタライズの微分のアプローチ #65 レンダリング画像を変えずに 擬似的な勾配を計算 [Loper & Black 2014] [Kato+ 2018] [Laine+ 2020] レンダリング画像をぼやかすことで 最適化に有用な勾配を得る [Liu+ 2019] [Chen+ 2019] Images: [Liu+ 2019] 3D 順伝播 (通常) 逆伝播 (工夫) 3D 順伝播 (工夫) 逆伝播 (通常) ✔ 画像の質が落ちない ✗ 勾配は疑似的 ✔ 解析的に正しい勾配 ✗ 画像の質が落ちる

Slide 66

Slide 66 text

どちらがいいのか? #66 3D 順伝播 (通常) 逆伝播 (工夫) 3D 順伝播 (工夫) 逆伝播 (通常) 感覚としては,どの手法を使っても性能に大きな差はない 後者は「ぼやかし度」のパラメータのチューニングが必要 - ぼやかさないと学習が進まないが,やりすぎると絵の品質が落ちる - よくチューニングすれば後者が若干良い - 雑なチューニングでは前者の方が良い

Slide 67

Slide 67 text

ラスタライズの微分による形状最適化 #67 レンダリング画像を変えずに 擬似的な勾配を計算 [Loper & Black 2014] [Kato+ 2018] [Laine+ 2020] レンダリング画像をぼやかすことで 最適化に有用な解析的な勾配を計算 [Liu+ 2019] [Chen+ 2019] Images: [Liu+ 2019] 3D 順伝播 (通常) 逆伝播 (工夫) 3D 順伝播 (工夫) 逆伝播 (通常) ✔ 画像の質が落ちない ✗ 勾配は疑似的 ✔ 解析的に正しい勾配 ✗ 画像の質が落ちる SKIP

Slide 68

Slide 68 text

ラスタライズの逆伝播: 1枚のポリゴンを例に #68 (a) 通常のラスタライズ → 誤差が逆伝播されない [Kato+ 2018] SKIP

Slide 69

Slide 69 text

ラスタライズの逆伝播: 1枚のポリゴンを例に #69 (a) 通常のラスタライズ (b) 提案手法 しかし,これだけでは不十分 [Kato+ 2018] SKIP

Slide 70

Slide 70 text

ラスタライズの逆伝播: 1枚のポリゴンを例に #70 (a) 通常のラスタライズ (b) 提案手法 [Kato+ 2018] SKIP

Slide 71

Slide 71 text

メッシュの微分可能ラスタライズ まとめ - レンダリングが高速で深層学習と組み合わせやすい - ピクセルの色が離散的なサンプリングで決定されるので 素直なレンダリングではメッシュの頂点の座標に勾配が伝わらない (∂ピクセル色 / ∂頂点座標 = 0) - 「レンダリング画像を変えずに嘘の勾配を定義」「レンダリング画像をぼやかすことで 勾配を伝える」の2つのアプローチがある #71 頂点を少し動かすとピクセルの色が少 し変わる,ということがない

Slide 72

Slide 72 text

目次 1. 微分可能レンダリングの考え方 2. 微分可能レンダリングの使い道 a. 3Dシーンの最適化 b. 3D再構成の学習 c. NeRF によるビュー補間 3. 微分可能レンダリングの仕組み a. メッシュ (ラスタライズ) b. メッシュ (物理ベースレンダリング) c. ニューラル場 (Radiance Field) 4. 微分可能レンダリングのライブラリ #72

Slide 73

Slide 73 text

ラスタライズとピクセル積分 #73 スクリーン座標上の 三角形の集合 各ピクセルへ 三角形を割り当てる (ラスタライズ) ピクセル領域の色の平均 (ピクセル積分) ✔ 写実的レンダリングに拡張しやすい ✗ 計算が重い(モンテカルロ積分) ✔ 計算が高速 ✗ 非写実的 メッシュ

Slide 74

Slide 74 text

物理ベース微分可能レンダリング #74 光の振る舞いをモデリングすることで,反射を考慮した複雑な最適化が行える [Vicini+ 2021]

Slide 75

Slide 75 text

ピクセルの色は積分を用いて定義される #75 ピクセルの色 = そのピクセル内の点の色の平均 *この話は [Zhao+ 2020] に基づいています SKIP

Slide 76

Slide 76 text

ピクセルの色は積分を用いて定義される #76 ピクセルの色 その点を どれだけ重視するか ピクセル内の あらゆる点について その点の色 シーンの パラメータ SKIP

Slide 77

Slide 77 text

この積分はモンテカルロ法で求められる #77 ピクセル内の たくさんの点について その点の色×重み SKIP

Slide 78

Slide 78 text

自動微分による勾配 #78 この式は微分可能そうだし,これを PyTorch で実装すれば 自動微分でオールオッケーなのでは? ← そうはならない 「積分をモンテカルロ近似してから微分したもの」では 「積分を微分したもの」を近似できない SKIP

Slide 79

Slide 79 text

なぜモンテカルロ近似ではだめか? #79 一般に,被積分関数に不連続点があるとき,積分の微分は interior term と boundary term に分けられ,それぞれがモンテカルロ近似できる 三角形の色が変わると ピクセルの色はどう変わるか? これは自動微分で計算できる 三角形の辺の位置が変わると ピクセルの色はどう変わるか? 自動微分では計算できない ピクセル内に三角形の辺があるとき SKIP

Slide 80

Slide 80 text

Boundary term の微分 #80 三角形の面ではなく辺の上にサンプリング点を置くことで計算できる この計算はすべてのエッジを探す必要があり大変なので, 簡単に行う方法の探索が盛んに行われている [Zhang+ 2020] [Loubet+ 2019] [Bangaru+ 2020] [Zhou+ 2021] Boundary term 向けの サンプリング 通常のサンプリング [Li+ 2018] SKIP

Slide 81

Slide 81 text

Interior term の微分 #81 レイトレーシングを自動微分フレームワークで実装すれば 自動微分で「理論上は」計算できるが,それは現実的ではない 1. 計算グラフが大きくなりすぎる a. 専用のフレームワークとコンパイラを実装 [Nimier-David+ 2019] b. 計算の方法の工夫で効率化 [Nimier-David+ 2020] [Vicini+ 2021] 2. 通常のレンダリングのサンプリング点の選び方は微分の計算に不向き a. 微分計算に特化した方法の検討 [Zhang+ 2021] [Zeltner+ 2021] SKIP

Slide 82

Slide 82 text

物理ベース微分可能レンダリング まとめ - 物理ベースレンダリングは写実的な絵が得られるのが強み - 光の反射を考慮した複雑な最適化 が可能 - 微分可能物理ベースレンダリングは難しい - 自動微分ライブラリで素直に実装して得られる勾配は正しくない - 自動微分ライブラリで素直に実装すると計算が遅すぎる - 現状,まだ速度が遅く,深層学習と組み合わせるのは難しい #82

Slide 83

Slide 83 text

目次 1. 微分可能レンダリングの考え方 2. 微分可能レンダリングの使い道 a. 3Dシーンの最適化 b. 3D再構成の学習 c. NeRF によるビュー補間 3. 微分可能レンダリングの仕組み a. メッシュ (ラスタライズ) b. メッシュ (物理ベースレンダリング) c. ニューラル場 (Radiance Field) 4. 微分可能レンダリングのライブラリ #83

Slide 84

Slide 84 text

NeRF ではピクセルの色の決定にボリュームレンダリングを用いる PyTorch などで素直に実装すれば,これは自然に微分可能である NeRFの3D表現 neural radiance field(復習) σ = NN σ (p), c = NN c (p, d) ニューラル場 #84 p にモノがありそう度 3D座標 p の色 見ている向き

Slide 85

Slide 85 text

NeRFのボリュームレンダリングは素直に微分可能 カメラからピクセルに向かうレイ上の点 p 1 , p 2 , … で 密度 σ i と色 c i を NN から得るとする*1 σ i = NN σ (p i ), c i = NN c (p i ) カメラから出発し p i に到達したときにそこでモノにぶつからない確率 α i を α i = exp(-σ i δ)*2 と定義すると,カメラから出発し p i でモノにぶつかる確率 w i は w i = (Πj

Slide 86

Slide 86 text

ニューラル場の微分可能レンダリング まとめ - NeRF のボリュームレンダリングは,特別な工夫は必要なく 素直に自動微分フレームワーク (PyTorch etc.) で実装すればよい - ニューラル場で表される signed distance function (SDF) の 微分可能レンダリング [Niemeyer+ 2020] も実用的だが,省略した - こちらは勾配計算にやや工夫が必要になる #86

Slide 87

Slide 87 text

目次 1. 微分可能レンダリングの考え方 2. 微分可能レンダリングの使い道 a. 3Dシーンの最適化 b. 3D再構成の学習 c. NeRF によるビュー補間 3. 微分可能レンダリングの仕組み a. メッシュ (ラスタライズ) b. メッシュ (物理ベースレンダリング) c. ニューラル場 (Radiance Field) 4. 微分可能レンダリングのライブラリ #87

Slide 88

Slide 88 text

nvdiffrast 2019年以降,いくつものライブラリがリリースされている 2022年3月現在のおすすめライブラリ 微分可能レンダリングを使う #88 深層学習? 使いやすさ? 速さ? PyTorch? TensorFlow? No Yes TF PT 使いやすさ 速さ

Slide 89

Slide 89 text

- メッシュ,ラスタライズ - Facebook の3Dビジョンの研究者らが開発 - PyTorch 限定 - いまもっとも勢いがあるライブラリ - 利用実績多数 - ドキュメントやチュートリアルも充実 - SoftRasをベースとする微分可能レンダリング手法 #89 [Ravi+ 2020] SKIP

Slide 90

Slide 90 text

- メッシュ,ラスタライズ - NVIDIA のリアルタイムレンダリングの研究者らが開発 - PyTorch/TensorFlow をサポート - 条件によっては PyTorch3D より1000倍くらい高速 - インストールがやや大変 - 商用利用不可 #90 nvdiffrast [Laine+ 2020] SKIP

Slide 91

Slide 91 text

- メッシュ,物理ベースレンダリング - EPFL のコンピュータグラフィクスの研究者らが開発 - PyTorch をサポート - 研究用のレンダラーとして定評ある Mitsuba の最新版 - 物理ベース微分可能レンダリングは発展途上で,決定版のライブラリがない - SIGGRAPH / SIGGRAPH Asia で毎回数本ずつ新手法が発表されている #91 [Nimier-David+ 2019] SKIP

Slide 92

Slide 92 text

- 加藤が東大・原田研究室で開発 - Chainer 版がオリジナルだが PyTorch 版もあり - 84本の論文で使用されている(2022年3月現在) - 今となっては使う理由があまりない #92 Neural Renderer PR SKIP

Slide 93

Slide 93 text

目次 1. 微分可能レンダリングの考え方 2. 微分可能レンダリングの使い道 a. 3Dシーンの最適化 b. 3D再構成の学習 c. NeRF によるビュー補間 3. 微分可能レンダリングの仕組み a. メッシュ (ラスタライズ) b. メッシュ (物理ベースレンダリング) c. ニューラル場 (Radiance Field) 4. 微分可能レンダリングのライブラリ #93

Slide 94

Slide 94 text

- 微分可能レンダリングを使うと,レンダリングした見た目を評価することで3Dシーン の最適化や3Dシーンを推定する NN の学習を行える - ニューラル3D表現との組み合わせで高品質に画像生成できる (NeRF) - メッシュのラスタライズは高速で深層学習と組み合わせやすいが, 勾配の計算にいくつか工夫が必要 - メッシュの物理ベースレンダリングは発展途上 - おすすめのライブラリは PyTorch3D,nvdiffrast,Mitsuba 2 微分可能レンダリング まとめ #94 NN 微分可能 レンダリング 誤差 最適化

Slide 95

Slide 95 text

被積分関数に不連続面があるとき, その微分は interior term と boundary term に分けられる - Interior term について - 効率的な実装方法の検討 [Nimier-David+ 2019] [Nimier-David+ 2020] [Vicini+ 2021] - 効率的なモンテカルロ積分の検討 [Zhang+ 2021] [Zeltner+ 2021] - Surface rendering の boundary term について - 境界面上でのサンプリングの検討 [Li+ 2018] [Zhang+ 2020] - サンプリングが容易な形式の検討 [Loubet+ 2019] [Bangaru+ 2020] - 解析的に積分を計算 [Zhou+ 2021] - Volume rendering の boundary term について - 境界面上でのサンプリングの検討 [Zhang+ 2019] [Zhang+ 2021] 包括的なチュートリアル [Zhao+ 2020] 物理ベース微分可能レンダリング 論文早見表 #95 From [Zhao+ 2020]

Slide 96

Slide 96 text

Rasterization-based differentiable rendering (mesh) - [Chen+ 2019] W. Chen, H. Ling, J. Gao, E. Smith, J. Lehtinen, A. Jacobson, and S. Fidler. “Learning to predict 3D objects with an interpolation-based differentiable renderer.” NeurIPS 2019. - [Kato+ 2018] H. Kato, Y. Ushiku, and T. Harada. “Neural 3d mesh renderer.” CVPR 2018. - [Liu+ 2019] S. Liu, T. Li, W. Chen, and H. Li. “Soft rasterizer: A differentiable renderer for image-based 3D reasoning.” ICCV 2019. - [Loper & Black 2014] M. Loper, and M. Black. “OpenDR: An approximate differentiable renderer.” ECCV 2014. - [Murthy+ 2019] J. Murthy, E. Smith, J-F Lafleche,C. Tsang, A. Rozantsev, W. Chen, T. Xiang, R. Lebaredian, and S. Fidler. “Kaolin: A PyTorch Library for Accelerating 3D Deep Learning Research.” arXiv 2019. - [Ravi+ 2020] N. Ravi and J. Reizenstein and D. Novotny and T. Gordon and W-Y Lo, J. Johnson and G. Gkioxari. “PyTorch3D.” 2020. - [Valentin+ 2019] J. Valentin, C. Keskin, P. Pidlypenskyi, A. Makadia, A. Sud, and S. Bouaziz. “TensorFlow Graphics: Computer Graphics Meets Deep Learning.” 2019. References #96

Slide 97

Slide 97 text

Rasterization-based differentiable rendering (neural fields) - [Mildenhall+ 2020] B. Mildenhall, P. Srinivasan, M. Tancik, J. Barron, R. Ramamoorthi, and R. Ng. “NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis.” ECCV 2020. - [Niemeyer+ 2020] M. Niemeyer, L. Mescheder, M. Oechsle, and A. Geiger. “Differentiable Volumetric Rendering: Learning Implicit 3D Representations without 3D Supervision.” CVPR 2020. - [Yariv+ 2020] L. Yariv, Y. Kasten, D. Moran, M. Galun, M. Atzmon, R. Basri, and Y. Lipman. “Multiview Neural Surface Reconstruction by Disentangling Geometry and Appearance.” NeurIPS 2020. References #97

Slide 98

Slide 98 text

Physics-based differentiable rendering (1) - [Bangaru+ 2020] S. Bangaru, T.-M. Li, and F. Durand. “Unbiased Warped-Area Sampling for Differentiable Rendering.” SIGGRAPH Asia 2020. - [Li+ 2018] T.-M. Li, M. Aittala, F. Durand, and J. Lehtinen. “Differentiable Monte Carlo Ray Tracing through Edge Sampling.” SIGGRAPH Asia 2018. - [Loubet+ 2019] G. Loubet, N. Holzschuch, and W. Jakob, I. Gkioulekas, and S. Zhao. “Reparameterizing Discontinuous Integrands for Differentiable Rendering.” SIGGRAPH Asia 2019. - [Nimier-David+ 2019] M. Nimier-David, D. Vicini, Ti. Zeltner, and W. Jakob. “Mitsuba 2: A Retargetable Forward and Inverse Renderer.” SIGGRAPH Asia 2019. - [Nimier-David+ 2020] M. Nimier-David, S. Speierer, B. Ruiz, and W. Jakob. “Radiative Backpropagation: An Adjoint Method for Lightning-Fast Differentiable Rendering.” SIGGRAPH 2020. - [Vicini+ 2021] D. Vicini, S. Speierer, and W. Jakob. “Path Replay Backpropagation: Differentiating Light Paths using Constant Memory and Linear Time.” SIGGRAPH 2021. References #98

Slide 99

Slide 99 text

Physics-based differentiable rendering (2) - [Zeltner+ 2021] T. Zeltner, S. Speierer, I. Georgiev, and W. Jakob. “Monte Carlo Estimators for Differential Light Transport.” SIGGRAPH 2021. - [Zhang+ 2019] C. Zhang, L. Wu, C. Zheng, I. Gkioulekas, R. Ramamoorthi, and S. Zhao. “A Differential Theory of Radiative Transfer.” SIGGRAPH Asia 2019. - [Zhang+ 2020] C. Zhang, B. Miller, K. Yan, I. Gkioulekas, and S. Zhao. “Path-Space Differentiable Rendering.” SIGGRAPH 2020. - [Zhang+ 2021a] C. Zhang, Z. Yu, and S. Zhao. “Path-Space Differentiable Rendering of Participating Media.” SIGGRAPH 2021. - [Zhang+ 2021b] C. Zhang, Z. Dong, M. Doggett, and S. Zhao. “Antithetic Sampling for Monte Carlo Differentiable Rendering.” SIGGRAPH 2021. - [Zhao+ 2020] S. Zhao, W. Jakob, and T.-M. Li. “Physics-Based Differentiable Rendering: A Comprehensive Introduction” SIGGRAPH 2020 Course. - [Zhou+ 2021] Y. Zhou, L. Wu, R. Ramamoorthi, and L.-Q. Yan. “Vectorization for Fast, Analytic, and Differentiable Visibility.” SIGGRAPH 2021. References #99

Slide 100

Slide 100 text

3D hand/body/face reconstruction (1) - [Baek+ 2019] S. Baek, K. Kim, and T Kim. “Pushing the envelope for rgb-based dense 3d hand pose estimation via neural rendering.” CVPR 2019. - [Lassner+ 2017] C. Lassner, J. Romero, M. Kiefel, F. Bogo, M. Black, and P. Gehler. “Unite the people: Closing the loop between 3d and 2d human representations.” CVPR 2017. - [Pavlakos+ 2018] G. Pavlakos, L. Zhu, X. Zhou, and K. Daniilidis. “Learning to estimate 3D human pose and shape from a single color image.” CVPR 2018. - [Wang+ 2020] M. Wang, F. Qiu, W. Liu, C. Qian, X. Zhou, and L. Ma. “EllipBody: A Light-weight and Part-based Representation for Human Pose and Shape Recovery.” arXiv 2020. - [Wu+ 2020] S. Wu, C. Rupprecht, and A. Vedaldi. “Photo-geometric autoencoding to learn 3D objects from unlabelled images.” CVPR 2020. References #100

Slide 101

Slide 101 text

3D hand/body/face reconstruction (2) - [Zhang+ 2019] X. Zhang, Q. Li, H. Mo, W. Zhang, and W. Zheng. “End-to-end hand mesh recovery from a monocular RGB image.” ICCV 2019. - [Zhou+ 2020] H. Zhou, J. Liu, Z. Liu, Y. Liu, and X. Wang, “Rotate-and-Render: Unsupervised Photorealistic Face Rotation from Single-View Images.” CVPR 2020. - [Zimmermann+ 2019] C. Zimmermann, D. Ceylan, J. Yang, B. Russell, M. Argus, and T. Brox. “FreiHAND: A Dataset for Markerless Capture of Hand Pose and Shape from Single RGB Images.” ICCV 2019. References #101

Slide 102

Slide 102 text

3D object reconstruction - [Chen+ 2019] W. Chen, H. Ling, J. Gao, E. Smith, J. Lehtinen, A. Jacobson, and S. Fidler. “Learning to predict 3D objects with an interpolation-based differentiable renderer.” NeurIPS 2019. - [Kanazawa+ 2018] A. Kanazawa, S. Tulsiani, A. Efros, and J. Malik. “Learning category-specific mesh reconstruction from image collections.” ECCV 2018. - [Kato+ 2018] H. Kato, Y. Ushiku, and T. Harada. “Neural 3d mesh renderer.” CVPR 2018. - [Kato & Harada 2019a] H. Kato, and T. Harada. “Learning view priors for single-view 3d reconstruction.” CVPR 2019. - [Kato & Harada 2019b] H. Kato, and T. Harada. “Self-supervised Learning of 3D Objects from Natural Images.” arXiv 2019. - [Liu+ 2019] S. Liu, T. Li, W. Chen, and H. Li. “Soft rasterizer: A differentiable renderer for image-based 3D reasoning.” ICCV 2019. References #102