Preserve validation manifests in failure sampling
This commit is contained in:
@@ -19,6 +19,15 @@ def file_sha256(path: Path) -> str:
|
||||
return digest.hexdigest()
|
||||
|
||||
|
||||
def dataset_validation_source(source_yaml: Path) -> str:
|
||||
"""Preserve the source dataset's validation contract verbatim."""
|
||||
for raw_line in source_yaml.read_text(encoding="utf-8").splitlines():
|
||||
key, separator, value = raw_line.partition(":")
|
||||
if separator and key.strip() == "val" and value.strip():
|
||||
return value.strip()
|
||||
raise ValueError(f"Source dataset YAML has no validation source: {source_yaml}")
|
||||
|
||||
|
||||
def build_sampling(
|
||||
*,
|
||||
summary: dict[str, Any],
|
||||
@@ -126,12 +135,12 @@ def main() -> int:
|
||||
train_list = args.output_dir / "train-failure-driven.txt"
|
||||
train_list.write_text("\n".join(paths) + "\n", encoding="utf-8")
|
||||
source_yaml = args.summary.parent / "dataset.yaml"
|
||||
val_dir = args.summary.parent / "images" / "val"
|
||||
val_source = dataset_validation_source(source_yaml)
|
||||
dataset_yaml = args.output_dir / "dataset.yaml"
|
||||
dataset_yaml.write_text(
|
||||
f"path: {args.output_dir}\n"
|
||||
f"train: {train_list}\n"
|
||||
f"val: {val_dir}\n"
|
||||
f"val: {val_source}\n"
|
||||
"names:\n 0: building\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user