Instant-NGP (nur Nerf) in Pytorch+CUDA mit Pytorch-Lichtung ( hohe Qualität mit hoher Geschwindigkeit ). Dieses Repo zielt darauf ab, eine prägnante Pytorch -Schnittstelle zur Erleichterung zukünftiger Forschungsergebnisse bereitzustellen, und bin dankbar, wenn Sie sie teilen können (und ein Zitat wird sehr geschätzt)!
Andere repräsentative Videos finden Sie in Galerie.md
Diese Implementierung hat aufgrund von Abhängigkeiten von anderen Bibliotheken strenge Anforderungen. Wenn Sie aufgrund von Hardware-/Software -Fehlanpassungen auf das Installationsproblem stoßen, befürchte ich, dass es keine Absicht gibt, verschiedene Plattformen zu unterstützen (Sie werden begrüßt, um einen Beitrag zu leisten).
Klonen dieses Repo von git clone https://github.com/kwea123/ngp_pl
Python> = 3.8 (Installation über Anaconda wird conda create -n ngp_pl python=3.8 conda activate ngp_pl
Python -Bibliotheken
pip install torch==1.11.0 --extra-index-url https://download.pytorch.org/whl/cu113torch-scatter nach ihrer Anweisungtinycudann nach ihrer Anweisung (Pytorch -Erweiterung)apex nach ihrer Anweisungpip install -r requirements.txt CUDA -Erweiterung: pip auf> = 22,1 aufbauen und pip install models/csrc/ (Bitte führen Sie diese jedes Mal aus, wenn Sie den Code pull ).
Download vorverarbeitete Datensätze ( Synthetic_NeRF , Synthetic_NSVF , BlendedMVS , TanksAndTemples ) von NSVF. Ändern Sie nicht die Ordnernamen , da in meinem Dataloader eine hart codierte Behebung vorliegt.
Laden Sie hier Daten herunter.
Führen points3D.bin colmap für benutzerdefinierte Daten aus und erhalten Sie einen Ordner sparse/0 images.bin dem es cameras.bin gibt. Die folgenden Daten mit Colmap -Format werden ebenfalls unterstützt:
Laden Sie hier Daten herunter. Um die HDR -Bilder in LDR -Bilder für das Training umzuwandeln, führen Sie python misc/prepare_rtmv.py <path/to/RTMV> aus, sie erstellt images/ Ordner in jedem Szenenordner und verwendet diese Bilder zum Training (und testen).
QuickStart: python train.py --root_dir <path/to/lego> --exp_name Lego
Es trainiert die LEGO -Szene für 30.000 Schritte (jeden Schritt mit 8192 Strahlen) und führt am Ende einen Test durch. Der Trainingsprozess sollte innerhalb von ca. 5 Minuten abgeschlossen werden (das Bild des Tests ist langsam, add --no_save_test , um zu deaktivieren). Das Testen von PSNR wird am Ende angezeigt.
Weitere Optionen finden Sie in Opt.Py.
Weitere öffentliche Datensatzschulungen finden Sie in den Skripten unter benchmarking .
Verwenden Sie test.ipynb , um Bilder zu generieren. LEGO PretRained Model ist hier erhältlich
GUI -Verwendung: Führen --ckpt_path <path/to/.ckpt> python show_gui.py aus , gefolgt dataset_name den gleichen Hyperparametern root_dir
Ich habe die Qualität (durchschnittliche Tests pSNR auf Synthetic-NeRF ) und die Inferenzgeschwindigkeit (auf Lego Szene) mit dem gleichzeitigen Arbeits-Torch-NGP (Standardeinstellungen) und dem Papier verglich, alle für etwa 5 Minuten trainiert:
| Verfahren | avg psnr | Fps | GPU |
|---|---|---|---|
| Torch-NGP | 31.46 | 18.2 | 2080 ti |
| meins | 32.96 | 36.2 | 2080 ti |
| Instant-NGP-Papier | 33.18 | 60 | 3090 |
Die Qualität ist etwas besser als Torch-NGP, aber das Ergebnis könnte über verschiedene Läufe hinweg schwanken.
Was die Geschwindigkeit betrifft, ist meine schneller als Torch-NGP, aber immer noch nur halb so schnell wie sofortig-NGP. Die Geschwindigkeit hängt von der Szene ab (wenn der größte Teil der Szene leer ist, ist die Geschwindigkeit schneller).




Links: Torch-NGP. Richtig: meins.
Verwenden Sie die Skripte unter benchmarking , um Benchmarks auszuführen.
Die folgenden Ergebnisse sind meine Ergebnisse, die mit 1 RTX 2080 TI (qualitative Ergebnisse hier) trainiert wurden:
| Mikrofon | Ficus | Stuhl | Hotdog | Materialien | Schlagzeug | Schiff | Lego | Avg | |
|---|---|---|---|---|---|---|---|---|---|
| PSNR | 35.59 | 34.13 | 35.28 | 37.35 | 29.46 | 25.81 | 30.32 | 35.76 | 32.96 |
| Ssim | 0,988 | 0,982 | 0,984 | 0,980 | 0,944 | 0,933 | 0,890 | 0,979 | 0,960 |
| LPIPs | 0,017 | 0,024 | 0,025 | 0,038 | 0,070 | 0,076 | 0,133 | 0,022 | 0,051 |
| Fps | 40.81 | 34.02 | 49,80 | 25.06 | 20.08 | 37.77 | 15.77 | 36.20 | 32.44 |
| Trainingszeit | 3m9s | 3m12s | 4m17s | 5m53s | 4m55s | 4m7s | 9m20s | 5m5s | 5m00s |
| Weininhaber | Steamtrain | Kröte | Roboter | Fahrrad | Palast | Raumschiff | Lebensstil | Avg | |
|---|---|---|---|---|---|---|---|---|---|
| PSNR | 31.64 | 36.47 | 35,57 | 37.10 | 37,87 | 37.41 | 35,58 | 34.76 | 35.80 |
| Ssim | 0,962 | 0,987 | 0,980 | 0,994 | 0,990 | 0,977 | 0,980 | 0,967 | 0,980 |
| LPIPs | 0,047 | 0,023 | 0,024 | 0.010 | 0,015 | 0,021 | 0,029 | 0,044 | 0,027 |
| Fps | 47.07 | 75.17 | 50.42 | 64,87 | 66,88 | 28.62 | 35,55 | 22.84 | 48.93 |
| Trainingszeit | 3m58s | 3m44s | 7m22s | 3m25s | 3m11s | 6m45s | 3m25s | 4m56s | 4m36s |
| Ignatius | LKW | Scheune | Raupe | Familie | Avg | |
|---|---|---|---|---|---|---|
| PSNR | 28.30 | 27.67 | 28.00 | 26.16 | 34.27 | 28.78 |
| *Fps | 10.04 | 7.99 | 16.14 | 10.91 | 6.16 | 10.25 |
*Bewertet auf test-traj
| *Jade | *Brunnen | Charakter | Statuen | Avg | |
|---|---|---|---|---|---|
| PSNR | 25.43 | 26.82 | 30.43 | 26.79 | 27.38 |
| ** FPS | 26.02 | 21.24 | 35.99 | 19.22 | 25.61 |
| Trainingszeit | 6m31s | 7m15s | 4m50s | 5m57s | 6m48s |
*Ich wechsle den Hintergrund von Schwarz auf Weiß manuell, sodass die Zahl nicht direkt mit der in den Papieren vergleichbar ist.
** Bewertet auf test-traj