MCPcopy Create free account
hub / github.com/OpenMeshLab/MeshXL / BaseDataset

Class BaseDataset

datasets/sft/base_dataset.py:26–78  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24
25
26class BaseDataset:
27
28 def __init__(self, *args, **kwargs):
29 super().__init__()
30 self.data =[]
31 self.num_repeat = 1
32
33 def _preprocess_data(self, data_chunk):
34 processed = []
35 for data in data_chunk:
36 processed.append(
37 dict(
38 vertices = np.asarray(data['vertices']),
39 faces = np.asarray(data['faces']),
40 )
41 )
42 return processed
43
44 def _fetch_data(self, idx):
45 idx = idx % len(self.data)
46 return deepcopy(self.data[idx])
47
48 def __len__(self):
49 return len(self.data) * self.num_repeat
50
51 def __getitem__(self, idx):
52 data = self._fetch_data(idx)
53 data['vertices'] = np.asarray(data['vertices'])
54 data['faces'] = np.asarray(data['faces'])
55
56 num_vertices = len(data['vertices'])
57 num_faces = len(data['faces'])
58
59 vertices = np.ones((self.max_vertices, 3)) * self.pad_id
60 faces = np.ones((self.max_triangles, 3)) * self.pad_id
61
62 if self.augment is True:
63 data['vertices'] = scale_mesh(data['vertices'])
64 data['vertices'] = normalize_mesh(data['vertices'])
65
66 vertices[:num_vertices] = data['vertices']
67 faces[:num_faces] = data['faces']
68
69 gt_vertices = vertices[faces.clip(0).astype(np.int64)] # nface x 3 x 3
70 gt_vertices[faces[:, 0] == self.pad_id] = float('nan')
71
72 data_dict = {}
73 data_dict['shape_idx'] = np.asarray(idx).astype(np.int64)
74 data_dict['vertices'] = np.asarray(vertices).astype(np.float32)
75 data_dict['faces'] = np.asarray(faces).astype(np.int64)
76 data_dict['gt_vertices'] = np.asarray(gt_vertices).astype(np.float32)
77
78 return data_dict

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected