Instant-NGP (apenas NERF) em pytorch+cuda treinado com pytorch-iluminação ( alta qualidade com alta velocidade ). Esse repositório visa fornecer uma interface concisa de Pytorch para facilitar pesquisas futuras e sou grato se você puder compartilhá -lo (e uma citação for muito apreciada)!
Outros vídeos representativos estão na galeria.md
Essa implementação possui requisitos estritos devido a dependências de outras bibliotecas, se você encontrar um problema de instalação devido à incompatibilidade de hardware/software, receio que não haja intenção de suportar diferentes plataformas (você é bem -vindo para contribuir).
Clone este repo por git clone https://github.com/kwea123/ngp_pl
Python> = 3.8 (a instalação via anaconda é recomendada, use conda create -n ngp_pl python=3.8 para criar um ambiente de CONDA e ativá -lo por conda activate ngp_pl )
Bibliotecas Python
pip install torch==1.11.0 --extra-index-url https://download.pytorch.org/whl/cu113torch-scatter seguindo suas instruçõestinycudann seguindo suas instruções (extensão Pytorch)apex seguindo suas instruçõespip install -r requirements.txt Extensão CUDA: Atualize pip para> = 22.1 e execute pip install models/csrc/ (execute isso cada vez que pull o código)
Faça o download dos conjuntos de dados pré -processados ( Synthetic_NeRF , Synthetic_NSVF , BlendedMVS , TanksAndTemples ) do NSVF. Não altere os nomes de pastas, pois há alguma correção codificada no meu Dataloader.
Baixar dados aqui.
Para dados personalizados, execute colmap e obtenha uma pasta sparse/0 sob a qual existem cameras.bin , images.bin e points3D.bin . Os seguintes dados com formato Colmap também são suportados:
Baixar dados aqui. Para converter as imagens HDR em imagens LDR para treinamento, execute python misc/prepare_rtmv.py <path/to/RTMV> , ele criará images/ pasta em cada pasta de cena e usará essas imagens para treinar (e testar).
QuickStart: python train.py --root_dir <path/to/lego> --exp_name Lego
Ele treinará a cena LEGO para 30 mil degraus (cada etapa com 8192 raios) e realizará um teste no final. O processo de treinamento deve terminar em cerca de 5 minutos (economizar a imagem de teste é lento, adicione --no_save_test para desativar). O teste PSNR será mostrado no final.
Mais opções podem ser encontradas no opt.py.
Para outro treinamento público do conjunto de dados, consulte os scripts em benchmarking .
Use test.ipynb para gerar imagens. O modelo lego pré -traido está disponível aqui
Uso da GUI: Execute python show_gui.py seguido pelos mesmos hiperparameters usados no treinamento ( dataset_name , root_dir , etc) e adicione o caminho do ponto de verificação com --ckpt_path <path/to/.ckpt>
Comparei a qualidade (teste médio de PSNR no Synthetic-NeRF ) e a velocidade de inferência (na cena Lego ) versus o trabalho simultâneo Torch-NGP (configurações padrão) e o papel, todos treinados por cerca de 5 minutos:
| Método | AVG PSNR | FPS | GPU |
|---|---|---|---|
| Torch-ngp | 31.46 | 18.2 | 2080 Ti |
| meu | 32.96 | 36.2 | 2080 Ti |
| Papel Instant-NGP | 33.18 | 60 | 3090 |
Quanto à qualidade, a minha é um pouco melhor que a Torch-NGP, mas o resultado pode flutuar em diferentes corridas.
Quanto à velocidade, o meu é mais rápido que o Torch-NGP, mas ainda é apenas meio rápido como Instant-NGP. A velocidade depende da cena (se a maior parte da cena estiver vazia, a velocidade será mais rápida).




Esquerda: Torch-ngp. Certo: meu.
Para executar benchmarks, use os scripts em benchmarking .
Os seguintes são meus resultados treinados usando 1 RTX 2080 TI (Resultados Qualitativo aqui):
| Microfone | Ficus | Cadeira | Cachorro-quente | Materiais | Bateria | Enviar | 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 |
| Tempo de treinamento | 3m9s | 3m12s | 4m17s | 5m53s | 4m55s | 4m7s | 9m20s | 5m5s | 5m00s |
| Wineholder | Torno a vapor | Sapo | Robô | Bicicleta | Palácio | Espaço | Estilo de vida | 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 |
| Tempo de treinamento | 3m58s | 3m44s | 7m22s | 3m25s | 3m11s | 6m45s | 3m25s | 4m56s | 4m36s |
| Inácio | Caminhão | Celeiro | Lagarta | Família | 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 |
*Avaliado no test-traj
| *Jade | *Fonte | Personagem | Estátuas | Avg | |
|---|---|---|---|---|---|
| Psnr | 25.43 | 26.82 | 30.43 | 26.79 | 27.38 |
| ** FPS | 26.02 | 21.24 | 35.99 | 19.22 | 25.61 |
| Tempo de treinamento | 6m31s | 7m15s | 4m50s | 5m57s | 6m48s |
*Eu troco manualmente o fundo de preto para branco, para que o número não seja diretamente comparável ao dos papéis.
** Avaliado em test-traj