NeRF は ECCV 2020 に掲載された論文で、その年の最優秀論文のタイトルを獲得しました。このテクノロジーは提案されるやいなや誰もが驚きましたが、NeRF は現在、コンピューター ビジョンの分野でも非常に興味深く注目を集めている研究方向です。ブロガーのその後の研究の方向性も NeRF に焦点を当てる予定です。神経放射線分野に興味がある人は誰でも、コミュニケーションを取り、一緒に学ぶことを歓迎します。
論文: NeRF: ビュー合成のためのニューラル放射フィールドとしてのシーンの表現
コード: https://github.com/bmild/nerf
NeRFとは何ですか?
NeRFの正式名はNeural Radiance Fieldsで、神経放射フィールドをシーン表現として使用して新しいビューを合成します。NeRF はニューラル ネットワークを使用したプロジェクトとしては、ネットワーク部分に比較的単純な多層パーセプトロン ( MLP)を使用するため、微分可能なレンダリング手法です。微分可能なレンダリングの簡単な理解は、使用する技術にあります。その操作部分は次のようになります。区別された、または派生した。
NeRF が注目を集めている理由は、優れたエフェクトと細部の描写にあります。NeRF では主にボリューム レンダリング技術を使用しており、ボリューム レンダリングとは、レイを追跡し、レイを統合または蓄積して画像を生成する手法です。NeRF はMLPを使用して光上の点を色と密度の値にエンコードし、表現されたシーンをMLP の重みに保存します。入力は、既知のカメラ ポーズを持つ多数の画像であり、シーン表現を取得するようにトレーニングされています。これまでにない視点からの写真。
コアコンテンツ:
- ボリュームレンダリング
- MLP
- 位置エンコーディング
- 階層的サンプリング
NeRF の原理
NeRF の入力は 5 次元データのセット、つまり 3 次元の座標 と 2 次元の視線方向です。
放射線場ボリュームレンダリング
光線の式:
ここで、o はライトの開始位置、t はライトの移動距離、d はライトの方向です。光線公式により、二次元の視野角方向を求めることができます。
光の色値の式:
C(r)は光線が表す色であり、この式がボリュームレンダリングにおける光学モデルとなります。sigmaは体積密度 (消衰係数)、c は r 上のt 位置 における d 方向の光の強度、 T はtn からt までの 累積透明度です 。
ここでの式の導出については、別の専門家のブログ「NeRF での数式の導出」を参照してください。
位置エンコーディング
この論文では、神経放射線場を最適化するための 2 つの方法について言及しています。1 つ目は、高周波位置エンコーディングです。5 次元データをニューラル ネットワークに直接入力すると、ニューラル ネットワークの特性として低周波の関数を学習する傾向があるため、色や幾何学などの高周波領域のレンダリングが不十分になります。ネットワーク内に高周波情報が不足している場合、この現象はさらに顕著になります。著者はすべての 5 次元データを高周波信号を含むベクトルにマッピングします。
この方法はフーリエ変換に似ており、論文の著者は空間座標の 3 項L=10と方向の 2 項L=4 を実験により求めました。このようにして、空間座標の入力は 3*2*10=60 個の入力量となり、方向の入力は 3*2*4=24 個の入力量になります (ここで θ と φ は 3 次元空間ベクトルにマッピングされ、つまり三次元入力です)。
位置エンコーディングを使用する場合と使用しない場合の違いは次のとおりです。
階層的サンプリング
神経放射線場を最適化するもう 1 つの方法は階層サンプリングです。1 つの光線に対して平均64点がサンプリングされる場合、多くの点がターゲット (空中) に到達しない可能性があり、オブジェクトを含むエリアがアンダーサンプリングされる可能性があります。純粋に線形 サンプリング ポイントを増やしても問題は根本的に解決されません。
層化サンプリングでは、MLP の2 つの層を使用して、サンプリング ポイントの 2 つのバッチを計算します。2 番目のバッチのサンプリング ポイントは、最初のネットワークの出力結果に基づいています。最初のネットワークは粗いネットワーク ( coarse ) と呼ばれ、2 番目のネットワークは細かいネットワーク ( Fine ) と呼ばれます。
層化サンプリング: [tn,tf] をN 個の 均一な間隔に 分割します。
光色の推定:
重みは、光線に沿った区分的定数確率密度関数(区分的定数 PDF) として見ることができます。
通信網
NeRF のネットワークは 8 層の MLP で構成されており、入力は (x、y、z、θ、φ)、出力は RGB と体積密度 σ です。
損失
NeRF の損失関数は平均二乗誤差です。
NeRFの欠点
- トレーニングと推論の速度は非常に遅く、私は 2080ti を使用していますが、トレーニングに 8.5 時間かかり、推論速度は 1 フレームあたり約 1 秒です。
- 静的なシーンのみを処理できます。
- 照明の扱いは理想的ではありません。
- トレーニングされたモデルは 1 つのシーンのみを表すことができ、一般化機能はありません。
要約する
NeRF の欠点は別にしても、その効果は依然として非常にクールであり、研究の深化に伴い、多くの最適化されたバージョンの NeRF が生まれており、NeRF と SLAM、自動運転などの統合は、依然として非常に興味深い研究方向です。
ブロガーは今後も NeRF を再現したブログを公開していきますので、興味のある方はぜひ注目し、議論し、学んでください。