Preserve validation manifests in failure sampling

This commit is contained in:
Jens
2026-07-27 12:45:08 +02:00
parent 71c13c95c7
commit 9e2dde2b19
2 changed files with 22 additions and 2 deletions
+11 -2
View File
@@ -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",
)