Giter Club home page Giter Club logo

3d-recon-gui's Introduction

3D-Recon Using

Install

  • Just refer the file 'setup.txt'

Origin ngp_pl readme

Advertisement: stay tuned with my channel, I will upload cuda tutorials recently, and do a stream about this implementation!

Instant-ngp (only NeRF) in pytorch+cuda trained with pytorch-lightning (high quality with high speed). This repo aims at providing a concise pytorch interface to facilitate future research, and am grateful if you can share it (and a citation is highly appreciated)!

🖌️ Gallery

gui.mp4

Other representative videos are in GALLERY.md

💻 Installation

This implementation has strict requirements due to dependencies on other libraries, if you encounter installation problem due to hardware/software mismatch, I'm afraid there is no intention to support different platforms (you are welcomed to contribute).

Hardware

  • OS: Ubuntu 20.04
  • NVIDIA GPU with Compute Compatibility >= 75 and memory > 6GB (Tested with RTX 2080 Ti), CUDA 11.3 (might work with older version)
  • 32GB RAM (in order to load full size images)

Software

  • Clone this repo by git clone https://github.com/kwea123/ngp_pl

  • Python>=3.8 (installation via anaconda is recommended, use conda create -n ngp_pl python=3.8 to create a conda environment and activate it by conda activate ngp_pl)

  • Python libraries

    • Install pytorch>=1.11.0 by pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/cu113
    • Install torch-scatter following their instruction
    • Install tinycudann following their instruction (compilation and pytorch extension)
    • Install apex following their instruction
    • Install core requirements by pip install -r requirements.txt
  • Cuda extension: Upgrade pip to >= 22.1 and run pip install models/csrc/ (please run this each time you pull the code)

📚 Supported Datasets

  1. NSVF data

Download preprocessed datasets (Synthetic_NeRF, Synthetic_NSVF, BlendedMVS, TanksAndTemples) from NSVF. Do not change the folder names since there is some hard-coded fix in my dataloader.

  1. NeRF++ data

Download data from here.

  1. Colmap data

For custom data, run colmap and get a folder sparse/0 under which there are cameras.bin, images.bin and points3D.bin. The following data with colmap format are also supported:

  1. RTMV data

Download data from here. To convert the hdr images into ldr images for training, run python misc/prepare_rtmv.py <path/to/RTMV>, it will create images/ folder under each scene folder, and will use these images to train (and test).

🔑 Training

Quickstart: python train.py --root_dir <path/to/lego> --exp_name Lego

It will train the Lego scene for 30k steps (each step with 8192 rays), and perform one testing at the end. The training process should finish within about 5 minutes (saving testing image is slow, add --no_save_test to disable). Testing PSNR will be shown at the end.

More options can be found in opt.py.

For other public dataset training, please refer to the scripts under benchmarking.

🔎 Testing

Use test.ipynb to generate images. Lego pretrained model is available here

GUI usage: run python show_gui.py followed by the same hyperparameters used in training (dataset_name, root_dir, etc) and add the checkpoint path with --ckpt_path <path/to/.ckpt>

Comparison with torch-ngp and the paper

I compared the quality (average testing PSNR on Synthetic-NeRF) and the inference speed (on Lego scene) v.s. the concurrent work torch-ngp (default settings) and the paper, all trained for about 5 minutes:

Method avg PSNR FPS GPU
torch-ngp 31.46 18.2 2080 Ti
mine 32.96 36.2 2080 Ti
instant-ngp paper 33.18 60 3090

As for quality, mine is slightly better than torch-ngp, but the result might fluctuate across different runs.

As for speed, mine is faster than torch-ngp, but is still only half fast as instant-ngp. Speed is dependent on the scene (if most of the scene is empty, speed will be faster).



Left: torch-ngp. Right: mine.

💹 Benchmarks

To run benchmarks, use the scripts under benchmarking.

Followings are my results trained using 1 RTX 2080 Ti (qualitative results here):

Synthetic-NeRF
Mic Ficus Chair Hotdog Materials Drums Ship 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
Training time 3m9s 3m12s 4m17s 5m53s 4m55s 4m7s 9m20s 5m5s 5m00s
Synthetic-NSVF
Wineholder Steamtrain Toad Robot Bike Palace Spaceship Lifestyle 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
Training time 3m58s 3m44s 7m22s 3m25s 3m11s 6m45s 3m25s 4m56s 4m36s
Tanks and Temples
Ignatius Truck Barn Caterpillar Family 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

*Evaluated on test-traj

BlendedMVS
*Jade *Fountain Character Statues AVG
PSNR 25.43 26.82 30.43 26.79 27.38
**FPS 26.02 21.24 35.99 19.22 25.61
Training time 6m31s 7m15s 4m50s 5m57s 6m48s

*I manually switch the background from black to white, so the number isn't directly comparable to that in the papers.

**Evaluated on test-traj

TODO

  • use super resolution in GUI to improve FPS
  • multi-sphere images as background

3d-recon-gui's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

3d-recon-gui's Issues

Can this GUI do mesh extraction?

Hi, thanks for the nice work.I found nerf_pl has mesh extraction function, can get normal mesh and mesh with color .So I wonder can this GUI provide this function just like the gui of instant ngp?

cannot import name '_compare_version' from 'torchmetrics.utilities.imports'

你好,我运行show_gui.py脚本报错:
Traceback (most recent call last):
File "show_gui.py", line 13, in
from train import depth2img
File "/home/chen/3D-Recon-GUI-main/train.py", line 34, in
from pytorch_lightning.plugins import DDPPlugin
File "/home/chen/.conda/envs/ngp_pl/lib/python3.8/site-packages/pytorch_lightning/init.py", line 34, in
from pytorch_lightning.callbacks import Callback # noqa: E402
File "/home/chen/.conda/envs/ngp_pl/lib/python3.8/site-packages/pytorch_lightning/callbacks/init.py", line 25, in
from pytorch_lightning.callbacks.progress import ProgressBarBase, RichProgressBar, TQDMProgressBar
File "/home/chen/.conda/envs/ngp_pl/lib/python3.8/site-packages/pytorch_lightning/callbacks/progress/init.py", line 22, in
from pytorch_lightning.callbacks.progress.rich_progress import RichProgressBar # noqa: F401
File "/home/chen/.conda/envs/ngp_pl/lib/python3.8/site-packages/pytorch_lightning/callbacks/progress/rich_progress.py", line 20, in
from torchmetrics.utilities.imports import _compare_version
ImportError: cannot import name '_compare_version' from 'torchmetrics.utilities.imports' (/home/chen/.conda/envs/ngp_pl/lib/python3.8/site-packages/torchmetrics/utilities/imports.py)
我检查过路径没有错,请问会是什么原因导致的。

GUI界面不会显示

Process finished with exit code -1073741819 (0xC0000005)
image
请问如何解决呢?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.