shotplan-cinematic-t2v / diffsynth /core /data /custom_dataset.py
multimodalart's picture
multimodalart HF Staff
Upload folder using huggingface_hub
0da718b verified
Raw
History Blame Contribute Delete
1.54 kB
from diffsynth.core import UnifiedDataset
class FlexibleDataset(UnifiedDataset):
"""UnifiedDataset variant whose metadata loading and per-field operators
are supplied by a data profile (see data_profiles.py)."""
def __init__(self, data_profile, base_path, metadata_path, *args, **kwargs):
self.profile = data_profile
# Pass metadata_path=None so the parent class does not try to load it.
super().__init__(metadata_path=None, *args, **kwargs)
self.load_from_cache = False
self.data = self.profile.load_and_transform(metadata_path)
self.special_operator_map = self.profile.get_operator_map()
self.data_file_keys = self.profile.get_data_keys()
print(f"[Dataset] Initialized with profile: {self.profile.__class__.__name__}")
print(f"[Dataset] Total samples: {len(self.data)}")
def load_metadata(self, metadata_path):
pass
def __getitem__(self, data_id):
if self.load_from_cache:
data = self.cached_data[data_id % len(self.cached_data)]
data = self.cached_data_operator(data)
else:
data = self.data[data_id % len(self.data)].copy()
for key in self.data_file_keys:
if key in data:
if key in self.special_operator_map:
data[key] = self.special_operator_map[key](data[key])
elif key in self.data_file_keys:
data[key] = self.main_data_operator(data[key])
return data