Zenn
Closed6

【論文読解めも】NeRF--: Neural Radiance Fields Without Known Camera Parameters

takoroytakoroy

同一の物体を映した画像集合から、任意の視点から見た色と密度を表現するモデルを構築することで、新規視点合成(Novel View Synthesis)を実現するNeRF系の手法の新たなバリエーション。

従来のNeRF系の手法は、いずれもCOLMAPと呼ばれるStructure from Motionを利用した前処理によって各画像のカメラ位置と姿勢(外部パラメータ)やレンズの特性(内部パラメータ)を推定する必要があったが、本手法では、これらのパラメータも同時に推定する。これによって、COLMAPによる前処理が不要になり、かつCOLMAP依存で生じるエラーケースを回避したロバストな新規視点合成が可能にしている。

Wang, Zirui, et al. "NeRF --: Neural Radiance Fields Without Known Camera Parameters." arXiv preprint arXiv:2102.07064 (2021)
.

https://nerfmm.active.vision/

takoroytakoroy

NeRFの復習

NN毎の画像I={I1,I2,,IN}\mathcal{I}=\left\{I_{1}, I_{2}, \ldots, I_{N}\right\}と、それぞれのカメラパラメータをΠ={π1,π2,,πN}\mathcal{\Pi} = \left\{\pi_{1}, \pi_{2}, \ldots, \pi_{N}\right\}とする。

NeRFの目標は、これらの情報から、連続関数FΘ:(x,d)(c,σ)F_{\Theta}:(\boldsymbol{x}, \boldsymbol{d}) \rightarrow(\boldsymbol{c}, \sigma)を表すモデルを構築することである。\boldsymbol{x}=(x, y, z)3次元空間中の点、は3次元空間中の点、\boldsymbol{d}=(\theta, \phi)は視線方向、は視線方向、\boldsymbol{c}=(r,g,b)は色、は色、\sigma$は密度を表す。

カメラの原点o\boldsymbol{o}からd\boldsymbol{d}の方向へと延びる光線は、パラメータhhを用いてr(h)=o+hd\boldsymbol{r}(h) = \boldsymbol{o} + h \boldsymbol{d}と表せる。密度σ\sigmaが方向d\boldsymbol{d}に依存しないので、カメラパラメータが決められているときに、あるピクセル位置p=(u,v)\boldsymbol{p}=(u,v)の値をレンダリングしてくれる関数R\mathcal{R}を以下のように考える。なお、積分の部分は、光線上のいくつかのポイントをサンプルして足し合わせることで実現される。

I^i(p)=R(p,πiΘ)=hnhfT(h)σ(r(h))c(r(h),d)dh \hat{I}_{i}(\boldsymbol{p})=\mathcal{R}\left(\boldsymbol{p}, \pi_{i} \mid \Theta\right)=\int_{h_{n}}^{h_{f}} T(h) \sigma(\boldsymbol{r}(h)) \boldsymbol{c}(\boldsymbol{r}(h), \boldsymbol{d}) d h

ここで、T(h)T(h)は、カメラの手前側にある密度の高い色のほうが優先的にレンダリングされるということを表す関数で、以下のように表される。

T(h)=exp(hnhσ(r(s))ds) T(h)=\exp \left(-\int_{h_{n}}^{h} \sigma(\boldsymbol{r}(s)) d s\right)

このようにして、再構成画像I^i\hat{I}_{i}が得られる。この再構成画像と元の画像の差異を損失関数とし、これを最小化するようにモデルは訓練される。

L=iNIiI^i22 \mathcal{L}=\sum_{i}^{N}\left\|I_{i}-\hat{I}_{i}\right\|_{2}^{2}
Θ=argminΘL(I^I,Π) \Theta^{*}=\arg \min _{\Theta} \mathcal{L}(\hat{I} \mid \mathcal{I}, \Pi)
takoroytakoroy

NeRF--

NeRF--では、カメラパラメータΠ\mathcal{\Pi}が未知のものとし、これ自体も最適化の対象とする。要するに以下の最適化問題を解くことになる。

Θ,Π=argminΘ,ΠL(I^,Π^I) \Theta^{*}, \Pi^{*}=\arg \min _{\Theta, \Pi} \mathcal{L}(\hat{\mathcal{I}}, \hat{\Pi} \mid \mathcal{I})

カメラパラメータの表現

