Slide 1

Slide 1 text

第7回全日本コンピュータビジョン勉強会(後編) Presenter:廣岡大吾

Slide 2

Slide 2 text

自己紹介 ● 廣岡大吾 ○ Twitter:dhirooka (@daigo_hirooka) ● 機械学習エンジニア@ BrainPad ○ 関心:Deep LearningとMLOps ● その他 ○ GoProがタンスで眠っています ○ 白金鉱業.FM (@shirokane_fm) Podcastで配信中! 2

Slide 3

Slide 3 text

紹介論文:NeRF in the Wild, GIRAFFE ● NeRFの勉強として ○ NeRF Explosion 2020 ● デモが面白い ○ NeRF in the Wild ○ GIRAFFE 3 NeRF in the Wild

Slide 4

Slide 4 text

NeRF(Neural Radiance Field)とは View Synthesis:物体の見え方を計算する手法の一つ ● 前処理:Structure-from-Motionによって各画像のカメラパラメータを計算 ○ カメラパラメータ:各撮影の位置や焦点距離など ● 学習:NeRFのモデルを学習 ● 推論:指定した視点からの見え方を計算する 4

Slide 5

Slide 5 text

NeRF:構成要素 ● ①Radiance Field ● ②ピンホールカメラモデル ● ③ボリュームレンダリング 5

Slide 6

Slide 6 text

NeRF:構成要素①:Radiance Field ● 「座標xyzが向きθ,Φからどう見える(色c・密度σ)か」の関数 ● 全結合NNでモデル化 ● NeRFの学習=Radiance Fieldのパラメータの学習 6

Slide 7

Slide 7 text

NeRF:構成要素②:ピンホールカメラモデル ● 3D座標とピクセル座標の関係を表すモデル ○ NeRFにおけるレンダリング上の仮定 ○ Camera ray:カメラの位置からピクセルへの半直線 7 OpenCV: Camera Calibration and 3D Reconstruction camera ray

Slide 8

Slide 8 text

NeRF:構成要素②:ピンホールカメラモデル ● 3D座標とピクセル座標の関係を表すモデル ○ NeRFにおけるレンダリング上の仮定 ○ Camera ray:カメラの位置からピクセルへの半直線 ● ピクセルに対応する camera ray上で、Radiance Fieldによって色と密度を評価する 8

Slide 9

Slide 9 text

NeRF:構成要素③:ボリュームレンダリング ● Camera ray上の色・密度を集約し、ピクセル値を得る ● 全てのピクセルで実行することで、全体の画像を得る 9

Slide 10

Slide 10 text

NeRF:構成要素③:ボリュームレンダリング ● ボリュームレンダリングによるピクセル値の計算 ○ Camera ray上の色c・密度σの積分 ○ 実装上は数値積分によって計算 10 Camera ray rに対応する ピクセル値 点iの色

Slide 11

Slide 11 text

NeRF:構成要素③:ボリュームレンダリング ● ボリュームレンダリングによるピクセル値の計算 ○ Camera ray上の色c・密度σの積分 ○ 実装上は数値積分によって計算 11 点iの不透明度 密度σ大で1に近づく

Slide 12

Slide 12 text

NeRF:構成要素③:ボリュームレンダリング ● ボリュームレンダリングによるピクセル値の計算 ○ Camera ray上の色c・密度σの積分 ○ 実装上は数値積分によって計算 12 点iより手前の透過

Slide 13

Slide 13 text

NeRF:構成要素③:ボリュームレンダリング ● ボリュームレンダリングによるピクセル値の計算 ○ Camera ray上の色c・密度σの積分 ○ 実装上は数値積分によって計算 13 Camera ray rに対応する ピクセル値 点iより手前の透過 点iの不透明度 密度σ大で1に近づく 点iの色 点iの3D座標 N等分した各区間から uniform sampling

Slide 14

Slide 14 text

NeRF:学習 ● シーンの全画像から複数の camera ray(=ピクセル)をミニバッチとしてサンプリング ○ 各camera ray上で評価点をサンプリング ○ 各評価点をRadiance Fieldに入力して、色・密度を得る ○ ボリュームレンダリングによってピクセル値を得る ● ピクセル値の二乗誤差で学習 14

Slide 15

Slide 15 text

NeRF:実装上の工夫 ● Positional Encoding ● Hierarchical Sampling 15

