Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hayden-donnelly/no-cuda-ngp-nerf
An educational implementation of Instant NGP NeRF using JAX and Numba instead of custom CUDA kernels.
https://github.com/hayden-donnelly/no-cuda-ngp-nerf
instant-ngp jax nerf neural-radiance-field numba
Last synced: about 1 month ago
JSON representation
An educational implementation of Instant NGP NeRF using JAX and Numba instead of custom CUDA kernels.
- Host: GitHub
- URL: https://github.com/hayden-donnelly/no-cuda-ngp-nerf
- Owner: hayden-donnelly
- License: apache-2.0
- Created: 2023-11-04T00:00:43.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-06-07T03:36:11.000Z (7 months ago)
- Last Synced: 2024-06-07T04:32:03.328Z (7 months ago)
- Topics: instant-ngp, jax, nerf, neural-radiance-field, numba
- Language: Python
- Homepage:
- Size: 53.7 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# no-cuda-ngp-nerf
An educational implementation of Instant NGP NeRF using JAX and Numba instead of custom CUDA kernels.Currently a work-in-progress.
## Notes
- Checkout [derivation_of_derivatives.md](./derivation_of_derivatives.md) to see how the volume rendering derivatives are derived.## Installation
First clone the repository.
```
https://github.com/hayden-donnelly/no-cuda-ngp-nerf.git
```
Then cd into it and install with pip.
```
cd no-cuda-ngp-nerf
```
```
python3 -m pip install -e .
```
The ``-e`` flag will let you edit the project without having to reinstall.## Development Environment
### Docker
- To build the docker image, use `docker-compose build`.
- To start the docker container, use `docker-compose up -d`.
- To open a shell inside the container, use `docker-compose exec ngp bash`.
- To open Jupyter Lab inside the container instead of a shell, go to [http://localhost:7070/](http://localhost:7070/).
- To stop the container, use `docker-compose down`.### Nix
TODO## TODO
- [ ] Switch to a Nix development environment.
- [ ] Add occupancy grid bitfield.
- [ ] Add screenshot/video of a trained NeRF render.## Acknowledgement
Kwea123's [video lecture](https://www.youtube.com/live/c2t_C4-Ovss?si=PYRWj1IZP5y0nJms) and PyTorch implementation of [Instant NGP](https://github.com/kwea123/ngp_pl) were both very helpful during the development of this project.
## Citation
```bibtex
@article{mueller2022instant,
author={Thomas M\"uller and Alex Evans and Christoph Schied and Alexander Keller},
title={Instant Neural Graphics Primitives with a Multiresolution Hash Encoding},
journal={ACM Trans. Graph.},
issue_date={July 2022},
volume={41},
number={4},
month=jul,
year={2022},
pages={102:1--102:15},
articleno={102},
numpages={15},
url={https://doi.org/10.1145/3528223.3530127},
doi={10.1145/3528223.3530127},
publisher={ACM},
address={New York, NY, USA},
}
```