Skip to main content

NeRF‐ビュー合成のための神経放射輝度フィールドとしてのシーンの表現

Created on December 17|Last edited on February 17



前書き

コード | |論文→

著者は、論文「ビュー合成のための神経放射輝度フィールドとしてのシーンの表現」 で、入力ビューのスパースセットを使用して基礎となる連続的なボリューメトリックシーン関数を最適化することにより、複雑なシーンの新しいビューを合成するための最先端の結果を達成する方法を提示しています。

彼らのアルゴリズムは、完全に接続された(非畳み込み)ディープネットワークを使用するシーンを表しています。その入力は、単一の連続的な5D座標(空間位置(x、y、z)および視線方向(θ、φ))であり、出力はその空間位置でのボリューム密度およびビューに依存する放出放射輝度です。

カメラの光線に沿って5D座標を照会することでビューを合成し、従来のボリュームレンダリング技術を使用して出力の色と密度を画像に投影します。ボリュームレンダリングは自然に微分可能であるため、表現を最適化するために必要な入力は、既知のカメラポーズの画像のセットのみです。彼らは、神経放射輝度フィールドを効果的に最適化して、複雑なジオメトリと外観を持つシーンの写実的な斬新なビューをレンダリングする方法を説明し、神経レンダリングとビュー合成に関する以前の作業よりも優れた結果を示しています

この論文についてもっと知りたい場合は、次の論文に関する2分間のビデオをチェックしてください― Screen Shot 2020-04-13 at 12.17.06 AM.png

ベースラインモデル

ハイパーパラメータスイープを備えたcolabノートブックを作成しましたので、この分析をcolabで再現できます。ハイパーパラメータを調整してその結果を改善できるかどうかを是非確認してみてください。

colabで試してみてください→

まず、ベースラインモデルをトレーニングし、モデルの予測をwandbに記録しましょう。これにより、モデルが各反復で基礎となるシーンの表現をどのように学習するかをリアルタイムで観察できます。




This set of panels contains runs from a private project, which cannot be shown in this report


単一シーンの学習された神経表現からの新しいビューのレンダリング

私たちのモデルのさまざまなハイパーパラメータを変更して、それがパフォーマンスにどのように影響するかを見てみましょう。以下では、トレーニングが長ければ長いほど、モデルが単一シーンの神経表現から学習ビューを立派に構築することがわかります。

ここでは10,000回の反復で停止しますが、モデルのトレーニングをもっと長くすることをお勧めします。以下は、論文の著者が200,000回の反復後に再現できたビデオです。ご覧のとおり、その結果は非常にリアルです。

After training for 200,000 iterations




This set of panels contains runs from a private project, which cannot be shown in this report


学習率の変化の影響

このセクションでは、他のすべてのハイパーパラメータを同じに保ちながら、学習率を変化させます。モデルをトレーニングするための妥当な数のエポック、たとえば1000を選択しましょう。ここで、損失関数を比較して、理想的なlearning_rateが3e-4から7e-4の間にあることを確認できます。

5e-3は高すぎる一方、5e-5と5e-6は低すぎます。モデルのパフォーマンスを向上させたい場合は、[5e-4 and 7e-4]の範囲でより多くの値を試すことをお勧めします。

このパターンをレンダリングされたビデオに反映することもできます。私たちのモデルは、5e-3で基礎となる構造を学習しないことから始まり、7e-4と3e-4の間のこれらの3D表現の学習が徐々に上手くなります。その後、5e-6でシーンの神経表現をキャプチャできなくなるまで、パフォーマンスが徐々に低下します。ちなみにこのモデルは1000エポックのみでトレーニングされています。低い値の学習率でより長く訓練した場合、私たちは非常に良いパフォーマンスを得られる様になるでしょう。




This set of panels contains runs from a private project, which cannot be shown in this report


埋め込みサイズ変更の影響

次の実験では、この学習率5e-4を使用して、以前と同様にすべてのモデルを1000エポックでトレーニングします。今回は、埋め込みサイズを変えて、もう一度ゴルディロックスシナリオの状態になります。

損失プロットとpsnrプロットの両方、およびシーンの学習神経表現からレンダリングされたビデオから、埋め込みサイズ2が小さすぎるので、基礎となるシーンの複雑さをキャプチャできないのに対し、10は単純に大きすぎることがわかります。モデルのパフォーマンスを改善できるかどうかを確認するために、6に近い埋め込み値をさらに調査することをお勧めします




This set of panels contains runs from a private project, which cannot be shown in this report


レイヤー追加の効果

次は、学習率を5e-4に保ち、サイズを6に埋め込み、すべてのモデルを1000エポックでトレーニングしながら、隠れ層を追加します。興味深いことに、レイヤーを追加しても、必ずしもパフォーマンスが向上するとは限りません。6の隠れ層サイズは、非常に近いものの、4層と8層の両方のネットワークを上回りました。この実験では、レイヤーサイズ6を維持し、損失とpsnrに大きな影響を与える他のパラメーターの調整に注力します。




This set of panels contains runs from a private project, which cannot be shown in this report


ニューロン追加の効果

最後に、すべてのハイパーパラメータを上記と同じに保ち(学習率 = 5e-4、埋め込みサイズ = 6、エポック = 1000、layer_size = 6)、dense_layersのサイズを微調整します。密度の高い層のサイズに反比例する損失の明確なパターンが見られます。

私のGPUは512レイヤーでメモリを使い果たしましたが、GPUが大きい場合は、256を超えるレイヤーサイズを試して、モデルのパフォーマンスが引き続き向上するかどうかを確認することをお勧めします。




This set of panels contains runs from a private project, which cannot be shown in this report


最適なモデルを見つけるためのハイパーパラメータスイープの実行

最後に、ハイパーパラメータスイープを実行して、これらの学習率、埋め込みサイズ、その他のハイパーパラメータを組み合わせてテストし、ハイパーパラメータ空間をより徹底的に調査して、パフォーマンスの最も高いモデルを見つけます。W&Bを使用すると、実行するパラメーターと検索方法を.yamlファイルとして指定することで、ハイパーパラメータースイープを簡単に実行できます。

5分でわかるハイパーパラメータスイープを起動する方法をご覧ください→




This set of panels contains runs from a private project, which cannot be shown in this report


自分で試してみましょう

ハイパーパラメータスイープを備えたcolabノートブックを作成したので、この分析をcolabで再現できます。ハイパーパラメータを調整して結果を改善���きるかどうかを確認してください。

colabで試してみてください→


Iterate on AI agents and models faster. Try Weights & Biases today.