カメラパラメータは、内部パラメータと外部パラメータに分けられる。それぞれ、以下に説明するように

内部パラメータの表現

内部パラメータは以下のようなKKとして表現される。

K=(fx0cx0fycy001)K=\left(\begin{array}{ccc}f_{x} & 0 & c_{x} \\0 & f_{y} & c_{y} \\0 & 0 & 1\end{array}\right)

cx,cyc_x, c_yは画像のサイズW,HW, Hから、cxW/2,cyH/2c_{x} \approx W / 2 , c_{y} \approx H / 2と決まり、推定の対象ではなく、推定の対象はfx,fyf_x, f_yのみとなる。fx,fyf_x, f_yは直接推定するのではなく、画像のサイズW,HW, Hに対する比率s~x,s~y\tilde{s}_{x}, \tilde{s}_{y}を用いて間接的に推定する。

fx=s~x2Wfy=s~y2H\begin{array}{l}f_{x}=\tilde{s}_{x}^{2} W \\f_{y}=\tilde{s}_{y}^{2} H\end{array}

内部パラメータは全画像で共通とする。

外部パラメータの表現

外部パラメータTwc=[Rt]\boldsymbol{T}_{w c}=[\boldsymbol{R} \mid \boldsymbol{t}]は、ϕR3,tR3\boldsymbol{\phi} \in \mathbb{R}^3, \boldsymbol{t} \in \mathbb{R}^3によって表現される。

skew行列ϕ\boldsymbol{\phi}^{\wedge}を以下のように定める。

ϕ=(ϕ0ϕ1ϕ2)=(0ϕ2ϕ1ϕ20ϕ0ϕ1ϕ00)\boldsymbol{\phi}^{\wedge}=\left(\begin{array}{l}\phi_{0} \\\phi_{1} \\\phi_{2}\end{array}\right)^{\wedge}=\left(\begin{array}{ccc}0 & -\phi_{2} & \phi_{1} \\\phi_{2} & 0 & -\phi_{0} \\-\phi_{1} & \phi_{0} & 0\end{array}\right)

正規化されたω\boldsymbol{\omega}を使い、ϕ=αω\boldsymbol{\phi} = \alpha \boldsymbol{\omega}とすると、ロドリゲスの回転公式によって以下のようにR\boldsymbol{R}が算出される。

R=I+sin(α)αϕ+1cos(α)α2(ϕ)2\boldsymbol{R}=\boldsymbol{I}+\frac{\sin (\alpha)}{\alpha} \boldsymbol{\phi}^{\wedge}+\frac{1-\cos (\alpha)}{\alpha^{2}}\left(\boldsymbol{\phi}^{\wedge}\right)^{2}

外部パラメータは全画像で異なる。

takoroytakoroy

光線の表現

光線は原点o\boldsymbol{o}と方向d\boldsymbol{d}によって表現されるが、先ほど求めたパラメータを用いて、光線を表現することができる。

iimm番目のピクセルに対応する光線r^i,m\hat{\boldsymbol{r}}_{i, m}は以下のように表現される。

r^i,m(h)=o^i+hd^i,m\hat{\boldsymbol{r}}_{i, m}(h)=\hat{\boldsymbol{o}}_{i}+h \hat{\boldsymbol{d}}_{i, m}

まず、o^i=t^i\hat{\boldsymbol{o}}_{i}=\hat{\boldsymbol{t}}_{i}である。また、方向d^i,m\hat{\boldsymbol{d}}_{i, m}は、推定された値を用いて以下のように表される。

\hat{\boldsymbol{d}}_{i, m}=\hat{\boldsymbol{R}}_{i}\left(\begin{array}{c}(u-W / 2) / \hat{f}_{x} \\-(v-H / 2) / \hat{f}_{y} \\-1\end{array}\right)
takoroytakoroy

訓練手順

訓練の手順は、以下の画像に示すとおりである。基本的にはNeRFと同様だが、画像集合全体で共有している焦点距離\hat{f}_x, \hat{f}_xと画像ごとに推定される回転・並進パラメータも同時に最適化していく。

画像ごとに、M個のピクセルをサンプルし、それに対応する光線を求め、そこから128ポイントをランダムにサンプルし、レンダリングする。これによって得られた値と真の値の差異を損失とし、NeRFモデルおよび内部パラメータ・外部パラメータに関するパラメータを訓練していく。

このスクラップは2021/03/19にクローズされました
ログインするとコメントできます