Image-GS / utils /misc_utils.py
Julien Blanchon
Deploy optimized Image-GS with dynamic dependencies
d62394f
raw
history blame
1.53 kB
import os
import random
import shutil
from argparse import ArgumentParser
import numpy as np
import torch
import yaml
def clean_dir(path):
if os.path.exists(path):
shutil.rmtree(path)
def get_latest_ckpt_step(load_path):
saved_steps = [
int(os.path.splitext(path)[0].split("-")[-1])
for path in os.listdir(load_path)
if path.endswith(".pt")
]
latest_step = -1 if len(saved_steps) == 0 else max(saved_steps)
return latest_step
def set_random_seed(seed):
random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
def load_cfg(cfg_path: str, parser: ArgumentParser) -> ArgumentParser:
with open(cfg_path, "r", encoding="utf-8") as file:
cfg: dict = yaml.safe_load(file)
for key, value in cfg.items():
if value is None:
raise ValueError("'None' is not a supported value in the config file")
if isinstance(value, bool):
parser.add_argument(f"--{key}", action="store_true", default=value)
else:
parser.add_argument(f"--{key}", type=type(value), default=value)
return parser
def save_cfg(path: str, args, mode="w"):
with open(path, mode=mode, encoding="utf-8") as file:
print("#################### Training Config ####################", file=file)
yaml.dump(vars(args), file, default_flow_style=False)