Slide 16

Slide 16 text

NeRF:実装上の工夫①:Positional Encoding ● Radiance Fieldの入力は位置と角度 ● Positional Encodingによって各成分を高次元ベクトルに加工 ○ 画像の細かい特徴を捉えられるようになった 16

Slide 17

Slide 17 text

NeRF:実装上の工夫②:Hierarchical Sampling ● N等分区間からの一様サンプリングは無駄が多い ○ 何もない位置 ○ 視点奥の直接見えない位置 ● Hierarchical Sampling ○ まずN等分区間から評価点の一様サンプリングを行う ○ 各評価点の密度に基づいて、再度サンプリングを行う ○ ピクセル描画に重要な領域にフォーカスする 17 視点手前の物体を重視 何もない 直接 見えない

Slide 18

Slide 18 text

NeRF:実装上の工夫②:Hierarchical Sampling ● Coarse, Fineの2モデルを用意する ● Hierarchical Samplingを用いた推論 ○ 等分区間からNc個の評価点をサンプリング ○ Coarseモデル:Nc個の評価点の色・密度を計算 ○ 区間を重み付けして再度 Nf個の評価点をサンプリング ○ Fineモデル:Nc+Nf個の評価点の色・密度を計算 ● Hierarchical Samplingを用いた学習 ○ Coarse, Fineモデルそれぞれで ピクセル値の二乗誤差を学習 18 Coarseモデルの 二乗誤差 Fineモデルの 二乗誤差

Slide 19

Slide 19 text

NeRF:まとめ ● アーキテクチャ ○ Radiance Field:位置・角度→色・密度の関数 ○ ボリュームレンダリングによって camera rayから色を計算 ● 既存の多くのモデルよりも高精細なレンダリングが可能 ● 全結合層のみで構成されており軽量、効率よくシーン情報を保持できている 19

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

NeRF in the Wild:概要 ● NeRF(オリジナル)の仮定 ○ 基本的に同じシーンを異なる角度から撮った画像 ○ 光の当たり方の違いや物体の写り込みは想定外 ● NeRF in the Wild(NeRF-W) ○ 画像の環境を明示的にモデル化 ■ 見た目(appearance) ■ 一時的な物体(transient object) ○ 多様な環境の画像に対して 柔軟にNeRFを学習可能(=in the wild) ○ Appearanceを調整した生成も可能 21 NeRF-Wの学習画像例

Slide 22

Slide 22 text

NeRF-W:画像環境のモデル化 ● Appearance:シーンの天候や時間帯など ● Transient Objects:人や車などの一時的な物体 22 オリジナル NeRF Appearance Transient Objects

Slide 23

Slide 23 text

NeRF-W:Appearance Modeling ● 画像ごとにappearanceベクトルを用意 ● 画像のstatic成分(建物や地面など)の描画に影響 23 オリジナル NeRF Appearance

Slide 24

Slide 24 text

NeRF-W:Transient Objects Modeling ● 画像ごとにtransientベクトルを用意 ● 画像のtransient成分(人や物体の写り込みなど)の描画に影響 ○ 不確実性βを合わせて出力→損失計算に利用 24 Transient Objects

Slide 25

Slide 25 text

NeRF-W:ボリュームレンダリング ● Static成分とtransient成分をまとめてボリュームレンダリング 25 点kのtransient成分 点kのstatic成分 点kより手前の透過 xの不透明度 (NeRFと同じ)

Slide 26

Slide 26 text

NeRF-W:Optimize ● NeRFと同様にCoarse, Fineの2モデルを用意 ● Coarseモデル:staticパートのみからピクセル値計算、二乗誤差 ● Fineモデル:transient objectの不確実性βを考慮 ○ あいまいなピクセルにおける損失を軽減する ○ 過剰にtransient objectとして扱わないための正則化 26 Coarseモデル の損失 Fineモデル の損失 正規分布の 負の対数尤度 正則項

Slide 27

Slide 27 text

NeRF-W:Optimize ● Appearance, Transientベクトルの学習 ○ GLO(Generative Latent Optimization)を利用 ○ 各画像と対応して保持しておき、勾配法によってパラメータと並行して更新する ○ [1707.05776] Optimizing the Latent Space of Generative Networks 27

Slide 28

Slide 28 text

