画像から三角形の3Dモデル、材料、照明を抽出する紙で説明されているように、マルチビュー画像観測からのトポロジ、材料、および照明の共同最適化。
微分可能な行進四面体については、3Dディープラーニング研究を加速するためのNvidiaのKaolin:Pytorch Libraryのコードを適応させました。
2023-10-20 :スラングピーで書かれたRenderutilsライブラリのバージョンを追加して、手動で作成された前後のパスを備えたCuda拡張機能の代わりに、Slangの自動装置機能を活用しました。これにより、以前と同じランタイムパフォーマンスでコードが大幅に簡素化されます。このバージョンは、このレポのslangブランチで利用できます。
2023-09-15 :FlexCubesのサポートを追加しました。使用の例については、 configs/bob_flexi.jsonを参照してください。詳細については、FlexCubesのドキュメントを参照してください。
@inproceedings{Munkberg_2022_CVPR,
author = {Munkberg, Jacob and Hasselgren, Jon and Shen, Tianchang and Gao, Jun and Chen, Wenzheng
and Evans, Alex and M"uller, Thomas and Fidler, Sanja},
title = "{Extracting Triangular 3D Models, Materials, and Lighting From Images}",
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2022},
pages = {8280-8290}
}
Copyright©2022、Nvidia Corporation。無断転載を禁じます。
この作業は、NVIDIAソースコードライセンスの下で利用可能になります。
ビジネスに関するお問い合わせについては、当社のWebサイトにアクセスして、フォームを提出してください:Nvidia Research Licensing。
python 3.6+、vs2019+、cuda 11.3+、およびpytorch 1.10+が必要です
Python 3.9およびPytorch 1.10でAnaconda3でテストしました
CUDA Toolkit(Pytorch拡張機能の構築に必要)をインストールします。 Cuda 11.3以上をサポートしています。インストールされているCUDAツールキットと互換性のあるPytorchの適切なバージョンを選択します。以下は、CUDA 11.6の例です
conda create -n dmodel python=3.9
activate dmodel
conda install pytorch torchvision torchaudio cudatoolkit=11.6 -c pytorch -c conda-forge
pip install ninja imageio PyOpenGL glfw xatlas gdown
pip install git+https://github.com/NVlabs/nvdiffrast/
pip install --global-option="--no-networks" git+https://github.com/NVlabs/tiny-cuda-nn#subdirectory=bindings/torch
imageio_download_bin freeimage
activate dmodel
私たちのアプローチは、大量のメモリを備えたハイエンドNvidia GPU用に設計されています。ミッドレンジGPUで実行するには、.JSONファイルのバッチサイズパラメーターを削減します。
単純な属1の再構成例:
python train.py --config configs/bob.json
トレーニングの進捗状況を視覚化します(Windowsでのみサポートされています):
python train.py --config configs/bob.json --display-interval 20
Multi GPUの例(Linuxのみ。実験:ペーパーのすべての結果が単一のGPUを使用して生成されました)、Pytorch DDPを使用して
torchrun --nproc_per_node=4 train.py --config configs/bob.json
以下に、出発点と最終結果を示します。右への参照。


結果はoutフォルダーに保存されます。スポットとボブのモデルは作成され、キーナンクレーンによってパブリックドメインにリリースされました。
含まれています。例が含まれています
spot.jsonスポットモデルの3Dモデルの抽出。画像観測からのジオメトリ、材料、および照明。spot_fixlight.json上記と同じですが、既知の環境照明を想定しています。spot_metal.jsonスプリットサムを紹介するための材料と高周波環境照明の共同学習の例。bob.json属1モデルの簡単な例。さらに、論文の主な結果を再現するために、構成( nerf_*.json 、 nerd_*.json )を含めます。私たちは、それぞれの著者の厚意によるサードパーティのデータセットに依存しています。個々のライセンスが各データセットに適用されることに注意してください。すべてのデータセットを自動的にダウンロードして前処理するには、 download_datasets.pyスクリプトを実行します。
activate dmodel
cd data
python download_datasets.py
以下は、データセットを手動でインストールする方法についての詳細と指示を示します(自動スクリプトが失敗した場合)。
NERF合成データセット私たちのビュー補間結果は、元のNERFペーパーの合成データセットを使用しています。手動でインストールするには、nerf合成データセットアーカイブをダウンロードして、 nvdiffrec/dataフォルダーに解凍します。これはnerf_*.json構成のいずれかを実行するために必要です。
NERDデータセット現実世界の写真測量と不正確な(手動で注釈付き)セグメンテーションマスクを特徴とするオタク紙のデータセットを使用しています。 gitを使用してオタクデータセットをクローンし、スクリプトscale_images.pyを使用して512 x 512ピクセルの解像度に再格付けされます。これはnerd_*.json構成のいずれかを実行するために必要です。
activate dmodel
cd nvdiffrec/data/nerd
git clone https://github.com/vork/ethiopianHead.git
git clone https://github.com/vork/moldGoldCape.git
python scale_images.py
cd docker
./make_image.sh nvdiffrec:v1
インタラクティブドッカーコンテナを起動する: docker run --gpus device=0 -it --rm -v /raid:/raid -it nvdiffrec:v1 bash
分離したDocker: docker run --gpus device=1 -d -v /raid:/raid -w=[path to the code] nvdiffrec:v1 python train.py --config configs/bob.json