$30 off During Our Annual Pro Sale. View Details »

論文輪読会 第16回 "NeRF:Representing Scenes as Neural"

AcademiX
July 22, 2023

論文輪読会 第16回 "NeRF:Representing Scenes as Neural"

AcademiX が開催した 第16回 論文輪読会 資料

日時:2023/07/1
発表者:Yuta Kodaさん
論文タイトル:NeRF:Representing Scenes as Neural

<概要>
5次元の入力(x,y,z, θ, φ)からそれぞれの点のvolume density と色を出力するNNを学習させることで、新しい視点の画像の生成やNNの重みパラメータによる3D mapの表現が可能になった。

AcademiX

July 22, 2023
Tweet

More Decks by AcademiX

Other Decks in Science

Transcript

  1. https://www.academix.jp/
    AcademiX 論文輪読会
    NeRF:Representing Scenes as Neural
    Radiance Fields for View Synthesis
    東京大学大学院
    Yuta Koda
    2023/7/1

    View Slide

  2. ● ここに出てくる図のほとんどは以下の論文から引用したものです。
    Paper:「NeRF: Representing Scenes as Neural Radiance Fields for View
    Synthesis」
    Author : Ben Mildenhall and Pratul P. Srinivasan and Matthew Tancik and Jonathan
    T. Barron and Ravi Ramamoorthi and Ren Ng
    year : 2020
    Journal :ECCV
    2

    View Slide

  3. Outline
    1. 導入
    2. NeRFの全体像
    3. NeRFの構造
    ① 計算式とモデル図
    ② Positional Encoding
    ③ Hierarchical Sampling
    ④ 損失関数
    4. 出力結果と評価
    5. 最後に
    Appendix : NDC space, レンダリング画像の作成方法
    3

    View Slide

  4. Outline
    1. 導入
    2. NeRFの全体像
    3. NeRFの構造
    ① 計算式とモデル図
    ② Positional Encoding
    ③ Hierarchical Sampling
    ④ 損失関数
    4. 出力結果と評価
    5. 最後に
    Appendix : NDC space, レンダリング画像の作成方法
    4

    View Slide

  5. 導入
    ● 目的
    与えられた画像を利用または学習し、新しい視点の画像を生成する
    100枚の画像 学習 新しい視点の画像を生成
    5

    View Slide

  6. 導入
    ● 今までのアプローチ手法
    ○ mesh-based representationまたはvolumetric representationを学習し、新しい視点の画像をレ
    ンダリングしようと頑張っていた
    Þ mesh-basedの方法は学習が難しく
    Þ volumetric(離散的)の方法は空間の複雑さから高解像度の画像を生成する能力がちょっと....
    ● 連続的なvolumeをencodingすることでより質の良い画像を生成できた
    6

    View Slide

  7. 導入
    7

    View Slide

  8. 導入
    ● 新規性、特徴
    1. 5次元(x,y,z,φ,θ)のneural radiance fieldsで複雑な幾何や物質を連続的
    に表現する方法
    2. 古典的なvolume rendering方法を基に微分可能なレンタリング手順を
    踏んでいる。また、この方法の中でhierarchical samplingでMLPの容
    量(パラメータ)を可視空間に割り当てる
    3. positional encodingで5次元(x,y,z,φ,θ)の入力をより高次元に写像する
    8

    View Slide

  9. Outline
    1. 導入
    2. NeRFの全体像
    3. NeRFの構造
    ① 計算式とモデル図
    ② Positional Encoding
    ③ Hierarchical Sampling
    ④ 損失関数
    4. 出力結果と評価
    5. 最後に
    Appendix : NDC space, レンダリング画像の作成方法
    9

    View Slide

  10. NeRFの全体像
    ● 全体図
    hierarchical sampling
    volume density
    along the ray
    画像に写っているRGBを予測
    (x, y, z) は3次元の場所
    (θ, Φ) rayの方向
    σはvolume density
    10

    View Slide

  11. NeRFの全体像
    ● 全体図
    ここで、𝐹!
    を学習させる。
    𝜎は(x, y, z)の場所のみを入力とし、RGBの予測は全ての入力を利用する。
    11

    View Slide

  12. NeRFの構造(計算式とモデル図)
    ここで、𝑇 𝑡 = 𝑒𝑥𝑝 − ∫
    !!
    !
    𝜎 𝒓 𝑠 𝑑𝑠
    𝐶 𝒓 = ∫
    -𝒏
    -𝒇 𝑇 𝑡 𝜎 𝒓 𝑡 𝒄 𝒓 𝑡 , 𝒅 𝑑𝑡
    𝒅 : カメラの方向
    𝑇 𝑡 : 透過率
    𝜎 𝒓 𝑡 : volume density
    𝒄 𝒓 𝑡 , 𝒅 : tの位置での(r,g,b)
    ray : 𝒓 𝑡 = 𝒐 + 𝑡𝒅
    • 数式 C (r): volume rendering (画像に写る色を決める)
    12

    View Slide

  13. NeRFの構造(計算式とモデル図)
    𝑇 𝑡 = 𝑒𝑥𝑝 − 3
    !!
    !
    𝜎 𝒓 𝑠 𝑑𝑠
    𝐶 𝒓 = ∫
    -𝒏
    -𝒇 𝑇 𝑡 𝜎 𝒓 𝑡 𝒄 𝒓 𝑡 , 𝒅 𝑑𝑡
    𝒓 𝑡 = 𝒐 + 𝑡𝒅
    • 数式
    T(t)は、物体に当たった後、それ以降 Tの値が低くなる。
    つまり、初めに当たった物体の色が優先して出力される。
    13

    View Slide

  14. NeRFの構造(計算式とモデル図)
    • 数式
    ただ、離散化しないとコンピュータで計算できないので、
    𝑡𝒊
    ~ 𝑢𝑛𝑖𝑓𝑜𝑟𝑚 𝑡" +
    𝑖 − 1
    𝑁
    (𝑡# − 𝑡") 𝑡" +
    𝑖
    𝑁
    (𝑡# − 𝑡")
    𝒓 𝑡 = 𝒐 + 𝑡𝒅
    と入力の(x,y,z)を決めるtを複数サンプリングする。
    14
    tn
    tf
    ......
    N個の領域

    View Slide

  15. NeRFの構造(計算式とモデル図)
    • 数式
    その後、サンプリングしたtに対し、以下のように式を変換。
    𝐶 𝒓 = ∫
    -𝒏
    -𝒇 𝑇 𝑡 𝜎 𝒓 𝑡 𝒄 𝒓 𝑡 , 𝒅 𝑑𝑡
    𝐶 𝒓 = ,
    456
    7
    𝑇4
    1 − exp(−𝜎4
    𝛿4
    ) 𝒄4
    ここで赤線の部分が変更されているが、
    ここではσが大きいほど1に、小さいほど0に近づけている(密度みたいな感じ)。
    NNで予測している部分は
    σとcの部分 (C(r)はvolume rendering後の結果)
    15

    View Slide

  16. NeRFの全体像(再掲)
    ● 全体図
    hierarchical sampling
    volume density
    along the ray
    画像に写っているRGBを予測
    (x, y, z) は3次元の場所
    (θ, Φ) rayの方向
    σはvolume density
    16

    View Slide

  17. NeRFの構造(計算式とモデル図)
    • モデル図
    緑色 : 入力
    青色 : 中間層
    赤色 : 出力
    γ : Positional Encoding
    ReLU
    Sigmoid
    no activation
    with ReLU
    skip connection
    サンプリングした各点における
    σとcolorを予測
    17

    View Slide

  18. Outline
    1. 導入
    2. NeRFの全体像
    3. NeRFの構造
    ① 計算式とモデル図
    ② Positional Encoding
    ③ Hierarchical Sampling
    ④ 損失関数
    4. 出力結果と評価
    5. 最後に
    Appendix : NDC space, レンダリング画像の作成方法
    18

    View Slide

  19. NeRFの構造(Positional Encoding)
    • Positional Encoding
    ここで、より質の高いレンダリングをするために
    NLで利用されているPositional Encodingを利用する。
    深層NNは低周波数のものを学習しやすいため、この関数により入力
    を高次元に射影する。
    𝛾 𝑝 = (sin 2"𝜋𝑝 , cos 2"𝜋𝑝 , ⋯ , sin 2#$%𝜋𝑝 , cos 2#$%𝜋𝑝 )
    (x,y,z)には L= 10, (σ, φ)には L= 4とした。
    19

    View Slide

  20. NeRFの構造(Hierarchical Sampling)
    • Hierarchical Sampling
    また、学習をより質的に良くするためにray上で点(x,y,z)をサンプル
    する方法を工夫した。
    𝑪&'()*+ 𝒓 = D
    ,-%
    𝑵𝒄
    𝑇, 1 − exp(−𝜎,𝛿,) 𝒄,
    𝑡𝒊 ~ 𝑢𝑛𝑖𝑓𝑜𝑟𝑚 𝑡"
    +
    𝑖 − 1
    𝑁
    (𝑡#
    − 𝑡"
    ) 𝑡"
    +
    𝑖
    𝑁
    (𝑡#
    − 𝑡"
    )
    サンプリングでできた式、これだけだと物質がありそうな部分の学習が不十分
    20

    View Slide

  21. NeRFの全体像(再掲)
    ● 全体図
    hierarchical sampling
    volume density
    along the ray
    画像に写っているRGBを予測
    (x, y, z) は3次元の場所
    (θ, Φ) rayの方向
    σはvolume density
    21

    View Slide

  22. NeRFの構造(Hierarchical Sampling)
    • Hierarchical Sampling
    また、学習をより質的に良くするためにray上で点(x,y,z)をサンプル
    する方法を工夫した。
    𝑪&'()*+ 𝒓 = D
    ,-%
    𝑵𝒄
    𝑇, 1 − exp(−𝜎,𝛿,) 𝒄,
    wi
    と捉えて、(wi
    が大きいところは物質がある可能性が高い)
    ́
    𝑤, =
    𝑤,

    /-%
    0# 𝑤/
    という確率密度関数(PDF)に変換
    22

    View Slide

  23. NeRFの構造(Hierarchical Sampling)
    • Hierarchical Sampling
    また、学習をより質的に良くするためにray上で点(x,y,z)をサンプル
    する方法を工夫した。
    ́
    𝑤, =
    𝑤,

    /-%
    0# 𝑤/
    このPDFからinverse transform sampling
    ※ https://en.wikipedia.org/wiki/Inverse_transform_sampling
    赤色の関数を使ってサンプリング
    23

    View Slide

  24. NeRFの構造(Hierarchical Sampling)
    • Hierarchical Sampling
    また、学習をより質的に良くするためにray上で点(x,y,z)をサンプル
    する方法を工夫した。
    𝑪𝒇𝒊𝒏𝒆 𝒓 = D
    ,-%
    𝑵𝒄5𝑵𝒇
    𝑇, 1 − exp(−𝜎,𝛿,) 𝒄,
    Nf
    がinverse transform samplingで得たもの
    24

    View Slide

  25. NeRFの構造(損失関数)
    • 損失関数 (Total Squared Error)
    𝐿 = 2
    $∈&
    𝐶'()$*+(𝑟) − 𝐶(𝑟) ,
    , + 𝐶#-"+(𝑟) − 𝐶(𝑟)
    ,
    ,
    ここでC(r)はGround Truth
    学習では、4096個のraysでNc = 64, Nf = 128のサンプリングを行った。
    学習は、10万から30万回、NVIDIA V100 GPU上で1~2日かかった。
    25
    batch size

    View Slide

  26. Outline
    1. 導入
    2. NeRFの全体像
    3. NeRFの構造
    ① 計算式とモデル図
    ② Positional Encoding
    ③ Hierarchical Sampling
    ④ 損失関数
    4. 出力結果と評価
    5. 最後に
    Appendix : NDC space, レンダリング画像の作成方法
    26

    View Slide

  27. 出力結果と評価
    (左)合成画像のデータセットで学習 (半球上)
    479枚を学習、1000枚をテストデータとして評価
    (右)正面から撮影した画像のデータセット
    20 ~ 62枚の画像 この1/8をホールドアウト
    既存の手法と比較
    27

    View Slide

  28. 出力結果と評価
    定量的に評価
    ● PSNR(ピーク信号対雑音比)
    ○ 画質の再現性に影響を与える、信号がとりうる最大パワー(画像では255)と劣化をもたらすノ
    イズ(Ground truthと出力画像のMSE)の比率で評価
    ● SSIM
    ○ 画素値、コントラスト、構造の変化を評価する指標
    ○ PSNRの問題点(人の感覚とマッチしていない評価)を改善するために考えられた指標
    ● LPIPS
    ○ 学習済みの画像分類ネットワークの畳み込み層が出力する特徴量を基にした評価
    ○ より人の感覚に近い評価ができる指標
    28

    View Slide

  29. 出力結果と評価
    Train : 100, Test :200
    Train : 479, Test :1000
    ここで、Real Forward-FacingでLLFFの方が精度が良くなっているが、
    動画にあるように私たちの方法の方が一貫性がありよいですと論文に記載されている。
    NeRFはPSNR,SSIMは高いほど精度が良く,LPIPSは小さいほど精度が良いことを表している。
    ご覧のように、NeRFは既存手法よりも格段に良い指標である。
    29

    View Slide

  30. 出力結果と評価
    (それぞれの工夫がなかった場合)
    Realistic synthetic dataset
    25枚のみで学習し
    ても他の既存手法
    より精度が良い
    30

    View Slide

  31. 出力結果と評価
    画像の視点によって同じ場所でも色の違いを表現できている。
    これは、光の反射などを表現できていることを表している。
    同じ場所での色の違い
    31

    View Slide

  32. 最後に
    ● NeRFは質的にも定量的にもLLFFに比べて優れたレンダリング手法である。
    ● NeRFは学習時間も比較的少なく、容量(5MBぐらい)も少ない
    ○ NV,SRNだと1 sceneを学習するのに少なくとも12時間かかる。
    ○ LLFFは短時間で処理できるが、容量が大きく Realistic Synthetic の学習
    結果では15GBになった。
    Project page: https://www.matthewtancik.com/nerf
    32

    View Slide

  33. Project page: https://www.matthewtancik.com/nerf
    33

    View Slide

  34. Appendix
    • レンダリング画像の作成
    • NDC space
    あるモデルを[-1, 1]の立方体の範囲に収める方法
    near, far , right, topを決める必要がある。
    行列計算により実現可能
    学習前に使用
    Realistic synthetic dataset(800 x 800 pixel)ではレンダリング画像を作成するのに、
    64万 (ray / 枚) で およそ1.5億から2億回のクエリが必要になる。
    34

    View Slide