|
|
|
|
@ -611,33 +611,39 @@ class ProjectDataset(Dataset):
|
|
|
|
|
project.config.remove('sources')
|
|
|
|
|
|
|
|
|
|
save_dir = osp.abspath(save_dir)
|
|
|
|
|
os.makedirs(save_dir, exist_ok=True)
|
|
|
|
|
|
|
|
|
|
dataset_save_dir = osp.join(save_dir, project.config.dataset_dir)
|
|
|
|
|
os.makedirs(dataset_save_dir, exist_ok=True)
|
|
|
|
|
|
|
|
|
|
converter_kwargs = {
|
|
|
|
|
'save_images': save_images,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if merge:
|
|
|
|
|
# merge and save the resulting dataset
|
|
|
|
|
converter = self.env.make_converter(
|
|
|
|
|
DEFAULT_FORMAT, **converter_kwargs)
|
|
|
|
|
converter(self, dataset_save_dir)
|
|
|
|
|
else:
|
|
|
|
|
if recursive:
|
|
|
|
|
# children items should already be updated
|
|
|
|
|
# so we just save them recursively
|
|
|
|
|
for source in self._sources.values():
|
|
|
|
|
if isinstance(source, ProjectDataset):
|
|
|
|
|
source.save(**converter_kwargs)
|
|
|
|
|
|
|
|
|
|
converter = self.env.make_converter(
|
|
|
|
|
DEFAULT_FORMAT, **converter_kwargs)
|
|
|
|
|
converter(self.iterate_own(), dataset_save_dir)
|
|
|
|
|
save_dir_existed = osp.exists(save_dir)
|
|
|
|
|
try:
|
|
|
|
|
os.makedirs(save_dir, exist_ok=True)
|
|
|
|
|
os.makedirs(dataset_save_dir, exist_ok=True)
|
|
|
|
|
|
|
|
|
|
project.save(save_dir)
|
|
|
|
|
if merge:
|
|
|
|
|
# merge and save the resulting dataset
|
|
|
|
|
converter = self.env.make_converter(
|
|
|
|
|
DEFAULT_FORMAT, **converter_kwargs)
|
|
|
|
|
converter(self, dataset_save_dir)
|
|
|
|
|
else:
|
|
|
|
|
if recursive:
|
|
|
|
|
# children items should already be updated
|
|
|
|
|
# so we just save them recursively
|
|
|
|
|
for source in self._sources.values():
|
|
|
|
|
if isinstance(source, ProjectDataset):
|
|
|
|
|
source.save(**converter_kwargs)
|
|
|
|
|
|
|
|
|
|
converter = self.env.make_converter(
|
|
|
|
|
DEFAULT_FORMAT, **converter_kwargs)
|
|
|
|
|
converter(self.iterate_own(), dataset_save_dir)
|
|
|
|
|
|
|
|
|
|
project.save(save_dir)
|
|
|
|
|
except BaseException:
|
|
|
|
|
if not save_dir_existed and osp.isdir(save_dir):
|
|
|
|
|
shutil.rmtree(save_dir, ignore_errors=True)
|
|
|
|
|
raise
|
|
|
|
|
|
|
|
|
|
@property
|
|
|
|
|
def env(self):
|
|
|
|
|
@ -705,7 +711,7 @@ class ProjectDataset(Dataset):
|
|
|
|
|
try:
|
|
|
|
|
os.makedirs(save_dir, exist_ok=True)
|
|
|
|
|
converter(dataset, save_dir)
|
|
|
|
|
except Exception:
|
|
|
|
|
except BaseException:
|
|
|
|
|
if not save_dir_existed:
|
|
|
|
|
shutil.rmtree(save_dir)
|
|
|
|
|
raise
|
|
|
|
|
@ -750,7 +756,7 @@ class Project:
|
|
|
|
|
|
|
|
|
|
config_path = osp.join(save_dir, config.project_filename)
|
|
|
|
|
config.dump(config_path)
|
|
|
|
|
except Exception:
|
|
|
|
|
except BaseException:
|
|
|
|
|
if not env_dir_existed:
|
|
|
|
|
shutil.rmtree(save_dir, ignore_errors=True)
|
|
|
|
|
if not project_dir_existed:
|
|
|
|
|
|