diff --git a/README.md b/README.md
index eb01b519c..1d3653c41 100644
--- a/README.md
+++ b/README.md
@@ -24,15 +24,34 @@ For more complex changes (e.g. running with your own data/ setting up a new NeRF
#### 1. Installation: Setup the environment
-This repository is tested with cuda 11.3
+This repository is tested with CUDA 11.3. Make sure to install [Conda](https://docs.conda.io/en/latest/miniconda.html#linux-installers) before proceding.
+
+
+Installing Conda
+
+ This step is fairly self-explanatory, but here are the basic steps. You can also find countless tutorials online.
+
+ ```
+ cd /path/to/install/miniconda
+
+ mkdir -p miniconda3
+ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda3/miniconda.sh
+ bash miniconda3/miniconda.sh -b -u -p miniconda3
+ rm -rf miniconda/miniconda.sh
+ ```
+
+
```
-# Clone the repo
-git clone --recurse-submodules git@github.com:plenoptix/pyrad.git
-
# Create the python environment
conda create --name pyrad python=3.8.13
conda activate pyrad
+
+# Clone the repo
+git clone git@github.com:plenoptix/pyrad.git
+
+# Install dependencies
+cd pyrad
pip install -r environment/requirements.txt
# Install pyrad as a library
@@ -41,62 +60,63 @@ 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
+# Install tiny-cuda-nn (tcnn) to use with the graph_instant_ngp.yaml config
+pip install git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch
+
+# Run the test cases
pytest tests
```
#### 2. Getting the data
-Download the original [NeRF dataset](https://drive.google.com/drive/folders/128yBriW1IG_3NJ5Rp7APSTZsJqdJdfc1) and unfold it in the following format:
+Download the original [NeRF dataset](https://drive.google.com/drive/folders/128yBriW1IG_3NJ5Rp7APSTZsJqdJdfc1) and unfold it in the following format. This is for the blender dataset type. We support the major datasets and allow users to create their own dataset, described in detail [here](docs/tutorials/data_setup.rst).
```
-├── data/
-| ├── blender/
-| | ├── fern/
-| | ├── lego/
-...
+|─ pyrad/
+ ├─ data/
+ | ├─ blender/
+ | ├─ fern/
+ | ├─ lego/
+ ...
+ |- /
+ |-
+ ...
```
#### 3. Training a model
-To run with all the defaults, e.g. vanilla nerf method with the blender lego image:
+To run with all the defaults, e.g. vanilla nerf method with the blender lego image
```
-# Run with default config
+# Run a vanilla nerf model.
python scripts/run_train.py
+
+# Run a faster version with instant ngp using tcnn (without the viewer).
+python scripts/run_train.py --config-name=graph_instant_ngp.yaml
+
+# Run with the viewer. However, you'll have to start the viewer server first. (See the docs.)
+python scripts/run_train.py --config-name=graph_instant_ngp.yaml viewer.enable=true
```
-With support for [Hydra](https://hydra.cc/), you can run with other configurations by changing appropriate configs defined in `configs/` or by setting flags via command-line arguments:
-
-```
-# Run with config changes
-python scripts/run_train.py machine.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.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
-```
+With support for [Hydra](https://hydra.cc/), you can run with other configurations by changing appropriate configs defined in `configs/` or by setting flags via command-line arguments.
#### 4. Visualizing training runs
If you run everything with the default configuration, by default, we use [TensorBoard](https://www.tensorflow.org/tensorboard) to log all training curves, test images, and other stats. Once the job is launched, you will be able to track training by launching the tensorboard in `outputs/blender_lego/vanilla_nerf//`.
```
-tensorboard --logdir outputs/blender_lego/vanilla_nerf/
+tensorboard --logdir outputs
+
+# or the following
+export TENSORBOARD_PORT=
+bash environment/run_tensorboard.sh
```
#### 5. Rendering a trajectories during inference
-TODO(ethan)
+```
+python scripts/run_eval.py --method=traj --traj=spiral --output-filename=output.mp4 --config-name=graph_instant_ngp.yaml trainer.resume_train.load_dir=outputs/blender_lego/instant_ngp/2022-07-07_230905/checkpoints
+```
#### 6. In-depth guide
diff --git a/configs/graph_instant_ngp.yaml b/configs/graph_instant_ngp.yaml
index f42464434..924c50c0a 100644
--- a/configs/graph_instant_ngp.yaml
+++ b/configs/graph_instant_ngp.yaml
@@ -23,6 +23,3 @@ optimizers:
optimizer:
lr: 1e-2
scheduler: null
-
-viewer:
- enable: True
\ No newline at end of file
diff --git a/notebooks/visualize_dataset.ipynb b/notebooks/visualize_dataset.ipynb
index c944f0092..fbd9c8333 100644
--- a/notebooks/visualize_dataset.ipynb
+++ b/notebooks/visualize_dataset.ipynb
@@ -44,7 +44,7 @@
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": 2,
"id": "7fe7478d",
"metadata": {},
"outputs": [],
@@ -52,7 +52,7 @@
"CONFIG_NAME = \"graph_default.yaml\"\n",
"DEVICE = \"cpu\"\n",
"\n",
- "with initialize(version_base=None, config_path=\"../configs\"):\n",
+ "with initialize(version_base=\"1.2\", config_path=\"../configs\"):\n",
" config = compose(config_name=CONFIG_NAME)\n",
"\n",
"dataset_inputs = get_dataset_inputs_from_dataset_config(**config.data.dataset_inputs_train, split=\"train\")\n",
@@ -103,7 +103,7 @@
},
{
"cell_type": "code",
- "execution_count": 28,
+ "execution_count": 3,
"id": "19b85061-a1b0-458b-9d00-96cde6f37dca",
"metadata": {},
"outputs": [
@@ -136,7 +136,7 @@
{
"data": {
"text/html": [
- ""
+ ""
],
"text/plain": [
""
@@ -164,10 +164,96 @@
},
{
"cell_type": "code",
- "execution_count": 29,
+ "execution_count": 4,
"id": "fd8cf48a-823e-4395-99ca-eda4c2026440",
"metadata": {},
"outputs": [
+ {
+ "data": {
+ "text/html": [
+ "