|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from dataclasses import dataclass, field |
|
|
from typing import List, Optional, Union |
|
|
|
|
|
from dataclasses_json import DataClassJsonMixin |
|
|
from gsplat.strategy import DefaultStrategy, MCMCStrategy |
|
|
from typing_extensions import Literal, assert_never |
|
|
|
|
|
__all__ = [ |
|
|
"GptParamsConfig", |
|
|
"Pano2MeshSRConfig", |
|
|
"GsplatTrainConfig", |
|
|
] |
|
|
|
|
|
|
|
|
@dataclass |
|
|
class GptParamsConfig(DataClassJsonMixin): |
|
|
temperature: float = 0.1 |
|
|
top_p: float = 0.1 |
|
|
frequency_penalty: float = 0.0 |
|
|
presence_penalty: float = 0.0 |
|
|
stop: int | None = None |
|
|
max_tokens: int = 500 |
|
|
|
|
|
|
|
|
@dataclass |
|
|
class Pano2MeshSRConfig: |
|
|
mesh_file: str = "mesh_model.ply" |
|
|
gs_data_file: str = "gs_data.pt" |
|
|
device: str = "cuda" |
|
|
blur_radius: int = 0 |
|
|
faces_per_pixel: int = 8 |
|
|
fov: int = 90 |
|
|
pano_w: int = 2048 |
|
|
pano_h: int = 1024 |
|
|
cubemap_w: int = 512 |
|
|
cubemap_h: int = 512 |
|
|
pose_scale: float = 0.6 |
|
|
pano_center_offset: tuple = (-0.2, 0.3) |
|
|
inpaint_frame_stride: int = 20 |
|
|
trajectory_dir: str = "apps/assets/example_scene/camera_trajectory" |
|
|
visualize: bool = False |
|
|
depth_scale_factor: float = 3.4092 |
|
|
kernel_size: tuple = (9, 9) |
|
|
upscale_factor: int = 4 |
|
|
|
|
|
|
|
|
@dataclass |
|
|
class GsplatTrainConfig: |
|
|
|
|
|
ckpt: Optional[List[str]] = None |
|
|
|
|
|
render_traj_path: str = "interp" |
|
|
|
|
|
|
|
|
data_dir: str = "outputs/bg" |
|
|
|
|
|
data_factor: int = 4 |
|
|
|
|
|
result_dir: str = "outputs/bg" |
|
|
|
|
|
test_every: int = 8 |
|
|
|
|
|
patch_size: Optional[int] = None |
|
|
|
|
|
global_scale: float = 1.0 |
|
|
|
|
|
normalize_world_space: bool = True |
|
|
|
|
|
camera_model: Literal["pinhole", "ortho", "fisheye"] = "pinhole" |
|
|
|
|
|
|
|
|
port: int = 8080 |
|
|
|
|
|
|
|
|
batch_size: int = 1 |
|
|
|
|
|
steps_scaler: float = 1.0 |
|
|
|
|
|
|
|
|
max_steps: int = 30_000 |
|
|
|
|
|
eval_steps: List[int] = field(default_factory=lambda: [7_000, 30_000]) |
|
|
|
|
|
save_steps: List[int] = field(default_factory=lambda: [7_000, 30_000]) |
|
|
|
|
|
save_ply: bool = True |
|
|
|
|
|
ply_steps: List[int] = field(default_factory=lambda: [7_000, 30_000]) |
|
|
|
|
|
disable_video: bool = False |
|
|
|
|
|
|
|
|
init_num_pts: int = 100_000 |
|
|
|
|
|
init_extent: float = 3.0 |
|
|
|
|
|
sh_degree: int = 1 |
|
|
|
|
|
sh_degree_interval: int = 1000 |
|
|
|
|
|
init_opa: float = 0.1 |
|
|
|
|
|
init_scale: float = 1.0 |
|
|
|
|
|
ssim_lambda: float = 0.2 |
|
|
|
|
|
|
|
|
near_plane: float = 0.01 |
|
|
|
|
|
far_plane: float = 1e10 |
|
|
|
|
|
|
|
|
strategy: Union[DefaultStrategy, MCMCStrategy] = field( |
|
|
default_factory=DefaultStrategy |
|
|
) |
|
|
|
|
|
packed: bool = False |
|
|
|
|
|
sparse_grad: bool = False |
|
|
|
|
|
visible_adam: bool = False |
|
|
|
|
|
antialiased: bool = False |
|
|
|
|
|
|
|
|
random_bkgd: bool = False |
|
|
|
|
|
|
|
|
means_lr: float = 1.6e-4 |
|
|
|
|
|
scales_lr: float = 5e-3 |
|
|
|
|
|
opacities_lr: float = 5e-2 |
|
|
|
|
|
quats_lr: float = 1e-3 |
|
|
|
|
|
sh0_lr: float = 2.5e-3 |
|
|
|
|
|
shN_lr: float = 2.5e-3 / 20 |
|
|
|
|
|
|
|
|
opacity_reg: float = 0.0 |
|
|
|
|
|
scale_reg: float = 0.0 |
|
|
|
|
|
|
|
|
depth_loss: bool = False |
|
|
|
|
|
depth_lambda: float = 1e-2 |
|
|
|
|
|
|
|
|
tb_every: int = 200 |
|
|
|
|
|
tb_save_image: bool = False |
|
|
|
|
|
lpips_net: Literal["vgg", "alex"] = "alex" |
|
|
|
|
|
|
|
|
with_ut: bool = False |
|
|
with_eval3d: bool = False |
|
|
|
|
|
scene_scale: float = 1.0 |
|
|
|
|
|
def adjust_steps(self, factor: float): |
|
|
self.eval_steps = [int(i * factor) for i in self.eval_steps] |
|
|
self.save_steps = [int(i * factor) for i in self.save_steps] |
|
|
self.ply_steps = [int(i * factor) for i in self.ply_steps] |
|
|
self.max_steps = int(self.max_steps * factor) |
|
|
self.sh_degree_interval = int(self.sh_degree_interval * factor) |
|
|
|
|
|
strategy = self.strategy |
|
|
if isinstance(strategy, DefaultStrategy): |
|
|
strategy.refine_start_iter = int( |
|
|
strategy.refine_start_iter * factor |
|
|
) |
|
|
strategy.refine_stop_iter = int(strategy.refine_stop_iter * factor) |
|
|
strategy.reset_every = int(strategy.reset_every * factor) |
|
|
strategy.refine_every = int(strategy.refine_every * factor) |
|
|
elif isinstance(strategy, MCMCStrategy): |
|
|
strategy.refine_start_iter = int( |
|
|
strategy.refine_start_iter * factor |
|
|
) |
|
|
strategy.refine_stop_iter = int(strategy.refine_stop_iter * factor) |
|
|
strategy.refine_every = int(strategy.refine_every * factor) |
|
|
else: |
|
|
assert_never(strategy) |
|
|
|