Instant-NGP (solo NERF) en Pytorch+CUDA entrenado con pytorch-Lightning ( alta calidad con alta velocidad ). Este repositorio tiene como objetivo proporcionar una interfaz concisa de Pytorch para facilitar la investigación futura, ¡y estoy agradecido si puede compartirla (y una cita es muy apreciada)!
Otros videos representativos están en la galería.
Esta implementación tiene requisitos estrictos debido a las dependencias de otras bibliotecas, si se encuentra con el problema de instalación debido al desajuste de hardware/software, me temo que no existe la intención de admitir diferentes plataformas (es bienvenido para contribuir).
Clone Este repositorio de git clone https://github.com/kwea123/ngp_pl
Python> = 3.8 (se recomienda la instalación a través de Anaconda, use conda create -n ngp_pl python=3.8 para crear un entorno de conda y activarlo por conda activate ngp_pl )
Bibliotecas de pitón
pip install torch==1.11.0 --extra-index-url https://download.pytorch.org/whl/cu113torch-scatter después de sus instruccionestinycudann siguiendo su instrucción (extensión de Pytorch)apex después de sus instruccionespip install -r requirements.txt Extensión CUDA: Actualice pip a> = 22.1 y ejecute pip install models/csrc/ (ejecute esto cada vez que pull el código)
Descargue los conjuntos de datos preprocesados ( Synthetic_NeRF , Synthetic_NSVF , BlendedMVS , TanksAndTemples ) de NSVF. No cambie los nombres de carpetas ya que hay una solución codificada en mi dataLoader.
Descargue datos de aquí.
Para datos personalizados, ejecute colmap y obtenga una carpeta sparse/0 debajo del cual hay cameras.bin , images.bin y points3D.bin . También se admiten los siguientes datos con formato COLMAP:
Descargue datos de aquí. Para convertir las imágenes HDR en imágenes LDR para el entrenamiento, ejecute python misc/prepare_rtmv.py <path/to/RTMV> , creará images/ carpeta en cada carpeta de escena y usará estas imágenes para entrenar (y probar).
QuickStart: python train.py --root_dir <path/to/lego> --exp_name Lego
Entrenará la escena de LEGO para 30k pasos (cada paso con 8192 rayos) y realizará una prueba al final. El proceso de entrenamiento debe terminar en aproximadamente 5 minutos (la imagen de prueba de guardado es lenta, agregue --no_save_test para deshabilitar). Prueba de PSNR se mostrará al final.
Se pueden encontrar más opciones en Opt.py.
Para otra capacitación en conjunto de datos públicos, consulte los scripts en benchmarking .
Use test.ipynb para generar imágenes. LEGO Modelo Pretraled está disponible aquí
Uso de la GUI: ejecute python show_gui.py seguido de los mismos hiperparámetros utilizados en el entrenamiento ( dataset_name , root_dir , etc) y agregue la ruta de punto de control con --ckpt_path <path/to/.ckpt>
Comparo la calidad (PSNR de prueba promedio en Synthetic-NeRF ) y la velocidad de inferencia (en la escena Lego ) frente a la antorcha de trabajo concurrente (configuración predeterminada) y el documento, todos entrenados durante aproximadamente 5 minutos:
| Método | AVG PSNR | FPS | GPU |
|---|---|---|---|
| Torch-NGP | 31.46 | 18.2 | 2080 ti |
| mío | 32.96 | 36.2 | 2080 ti |
| papel instantáneo-NGP | 33.18 | 60 | 3090 |
En cuanto a la calidad, la mía es ligeramente mejor que la antorcha-NGP, pero el resultado podría fluctuar en diferentes ejecuciones.
En cuanto a la velocidad, la mina es más rápida que la Torch-NGP, pero todavía es solo la mitad de la NGP instantánea. La velocidad depende de la escena (si la mayor parte de la escena está vacía, la velocidad será más rápida).




Izquierda: antorcha-NGP. Derecha: mía.
Para ejecutar puntos de referencia, use los scripts en benchmarking .
Los siguientes son mis resultados capacitados con 1 RTX 2080 TI (resultados cualitativos aquí):
| Micrófono | Fico | Silla | Hot dog | Materiales | Batería | Barco | Lego | Aviso | |
|---|---|---|---|---|---|---|---|---|---|
| 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 |
| Tiempo de entrenamiento | 3M9S | 3M12S | 4m17s | 5M53S | 4m55s | 4m7s | 9m20s | 5m5s | 5m00s |
| Propietario | Vapor | Sapo | Robot | Bicicleta | Palacio | Astronave | Estilo de vida | Aviso | |
|---|---|---|---|---|---|---|---|---|---|
| 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 |
| Tiempo de entrenamiento | 3M58S | 3M44S | 7m22s | 3M25S | 3M11s | 6m45s | 3M25S | 4m56s | 4m36s |
| Ignicio | Camión | Granero | Oruga | Familia | Aviso | |
|---|---|---|---|---|---|---|
| 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 |
*Evaluado en test-traj
| *Jade | *Fuente | Personaje | Estatuas | Aviso | |
|---|---|---|---|---|---|
| PSNR | 25.43 | 26.82 | 30.43 | 26.79 | 27.38 |
| ** FPS | 26.02 | 21.24 | 35.99 | 19.22 | 25.61 |
| Tiempo de entrenamiento | 6m31s | 7m15s | 4m50s | 5M57S | 6m48s |
*Cambio manualmente el fondo de negro a blanco, por lo que el número no es directamente comparable al en los documentos.
** Evaluado en test-traj