From a95bb2d6113c7e5fddb34aa64de975ba75db4ae7 Mon Sep 17 00:00:00 2001 From: Jake Austin <55679937+jake-austin@users.noreply.github.com> Date: Wed, 5 Oct 2022 01:50:49 -0700 Subject: [PATCH] Pushing more introduction docs (#683) * Pushing more introduction docs --- docs/quickstart/first_nerf.md | 33 +++++++++++++++++++++++++++ docs/quickstart/imgs/viewer_link.png | Bin 0 -> 35673 bytes docs/quickstart/viewer_quickstart.md | 20 ++++++++++++++++ docs/reference/contributing.md | 2 ++ 4 files changed, 55 insertions(+) create mode 100644 docs/quickstart/imgs/viewer_link.png diff --git a/docs/quickstart/first_nerf.md b/docs/quickstart/first_nerf.md index f8e096862..a434899f4 100644 --- a/docs/quickstart/first_nerf.md +++ b/docs/quickstart/first_nerf.md @@ -60,6 +60,39 @@ ns-train nerfacto --vis viewer --data data/nerfstudio/poster --viewer.websocket- * All data configurations must go at the end. In this case, `nerfstudio-data` and all of its corresponding configurations come at the end after the model and viewer specification. ::: +## Intro to nerfstudio CLI and Configs +Nerfstudio allows for customizing your training runs, eval runs, configs from the CLI in a powerful way, but there are some things to understand. + +The most demonstrative and helpful example of this in action is the difference in output between the following commands: +```bash +ns-train -h +``` +```bash +ns-train nerfacto -h nerfstudio-data +``` +```bash +ns-train nerfacto nerfstudio-data -h +``` + +In each of these examples, the -h applies to the previous subcommand (`ns-train`, `nerfacto`, and `nerfstudio-data`). + +In the first example, this shows us the help menu for the `ns-train` script. + +In the second examples, we will get the help menu for the `nerfacto` model. + +In the third examples, we will get the help menu for the `nerfstudio-data` dataparser. + +With our scripts, your arguments will apply to the previous subcommand in your command, and thus where you put your arguments matters! Any optional arguments you discover while doing +```bash +ns-train nerfacto -h nerfstudio-data +``` +need to come directly after the `nerfacto` subcommand since these optional arguments only belong to the `nerfacto` subcommand: +```bash +ns-train nerfacto nerfstudio-data +``` + +Each script will have some other minor quirks (like the training script dataparser subcommand needing to come after the model subcommand), read up on them [here](../reference/cli/index.md). + ## Visualizing training runs If you are using a fast NeRF variant (ie. Nerfacto/Instant-NGP), we recommend using our viewer. See our [viewer docs](viewer_quickstart.md) for a tutorial on using the viewer. The viewer will allow interactive, real-time visualization of training. diff --git a/docs/quickstart/imgs/viewer_link.png b/docs/quickstart/imgs/viewer_link.png new file mode 100644 index 0000000000000000000000000000000000000000..37c5c52481c676160f993f93503d242e98f3d097 GIT binary patch literal 35673 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 literal 0 HcmV?d00001 diff --git a/docs/quickstart/viewer_quickstart.md b/docs/quickstart/viewer_quickstart.md index 1976162cf..8e5cd9d69 100644 --- a/docs/quickstart/viewer_quickstart.md +++ b/docs/quickstart/viewer_quickstart.md @@ -1 +1,21 @@ # Setting up viewer + +## Training on a local machine + +You should be able to click the link obtained while running a script to open the viewer in your browser. +![visualize_dataset](imgs/viewer_link.png) + +## Training on a remote machine + +If you are training on a remote maching, the viewer will still let you view your trainings. You will need to forward the port that the viewer is running on. For example, if you are running the viewer on port 7007, you will need to forward that port to your local machine. You can (without needing to modify router port settings) simply do this by opening a new terminal window and sshing into the remote machine with the following command: + +```bash +ssh -L 7007:localhost:7007 @ +``` +So long as you don't close this terminal window with this specific active ssh connection, the port will remain open for all your other ssh sessions. For example, if you do this in a new terminal window, any existing ssh sessions (terminal windows, VSCode remote connection, etc) will still be able to access the port, but if you close this terminal window, the port will be closed. + +You can now simply open the link (the one printed when you begin your train script) in your browser on your local machine and it should connect! + +![visualize_dataset](imgs/viewer_link.png) + +If the port is being used, you can simply switch the port using the `--viewer.websocket-port` flag tied to the model subcommand. \ No newline at end of file diff --git a/docs/reference/contributing.md b/docs/reference/contributing.md index 0599cd7c6..e622e22f9 100644 --- a/docs/reference/contributing.md +++ b/docs/reference/contributing.md @@ -25,6 +25,8 @@ pip install -e .[dev] pip install -e .[docs] ``` +This will ensure you have the required packages to run the tests, linter, build the docs, etc. + You may also need to install [pandoc](https://pandoc.org/). If you are using `conda` you can run the following: ```bash