MCPcopy Create free account
hub / github.com/RozDavid/UnScene3D / BasePreprocessing

Class BasePreprocessing

datasets/preprocessing/base_preprocessing.py:17–184  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15
16
17class BasePreprocessing:
18 def __init__(
19 self,
20 data_dir: str = "./data/raw/",
21 save_dir: str = "./data/processed/",
22 modes: tuple = ("train", "validation", "test"),
23 n_jobs: int = -1,
24 ):
25 self.data_dir = Path(data_dir)
26 self.save_dir = Path(save_dir)
27 self.n_jobs = n_jobs
28 self.modes = modes
29
30 if not self.data_dir.exists():
31 logger.error("data folder doesn't exist")
32 raise FileNotFoundError
33 if self.save_dir.exists() is False:
34 self.save_dir.mkdir(parents=True, exist_ok=True)
35
36 self.files = {}
37 for data_type in self.modes:
38 self.files.update({data_type: []})
39
40 @logger.catch
41 def preprocess(self):
42 self.n_jobs = multiprocessing.cpu_count() if self.n_jobs == -1 else self.n_jobs
43 for mode in self.modes:
44 database = []
45 logger.info(f"Tasks for {mode}: {len(self.files[mode])}")
46 parallel_results = Parallel(n_jobs=self.n_jobs, verbose=10)(
47 delayed(self.process_file)(file, mode) for file in self.files[mode]
48 )
49 for filebase in parallel_results:
50 if filebase is not None:
51 database.append(filebase)
52 self.save_database(database, mode)
53 self.fix_bugs_in_labels()
54 # self.joint_database()
55 self.compute_color_mean_std(
56 train_database_path=(self.save_dir / "validation_database.yaml")
57 )
58
59 def preprocess_sequential(self):
60 for mode in self.modes:
61 database = []
62 for filepath in tqdm(self.files[mode], unit="file"):
63 filebase = self.process_file(filepath, mode)
64 if filebase is not None:
65 database.append(filebase)
66 self.save_database(database, mode)
67 self.fix_bugs_in_labels()
68 # self.joint_database()
69 self.compute_color_mean_std(
70 train_database_path=(self.save_dir / "validation_database.yaml")
71 )
72
73 def process_file(self, filepath, mode):
74 """process_file.

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected