From e1772d7b7721616e2574d7f11b9a1ec7360d6569 Mon Sep 17 00:00:00 2001 From: David McAllister Date: Sun, 2 Oct 2022 23:10:03 -0700 Subject: [PATCH] Quickstart Guide Fixes (#531) * key fixes * Update README.md * Update run_eval.py * Better error reporting * lint * Removed rgb fine change * Readme updates * Justify center --- README.md | 9 ++++++--- nerfstudio/models/vanilla_nerf.py | 2 -- scripts/eval.py | 14 ++++++++++++++ 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 98cf176e7b..02b171b9b8 100644 --- a/README.md +++ b/README.md @@ -160,7 +160,7 @@ ns-train nerfacto --vis viewer --viewer.zmq-port 8001 --viewer.websocket-port 80 ### 3.x Training a model with the viewer -Make sure to forward a port for the websocket to localhost. The default port is 7007, which you should be expose to localhost:7007. +Make sure to forward a port for the websocket to localhost. The default port is 7007, which you should expose to localhost:7007. ```bash # with the default port @@ -168,6 +168,9 @@ ns-train nerfacto --vis viewer # with a specified websocket port ns-train nerfacto --vis viewer --viewer.websocket-port=7008 + +# port forward if running on remote +ssh -L localhost:7008:localhost:7008 {REMOTE HOST} ``` ### 4. Visualizing training runs @@ -201,10 +204,10 @@ We support logging to weights and biases. To enable wandb logging, add the flag -## 5. Rendering a trajectories during inference +## 5. Rendering a trajectory during inference ``` -ns-eval render-trajectory --load-config=outputs/blender_lego/instant_ngp/2022-07-07_230905/config.yml--traj=spiral --output-path=output.mp4 +ns-eval render-trajectory --load-config=outputs/blender_lego/instant_ngp/{MOST_RECENT_RUN}/config.yml--traj=spiral --output-path=output.mp4 ``` ## 6. In-depth guide diff --git a/nerfstudio/models/vanilla_nerf.py b/nerfstudio/models/vanilla_nerf.py index 6e4aab15b3..3f878e9427 100644 --- a/nerfstudio/models/vanilla_nerf.py +++ b/nerfstudio/models/vanilla_nerf.py @@ -194,8 +194,6 @@ def get_image_metrics_and_images( "fine_psnr": float(fine_psnr), "fine_ssim": float(fine_ssim), "fine_lpips": float(fine_lpips), - "ray_loss_coarse": float(torch.mean(outputs["ray_loss_coarse"])), - "ray_loss_fine": float(torch.mean(outputs["ray_loss_fine"])), } images_dict = {"img": combined_rgb, "accumulation": combined_acc, "depth": combined_depth} return metrics_dict, images_dict diff --git a/scripts/eval.py b/scripts/eval.py index bceffdb0bf..148fa408bb 100755 --- a/scripts/eval.py +++ b/scripts/eval.py @@ -8,6 +8,7 @@ import json import logging import os +import sys from dataclasses import dataclass from pathlib import Path from typing import Literal, Tuple, Union @@ -48,6 +49,14 @@ def _load_checkpoint(config: cfg.TrainerConfig, pipeline: Pipeline) -> Path: if config.load_step is None: console.print("Loading latest checkpoint from load_dir") # NOTE: this is specific to the checkpoint name format + if not os.path.exists(config.load_dir): + console.rule("Error", style="red") + console.print(f"No checkpoint directory found at {config.load_dir}, ", justify="center") + console.print( + "Please make sure the checkpoint exists, they should be generated periodically during training", + justify="center", + ) + sys.exit(1) load_step = sorted(int(x[x.find("-") + 1 : x.find(".")]) for x in os.listdir(config.load_dir))[-1] else: load_step = config.load_step @@ -93,6 +102,11 @@ def _render_trajectory_video( camera_ray_bundle = cameras.generate_rays(camera_indices=camera_idx).to(pipeline.device) with torch.no_grad(): outputs = pipeline.model.get_outputs_for_camera_ray_bundle(camera_ray_bundle) + if rendered_output_name not in outputs: + console.rule("Error", style="red") + console.print(f"Could not find {rendered_output_name} in the model outputs", justify="center") + console.print(f"Please set --rendered_output_name to one of: {outputs.keys()}", justify="center") + sys.exit(1) image = outputs[rendered_output_name].cpu().numpy() images.append(image)