Instant-NGP (uniquement Nerf) dans Pytorch + Cuda formé avec la lumière de Pytorch ( haute qualité à grande vitesse ). Ce dépôt vise à fournir une interface pytorch concise pour faciliter les recherches futures, et je suis reconnaissant si vous pouvez le partager (et une citation est très appréciée)!
D'autres vidéos représentatives sont en galerie.md
Cette implémentation a des exigences strictes en raison de dépendances sur d'autres bibliothèques, si vous rencontrez un problème d'installation en raison de l'inadéquation matérielle / logicielle, je crains qu'il n'y ait aucune intention de prendre en charge différentes plates-formes (vous êtes accueilli pour contribuer).
Clone This Repos de git clone https://github.com/kwea123/ngp_pl
Python> = 3.8 (l'installation via anaconda est recommandée, utilisez conda create -n ngp_pl python=3.8 pour créer un environnement conda et activer par conda activate ngp_pl )
Bibliothèques python
pip install torch==1.11.0 --extra-index-url https://download.pytorch.org/whl/cu113torch-scatter après leurs instructionstinycudann après leurs instructions (extension Pytorch)apex après leurs instructionspip install -r requirements.txt Extension CUDA: Mettez à niveau pip vers> = 22.1 et exécutez pip install models/csrc/ (veuillez exécuter ceci à chaque fois que vous pull le code)
Téléchargez des ensembles de données prétraités ( Synthetic_NeRF , Synthetic_NSVF , BlendedMVS , TanksAndTemples ) à partir de NSVF. Ne modifiez pas les noms de dossiers car il y a une correction du codé dur dans mon dataloader.
Téléchargez les données d'ici.
Pour les données personnalisées, exécutez colmap et obtenez un dossier sparse/0 sous lequel il y a cameras.bin , images.bin et points3D.bin . Les données suivantes avec le format COLMAP sont également prises en charge:
Téléchargez les données d'ici. Pour convertir les images HDR en images LDR pour la formation, exécutez python misc/prepare_rtmv.py <path/to/RTMV> , il créera images/ dossiers dans chaque dossier de scène et utilisera ces images pour former (et tester).
QuickStart: python train.py --root_dir <path/to/lego> --exp_name Lego
Il entraînera la scène LEGO pour 30 000 pas (chaque étape avec 8192 rayons) et effectuera un test à la fin. Le processus de formation doit se terminer en environ 5 minutes (la sauvegarde de l'image de test est lente, ajoutez --no_save_test à désactiver). Le test du PSNR sera affiché à la fin.
Plus d'options peuvent être trouvées dans Opt.py.
Pour d'autres formations de données publiques, veuillez vous référer aux scripts sous benchmarking .
Utilisez test.ipynb pour générer des images. Le modèle prétraité LEGO est disponible ici
Utilisation de l'interface graphique: Exécutez python show_gui.py suivi des mêmes hyperparamètres utilisés dans la formation ( dataset_name , root_dir , etc.) et ajoutez le chemin de contrôle avec --ckpt_path <path/to/.ckpt>
J'ai comparé la qualité (test moyen PSNR sur Synthetic-NeRF ) et la vitesse d'inférence (sur la scène Lego ) par rapport à la torch de travail simultanée (paramètres par défaut) et le papier, tous formés pendant environ 5 minutes:
| Méthode | AVG PSNR | FPS | GPU |
|---|---|---|---|
| torch-ngp | 31.46 | 18.2 | 2080 ti |
| le mien | 32.96 | 36.2 | 2080 ti |
| Papier instantanée-NGP | 33.18 | 60 | 3090 |
Quant à la qualité, le mien est légèrement meilleur que Torch-NGP, mais le résultat peut fluctuer sur différentes courses.
En ce qui concerne la vitesse, le mien est plus rapide que Torch-NGP, mais n'est encore à moitié rapide que le NGP instantané. La vitesse dépend de la scène (si la plupart de la scène est vide, la vitesse sera plus rapide).




Gauche: torch-ngp. À droite: le mien.
Pour exécuter des repères, utilisez les scripts sous benchmarking .
Les suivants sont mes résultats formés à l'aide de 1 RTX 2080 TI (résultats qualitatifs ici):
| Micro | Ficus | Chaise | Hot-dog | Matériels | Batterie | Bateau | 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 |
| Temps de formation | 3M9S | 3m12 | 4m17 | 5m53 | 4m55 | 4m7s | 9m20 | 5m5s | 5m00 |
| Vide | Vapeur | Crapaud | Robot | Vélo | Palais | Vaisseau spatial | Style de vie | 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 |
| Temps de formation | 3m58 | 3m44 | 7m22 | 3m25 | 3m11 | 6m45 | 3m25 | 4m56 | 4m36 |
| Ignace | Camion | Grange | Chenille | Famille | AVG | |
|---|---|---|---|---|---|---|
| PSNR | 28h30 | 27.67 | 28h00 | 26.16 | 34.27 | 28.78 |
| * FPS | 10.04 | 7.99 | 16.14 | 10.91 | 6.16 | 10.25 |
* Évalué sur test-traj
| *Jade | *Fontaine | Personnage | Statues | AVG | |
|---|---|---|---|---|---|
| PSNR | 25.43 | 26.82 | 30.43 | 26.79 | 27.38 |
| ** FPS | 26.02 | 21.24 | 35.99 | 19.22 | 25.61 |
| Temps de formation | 6m31 | 7m15 | 4m50 | 5m57 | 6m48 |
* Je passe manuellement l'arrière-plan du noir au blanc, donc le nombre n'est pas directement comparable à celui des papiers.
** Évalué sur test-traj