Instan-NGP (hanya NERF) di Pytorch+Cuda yang dilatih dengan Pytorch-Lightning ( kualitas tinggi dengan kecepatan tinggi ). Repo ini bertujuan untuk menyediakan antarmuka Pytorch ringkas untuk memfasilitasi penelitian di masa depan, dan saya bersyukur jika Anda dapat membagikannya (dan kutipan sangat dihargai)!
Video representatif lainnya ada di galeri.md
Implementasi ini memiliki persyaratan ketat karena dependensi di perpustakaan lain, jika Anda mengalami masalah instalasi karena ketidaksesuaian perangkat keras/perangkat lunak, saya khawatir tidak ada niat untuk mendukung platform yang berbeda (Anda disambut untuk berkontribusi).
Klon repo ini oleh git clone https://github.com/kwea123/ngp_pl
Python> = 3.8 (Instalasi melalui Anaconda direkomendasikan, gunakan conda create -n ngp_pl python=3.8 untuk membuat lingkungan Conda dan mengaktifkannya dengan conda activate ngp_pl )
Perpustakaan Python
pip install torch==1.11.0 --extra-index-url https://download.pytorch.org/whl/cu113torch-scatter Mengikuti Instruksi Merekatinycudann mengikuti instruksi mereka (Ekstensi Pytorch)apex mengikuti instruksi merekapip install -r requirements.txt Ekstensi CUDA: Upgrade pip ke> = 22.1 dan jalankan pip install models/csrc/ (Harap jalankan ini setiap kali Anda pull kode)
Unduh dataset preprosesed ( Synthetic_NeRF , Synthetic_NSVF , BlendedMVS , TanksAndTemples ) dari NSVF. Jangan ubah nama folder karena ada beberapa perbaikan kode keras di dataloader saya.
Unduh data dari sini.
Untuk data khusus, jalankan colmap dan dapatkan folder sparse/0 di mana ada cameras.bin , images.bin dan points3D.bin . Data berikut dengan format colmap juga didukung:
Unduh data dari sini. Untuk mengonversi gambar HDR menjadi gambar LDR untuk pelatihan, jalankan python misc/prepare_rtmv.py <path/to/RTMV> , itu akan membuat images/ folder di bawah setiap folder adegan, dan akan menggunakan gambar ini untuk dilatih (dan diuji).
QuickStart: python train.py --root_dir <path/to/lego> --exp_name Lego
Ini akan melatih adegan LEGO untuk 30 ribu langkah (setiap langkah dengan 8192 sinar), dan melakukan satu pengujian di akhir. Proses pelatihan harus selesai dalam waktu sekitar 5 menit (menghemat gambar pengujian lambat, tambahkan --no_save_test untuk menonaktifkan). Menguji PSNR akan ditampilkan di akhir.
Lebih banyak opsi dapat ditemukan di opt.py.
Untuk pelatihan dataset publik lainnya, silakan merujuk ke skrip di bawah benchmarking .
Gunakan test.ipynb untuk menghasilkan gambar. Model Pretrained Lego tersedia di sini
Penggunaan GUI: Jalankan python show_gui.py diikuti oleh hiperparameter yang sama yang digunakan dalam pelatihan ( dataset_name , root_dir , dll) dan tambahkan jalur pos pemeriksaan dengan --ckpt_path <path/to/.ckpt>
Saya membandingkan kualitas (pengujian rata-rata PSNR pada Synthetic-NeRF ) dan kecepatan inferensi (pada adegan Lego ) vs kerja bersamaan obor-NGP (pengaturan default) dan kertas, semuanya dilatih selama sekitar 5 menit:
| Metode | rata -rata psnr | FPS | GPU |
|---|---|---|---|
| Obor-NGP | 31.46 | 18.2 | 2080 ti |
| milikku | 32.96 | 36.2 | 2080 ti |
| Kertas Instan-NGP | 33.18 | 60 | 3090 |
Sedangkan untuk kualitas, milik saya sedikit lebih baik daripada obor-NGP, tetapi hasilnya mungkin berfluktuasi di berbagai berjalan.
Sedangkan untuk kecepatan, milik saya lebih cepat dari obor-NGP, tetapi masih hanya setengah cepat seperti instan-NGP. Kecepatan tergantung pada adegan (jika sebagian besar adegan kosong, kecepatan akan lebih cepat).




Kiri: Torch-NGP. Benar: milikku.
Untuk menjalankan tolok ukur, gunakan skrip di bawah benchmarking .
Berikut adalah hasil saya yang dilatih menggunakan 1 RTX 2080 Ti (hasil kualitatif di sini):
| Mikrofon | Ficus | Kursi | Hotdog | Bahan | Drum | Mengirimkan | Lego | Rata -rata | |
|---|---|---|---|---|---|---|---|---|---|
| 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 |
| Waktu pelatihan | 3m9s | 3M12S | 4M17S | 5M53S | 4M55S | 4m7s | 9m20s | 5m5s | 5m00s |
| WineHolder | Steamtrain | Katak | Robot | Sepeda | Istana | Pesawat ruang angkasa | Gaya hidup | Rata -rata | |
|---|---|---|---|---|---|---|---|---|---|
| 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 |
| Waktu pelatihan | 3M58S | 3M44S | 7m22s | 3M25S | 3M11S | 6M45S | 3M25S | 4M56S | 4M36S |
| Ignatius | Truk | Lumbung | Ulat | Keluarga | Rata -rata | |
|---|---|---|---|---|---|---|
| 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 |
*Dievaluasi pada test-traj
| *Giok | *Air mancur | Karakter | Patung | Rata -rata | |
|---|---|---|---|---|---|
| Psnr | 25.43 | 26.82 | 30.43 | 26.79 | 27.38 |
| ** fps | 26.02 | 21.24 | 35.99 | 19.22 | 25.61 |
| Waktu pelatihan | 6M31S | 7M15S | 4m50s | 5M57S | 6M48S |
*Saya secara manual mengganti latar belakang dari hitam ke putih, jadi angkanya tidak secara langsung sebanding dengan yang ada di kertas.
** Dievaluasi pada test-traj