mirror of
https://github.com/nerfstudio-project/nerfstudio.git
synced 2026-11-12 19:04:03 +08:00
113 lines
4.1 KiB
Markdown
113 lines
4.1 KiB
Markdown
# pyRad :metal:
|
|
|
|
[](https://plenoptix-pyrad.readthedocs-hosted.com/en/latest/?badge=latest)
|
|
|
|
An all-in-one repo for NeRFs
|
|
|
|
# Quickstart
|
|
|
|
## Installation: Setup the environment
|
|
|
|
```
|
|
# Clone the repo
|
|
git clone --recurse-submodules git@github.com:ethanweber/pyrad.git
|
|
|
|
# Create the python environment
|
|
conda create --name pyrad python=3.8.13
|
|
conda activate pyrad
|
|
pip install -r environment/requirements.txt
|
|
|
|
# Install pyrad as a library
|
|
pip install -e .
|
|
|
|
# Install library with CUDA support. Change setup.py to `USE_CUDA = True` and then
|
|
python setup.py develop
|
|
|
|
# Running the test cases
|
|
pytest tests
|
|
```
|
|
|
|
## Getting the data
|
|
|
|
Download the original NeRF dataset and put it in the following format.
|
|
|
|
```
|
|
- data/
|
|
- blender/
|
|
- fern/
|
|
- lego/
|
|
```
|
|
|
|
## Training a model
|
|
|
|
```
|
|
# Run with default config
|
|
python scripts/run_train.py
|
|
|
|
# Run with config changes
|
|
python scripts/run_train.py machine_config.num_gpus=1
|
|
python scripts/run_train.py data.dataset.downscale_factor=1
|
|
|
|
# Run with different datasets
|
|
python scripts/run_train.py data/dataset=blender_lego
|
|
python scripts/run_train.py data/dataset=friends_TBBT-big_living_room
|
|
|
|
# Run with different datasets and config changes
|
|
python scripts/run_train.py data/dataset=friends_TBBT-big_living_room graph.network.far_plane=14
|
|
|
|
# [Experimental] Speed up the dataloading pipeline by caching DatasetInputs.
|
|
python scripts/run_data_preprocessor.py
|
|
# Then, specify using the cache.
|
|
python scripts/run_train.py ++data.dataset.use_cache=true
|
|
```
|
|
|
|
# Getting around the codebase
|
|
|
|
The entry point for training starts at `scripts/run_train.py`, which spawns instances of our `Trainer()` class (in `nerf/trainer.py`). The `Trainer()` is responsible for setting up the datasets and NeRF graph depending on the config specified. If you are planning on just using our codebase to build a new NeRF method or use an existing implementation, we've abstracted away the training routine in these two files and chances are you will not need to touch them.
|
|
|
|
The NeRF graph definitions can be found in `nerf/graph/`. Each implementation of NeRF is definined in its own file. For instance, `nerf/graph/instant_ngp.py` contains populates the `NGPGraph()` class with all of the appropriate fields, colliders, and misc. modules.
|
|
* Fields (`nerf/fields/`): composed of field modules (`nerf/field_modules/`) and represents the radiance field of the NeRF.
|
|
* Misc. Modules (`nerf/misc_modules`- TODO(maybe move to misc_modules? better organization)): any remaining module in the NeRF (e.g. renderers, samplers, losses, and metrics).
|
|
|
|
To implement any pre-existing NeRF that we have not yet implemented under `nerf/graph/`, create a new graph structure by using provided modules or any new module you define. Then create an associated config making sure `__target__` points to your NeRF class (see [here](./configs/README.md) for more info on how to create the config). Then run training as described above.
|
|
|
|
# Feature Documentation
|
|
|
|
### 1. [Hydra config structure](./configs/README.md)
|
|
### 2. [Logging, debugging utilities](./pyrad/utils/README.md)
|
|
### 3. [Benchmarking, other tooling](./scripts/README.md)
|
|
|
|
### 4. Running other repos with our data
|
|
|
|
```
|
|
# nerf-pytorch
|
|
cd external
|
|
python run_nerf.py --config configs/chair.txt --datadir /path/to/pyrad/data/blender/chair
|
|
|
|
# jaxnerf
|
|
cd external
|
|
conda activate jaxnerf
|
|
python -m jaxnerf.train --data_dir=/path/to/pyrad/data/blender/chair --train_dir=/path/to/pyrad/outputs/blender_chair_jaxnerf --config=/path/to/pyrad/external/jaxnerf/configs/demo --render_every 100
|
|
```
|
|
|
|
### 5. Speeding up the code
|
|
Documentation for running the code with CUDA.
|
|
Please see https://github.com/NVlabs/tiny-cuda-nn for how to install tiny-cuda-nn.
|
|
|
|
```
|
|
pip install git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch
|
|
```
|
|
|
|
To run instant-ngp with tcnn, you can do the following. This is with the fox dataset.
|
|
|
|
```
|
|
python scripts/run_train.py --config-name=instant_ngp_tcnn.yaml data/dataset=instant_ngp_fox
|
|
```
|
|
|
|
### 6. Setting up Jupyter
|
|
|
|
```
|
|
python -m jupyter lab build
|
|
bash environments/run_jupyter.sh
|
|
```
|