NeRF-W:Experiments ● Setting ○ Phototourism datasetから6つのシーンを抽出 ○ 各シーンで学習、評価 ● Evaluation ○ シーンの画像群をtrain, testに分け、test視点での生成性能を評価する ○ 評価指標:PSNR、MS-SSIM、LPIPS ■ LPIPS:The Unreasonable Effectiveness of Deep Features as a Perceptual Metric ○ テスト画像のAppearanceベクトル ■ 画像左半分によって最適化、右半分で評価 28

Slide 29

Slide 29 text

NeRF-W:Quantitative Results ● 定量的に優れた生成性能 ○ NeRF-A:Appearanceベクトルのみ ○ NeRF-U:Transientベクトルのみ ● LPIPSは一部NRW(Neural Rendering in the Wild)が優れている ○ LPIPSはadversarial, perceptual lossを良く評価しやすいため 29

Slide 30

Slide 30 text

NeRF-W:Qualitative Results ● 定性的にも細かい特徴を描画できている 30

Slide 31

Slide 31 text

NeRF-W:Qualitative Results ● Fig.6:Depth mapの可視化 ○ Transient objectsが存在しても 従来のNeRFより安定して学習できている ● Fig.8:Appearanceベクトルの補間 ○ シーンの環境を操作できている 31

Slide 32

Slide 32 text

NeRF-W:まとめ ● Limitation ○ 映る頻度が少ない領域は捉えづらい ○ カメラ姿勢のキャリブレーションが 失敗が生成にも影響する (従来のNeRFと同じ) ● Conclusion ○ 画像ごとのappearance, transient objectsをモデル化することで、多様な環境の画像群 (=in-the-wild data)からNeRFの学習が可能になった ○ 定量・定性の両面で優れた視点生成が可能になった 32

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

GIRAFFE:概要 ● 目標:Compositional 3D representation for controllable synthesis ○ 背景や物体の組み合わせ によってシーンを表現 ○ 物体の配置や角度、視点など 様々な要素を調整して描画 ○ GIRAFFE: Project Page 34

Slide 35

Slide 35 text

GIRAFFE:概要 ● アプローチ ○ 複数の物体+背景によってシーンをモデリング ○ 3D空間上の色ではなく特徴ベクトルによってボリュームレンダリング ○ 敵対的学習を利用 ● 注目ポイント:Disentanglement emerges without supervision ○ アーキテクチャによるバイアスのみで、物体や背景の表現を学習できた ○ →物体だけ、背景だけなどの詳細なシーンコントロールが可能 35

Slide 36

Slide 36 text

GIRAFFE:アーキテクチャ 1. 物体・背景の潜在ベクトル、描画時の姿勢をサンプル 2. それぞれの情報を統合 3. ボリュームレンダリング 4. CNNによって画像へ変換 36 ① ② ③ ④

Slide 37

Slide 37 text

GIRAFFE:アーキテクチャ 37

Slide 38

Slide 38 text

● N-1個の物体+背景の情報をサンプリング ○ zs, za:shape, appearanceベクトル ○ T:配置パラメータ(shift, scale, rotate) GIRAFFE:アーキテクチャ 38

Slide 39

Slide 39 text

● カメラの位置と向きをサンプリング ○ Camera rayの扱いやpositional encodingはNeRFと同様 GIRAFFE:アーキテクチャ 39 カメラの位置と向き ● d:camera rayの向き ● x:評価点の位置 ● γ:positional encoding

Slide 40

Slide 40 text

● NeRFとは異なり、色ではなく特徴ベクトルを返す field function ○ 入力:位置、向き、物体or背景のshape, appearanceベクトル ○ 出力:特徴ベクトル、密度 GIRAFFE:アーキテクチャ 40

Slide 41

Slide 41 text

GIRAFFE:アーキテクチャ:Neural Feature Field 41 ● NeRFとは異なり、色ではなく特徴ベクトルを返す field function ○ 入力:位置、向き、物体or背景のshape, appearanceベクトル ○ 出力:特徴ベクトル、密度 ○ 物体用と背景用の2つのfield functionを使い分け Object Feature Field Background Feature Field

Slide 42

Slide 42 text

● Composition Operator:物体と背景の情報を統合 ○ 特徴量の統合:密度 σによるweighted mean ○ 密度の統合:総和 GIRAFFE:アーキテクチャ 42

Slide 43

Slide 43 text

