4
0
mirror of https://github.com/nerfstudio-project/nerfstudio.git synced 2026-11-11 10:34:29 +08:00

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
This commit is contained in:
David McAllister 2022-10-02 23:10:03 -07:00 committed by GitHub
parent 297950f7ec
commit cfff2bb65d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 5 deletions

View File

@ -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
</details>
## 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

View File

@ -194,8 +194,6 @@ class NeRFModel(Model):
"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

View File

@ -8,6 +8,7 @@ import dataclasses
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)