MCPcopy Create free account
hub / github.com/InternRobotics/G2VLM / main

Function main

eval_code/recons/relpose/sampling.py:17–60  ·  view source on GitHub ↗
(hydra_cfg: DictConfig)

Source from the content-addressed store, hash-verified

15
16@hydra.main(version_base="1.2", config_path="../configs", config_name="eval")
17def main(hydra_cfg: DictConfig):
18 # setup_debug(hydra_cfg.debug)
19 np.random.seed(hydra_cfg.seed)
20 initial_state = np.random.get_state()
21
22 all_eval_datasets: DictConfig = hydra_cfg.eval_datasets
23 all_data_info: DictConfig = hydra_cfg.data
24
25 for dataset_idx, dataset_name in enumerate(all_eval_datasets, start=1):
26 dataset_logger = logging.getLogger(f"relpose-sampling-{dataset_name}")
27 if dataset_name not in all_data_info:
28 raise ValueError(f"Unknown dataset in global data information: {dataset_name}")
29 dataset_info = all_data_info[dataset_name]
30 if osp.exists(dataset_info.seq_id_map):
31 dataset_logger.info(f"[{dataset_idx}/{len(all_eval_datasets)}] {dataset_name} has already sampled seq-id-map: {dataset_info.seq_id_map}, skip...")
32 continue
33
34 dataset_logger.info(f"[{dataset_idx}/{len(all_eval_datasets)}] Creating dataset {dataset_name}...")
35 dataset = hydra.utils.instantiate(dataset_info.cfg)
36
37 sample_config: DictConfig = dataset_info.sampling
38 seq_id_map = {}
39 np.random.set_state(initial_state)
40
41 dataset_logger.info(f"Start sampling ids for {len(dataset.sequence_list)} sequences, Sampling strategy: {sample_config.strategy}")
42 dataset_logger.info(f"Sampling strategy full config: {sample_config}")
43 for seq_name in tqdm(dataset.sequence_list):
44 seq_num_frames = dataset.get_seq_framenum(sequence_name=seq_name)
45 if sample_config.strategy == "all":
46 num_frames = seq_num_frames
47 ids = np.arange(seq_num_frames).tolist()
48 elif sample_config.strategy == "random_order":
49 num_frames = sample_config.num_frames
50 if seq_num_frames < num_frames:
51 dataset_logger.warning(f"[{dataset_name}] sequence {seq_name} has only {seq_num_frames} frames < {num_frames}, skip...")
52 continue
53 ids = np.random.choice(seq_num_frames, sample_config.num_frames, replace=False).tolist()
54 else:
55 raise ValueError(f"Sampling strategy {sample_config.strategy} is not implemented yet.")
56 seq_id_map[seq_name] = ids
57
58 os.makedirs(osp.dirname(dataset_info.seq_id_map), exist_ok=True)
59 with open(dataset_info.seq_id_map, "w") as f:
60 json.dump(seq_id_map, f, indent=4)
61
62if __name__ == "__main__":
63 set_default_arg("evaluation", "relpose-angular")

Callers 1

sampling.pyFile · 0.70

Calls 1

get_seq_framenumMethod · 0.45

Tested by

no test coverage detected