● ボリュームレンダリング: NeRFと同様、ただし色の代わりに特徴ベクトルを用いる ○ 各ピクセルで計算することで特徴マップを獲得 GIRAFFE:アーキテクチャ 43

Slide 44

Slide 44 text

● Neural Rendering:CNNによって特徴マップから画像を出力 GIRAFFE:アーキテクチャ 44 CNNによって特徴マップを 画像へ変換

Slide 45

Slide 45 text

● Neural Rendering:CNNによって特徴マップから画像を出力 ○ Conv+UpSamplingによって目標解像度の画像を得る ○ 表現のentangleを防ぐために、畳み込みは少なめ GIRAFFE:アーキテクチャ 45

Slide 46

Slide 46 text

GIRAFFE:アーキテクチャ:まとめ 46  N-1個の物体+背景の ● zs:shapeベクトル ● za:appearanceベクトル ● T:配置(affine)パラメータ カメラの位置と向き ● d:camera rayの向き ● x:評価点の位置 ● γ:positional encoding  N-1個の物体+背景の ● hθ:feature field function ● f:評価点における特徴量 ● σ:評価点における密度 ● C:各物体の特徴量・密度の統合 ボリュームレンダリング CNNによって特徴マップを 画像へ変換

Slide 47

Slide 47 text

GIRAFFE:学習 ● 画像生成に対する敵対的学習を行う ○ Generator:前述のレンダリングパイプライン ■ 特徴マップの解像度は 16x16、Neural Rendering(CNN)によって拡大 ○ Discriminator:DCGANベースのCNN ● 損失関数 ○ 一般的なnon-saturating GAN objective+R1 gradient penalty 47

Slide 48

Slide 48 text

GIRAFFE:Controllable Scene Generation ● N個の入力要素を個別に可視化 ○ 教師なしで物体と背景の表現分離ができている 48 背景のみ 物体のみ 物体の不透明度 全体

Slide 49

Slide 49 text

GIRAFFE:Controllable Scene Generation ● 物体の向き、位置やカメラの向きなどを調整した生成が可能 49

Slide 50

Slide 50 text

GIRAFFE:Controllable Scene Generation ● 学習時より離れた位置や、学習時より多い物体数のシーンも安定して描画可能 50

Slide 51

Slide 51 text

GIRAFFE:Comparison to Baseline Methods ● FID(Frechet Inception Distance)による生成品質の評価 ○ 64×64, 256×256の2つの解像度 ○ 既存の画像生成手法よりも精細な生成が可能 ○ ※GRAF(Generative NeRF)は筆者らの先行手法 51

Slide 52

Slide 52 text

GIRAFFE:Comparison to Baseline Methods ● パラメータ数も既存手法より少ない ● 推論(生成)速度 ○ 低解像度の特徴マップを拡大することで GRAF(直接画像をレンダリングする) よりも推論速度向上 ○ 64×64:110.1ms/枚→4.8ms/枚 ○ 256×256:1595.0ms/枚→5.8ms/枚 52

Slide 53

Slide 53 text

GIRAFFE:Limitations ● データセットのバイアスによる disentangleの失敗 ○ 例:CelebA-HQ:顔の向きを変えても 全てカメラ目線の画像が生成される ● カメラ姿勢や物体の配置位置のミスマッチによる disentangleの失敗 ○ 例:Churches, CompCars:背景と物体の表現が分離できていない 53

Slide 54

Slide 54 text

GIRAFFE:まとめ ● 目標:Compositional 3D representation for controllable synthesis ● アプローチ ○ 物体・背景などシーンの構成要素を明示的にモデリング ○ 色ではなく特徴量でボリュームレンダリング ○ 敵対的学習 ● 結果 ○ 教師なしで物体・背景の表現分離を獲得 ○ Controllableなシーン生成が可能になった ○ 定量的にも既存手法より優れている 54

Slide 55

Slide 55 text

References ● 論文 ○ NeRF: Neural Radiance Fields ○ NeRF in the Wild ○ GIRAFFE: Representing Scenes as Compositional Generative Neural Feature Fields ● その他 ○ OpenCV: Camera Calibration and 3D Reconstruction ○ Richard Szeliski, コンピュータビジョン アルゴリズムと応用 , 共立出版, 2013. ○ 金谷健一, 菅谷保之, 金澤靖, 3次元コンピュータビジョン計算ハンドブック , 森北出版, 2016. 55