forked from Jianghanxiao/PhysTwin
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathoptimize_cma.py
More file actions
68 lines (57 loc) · 2.13 KB
/
Copy pathoptimize_cma.py
File metadata and controls
68 lines (57 loc) · 2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# The first stage to optimize the sparse parameters using CMA-ES
from qqtt import OptimizerCMA
from qqtt.utils import logger, cfg
from qqtt.utils.logger import StreamToLogger, logging
import random
import numpy as np
import sys
import torch
import pickle
import json
from argparse import ArgumentParser
def set_all_seeds(seed):
random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.cuda.manual_seed_all(seed) # if you are using multi-GPU.
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
seed = 42
set_all_seeds(seed)
sys.stdout = StreamToLogger(logger, logging.INFO)
sys.stderr = StreamToLogger(logger, logging.ERROR)
if __name__ == "__main__":
parser = ArgumentParser()
parser.add_argument("--base_path", type=str, required=True)
parser.add_argument("--case_name", type=str, required=True)
parser.add_argument("--train_frame", type=int, required=True)
parser.add_argument("--max_iter", type=int, default=20)
args = parser.parse_args()
base_path = args.base_path
case_name = args.case_name
train_frame = args.train_frame
max_iter = args.max_iter
if "cloth" in case_name or "package" in case_name:
cfg.load_from_yaml("configs/cloth.yaml")
else:
cfg.load_from_yaml("configs/real.yaml")
base_dir = f"experiments_optimization/{case_name}"
# Set the intrinsic and extrinsic parameters for visualization
with open(f"{base_path}/{case_name}/calibrate.pkl", "rb") as f:
c2ws = pickle.load(f)
w2cs = [np.linalg.inv(c2w) for c2w in c2ws]
cfg.c2ws = np.array(c2ws)
cfg.w2cs = np.array(w2cs)
with open(f"{base_path}/{case_name}/metadata.json", "r") as f:
data = json.load(f)
cfg.intrinsics = np.array(data["intrinsics"])
cfg.WH = data["WH"]
cfg.overlay_path = f"{base_path}/{case_name}/color"
logger.set_log_file(path=base_dir, name="optimize_cma_log")
optimizer = OptimizerCMA(
data_path=f"{base_path}/{case_name}/final_data.pkl",
base_dir=base_dir,
train_frame=train_frame,
)
optimizer.optimize(max_iter=max_iter)