diff --git a/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/EXPERIMENTAL_ONLY.json b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/EXPERIMENTAL_ONLY.json new file mode 100644 index 00000000..00cf9052 --- /dev/null +++ b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/EXPERIMENTAL_ONLY.json @@ -0,0 +1,9 @@ +{ + "dataset_yaml_sha256": "038d8cbda5cd85b6228069320a41ad52f43391d23dc3b20cbc553026fabe4dc0", + "promotion_allowed": false, + "release_claim_allowed": false, + "schema_version": 1, + "source_manifest_sha256": "afa0edc5f229e0451d4a3630bb0d716b0ac1d446a6f8c2f22807d4f83b818525", + "status": "experimental_only_human_review_pending", + "tile_asset_chain_sha256": "1b721a48ac567ad11f258e03f753e2763e11f87ce8e9b58f29e9dfda5c83f4f8" +} diff --git a/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/aggressive-training-summary.json b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/aggressive-training-summary.json new file mode 100644 index 00000000..ba44fc00 --- /dev/null +++ b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/aggressive-training-summary.json @@ -0,0 +1,17 @@ +{ + "base_model": "/app/models/geointel-building-yolov8s-smallbld-minpx3-img640-ft30.pt", + "base_model_sha256": "a9088b8491dfae36694b53e9e9406cb4e3511d334a5712fa34f75078a47759c1", + "batch": 8, + "candidate_model": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/runs/v73-flanders-remediation-e20/candidate.experimental.pt", + "candidate_model_sha256": "c4d9995ca040dff4ca327f6022f30d679335998ef1968c3061102ae6ed4105ac", + "dataset_yaml_sha256": "038d8cbda5cd85b6228069320a41ad52f43391d23dc3b20cbc553026fabe4dc0", + "device": "NVIDIA GeForce RTX 4080 SUPER", + "epochs": 20, + "human_review_pending": true, + "imgsz": 640, + "promotion_allowed": false, + "release_claim_allowed": false, + "required_next_gate": "independent frozen V72 calibration evaluation", + "schema_version": 1, + "status": "trained_experimental_only" +} diff --git a/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/aggressive-v72-evaluation-matrix.json b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/aggressive-v72-evaluation-matrix.json new file mode 100644 index 00000000..171004fa --- /dev/null +++ b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/aggressive-v72-evaluation-matrix.json @@ -0,0 +1,116 @@ +{ + "attempts": [ + { + "map50": 0.05677865740374553, + "map50_95": 0.02175035531261916, + "model_path": "/app/models/geointel-building-yolov8s-smallbld-minpx3-img640-ft30.pt", + "model_sha256": "a9088b8491dfae36694b53e9e9406cb4e3511d334a5712fa34f75078a47759c1", + "precision": 0.1576550586330707, + "recall": 0.11781609195402298, + "size_bytes": 22516074, + "status": "ok" + }, + { + "map50": 0.01885292400464415, + "map50_95": 0.00378065636983694, + "model_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/runs/v73-flanders-remediation-e20/candidate.experimental.pt", + "model_sha256": "c4d9995ca040dff4ca327f6022f30d679335998ef1968c3061102ae6ed4105ac", + "precision": 0.012361111111111111, + "recall": 0.2557471264367816, + "size_bytes": 22514858, + "status": "ok" + } + ], + "candidate_count": 2, + "claim_boundary": "Non-protected validation ranking only; no test, challenge or promotion claim.", + "dataset_overlap_evidence": { + "interpretation": "Tiles do not overlap, but spatial/statistical independence is not established because adjacent tiles share AOI context and edge objects can remain split.", + "overlap_pixels": 0, + "statistical_independence_established": false, + "status": "non_overlapping", + "stride": 512, + "summary_path": "/app/storage/operator-data/building-be-v72-fresh-calibration-r1/diagnostic-yolo512-r2/yolo_tile_dataset_summary.json", + "summary_sha256": "78e16f46fa2a313a147404a19f2ce99417d2cb384b5db5f6ba33e934ff99c631", + "tile_size": 512, + "validation_tiles_non_overlapping": true + }, + "dataset_yaml": "/app/storage/operator-data/building-be-v72-fresh-calibration-r1/diagnostic-yolo512-r2/dataset.yaml", + "dataset_yaml_sha256": "d1e85ffb6776d92a4534830f2214fa6444f5a9160329aca0a68d0ea0a1a40144", + "device": "cuda:0", + "generated_at": "2026-08-10T01:34:02.699043+00:00", + "model_lineage_independence_evidence": { + "evaluation_samples": [ + "v72-assenede-field-cal-bg", + "v72-ganshoren-lowrise-cal", + "v72-havelange-field-cal-bg", + "v72-laeken-park-cal-bg", + "v72-libramont-lowrise-cal", + "v72-zandhoven-lowrise-cal" + ], + "evaluation_summary_path": "/app/storage/operator-data/building-be-v72-fresh-calibration-r1/diagnostic-yolo512-r2/yolo_tile_dataset_summary.json", + "evaluation_summary_sha256": "78e16f46fa2a313a147404a19f2ce99417d2cb384b5db5f6ba33e934ff99c631", + "independent_for_all_supplied_lineage_corpora": true, + "interpretation": "No evaluation AOI occurs in any split of any supplied ancestral corpus.", + "lineage_corpora": [ + { + "exposure_roles": {}, + "lineage_sample_count": 19, + "lineage_summary_path": "/app/storage/operator-data/yolo-building-aoi1024-expanded-minpx4vis035/yolo_tile_dataset_summary.json", + "lineage_summary_sha256": "1887e2ba5c719d33675a9ed85db99a274fd66d98d5f6ad44558d673620917201", + "overlapping_evaluation_samples": [] + }, + { + "exposure_roles": {}, + "lineage_sample_count": 22, + "lineage_summary_path": "/app/storage/operator-data/yolo-building-aoi1024-smallbld-minpx3vis035/yolo_tile_dataset_summary.json", + "lineage_summary_sha256": "49b2a07d2105d08356431757b83eafc1498eaf1fb76965b1efe05b776824942a", + "overlapping_evaluation_samples": [] + }, + { + "exposure_roles": {}, + "lineage_sample_count": 28, + "lineage_summary_path": "/app/storage/operator-data/yolo-building-aoi1024-reviewedexp6-minpx3vis035/yolo_tile_dataset_summary.json", + "lineage_summary_sha256": "7c917e31216d1df2174c0f9c736f88a81f3835aa991971f8fb8665e17ddf5c9c", + "overlapping_evaluation_samples": [] + }, + { + "exposure_roles": {}, + "lineage_sample_count": 12, + "lineage_summary_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/experimental_dataset_summary.json", + "lineage_summary_sha256": "047874a4f9362c82263ffe11c389a2f65168c449d3f6cbcc77cea709c0ba4c59", + "overlapping_evaluation_samples": [] + } + ], + "overlapping_evaluation_samples": [], + "status": "independent" + }, + "pure_background_confidence": 0.15, + "pure_background_prefixes": [], + "ranking": [ + { + "map50": 0.05677865740374553, + "map50_95": 0.02175035531261916, + "model_path": "/app/models/geointel-building-yolov8s-smallbld-minpx3-img640-ft30.pt", + "model_sha256": "a9088b8491dfae36694b53e9e9406cb4e3511d334a5712fa34f75078a47759c1", + "precision": 0.1576550586330707, + "recall": 0.11781609195402298, + "size_bytes": 22516074, + "status": "ok" + }, + { + "map50": 0.01885292400464415, + "map50_95": 0.00378065636983694, + "model_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/runs/v73-flanders-remediation-e20/candidate.experimental.pt", + "model_sha256": "c4d9995ca040dff4ca327f6022f30d679335998ef1968c3061102ae6ed4105ac", + "precision": 0.012361111111111111, + "recall": 0.2557471264367816, + "size_bytes": 22514858, + "status": "ok" + } + ], + "schema_version": 3, + "status": "ok", + "successful_candidate_count": 2, + "torch_version": "2.11.0+cu128", + "validation_image_count": 24 +} diff --git a/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/contact_sheet_001.png b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/contact_sheet_001.png new file mode 100644 index 00000000..fc0fbfe2 Binary files /dev/null and b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/contact_sheet_001.png differ diff --git a/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/contact_sheet_002.png b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/contact_sheet_002.png new file mode 100644 index 00000000..70a047ef Binary files /dev/null and b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/contact_sheet_002.png differ diff --git a/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/controlled-v72-evaluation-matrix.json b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/controlled-v72-evaluation-matrix.json new file mode 100644 index 00000000..fc34a6fd --- /dev/null +++ b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/controlled-v72-evaluation-matrix.json @@ -0,0 +1,116 @@ +{ + "attempts": [ + { + "map50": 0.05677865740374553, + "map50_95": 0.02175035531261916, + "model_path": "/app/models/geointel-building-yolov8s-smallbld-minpx3-img640-ft30.pt", + "model_sha256": "a9088b8491dfae36694b53e9e9406cb4e3511d334a5712fa34f75078a47759c1", + "precision": 0.1576550586330707, + "recall": 0.11781609195402298, + "size_bytes": 22516074, + "status": "ok" + }, + { + "map50": 0.0222135694107064, + "map50_95": 0.005679536478252313, + "model_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/runs/v73-flanders-remediation-controlled-e10/weights/best.pt", + "model_sha256": "e4f5ffc3080dc5781868f7add07176fa7b59cc50fb947ebb9b87495f3d9f20b2", + "precision": 0.017933658902666374, + "recall": 0.32471264367816094, + "size_bytes": 58905741, + "status": "ok" + } + ], + "candidate_count": 2, + "claim_boundary": "Non-protected validation ranking only; no test, challenge or promotion claim.", + "dataset_overlap_evidence": { + "interpretation": "Tiles do not overlap, but spatial/statistical independence is not established because adjacent tiles share AOI context and edge objects can remain split.", + "overlap_pixels": 0, + "statistical_independence_established": false, + "status": "non_overlapping", + "stride": 512, + "summary_path": "/app/storage/operator-data/building-be-v72-fresh-calibration-r1/diagnostic-yolo512-r2/yolo_tile_dataset_summary.json", + "summary_sha256": "78e16f46fa2a313a147404a19f2ce99417d2cb384b5db5f6ba33e934ff99c631", + "tile_size": 512, + "validation_tiles_non_overlapping": true + }, + "dataset_yaml": "/app/storage/operator-data/building-be-v72-fresh-calibration-r1/diagnostic-yolo512-r2/dataset.yaml", + "dataset_yaml_sha256": "d1e85ffb6776d92a4534830f2214fa6444f5a9160329aca0a68d0ea0a1a40144", + "device": "cuda:0", + "generated_at": "2026-08-10T01:39:48.410342+00:00", + "model_lineage_independence_evidence": { + "evaluation_samples": [ + "v72-assenede-field-cal-bg", + "v72-ganshoren-lowrise-cal", + "v72-havelange-field-cal-bg", + "v72-laeken-park-cal-bg", + "v72-libramont-lowrise-cal", + "v72-zandhoven-lowrise-cal" + ], + "evaluation_summary_path": "/app/storage/operator-data/building-be-v72-fresh-calibration-r1/diagnostic-yolo512-r2/yolo_tile_dataset_summary.json", + "evaluation_summary_sha256": "78e16f46fa2a313a147404a19f2ce99417d2cb384b5db5f6ba33e934ff99c631", + "independent_for_all_supplied_lineage_corpora": true, + "interpretation": "No evaluation AOI occurs in any split of any supplied ancestral corpus.", + "lineage_corpora": [ + { + "exposure_roles": {}, + "lineage_sample_count": 19, + "lineage_summary_path": "/app/storage/operator-data/yolo-building-aoi1024-expanded-minpx4vis035/yolo_tile_dataset_summary.json", + "lineage_summary_sha256": "1887e2ba5c719d33675a9ed85db99a274fd66d98d5f6ad44558d673620917201", + "overlapping_evaluation_samples": [] + }, + { + "exposure_roles": {}, + "lineage_sample_count": 22, + "lineage_summary_path": "/app/storage/operator-data/yolo-building-aoi1024-smallbld-minpx3vis035/yolo_tile_dataset_summary.json", + "lineage_summary_sha256": "49b2a07d2105d08356431757b83eafc1498eaf1fb76965b1efe05b776824942a", + "overlapping_evaluation_samples": [] + }, + { + "exposure_roles": {}, + "lineage_sample_count": 28, + "lineage_summary_path": "/app/storage/operator-data/yolo-building-aoi1024-reviewedexp6-minpx3vis035/yolo_tile_dataset_summary.json", + "lineage_summary_sha256": "7c917e31216d1df2174c0f9c736f88a81f3835aa991971f8fb8665e17ddf5c9c", + "overlapping_evaluation_samples": [] + }, + { + "exposure_roles": {}, + "lineage_sample_count": 12, + "lineage_summary_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/experimental_dataset_summary.json", + "lineage_summary_sha256": "047874a4f9362c82263ffe11c389a2f65168c449d3f6cbcc77cea709c0ba4c59", + "overlapping_evaluation_samples": [] + } + ], + "overlapping_evaluation_samples": [], + "status": "independent" + }, + "pure_background_confidence": 0.15, + "pure_background_prefixes": [], + "ranking": [ + { + "map50": 0.05677865740374553, + "map50_95": 0.02175035531261916, + "model_path": "/app/models/geointel-building-yolov8s-smallbld-minpx3-img640-ft30.pt", + "model_sha256": "a9088b8491dfae36694b53e9e9406cb4e3511d334a5712fa34f75078a47759c1", + "precision": 0.1576550586330707, + "recall": 0.11781609195402298, + "size_bytes": 22516074, + "status": "ok" + }, + { + "map50": 0.0222135694107064, + "map50_95": 0.005679536478252313, + "model_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/runs/v73-flanders-remediation-controlled-e10/weights/best.pt", + "model_sha256": "e4f5ffc3080dc5781868f7add07176fa7b59cc50fb947ebb9b87495f3d9f20b2", + "precision": 0.017933658902666374, + "recall": 0.32471264367816094, + "size_bytes": 58905741, + "status": "ok" + } + ], + "schema_version": 3, + "status": "ok", + "successful_candidate_count": 2, + "torch_version": "2.11.0+cu128", + "validation_image_count": 24 +} diff --git a/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/corpus-freeze.json b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/corpus-freeze.json new file mode 100644 index 00000000..97da3584 --- /dev/null +++ b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/corpus-freeze.json @@ -0,0 +1,11 @@ +{ + "schema_version": 2, + "dataset_version": "building-be-v73-fresh-flanders-train-r1", + "manifest_sha256": "afa0edc5f229e0451d4a3630bb0d716b0ac1d446a6f8c2f22807d4f83b818525", + "sample_count": 12, + "immutable": true, + "training_eligibility_policy": "geointel-training-source-eligibility/v1", + "fixture_mode": false, + "training_allowed": true, + "release_claim_allowed": false +} \ No newline at end of file diff --git a/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/experimental_dataset_summary.json b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/experimental_dataset_summary.json new file mode 100644 index 00000000..bb8b52f1 --- /dev/null +++ b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/experimental_dataset_summary.json @@ -0,0 +1,1743 @@ +{ + "dataset_yaml": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/dataset.yaml", + "dataset_yaml_sha256": "038d8cbda5cd85b6228069320a41ad52f43391d23dc3b20cbc553026fabe4dc0", + "excluded_overlapping_edge_cover_tile_count": 60, + "excluded_overlapping_edge_cover_tiles": [ + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-kontich-lowrise-train", + "tile_index": 2, + "window": { + "col_off": 515, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-kontich-lowrise-train", + "tile_index": 5, + "window": { + "col_off": 515, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-kontich-lowrise-train", + "tile_index": 6, + "window": { + "col_off": 0, + "height": 512, + "row_off": 515, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-kontich-lowrise-train", + "tile_index": 7, + "window": { + "col_off": 512, + "height": 512, + "row_off": 515, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-kontich-lowrise-train", + "tile_index": 8, + "window": { + "col_off": 515, + "height": 512, + "row_off": 515, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-schoten-lowrise-train", + "tile_index": 2, + "window": { + "col_off": 516, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-schoten-lowrise-train", + "tile_index": 5, + "window": { + "col_off": 516, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-schoten-lowrise-train", + "tile_index": 6, + "window": { + "col_off": 0, + "height": 512, + "row_off": 516, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-schoten-lowrise-train", + "tile_index": 7, + "window": { + "col_off": 512, + "height": 512, + "row_off": 516, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-schoten-lowrise-train", + "tile_index": 8, + "window": { + "col_off": 516, + "height": 512, + "row_off": 516, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-lede-ribbon-train", + "tile_index": 2, + "window": { + "col_off": 523, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-lede-ribbon-train", + "tile_index": 5, + "window": { + "col_off": 523, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-lede-ribbon-train", + "tile_index": 6, + "window": { + "col_off": 0, + "height": 512, + "row_off": 523, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-lede-ribbon-train", + "tile_index": 7, + "window": { + "col_off": 512, + "height": 512, + "row_off": 523, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-lede-ribbon-train", + "tile_index": 8, + "window": { + "col_off": 523, + "height": 512, + "row_off": 523, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-tielt-rural-train", + "tile_index": 2, + "window": { + "col_off": 541, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-tielt-rural-train", + "tile_index": 5, + "window": { + "col_off": 541, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-tielt-rural-train", + "tile_index": 6, + "window": { + "col_off": 0, + "height": 512, + "row_off": 541, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-tielt-rural-train", + "tile_index": 7, + "window": { + "col_off": 512, + "height": 512, + "row_off": 541, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-tielt-rural-train", + "tile_index": 8, + "window": { + "col_off": 541, + "height": 512, + "row_off": 541, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-borgloon-rural-train", + "tile_index": 2, + "window": { + "col_off": 539, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-borgloon-rural-train", + "tile_index": 5, + "window": { + "col_off": 539, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-borgloon-rural-train", + "tile_index": 6, + "window": { + "col_off": 0, + "height": 512, + "row_off": 539, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-borgloon-rural-train", + "tile_index": 7, + "window": { + "col_off": 512, + "height": 512, + "row_off": 539, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-borgloon-rural-train", + "tile_index": 8, + "window": { + "col_off": 539, + "height": 512, + "row_off": 539, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-wevelgem-industry-train", + "tile_index": 2, + "window": { + "col_off": 545, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-wevelgem-industry-train", + "tile_index": 5, + "window": { + "col_off": 545, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-wevelgem-industry-train", + "tile_index": 6, + "window": { + "col_off": 0, + "height": 512, + "row_off": 545, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-wevelgem-industry-train", + "tile_index": 7, + "window": { + "col_off": 512, + "height": 512, + "row_off": 545, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-wevelgem-industry-train", + "tile_index": 8, + "window": { + "col_off": 545, + "height": 512, + "row_off": 545, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-kaprijke-field-train-bg", + "tile_index": 2, + "window": { + "col_off": 533, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-kaprijke-field-train-bg", + "tile_index": 5, + "window": { + "col_off": 533, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-kaprijke-field-train-bg", + "tile_index": 6, + "window": { + "col_off": 0, + "height": 512, + "row_off": 533, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-kaprijke-field-train-bg", + "tile_index": 7, + "window": { + "col_off": 512, + "height": 512, + "row_off": 533, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-kaprijke-field-train-bg", + "tile_index": 8, + "window": { + "col_off": 533, + "height": 512, + "row_off": 533, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-doel-port-train-bg", + "tile_index": 2, + "window": { + "col_off": 515, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-doel-port-train-bg", + "tile_index": 5, + "window": { + "col_off": 515, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-doel-port-train-bg", + "tile_index": 6, + "window": { + "col_off": 0, + "height": 512, + "row_off": 515, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-doel-port-train-bg", + "tile_index": 7, + "window": { + "col_off": 512, + "height": 512, + "row_off": 515, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-doel-port-train-bg", + "tile_index": 8, + "window": { + "col_off": 515, + "height": 512, + "row_off": 515, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-adinkerke-dunes-train-bg", + "tile_index": 2, + "window": { + "col_off": 562, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-adinkerke-dunes-train-bg", + "tile_index": 5, + "window": { + "col_off": 562, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-adinkerke-dunes-train-bg", + "tile_index": 6, + "window": { + "col_off": 0, + "height": 512, + "row_off": 562, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-adinkerke-dunes-train-bg", + "tile_index": 7, + "window": { + "col_off": 512, + "height": 512, + "row_off": 562, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-adinkerke-dunes-train-bg", + "tile_index": 8, + "window": { + "col_off": 562, + "height": 512, + "row_off": 562, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-houthulst-forest-train-bg", + "tile_index": 2, + "window": { + "col_off": 552, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-houthulst-forest-train-bg", + "tile_index": 5, + "window": { + "col_off": 552, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-houthulst-forest-train-bg", + "tile_index": 6, + "window": { + "col_off": 0, + "height": 512, + "row_off": 552, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-houthulst-forest-train-bg", + "tile_index": 7, + "window": { + "col_off": 512, + "height": 512, + "row_off": 552, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-houthulst-forest-train-bg", + "tile_index": 8, + "window": { + "col_off": 552, + "height": 512, + "row_off": 552, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-ronse-industry-train-bg", + "tile_index": 2, + "window": { + "col_off": 533, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-ronse-industry-train-bg", + "tile_index": 5, + "window": { + "col_off": 533, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-ronse-industry-train-bg", + "tile_index": 6, + "window": { + "col_off": 0, + "height": 512, + "row_off": 533, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-ronse-industry-train-bg", + "tile_index": 7, + "window": { + "col_off": 512, + "height": 512, + "row_off": 533, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-ronse-industry-train-bg", + "tile_index": 8, + "window": { + "col_off": 533, + "height": 512, + "row_off": 533, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-peer-field-train-bg", + "tile_index": 2, + "window": { + "col_off": 542, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-peer-field-train-bg", + "tile_index": 5, + "window": { + "col_off": 542, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-peer-field-train-bg", + "tile_index": 6, + "window": { + "col_off": 0, + "height": 512, + "row_off": 542, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-peer-field-train-bg", + "tile_index": 7, + "window": { + "col_off": 512, + "height": 512, + "row_off": 542, + "width": 512 + } + }, + { + "reason": "overlapping_edge_cover_tile", + "sample_slug": "v73-peer-field-train-bg", + "tile_index": 8, + "window": { + "col_off": 542, + "height": 512, + "row_off": 542, + "width": 512 + } + } + ], + "internal_validation_valid_for_selection": false, + "label_count": 1710, + "min_label_px": 4.0, + "min_label_visible_ratio": 0.25, + "negative_tile_count": 3, + "positive_tile_count": 45, + "promotion_allowed": false, + "release_claim_allowed": false, + "required_independent_evaluation": "frozen V72 calibration portfolio", + "sample_count": 12, + "schema_version": 1, + "source_manifest": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/operator_samples_manifest.json", + "source_manifest_sha256": "afa0edc5f229e0451d4a3630bb0d716b0ac1d446a6f8c2f22807d4f83b818525", + "status": "experimental_only_human_review_pending", + "stride": 512, + "tile_asset_chain_sha256": "1b721a48ac567ad11f258e03f753e2763e11f87ce8e9b58f29e9dfda5c83f4f8", + "tile_count": 48, + "tile_size": 512, + "tiles": [ + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-kontich-lowrise-train_0000_r0_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 45, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-kontich-lowrise-train_0000_r0_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-kontich-lowrise-train", + "split": "train", + "tile_index": 0, + "window": { + "col_off": 0, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-kontich-lowrise-train_0001_r0_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 65, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-kontich-lowrise-train_0001_r0_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-kontich-lowrise-train", + "split": "train", + "tile_index": 1, + "window": { + "col_off": 512, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-kontich-lowrise-train_0003_r512_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 70, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-kontich-lowrise-train_0003_r512_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-kontich-lowrise-train", + "split": "train", + "tile_index": 3, + "window": { + "col_off": 0, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-kontich-lowrise-train_0004_r512_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 59, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-kontich-lowrise-train_0004_r512_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-kontich-lowrise-train", + "split": "train", + "tile_index": 4, + "window": { + "col_off": 512, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-schoten-lowrise-train_0000_r0_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 68, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-schoten-lowrise-train_0000_r0_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-schoten-lowrise-train", + "split": "train", + "tile_index": 0, + "window": { + "col_off": 0, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-schoten-lowrise-train_0001_r0_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 67, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-schoten-lowrise-train_0001_r0_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-schoten-lowrise-train", + "split": "train", + "tile_index": 1, + "window": { + "col_off": 512, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-schoten-lowrise-train_0003_r512_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 27, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-schoten-lowrise-train_0003_r512_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-schoten-lowrise-train", + "split": "train", + "tile_index": 3, + "window": { + "col_off": 0, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-schoten-lowrise-train_0004_r512_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 90, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-schoten-lowrise-train_0004_r512_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-schoten-lowrise-train", + "split": "train", + "tile_index": 4, + "window": { + "col_off": 512, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-lede-ribbon-train_0000_r0_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 32, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-lede-ribbon-train_0000_r0_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-lede-ribbon-train", + "split": "train", + "tile_index": 0, + "window": { + "col_off": 0, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-lede-ribbon-train_0001_r0_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 38, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-lede-ribbon-train_0001_r0_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-lede-ribbon-train", + "split": "train", + "tile_index": 1, + "window": { + "col_off": 512, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-lede-ribbon-train_0003_r512_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 71, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-lede-ribbon-train_0003_r512_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-lede-ribbon-train", + "split": "train", + "tile_index": 3, + "window": { + "col_off": 0, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-lede-ribbon-train_0004_r512_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 57, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-lede-ribbon-train_0004_r512_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-lede-ribbon-train", + "split": "train", + "tile_index": 4, + "window": { + "col_off": 512, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-tielt-rural-train_0000_r0_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 56, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-tielt-rural-train_0000_r0_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-tielt-rural-train", + "split": "train", + "tile_index": 0, + "window": { + "col_off": 0, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-tielt-rural-train_0001_r0_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 69, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-tielt-rural-train_0001_r0_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-tielt-rural-train", + "split": "train", + "tile_index": 1, + "window": { + "col_off": 512, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-tielt-rural-train_0003_r512_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 48, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-tielt-rural-train_0003_r512_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-tielt-rural-train", + "split": "train", + "tile_index": 3, + "window": { + "col_off": 0, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-tielt-rural-train_0004_r512_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 58, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-tielt-rural-train_0004_r512_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-tielt-rural-train", + "split": "train", + "tile_index": 4, + "window": { + "col_off": 512, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-borgloon-rural-train_0000_r0_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 33, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-borgloon-rural-train_0000_r0_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-borgloon-rural-train", + "split": "train", + "tile_index": 0, + "window": { + "col_off": 0, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-borgloon-rural-train_0001_r0_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 5, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-borgloon-rural-train_0001_r0_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-borgloon-rural-train", + "split": "train", + "tile_index": 1, + "window": { + "col_off": 512, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-borgloon-rural-train_0003_r512_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 54, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-borgloon-rural-train_0003_r512_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-borgloon-rural-train", + "split": "train", + "tile_index": 3, + "window": { + "col_off": 0, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-borgloon-rural-train_0004_r512_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 21, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-borgloon-rural-train_0004_r512_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-borgloon-rural-train", + "split": "train", + "tile_index": 4, + "window": { + "col_off": 512, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-wevelgem-industry-train_0000_r0_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 33, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-wevelgem-industry-train_0000_r0_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-wevelgem-industry-train", + "split": "train", + "tile_index": 0, + "window": { + "col_off": 0, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-wevelgem-industry-train_0001_r0_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 36, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-wevelgem-industry-train_0001_r0_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-wevelgem-industry-train", + "split": "train", + "tile_index": 1, + "window": { + "col_off": 512, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-wevelgem-industry-train_0003_r512_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 35, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-wevelgem-industry-train_0003_r512_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-wevelgem-industry-train", + "split": "train", + "tile_index": 3, + "window": { + "col_off": 0, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "reference_aoi", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-wevelgem-industry-train_0004_r512_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 33, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-wevelgem-industry-train_0004_r512_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "positive", + "sample_slug": "v73-wevelgem-industry-train", + "split": "train", + "tile_index": 4, + "window": { + "col_off": 512, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-kaprijke-field-train-bg_0000_r0_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 2, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-kaprijke-field-train-bg_0000_r0_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-kaprijke-field-train-bg", + "split": "train", + "tile_index": 0, + "window": { + "col_off": 0, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-kaprijke-field-train-bg_0001_r0_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 1, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-kaprijke-field-train-bg_0001_r0_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-kaprijke-field-train-bg", + "split": "train", + "tile_index": 1, + "window": { + "col_off": 512, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-kaprijke-field-train-bg_0003_r512_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 21, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-kaprijke-field-train-bg_0003_r512_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-kaprijke-field-train-bg", + "split": "train", + "tile_index": 3, + "window": { + "col_off": 0, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-kaprijke-field-train-bg_0004_r512_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 14, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-kaprijke-field-train-bg_0004_r512_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-kaprijke-field-train-bg", + "split": "train", + "tile_index": 4, + "window": { + "col_off": 512, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-doel-port-train-bg_0000_r0_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 27, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-doel-port-train-bg_0000_r0_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-doel-port-train-bg", + "split": "train", + "tile_index": 0, + "window": { + "col_off": 0, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-doel-port-train-bg_0001_r0_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 15, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-doel-port-train-bg_0001_r0_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-doel-port-train-bg", + "split": "train", + "tile_index": 1, + "window": { + "col_off": 512, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-doel-port-train-bg_0003_r512_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 5, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-doel-port-train-bg_0003_r512_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-doel-port-train-bg", + "split": "train", + "tile_index": 3, + "window": { + "col_off": 0, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-doel-port-train-bg_0004_r512_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 2, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-doel-port-train-bg_0004_r512_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-doel-port-train-bg", + "split": "train", + "tile_index": 4, + "window": { + "col_off": 512, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-adinkerke-dunes-train-bg_0000_r0_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 32, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-adinkerke-dunes-train-bg_0000_r0_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-adinkerke-dunes-train-bg", + "split": "train", + "tile_index": 0, + "window": { + "col_off": 0, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-adinkerke-dunes-train-bg_0001_r0_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 30, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-adinkerke-dunes-train-bg_0001_r0_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-adinkerke-dunes-train-bg", + "split": "train", + "tile_index": 1, + "window": { + "col_off": 512, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-adinkerke-dunes-train-bg_0003_r512_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 58, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-adinkerke-dunes-train-bg_0003_r512_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-adinkerke-dunes-train-bg", + "split": "train", + "tile_index": 3, + "window": { + "col_off": 0, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-adinkerke-dunes-train-bg_0004_r512_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 34, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-adinkerke-dunes-train-bg_0004_r512_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-adinkerke-dunes-train-bg", + "split": "train", + "tile_index": 4, + "window": { + "col_off": 512, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-houthulst-forest-train-bg_0000_r0_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 35, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-houthulst-forest-train-bg_0000_r0_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-houthulst-forest-train-bg", + "split": "train", + "tile_index": 0, + "window": { + "col_off": 0, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-houthulst-forest-train-bg_0001_r0_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 34, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-houthulst-forest-train-bg_0001_r0_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-houthulst-forest-train-bg", + "split": "train", + "tile_index": 1, + "window": { + "col_off": 512, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-houthulst-forest-train-bg_0003_r512_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 42, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-houthulst-forest-train-bg_0003_r512_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-houthulst-forest-train-bg", + "split": "train", + "tile_index": 3, + "window": { + "col_off": 0, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-houthulst-forest-train-bg_0004_r512_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 29, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-houthulst-forest-train-bg_0004_r512_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-houthulst-forest-train-bg", + "split": "train", + "tile_index": 4, + "window": { + "col_off": 512, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-ronse-industry-train-bg_0000_r0_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 70, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-ronse-industry-train-bg_0000_r0_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-ronse-industry-train-bg", + "split": "train", + "tile_index": 0, + "window": { + "col_off": 0, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-ronse-industry-train-bg_0001_r0_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 43, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-ronse-industry-train-bg_0001_r0_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-ronse-industry-train-bg", + "split": "train", + "tile_index": 1, + "window": { + "col_off": 512, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-ronse-industry-train-bg_0003_r512_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 34, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-ronse-industry-train-bg_0003_r512_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-ronse-industry-train-bg", + "split": "train", + "tile_index": 3, + "window": { + "col_off": 0, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-ronse-industry-train-bg_0004_r512_c512.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 11, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-ronse-industry-train-bg_0004_r512_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-ronse-industry-train-bg", + "split": "train", + "tile_index": 4, + "window": { + "col_off": 512, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-peer-field-train-bg_0000_r0_c0.png", + "is_negative": true, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 0, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-peer-field-train-bg_0000_r0_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-peer-field-train-bg", + "split": "train", + "tile_index": 0, + "window": { + "col_off": 0, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-peer-field-train-bg_0001_r0_c512.png", + "is_negative": true, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 0, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-peer-field-train-bg_0001_r0_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-peer-field-train-bg", + "split": "train", + "tile_index": 1, + "window": { + "col_off": 512, + "height": 512, + "row_off": 0, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-peer-field-train-bg_0003_r512_c0.png", + "is_negative": false, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 1, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-peer-field-train-bg_0003_r512_c0.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-peer-field-train-bg", + "split": "train", + "tile_index": 3, + "window": { + "col_off": 0, + "height": 512, + "row_off": 512, + "width": 512 + } + }, + { + "background_category": "sparse_building_context", + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-peer-field-train-bg_0004_r512_c512.png", + "is_negative": true, + "is_repeated_background_negative": false, + "kept": true, + "label_count": 0, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-peer-field-train-bg_0004_r512_c512.txt", + "low_visual_variance": false, + "recommended_split": "", + "repeat_index": 0, + "sample_role": "background_candidate", + "sample_slug": "v73-peer-field-train-bg", + "split": "train", + "tile_index": 4, + "window": { + "col_off": 512, + "height": 512, + "row_off": 512, + "width": 512 + } + } + ] +} \ No newline at end of file diff --git a/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/internal-spatial-leakage-audit.json b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/internal-spatial-leakage-audit.json new file mode 100644 index 00000000..8a43890f --- /dev/null +++ b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/internal-spatial-leakage-audit.json @@ -0,0 +1,5 @@ +{ + "status": "ok", + "buffer_m": 64.0, + "findings": [] +} \ No newline at end of file diff --git a/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/operator_samples_manifest.json b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/operator_samples_manifest.json new file mode 100644 index 00000000..709bd6ef --- /dev/null +++ b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/operator_samples_manifest.json @@ -0,0 +1,1441 @@ +{ + "schema_version": 2, + "dataset_version": "building-be-v73-fresh-flanders-train-r1", + "immutable": true, + "training_eligibility": { + "policy_version": "geointel-training-source-eligibility/v1", + "status": "eligible", + "fixture_mode": false + }, + "purpose": "training_corpus", + "samples": [ + { + "sample_slug": "v73-kontich-lowrise-train", + "sample_role": "positive", + "require_empty": false, + "region": "flanders", + "context": "detached-lowrise", + "split": "train", + "raster_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-kontich-lowrise-train/image.tif", + "reference_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-kontich-lowrise-train/buildings.normalized.geojson", + "reference_source": "grb", + "reference_layer": "buildings", + "reference_feature_count": 230, + "raster_dataset_id": "56c5c3bd-ff0b-4d9a-9c98-572254c12594", + "reference_dataset_id": "f2b444f5-a3d3-4817-a466-d8001099d539", + "raster_sha256": "05fdb153da0fc5817a19e3cac8523b633c20be90a9b68689a1dd75bfe57608f1", + "reference_sha256": "e2f29b86002ee791fb6089ccec0b4977c9359a373811e123a5ecb809f0e1e91c", + "label_audit_sha256": "0a6e56cbb8da6e30a7d6fb3d46b160c3150e958105f3c05aa4e3ef7330eb29fb", + "training_eligibility": { + "policy_version": "geointel-training-source-eligibility/v1", + "eligible": true, + "fixture_mode": false, + "raster": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "raster", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "56c5c3bd-ff0b-4d9a-9c98-572254c12594", + "dataset_type": "raster", + "dataset_role": "source", + "source": "digitaal vlaanderen wms omwrgb25vl", + "source_name": "digitaal_vlaanderen_orthophoto", + "checksum_sha256": "05fdb153da0fc5817a19e3cac8523b633c20be90a9b68689a1dd75bfe57608f1", + "data_contract_key": "geointel.raster.geotiff", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "not_applicable", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "dataset_source_snapshot_id": "05b0a2e4-e64c-43cf-ae8e-43c64efe2ebc", + "source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "source_key": "digitaal_vlaanderen_orthophoto", + "source_classification": "contextual", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": false, + "source_allowed_tasks": [ + "imagery", + "training_input", + "visual_context" + ], + "source_validation_authority": {}, + "source_building_validation_authority": null, + "source_snapshot_id": "05b0a2e4-e64c-43cf-ae8e-43c64efe2ebc", + "snapshot_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "snapshot_key": "digitaal_vlaanderen_orthophoto:2025:05fdb153da0fc5817a19e3cac8523b633c20be90a9b68689a1dd75bfe57608f1", + "snapshot_checksum_sha256": "05fdb153da0fc5817a19e3cac8523b633c20be90a9b68689a1dd75bfe57608f1", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + }, + "reference": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "reference", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "f2b444f5-a3d3-4817-a466-d8001099d539", + "dataset_type": "vector", + "dataset_role": "reference", + "source": "digitaal vlaanderen grb ogc api features", + "source_name": "grb", + "checksum_sha256": "cdca1de0153ea1723653ac89c6ee9e70e668ccbbb05c31504030f1ead05a6d4c", + "data_contract_key": "geointel.vector.geojson", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "complete", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "dataset_source_snapshot_id": "f42f7899-5b41-4b2c-84e1-3ab2409cf7a7", + "source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "source_key": "grb", + "source_classification": "authoritative", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": true, + "source_allowed_tasks": [ + "building_validation", + "building_labels", + "reference_context" + ], + "source_validation_authority": { + "building_validation": "primary" + }, + "source_building_validation_authority": "primary", + "source_snapshot_id": "f42f7899-5b41-4b2c-84e1-3ab2409cf7a7", + "snapshot_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "snapshot_key": "grb:2026-08-10:cdca1de0153ea1723653ac89c6ee9e70e668ccbbb05c31504030f1ead05a6d4c", + "snapshot_checksum_sha256": "cdca1de0153ea1723653ac89c6ee9e70e668ccbbb05c31504030f1ead05a6d4c", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + } + }, + "bbox_epsg4326": [ + 4.44516936687562, + 51.13384821464579, + 4.448830715037306, + 51.13615176149503 + ] + }, + { + "sample_slug": "v73-schoten-lowrise-train", + "sample_role": "positive", + "require_empty": false, + "region": "flanders", + "context": "detached-lowrise", + "split": "train", + "raster_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-schoten-lowrise-train/image.tif", + "reference_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-schoten-lowrise-train/buildings.normalized.geojson", + "reference_source": "grb", + "reference_layer": "buildings", + "reference_feature_count": 241, + "raster_dataset_id": "23084649-8bdf-4d82-a5ee-e7be64803039", + "reference_dataset_id": "4d888a2f-561a-4467-8846-def6b5d20f3d", + "raster_sha256": "b1031848d941d053647852eb21b1066ec7a32941bdebcad46acf9e98c5f5ed83", + "reference_sha256": "d1a2491b2c483b933a0d51a683329a96ad2404455e2a4e4ac3813a1477977bf8", + "label_audit_sha256": "81139b73c8286533f23c7ccf93ca73efc3bff70db3ac5f067d399d9265219469", + "training_eligibility": { + "policy_version": "geointel-training-source-eligibility/v1", + "eligible": true, + "fixture_mode": false, + "raster": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "raster", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "23084649-8bdf-4d82-a5ee-e7be64803039", + "dataset_type": "raster", + "dataset_role": "source", + "source": "digitaal vlaanderen wms omwrgb25vl", + "source_name": "digitaal_vlaanderen_orthophoto", + "checksum_sha256": "b1031848d941d053647852eb21b1066ec7a32941bdebcad46acf9e98c5f5ed83", + "data_contract_key": "geointel.raster.geotiff", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "not_applicable", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "dataset_source_snapshot_id": "df54205b-0e5c-47ed-af6c-60cc5fcfe26c", + "source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "source_key": "digitaal_vlaanderen_orthophoto", + "source_classification": "contextual", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": false, + "source_allowed_tasks": [ + "imagery", + "training_input", + "visual_context" + ], + "source_validation_authority": {}, + "source_building_validation_authority": null, + "source_snapshot_id": "df54205b-0e5c-47ed-af6c-60cc5fcfe26c", + "snapshot_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "snapshot_key": "digitaal_vlaanderen_orthophoto:2025:b1031848d941d053647852eb21b1066ec7a32941bdebcad46acf9e98c5f5ed83", + "snapshot_checksum_sha256": "b1031848d941d053647852eb21b1066ec7a32941bdebcad46acf9e98c5f5ed83", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + }, + "reference": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "reference", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "4d888a2f-561a-4467-8846-def6b5d20f3d", + "dataset_type": "vector", + "dataset_role": "reference", + "source": "digitaal vlaanderen grb ogc api features", + "source_name": "grb", + "checksum_sha256": "ba236207019ed34bc4a349e9cb6adb53e27951e8533e78933fd7f0072ca66107", + "data_contract_key": "geointel.vector.geojson", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "complete", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "dataset_source_snapshot_id": "1eaefe5c-1bea-46ab-9678-00eef88fb969", + "source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "source_key": "grb", + "source_classification": "authoritative", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": true, + "source_allowed_tasks": [ + "building_validation", + "building_labels", + "reference_context" + ], + "source_validation_authority": { + "building_validation": "primary" + }, + "source_building_validation_authority": "primary", + "source_snapshot_id": "1eaefe5c-1bea-46ab-9678-00eef88fb969", + "snapshot_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "snapshot_key": "grb:2026-08-10:ba236207019ed34bc4a349e9cb6adb53e27951e8533e78933fd7f0072ca66107", + "snapshot_checksum_sha256": "ba236207019ed34bc4a349e9cb6adb53e27951e8533e78933fd7f0072ca66107", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + } + }, + "bbox_epsg4326": [ + 4.498163542581232, + 51.248847445287225, + 4.501836539774341, + 51.25115253072368 + ] + }, + { + "sample_slug": "v73-lede-ribbon-train", + "sample_role": "positive", + "require_empty": false, + "region": "flanders", + "context": "ribbon-development", + "split": "train", + "raster_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-lede-ribbon-train/image.tif", + "reference_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-lede-ribbon-train/buildings.normalized.geojson", + "reference_source": "grb", + "reference_layer": "buildings", + "reference_feature_count": 197, + "raster_dataset_id": "9aa2ae96-4394-469a-8a63-8636b8deba94", + "reference_dataset_id": "439dcbb2-3e42-42dc-8a22-4204523c009c", + "raster_sha256": "6d03e1a14269d88333c31941f0c506a23747b87bfd8fa4f2b2b3454ef06aa8f0", + "reference_sha256": "7e6c625859ac8638ddc0190b6b578259f5da6cc0a79a7e817dbb0f166ea0a859", + "label_audit_sha256": "5e18c48bbb3549bdd15244782a0474ffda531ae9cab914d72b0d3c4736c24fb7", + "training_eligibility": { + "policy_version": "geointel-training-source-eligibility/v1", + "eligible": true, + "fixture_mode": false, + "raster": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "raster", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "9aa2ae96-4394-469a-8a63-8636b8deba94", + "dataset_type": "raster", + "dataset_role": "source", + "source": "digitaal vlaanderen wms omwrgb25vl", + "source_name": "digitaal_vlaanderen_orthophoto", + "checksum_sha256": "6d03e1a14269d88333c31941f0c506a23747b87bfd8fa4f2b2b3454ef06aa8f0", + "data_contract_key": "geointel.raster.geotiff", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "not_applicable", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "dataset_source_snapshot_id": "4f5fe6a2-75fb-45db-8628-8f42be00b1b4", + "source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "source_key": "digitaal_vlaanderen_orthophoto", + "source_classification": "contextual", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": false, + "source_allowed_tasks": [ + "imagery", + "training_input", + "visual_context" + ], + "source_validation_authority": {}, + "source_building_validation_authority": null, + "source_snapshot_id": "4f5fe6a2-75fb-45db-8628-8f42be00b1b4", + "snapshot_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "snapshot_key": "digitaal_vlaanderen_orthophoto:2025:6d03e1a14269d88333c31941f0c506a23747b87bfd8fa4f2b2b3454ef06aa8f0", + "snapshot_checksum_sha256": "6d03e1a14269d88333c31941f0c506a23747b87bfd8fa4f2b2b3454ef06aa8f0", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + }, + "reference": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "reference", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "439dcbb2-3e42-42dc-8a22-4204523c009c", + "dataset_type": "vector", + "dataset_role": "reference", + "source": "digitaal vlaanderen grb ogc api features", + "source_name": "grb", + "checksum_sha256": "0cbd040c1ce376ddb047efaec777826ac2772f926a60b919f92817416feb8bb9", + "data_contract_key": "geointel.vector.geojson", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "complete", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "dataset_source_snapshot_id": "2940e9c4-c264-4728-ab18-95512aad2be9", + "source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "source_key": "grb", + "source_classification": "authoritative", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": true, + "source_allowed_tasks": [ + "building_validation", + "building_labels", + "reference_context" + ], + "source_validation_authority": { + "building_validation": "primary" + }, + "source_building_validation_authority": "primary", + "source_snapshot_id": "2940e9c4-c264-4728-ab18-95512aad2be9", + "snapshot_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "snapshot_key": "grb:2026-08-10:0cbd040c1ce376ddb047efaec777826ac2772f926a60b919f92817416feb8bb9", + "snapshot_checksum_sha256": "0cbd040c1ce376ddb047efaec777826ac2772f926a60b919f92817416feb8bb9", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + } + }, + "bbox_epsg4326": [ + 3.9831684358866886, + 50.964843450616485, + 3.9868314667126685, + 50.967156525915414 + ] + }, + { + "sample_slug": "v73-tielt-rural-train", + "sample_role": "positive", + "require_empty": false, + "region": "flanders", + "context": "rural-town", + "split": "train", + "raster_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-tielt-rural-train/image.tif", + "reference_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-tielt-rural-train/buildings.normalized.geojson", + "reference_source": "grb", + "reference_layer": "buildings", + "reference_feature_count": 223, + "raster_dataset_id": "eef357e0-a6a0-4f04-b1c6-e2941b25811f", + "reference_dataset_id": "5a4de291-8c02-4cda-960d-ab688592541c", + "raster_sha256": "893f01015766fa7c10f0ee9ed8d25acb4e6f784f68d82652854494b941a59d9a", + "reference_sha256": "8706de8c7702961d2f75ef131d7d965f658684ee7ef2cfe031bb0edf6be25b4c", + "label_audit_sha256": "7165af4306b155c33da41b16c2f41638c9cfcee0f8121509c3327258c1dd573d", + "training_eligibility": { + "policy_version": "geointel-training-source-eligibility/v1", + "eligible": true, + "fixture_mode": false, + "raster": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "raster", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "eef357e0-a6a0-4f04-b1c6-e2941b25811f", + "dataset_type": "raster", + "dataset_role": "source", + "source": "digitaal vlaanderen wms omwrgb25vl", + "source_name": "digitaal_vlaanderen_orthophoto", + "checksum_sha256": "893f01015766fa7c10f0ee9ed8d25acb4e6f784f68d82652854494b941a59d9a", + "data_contract_key": "geointel.raster.geotiff", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "not_applicable", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "dataset_source_snapshot_id": "25e0b03f-09af-4bba-a07c-d708a50b3489", + "source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "source_key": "digitaal_vlaanderen_orthophoto", + "source_classification": "contextual", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": false, + "source_allowed_tasks": [ + "imagery", + "training_input", + "visual_context" + ], + "source_validation_authority": {}, + "source_building_validation_authority": null, + "source_snapshot_id": "25e0b03f-09af-4bba-a07c-d708a50b3489", + "snapshot_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "snapshot_key": "digitaal_vlaanderen_orthophoto:2025:893f01015766fa7c10f0ee9ed8d25acb4e6f784f68d82652854494b941a59d9a", + "snapshot_checksum_sha256": "893f01015766fa7c10f0ee9ed8d25acb4e6f784f68d82652854494b941a59d9a", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + }, + "reference": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "reference", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "5a4de291-8c02-4cda-960d-ab688592541c", + "dataset_type": "vector", + "dataset_role": "reference", + "source": "digitaal vlaanderen grb ogc api features", + "source_name": "grb", + "checksum_sha256": "bb9839da8076cdd7e3bb00d8d5bd6117502d9a4bf1e28b5dfe88ea62b077408c", + "data_contract_key": "geointel.vector.geojson", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "complete", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "dataset_source_snapshot_id": "fb91b7f2-b38a-421e-9341-077258d68b4a", + "source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "source_key": "grb", + "source_classification": "authoritative", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": true, + "source_allowed_tasks": [ + "building_validation", + "building_labels", + "reference_context" + ], + "source_validation_authority": { + "building_validation": "primary" + }, + "source_building_validation_authority": "primary", + "source_snapshot_id": "fb91b7f2-b38a-421e-9341-077258d68b4a", + "snapshot_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "snapshot_key": "grb:2026-08-10:bb9839da8076cdd7e3bb00d8d5bd6117502d9a4bf1e28b5dfe88ea62b077408c", + "snapshot_checksum_sha256": "bb9839da8076cdd7e3bb00d8d5bd6117502d9a4bf1e28b5dfe88ea62b077408c", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + } + }, + "bbox_epsg4326": [ + 3.325151142935416, + 50.99783336476096, + 3.328848759893323, + 51.00016661206988 + ] + }, + { + "sample_slug": "v73-borgloon-rural-train", + "sample_role": "positive", + "require_empty": false, + "region": "flanders", + "context": "rural-lowrise", + "split": "train", + "raster_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-borgloon-rural-train/image.tif", + "reference_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-borgloon-rural-train/buildings.normalized.geojson", + "reference_source": "grb", + "reference_layer": "buildings", + "reference_feature_count": 112, + "raster_dataset_id": "7d23526d-3e5b-47aa-a4d2-bd47c3b99147", + "reference_dataset_id": "e39c2b9c-4f6d-4aa7-98d0-bb7284366071", + "raster_sha256": "ff790b2e9dd788fd0b1f118e69de118ee9e91a0d1c0f7c1e40ec0991958e5cb6", + "reference_sha256": "5a40c1c5b30d8fb0c0b5d3014ec4fe9b906b66136ebee54b780dffc0171afaa7", + "label_audit_sha256": "22fb21f018bc65407e93853e14d26800fae2ffce2566dcc14a35edcc5f0be6d7", + "training_eligibility": { + "policy_version": "geointel-training-source-eligibility/v1", + "eligible": true, + "fixture_mode": false, + "raster": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "raster", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "7d23526d-3e5b-47aa-a4d2-bd47c3b99147", + "dataset_type": "raster", + "dataset_role": "source", + "source": "digitaal vlaanderen wms omwrgb25vl", + "source_name": "digitaal_vlaanderen_orthophoto", + "checksum_sha256": "ff790b2e9dd788fd0b1f118e69de118ee9e91a0d1c0f7c1e40ec0991958e5cb6", + "data_contract_key": "geointel.raster.geotiff", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "not_applicable", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "dataset_source_snapshot_id": "17aec45e-194b-46e9-8896-466bef63da09", + "source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "source_key": "digitaal_vlaanderen_orthophoto", + "source_classification": "contextual", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": false, + "source_allowed_tasks": [ + "imagery", + "training_input", + "visual_context" + ], + "source_validation_authority": {}, + "source_building_validation_authority": null, + "source_snapshot_id": "17aec45e-194b-46e9-8896-466bef63da09", + "snapshot_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "snapshot_key": "digitaal_vlaanderen_orthophoto:2025:ff790b2e9dd788fd0b1f118e69de118ee9e91a0d1c0f7c1e40ec0991958e5cb6", + "snapshot_checksum_sha256": "ff790b2e9dd788fd0b1f118e69de118ee9e91a0d1c0f7c1e40ec0991958e5cb6", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + }, + "reference": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "reference", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "e39c2b9c-4f6d-4aa7-98d0-bb7284366071", + "dataset_type": "vector", + "dataset_role": "reference", + "source": "digitaal vlaanderen grb ogc api features", + "source_name": "grb", + "checksum_sha256": "db47baddeefdeed67180931172b4037944f3396bb35d5757f375e35b1d870a1e", + "data_contract_key": "geointel.vector.geojson", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "complete", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "dataset_source_snapshot_id": "eb3b6df6-ebf7-4df1-ae85-57e9409ca515", + "source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "source_key": "grb", + "source_classification": "authoritative", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": true, + "source_allowed_tasks": [ + "building_validation", + "building_labels", + "reference_context" + ], + "source_validation_authority": { + "building_validation": "primary" + }, + "source_building_validation_authority": "primary", + "source_snapshot_id": "eb3b6df6-ebf7-4df1-ae85-57e9409ca515", + "snapshot_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "snapshot_key": "grb:2026-08-10:db47baddeefdeed67180931172b4037944f3396bb35d5757f375e35b1d870a1e", + "snapshot_checksum_sha256": "db47baddeefdeed67180931172b4037944f3396bb35d5757f375e35b1d870a1e", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + } + }, + "bbox_epsg4326": [ + 5.341160450290418, + 50.80383430945873, + 5.344839629814088, + 50.80616566808069 + ] + }, + { + "sample_slug": "v73-wevelgem-industry-train", + "sample_role": "positive", + "require_empty": false, + "region": "flanders", + "context": "industrial", + "split": "train", + "raster_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-wevelgem-industry-train/image.tif", + "reference_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-wevelgem-industry-train/buildings.normalized.geojson", + "reference_source": "grb", + "reference_layer": "buildings", + "reference_feature_count": 135, + "raster_dataset_id": "a749c01e-8396-49b7-9f22-42428180989d", + "reference_dataset_id": "96b6e2ce-00cf-49b6-a133-94acf4aab96a", + "raster_sha256": "8f899df7a68154cb0704703aceab67e4042cfe6f7cf77af9cc6a32932a4821db", + "reference_sha256": "2c89d451fd4cd69833c129687e2a679a2a2e99b73ae17d4b2fb5d39ac1306a85", + "label_audit_sha256": "2d67d5873d43a4920bea5f555eee43d5592e9f2726fca275cde5e96c2cb1406c", + "training_eligibility": { + "policy_version": "geointel-training-source-eligibility/v1", + "eligible": true, + "fixture_mode": false, + "raster": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "raster", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "a749c01e-8396-49b7-9f22-42428180989d", + "dataset_type": "raster", + "dataset_role": "source", + "source": "digitaal vlaanderen wms omwrgb25vl", + "source_name": "digitaal_vlaanderen_orthophoto", + "checksum_sha256": "8f899df7a68154cb0704703aceab67e4042cfe6f7cf77af9cc6a32932a4821db", + "data_contract_key": "geointel.raster.geotiff", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "not_applicable", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "dataset_source_snapshot_id": "9c28266f-3efa-44d8-9737-4a6cc223f9d9", + "source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "source_key": "digitaal_vlaanderen_orthophoto", + "source_classification": "contextual", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": false, + "source_allowed_tasks": [ + "imagery", + "training_input", + "visual_context" + ], + "source_validation_authority": {}, + "source_building_validation_authority": null, + "source_snapshot_id": "9c28266f-3efa-44d8-9737-4a6cc223f9d9", + "snapshot_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "snapshot_key": "digitaal_vlaanderen_orthophoto:2025:8f899df7a68154cb0704703aceab67e4042cfe6f7cf77af9cc6a32932a4821db", + "snapshot_checksum_sha256": "8f899df7a68154cb0704703aceab67e4042cfe6f7cf77af9cc6a32932a4821db", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + }, + "reference": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "reference", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "96b6e2ce-00cf-49b6-a133-94acf4aab96a", + "dataset_type": "vector", + "dataset_role": "reference", + "source": "digitaal vlaanderen grb ogc api features", + "source_name": "grb", + "checksum_sha256": "4ac9fbfc4015c171323ecba8056a4dc7a28babbceca048d1a262961012b8ecb2", + "data_contract_key": "geointel.vector.geojson", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "complete", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "dataset_source_snapshot_id": "a4885183-5910-4a52-a26a-0099a21d31b3", + "source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "source_key": "grb", + "source_classification": "authoritative", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": true, + "source_allowed_tasks": [ + "building_validation", + "building_labels", + "reference_context" + ], + "source_validation_authority": { + "building_validation": "primary" + }, + "source_building_validation_authority": "primary", + "source_snapshot_id": "a4885183-5910-4a52-a26a-0099a21d31b3", + "snapshot_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "snapshot_key": "grb:2026-08-10:4ac9fbfc4015c171323ecba8056a4dc7a28babbceca048d1a262961012b8ecb2", + "snapshot_checksum_sha256": "4ac9fbfc4015c171323ecba8056a4dc7a28babbceca048d1a262961012b8ecb2", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + } + }, + "bbox_epsg4326": [ + 3.178154637518103, + 50.818831059349314, + 3.181845266034672, + 50.821168917839366 + ] + }, + { + "sample_slug": "v73-kaprijke-field-train-bg", + "sample_role": "background_candidate", + "require_empty": false, + "region": "flanders", + "context": "farmland-hard-negative", + "split": "train", + "raster_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-kaprijke-field-train-bg/image.tif", + "reference_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-kaprijke-field-train-bg/buildings.normalized.geojson", + "reference_source": "grb", + "reference_layer": "buildings", + "reference_feature_count": 38, + "raster_dataset_id": "9efef01e-52f7-4d78-ba37-1667c15a8ec8", + "reference_dataset_id": "5da01064-bb86-4d4e-b42e-3eb81b5ec640", + "raster_sha256": "022c09e3162d921cb99dc5547384aea8034193616f3f57df63a33c95fbdaec3c", + "reference_sha256": "b462c93397f295d4f6c5dff50cc13dee25be804b3ea2249b29dee9184364c3bc", + "label_audit_sha256": "87f97c3f7a8e74b64272cd4101ca739a323a38e40191f6b5def46b0f55500689", + "training_eligibility": { + "policy_version": "geointel-training-source-eligibility/v1", + "eligible": true, + "fixture_mode": false, + "raster": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "raster", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "9efef01e-52f7-4d78-ba37-1667c15a8ec8", + "dataset_type": "raster", + "dataset_role": "source", + "source": "digitaal vlaanderen wms omwrgb25vl", + "source_name": "digitaal_vlaanderen_orthophoto", + "checksum_sha256": "022c09e3162d921cb99dc5547384aea8034193616f3f57df63a33c95fbdaec3c", + "data_contract_key": "geointel.raster.geotiff", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "not_applicable", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "dataset_source_snapshot_id": "3a3258d8-6412-4b5c-b84f-c186bd6df9c1", + "source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "source_key": "digitaal_vlaanderen_orthophoto", + "source_classification": "contextual", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": false, + "source_allowed_tasks": [ + "imagery", + "training_input", + "visual_context" + ], + "source_validation_authority": {}, + "source_building_validation_authority": null, + "source_snapshot_id": "3a3258d8-6412-4b5c-b84f-c186bd6df9c1", + "snapshot_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "snapshot_key": "digitaal_vlaanderen_orthophoto:2025:022c09e3162d921cb99dc5547384aea8034193616f3f57df63a33c95fbdaec3c", + "snapshot_checksum_sha256": "022c09e3162d921cb99dc5547384aea8034193616f3f57df63a33c95fbdaec3c", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + }, + "reference": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "reference", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "5da01064-bb86-4d4e-b42e-3eb81b5ec640", + "dataset_type": "vector", + "dataset_role": "reference", + "source": "digitaal vlaanderen grb ogc api features", + "source_name": "grb", + "checksum_sha256": "828854a2c646047c18ec9472fcd88d903f9e395e2a25310f2475ef47f906322b", + "data_contract_key": "geointel.vector.geojson", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "complete", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "dataset_source_snapshot_id": "bce1f636-c5e7-4a36-a96b-cdef9af4ca54", + "source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "source_key": "grb", + "source_classification": "authoritative", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": true, + "source_allowed_tasks": [ + "building_validation", + "building_labels", + "reference_context" + ], + "source_validation_authority": { + "building_validation": "primary" + }, + "source_building_validation_authority": "primary", + "source_snapshot_id": "bce1f636-c5e7-4a36-a96b-cdef9af4ca54", + "snapshot_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "snapshot_key": "grb:2026-08-10:828854a2c646047c18ec9472fcd88d903f9e395e2a25310f2475ef47f906322b", + "snapshot_checksum_sha256": "828854a2c646047c18ec9472fcd88d903f9e395e2a25310f2475ef47f906322b", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + } + }, + "bbox_epsg4326": [ + 3.618149522227024, + 51.21883794179568, + 3.6218503796386172, + 51.221162034532675 + ] + }, + { + "sample_slug": "v73-doel-port-train-bg", + "sample_role": "background_candidate", + "require_empty": false, + "region": "flanders", + "context": "port-hard-negative", + "split": "train", + "raster_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-doel-port-train-bg/image.tif", + "reference_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-doel-port-train-bg/buildings.normalized.geojson", + "reference_source": "grb", + "reference_layer": "buildings", + "reference_feature_count": 47, + "raster_dataset_id": "bc7b7dbd-c95b-4bc6-b379-e1bc337a35bf", + "reference_dataset_id": "69ba8adc-6f16-4c14-8459-211f32a56a2c", + "raster_sha256": "9398559a6158ffda06467fb3393772769ebda919e2fd044cd3b9dce5a3d35b56", + "reference_sha256": "1a0d5821a7ee6c1cf166b3b0e803453d04495dfb6e0f46c6ce7535e778eb8ddf", + "label_audit_sha256": "fcfe3d6a746ee34dda5e54c27b982ca6d2d1f24faf0f956d717eae3160b44990", + "training_eligibility": { + "policy_version": "geointel-training-source-eligibility/v1", + "eligible": true, + "fixture_mode": false, + "raster": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "raster", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "bc7b7dbd-c95b-4bc6-b379-e1bc337a35bf", + "dataset_type": "raster", + "dataset_role": "source", + "source": "digitaal vlaanderen wms omwrgb25vl", + "source_name": "digitaal_vlaanderen_orthophoto", + "checksum_sha256": "9398559a6158ffda06467fb3393772769ebda919e2fd044cd3b9dce5a3d35b56", + "data_contract_key": "geointel.raster.geotiff", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "not_applicable", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "dataset_source_snapshot_id": "3a5d9ecb-32e8-4f3a-8d0c-e9e4c395d2b3", + "source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "source_key": "digitaal_vlaanderen_orthophoto", + "source_classification": "contextual", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": false, + "source_allowed_tasks": [ + "imagery", + "training_input", + "visual_context" + ], + "source_validation_authority": {}, + "source_building_validation_authority": null, + "source_snapshot_id": "3a5d9ecb-32e8-4f3a-8d0c-e9e4c395d2b3", + "snapshot_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "snapshot_key": "digitaal_vlaanderen_orthophoto:2025:9398559a6158ffda06467fb3393772769ebda919e2fd044cd3b9dce5a3d35b56", + "snapshot_checksum_sha256": "9398559a6158ffda06467fb3393772769ebda919e2fd044cd3b9dce5a3d35b56", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + }, + "reference": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "reference", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "69ba8adc-6f16-4c14-8459-211f32a56a2c", + "dataset_type": "vector", + "dataset_role": "reference", + "source": "digitaal vlaanderen grb ogc api features", + "source_name": "grb", + "checksum_sha256": "cbbcbf7970d4efa5a28689e6400027502c4889e070df87731152710e4619a4b0", + "data_contract_key": "geointel.vector.geojson", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "complete", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "dataset_source_snapshot_id": "2c43af7b-cf9a-4b6e-9063-629c526324d9", + "source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "source_key": "grb", + "source_classification": "authoritative", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": true, + "source_allowed_tasks": [ + "building_validation", + "building_labels", + "reference_context" + ], + "source_validation_authority": { + "building_validation": "primary" + }, + "source_building_validation_authority": "primary", + "source_snapshot_id": "2c43af7b-cf9a-4b6e-9063-629c526324d9", + "snapshot_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "snapshot_key": "grb:2026-08-10:cbbcbf7970d4efa5a28689e6400027502c4889e070df87731152710e4619a4b0", + "snapshot_checksum_sha256": "cbbcbf7970d4efa5a28689e6400027502c4889e070df87731152710e4619a4b0", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + } + }, + "bbox_epsg4326": [ + 4.258161673724995, + 51.308847843017254, + 4.261838227480093, + 51.311152132827466 + ] + }, + { + "sample_slug": "v73-adinkerke-dunes-train-bg", + "sample_role": "background_candidate", + "require_empty": false, + "region": "flanders", + "context": "dunes-hard-negative", + "split": "train", + "raster_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-adinkerke-dunes-train-bg/image.tif", + "reference_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-adinkerke-dunes-train-bg/buildings.normalized.geojson", + "reference_source": "grb", + "reference_layer": "buildings", + "reference_feature_count": 155, + "raster_dataset_id": "53a169d3-dccd-48d9-9b1c-68be3111a9e1", + "reference_dataset_id": "7bc2d837-19eb-4e80-877c-185b7ea21af2", + "raster_sha256": "53541cfe2d3b58f7139a64ca637afcaccbf3fcc56b9684613b5c212f7f87a2a5", + "reference_sha256": "d9f868139bb3346956f038778438b836e3e37756d96230a2bb6d06133075764e", + "label_audit_sha256": "fde599fca3640e96953688117b49705e522d45ec80ef6aa3eb6e6b89a4f6a395", + "training_eligibility": { + "policy_version": "geointel-training-source-eligibility/v1", + "eligible": true, + "fixture_mode": false, + "raster": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "raster", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "53a169d3-dccd-48d9-9b1c-68be3111a9e1", + "dataset_type": "raster", + "dataset_role": "source", + "source": "digitaal vlaanderen wms omwrgb25vl", + "source_name": "digitaal_vlaanderen_orthophoto", + "checksum_sha256": "53541cfe2d3b58f7139a64ca637afcaccbf3fcc56b9684613b5c212f7f87a2a5", + "data_contract_key": "geointel.raster.geotiff", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "not_applicable", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "dataset_source_snapshot_id": "7b2642f4-d0e3-4888-87c9-863a1bb5d3c4", + "source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "source_key": "digitaal_vlaanderen_orthophoto", + "source_classification": "contextual", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": false, + "source_allowed_tasks": [ + "imagery", + "training_input", + "visual_context" + ], + "source_validation_authority": {}, + "source_building_validation_authority": null, + "source_snapshot_id": "7b2642f4-d0e3-4888-87c9-863a1bb5d3c4", + "snapshot_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "snapshot_key": "digitaal_vlaanderen_orthophoto:2025:53541cfe2d3b58f7139a64ca637afcaccbf3fcc56b9684613b5c212f7f87a2a5", + "snapshot_checksum_sha256": "53541cfe2d3b58f7139a64ca637afcaccbf3fcc56b9684613b5c212f7f87a2a5", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + }, + "reference": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "reference", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "7bc2d837-19eb-4e80-877c-185b7ea21af2", + "dataset_type": "vector", + "dataset_role": "reference", + "source": "digitaal vlaanderen grb ogc api features", + "source_name": "grb", + "checksum_sha256": "371b81dab0d7d4090fc5e87eb98aae841665f902bbe156a449a8f8baaca20734", + "data_contract_key": "geointel.vector.geojson", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "complete", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "dataset_source_snapshot_id": "ee91493c-2296-48c2-b0a0-b4632c1ea027", + "source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "source_key": "grb", + "source_classification": "authoritative", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": true, + "source_allowed_tasks": [ + "building_validation", + "building_labels", + "reference_context" + ], + "source_validation_authority": { + "building_validation": "primary" + }, + "source_building_validation_authority": "primary", + "source_snapshot_id": "ee91493c-2296-48c2-b0a0-b4632c1ea027", + "snapshot_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "snapshot_key": "grb:2026-08-10:371b81dab0d7d4090fc5e87eb98aae841665f902bbe156a449a8f8baaca20734", + "snapshot_checksum_sha256": "371b81dab0d7d4090fc5e87eb98aae841665f902bbe156a449a8f8baaca20734", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + } + }, + "bbox_epsg4326": [ + 2.588130558194434, + 51.068822191152805, + 2.591869344793702, + 51.07117778596596 + ] + }, + { + "sample_slug": "v73-houthulst-forest-train-bg", + "sample_role": "background_candidate", + "require_empty": false, + "region": "flanders", + "context": "forest-hard-negative", + "split": "train", + "raster_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-houthulst-forest-train-bg/image.tif", + "reference_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-houthulst-forest-train-bg/buildings.normalized.geojson", + "reference_source": "grb", + "reference_layer": "buildings", + "reference_feature_count": 140, + "raster_dataset_id": "e44992c5-60b5-4b71-b7e9-5c2120ecf749", + "reference_dataset_id": "6d06cefd-980d-4e78-86f3-d335e87e8a4e", + "raster_sha256": "e9549febbd0275306de29d99b8c57d222b5c587cb8a4dc6980e366d8e692d87e", + "reference_sha256": "4f01b14777ae2a2a951bff9a21b1a1cd6b7342878cb37cd48c86582f7315aa73", + "label_audit_sha256": "524442c353e3b683c03e4fa6a649c4cdbfa9edab4df61c346833d7c291b83d4b", + "training_eligibility": { + "policy_version": "geointel-training-source-eligibility/v1", + "eligible": true, + "fixture_mode": false, + "raster": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "raster", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "e44992c5-60b5-4b71-b7e9-5c2120ecf749", + "dataset_type": "raster", + "dataset_role": "source", + "source": "digitaal vlaanderen wms omwrgb25vl", + "source_name": "digitaal_vlaanderen_orthophoto", + "checksum_sha256": "e9549febbd0275306de29d99b8c57d222b5c587cb8a4dc6980e366d8e692d87e", + "data_contract_key": "geointel.raster.geotiff", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "not_applicable", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "dataset_source_snapshot_id": "29a39df0-eec6-4f1c-9c58-0feb1776b5a4", + "source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "source_key": "digitaal_vlaanderen_orthophoto", + "source_classification": "contextual", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": false, + "source_allowed_tasks": [ + "imagery", + "training_input", + "visual_context" + ], + "source_validation_authority": {}, + "source_building_validation_authority": null, + "source_snapshot_id": "29a39df0-eec6-4f1c-9c58-0feb1776b5a4", + "snapshot_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "snapshot_key": "digitaal_vlaanderen_orthophoto:2025:e9549febbd0275306de29d99b8c57d222b5c587cb8a4dc6980e366d8e692d87e", + "snapshot_checksum_sha256": "e9549febbd0275306de29d99b8c57d222b5c587cb8a4dc6980e366d8e692d87e", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + }, + "reference": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "reference", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "6d06cefd-980d-4e78-86f3-d335e87e8a4e", + "dataset_type": "vector", + "dataset_role": "reference", + "source": "digitaal vlaanderen grb ogc api features", + "source_name": "grb", + "checksum_sha256": "e52627b662ea8e3e41b41bf61dc1b3952d0fbfcd60f893863df0a05ad0030dba", + "data_contract_key": "geointel.vector.geojson", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "complete", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "dataset_source_snapshot_id": "d440f0d4-14d5-4c9b-b29f-1e26ebb4b7d0", + "source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "source_key": "grb", + "source_classification": "authoritative", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": true, + "source_allowed_tasks": [ + "building_validation", + "building_labels", + "reference_context" + ], + "source_validation_authority": { + "building_validation": "primary" + }, + "source_building_validation_authority": "primary", + "source_snapshot_id": "d440f0d4-14d5-4c9b-b29f-1e26ebb4b7d0", + "snapshot_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "snapshot_key": "grb:2026-08-10:e52627b662ea8e3e41b41bf61dc1b3952d0fbfcd60f893863df0a05ad0030dba", + "snapshot_checksum_sha256": "e52627b662ea8e3e41b41bf61dc1b3952d0fbfcd60f893863df0a05ad0030dba", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + } + }, + "bbox_epsg4326": [ + 2.948142792563102, + 50.978827613215564, + 2.951857110543986, + 50.98117236384764 + ] + }, + { + "sample_slug": "v73-ronse-industry-train-bg", + "sample_role": "background_candidate", + "require_empty": false, + "region": "flanders", + "context": "industrial-hard-negative", + "split": "train", + "raster_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-ronse-industry-train-bg/image.tif", + "reference_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-ronse-industry-train-bg/buildings.normalized.geojson", + "reference_source": "grb", + "reference_layer": "buildings", + "reference_feature_count": 154, + "raster_dataset_id": "e70a5264-0974-4b6e-aa6f-51c0cb7e3537", + "reference_dataset_id": "f143ffa0-f03e-4ac3-b6e7-13bbac3fed41", + "raster_sha256": "0c1c70b1cc79fa032c6ef56e0e0e04e47a8684b720028874453a84a29c26581c", + "reference_sha256": "83124fd3a154b326d5929a351b1079c760904fe994d928d16e91b89a11194818", + "label_audit_sha256": "f83026512c2ef3e60ae498ebbbb830fd4a20fa0a6b7f1961f966e9f6463906a7", + "training_eligibility": { + "policy_version": "geointel-training-source-eligibility/v1", + "eligible": true, + "fixture_mode": false, + "raster": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "raster", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "e70a5264-0974-4b6e-aa6f-51c0cb7e3537", + "dataset_type": "raster", + "dataset_role": "source", + "source": "digitaal vlaanderen wms omwrgb25vl", + "source_name": "digitaal_vlaanderen_orthophoto", + "checksum_sha256": "0c1c70b1cc79fa032c6ef56e0e0e04e47a8684b720028874453a84a29c26581c", + "data_contract_key": "geointel.raster.geotiff", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "not_applicable", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "dataset_source_snapshot_id": "de02d8bb-44c8-4fc5-8e89-fd07ec423376", + "source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "source_key": "digitaal_vlaanderen_orthophoto", + "source_classification": "contextual", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": false, + "source_allowed_tasks": [ + "imagery", + "training_input", + "visual_context" + ], + "source_validation_authority": {}, + "source_building_validation_authority": null, + "source_snapshot_id": "de02d8bb-44c8-4fc5-8e89-fd07ec423376", + "snapshot_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "snapshot_key": "digitaal_vlaanderen_orthophoto:2025:0c1c70b1cc79fa032c6ef56e0e0e04e47a8684b720028874453a84a29c26581c", + "snapshot_checksum_sha256": "0c1c70b1cc79fa032c6ef56e0e0e04e47a8684b720028874453a84a29c26581c", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + }, + "reference": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "reference", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "f143ffa0-f03e-4ac3-b6e7-13bbac3fed41", + "dataset_type": "vector", + "dataset_role": "reference", + "source": "digitaal vlaanderen grb ogc api features", + "source_name": "grb", + "checksum_sha256": "f1b82c20bfaf59719a42561ee70e8ffef1cb09c31d7b296e7f60d6ffb893138c", + "data_contract_key": "geointel.vector.geojson", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "complete", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "dataset_source_snapshot_id": "d4bbc25e-27dd-4efc-a7d3-9e3a56a77999", + "source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "source_key": "grb", + "source_classification": "authoritative", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": true, + "source_allowed_tasks": [ + "building_validation", + "building_labels", + "reference_context" + ], + "source_validation_authority": { + "building_validation": "primary" + }, + "source_building_validation_authority": "primary", + "source_snapshot_id": "d4bbc25e-27dd-4efc-a7d3-9e3a56a77999", + "snapshot_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "snapshot_key": "grb:2026-08-10:f1b82c20bfaf59719a42561ee70e8ffef1cb09c31d7b296e7f60d6ffb893138c", + "snapshot_checksum_sha256": "f1b82c20bfaf59719a42561ee70e8ffef1cb09c31d7b296e7f60d6ffb893138c", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + } + }, + "bbox_epsg4326": [ + 3.608167745037314, + 50.748837614018925, + 3.611832158531078, + 50.75116236305027 + ] + }, + { + "sample_slug": "v73-peer-field-train-bg", + "sample_role": "background_candidate", + "require_empty": false, + "region": "flanders", + "context": "farmland-hard-negative", + "split": "train", + "raster_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-peer-field-train-bg/image.tif", + "reference_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-peer-field-train-bg/buildings.normalized.geojson", + "reference_source": "grb", + "reference_layer": "buildings", + "reference_feature_count": 1, + "raster_dataset_id": "918b6db3-5af9-4f47-b3dc-842c73abf559", + "reference_dataset_id": "dafc6274-8040-4a29-bba3-f6d492ef84b0", + "raster_sha256": "ade1d0f35377bbebcd00dc161986a799cff008670bc148779997fc6e7fb370fc", + "reference_sha256": "26c6f79274eacb0605e03ea12355bf62990938c49dc9ad50ff5b77c508ed4c66", + "label_audit_sha256": "b89e6a2336190931f1cfad3fab3219fc61f2743101affa3aa63c14a6c968e8b9", + "training_eligibility": { + "policy_version": "geointel-training-source-eligibility/v1", + "eligible": true, + "fixture_mode": false, + "raster": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "raster", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "918b6db3-5af9-4f47-b3dc-842c73abf559", + "dataset_type": "raster", + "dataset_role": "source", + "source": "digitaal vlaanderen wms omwrgb25vl", + "source_name": "digitaal_vlaanderen_orthophoto", + "checksum_sha256": "ade1d0f35377bbebcd00dc161986a799cff008670bc148779997fc6e7fb370fc", + "data_contract_key": "geointel.raster.geotiff", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "not_applicable", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "dataset_source_snapshot_id": "e82afbb3-64d2-43b3-9933-6e683de368ec", + "source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "source_key": "digitaal_vlaanderen_orthophoto", + "source_classification": "contextual", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": false, + "source_allowed_tasks": [ + "imagery", + "training_input", + "visual_context" + ], + "source_validation_authority": {}, + "source_building_validation_authority": null, + "source_snapshot_id": "e82afbb3-64d2-43b3-9933-6e683de368ec", + "snapshot_source_registry_id": "766e0d47-96d9-5e78-a584-47e924a4d6b7", + "snapshot_key": "digitaal_vlaanderen_orthophoto:2025:ade1d0f35377bbebcd00dc161986a799cff008670bc148779997fc6e7fb370fc", + "snapshot_checksum_sha256": "ade1d0f35377bbebcd00dc161986a799cff008670bc148779997fc6e7fb370fc", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + }, + "reference": { + "policy_version": "geointel-training-source-eligibility/v1", + "role": "reference", + "eligible": true, + "fixture_mode": false, + "reasons": [], + "evidence": { + "dataset_id": "dafc6274-8040-4a29-bba3-f6d492ef84b0", + "dataset_type": "vector", + "dataset_role": "reference", + "source": "digitaal vlaanderen grb ogc api features", + "source_name": "grb", + "checksum_sha256": "0f66821432646b516d6c4faa65c9d89cbf34eafc4da08c6545cad75c6ee6cc0d", + "data_contract_key": "geointel.vector.geojson", + "data_contract_version": "1.0.0", + "validation_status": "passed", + "provenance_status": "complete", + "lineage_status": "complete", + "quarantine_status": "not_quarantined", + "dataset_status": "ready", + "dataset_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "dataset_source_snapshot_id": "cf6ef433-eaae-49c3-8011-e26e03a7c256", + "source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "source_key": "grb", + "source_classification": "authoritative", + "source_freshness_status": "unknown", + "source_ingest_status": "configured", + "source_training_allowed": true, + "source_ground_truth_allowed": true, + "source_allowed_tasks": [ + "building_validation", + "building_labels", + "reference_context" + ], + "source_validation_authority": { + "building_validation": "primary" + }, + "source_building_validation_authority": "primary", + "source_snapshot_id": "cf6ef433-eaae-49c3-8011-e26e03a7c256", + "snapshot_source_registry_id": "3cc9ab48-ac58-5271-8ea7-55d250925ec6", + "snapshot_key": "grb:2026-08-10:0f66821432646b516d6c4faa65c9d89cbf34eafc4da08c6545cad75c6ee6cc0d", + "snapshot_checksum_sha256": "0f66821432646b516d6c4faa65c9d89cbf34eafc4da08c6545cad75c6ee6cc0d", + "snapshot_freshness_status": "current", + "snapshot_ingest_status": "ingested" + } + } + }, + "bbox_epsg4326": [ + 5.448145453581394, + 51.11883278920863, + 5.451854627730389, + 51.1211671879367 + ] + } + ] +} \ No newline at end of file diff --git a/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/operator_yolo_label_qa_summary_r2.json b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/operator_yolo_label_qa_summary_r2.json new file mode 100644 index 00000000..7258c0f2 --- /dev/null +++ b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/operator_yolo_label_qa_summary_r2.json @@ -0,0 +1,822 @@ +{ + "blank_range_threshold": 3, + "class_names": [], + "columns": 6, + "contact_sheets": [ + { + "columns": 6, + "path": "contact_sheet_001.png", + "thumb_size": 320, + "tile_count": 24 + }, + { + "columns": 6, + "path": "contact_sheet_002.png", + "thumb_size": 320, + "tile_count": 24 + } + ], + "dataset_output_dir": null, + "highlight_category_counts": {}, + "highlighted_label_count": 0, + "invalid_label_count": 0, + "low_visual_variance_tile_count": 0, + "max_tiles": 48, + "missing_image_count": 0, + "missing_label_file_count": 0, + "outlier_highlight_count": 0, + "relationship_highlight_count": 0, + "rendered_tile_count": 48, + "requested_sample_slugs": [], + "selected_sample_count": 12, + "selected_sample_slugs": [ + "v73-adinkerke-dunes-train-bg", + "v73-borgloon-rural-train", + "v73-doel-port-train-bg", + "v73-houthulst-forest-train-bg", + "v73-kaprijke-field-train-bg", + "v73-kontich-lowrise-train", + "v73-lede-ribbon-train", + "v73-peer-field-train-bg", + "v73-ronse-industry-train-bg", + "v73-schoten-lowrise-train", + "v73-tielt-rural-train", + "v73-wevelgem-industry-train" + ], + "selected_tile_count": 48, + "selected_tiles": [ + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-schoten-lowrise-train_0004_r512_c512.png", + "invalid_label_count": 0, + "label_count": 90, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-schoten-lowrise-train_0004_r512_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-schoten-lowrise-train", + "split": "train", + "tile_index": 4, + "valid_label_count": 90 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-lede-ribbon-train_0003_r512_c0.png", + "invalid_label_count": 0, + "label_count": 71, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-lede-ribbon-train_0003_r512_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-lede-ribbon-train", + "split": "train", + "tile_index": 3, + "valid_label_count": 71 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-kontich-lowrise-train_0003_r512_c0.png", + "invalid_label_count": 0, + "label_count": 70, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-kontich-lowrise-train_0003_r512_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-kontich-lowrise-train", + "split": "train", + "tile_index": 3, + "valid_label_count": 70 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-ronse-industry-train-bg_0000_r0_c0.png", + "invalid_label_count": 0, + "label_count": 70, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-ronse-industry-train-bg_0000_r0_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-ronse-industry-train-bg", + "split": "train", + "tile_index": 0, + "valid_label_count": 70 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-tielt-rural-train_0001_r0_c512.png", + "invalid_label_count": 0, + "label_count": 69, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-tielt-rural-train_0001_r0_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-tielt-rural-train", + "split": "train", + "tile_index": 1, + "valid_label_count": 69 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-schoten-lowrise-train_0000_r0_c0.png", + "invalid_label_count": 0, + "label_count": 68, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-schoten-lowrise-train_0000_r0_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-schoten-lowrise-train", + "split": "train", + "tile_index": 0, + "valid_label_count": 68 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-schoten-lowrise-train_0001_r0_c512.png", + "invalid_label_count": 0, + "label_count": 67, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-schoten-lowrise-train_0001_r0_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-schoten-lowrise-train", + "split": "train", + "tile_index": 1, + "valid_label_count": 67 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-kontich-lowrise-train_0001_r0_c512.png", + "invalid_label_count": 0, + "label_count": 65, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-kontich-lowrise-train_0001_r0_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-kontich-lowrise-train", + "split": "train", + "tile_index": 1, + "valid_label_count": 65 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-kontich-lowrise-train_0004_r512_c512.png", + "invalid_label_count": 0, + "label_count": 59, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-kontich-lowrise-train_0004_r512_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-kontich-lowrise-train", + "split": "train", + "tile_index": 4, + "valid_label_count": 59 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-adinkerke-dunes-train-bg_0003_r512_c0.png", + "invalid_label_count": 0, + "label_count": 58, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-adinkerke-dunes-train-bg_0003_r512_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-adinkerke-dunes-train-bg", + "split": "train", + "tile_index": 3, + "valid_label_count": 58 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-tielt-rural-train_0004_r512_c512.png", + "invalid_label_count": 0, + "label_count": 58, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-tielt-rural-train_0004_r512_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-tielt-rural-train", + "split": "train", + "tile_index": 4, + "valid_label_count": 58 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-lede-ribbon-train_0004_r512_c512.png", + "invalid_label_count": 0, + "label_count": 57, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-lede-ribbon-train_0004_r512_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-lede-ribbon-train", + "split": "train", + "tile_index": 4, + "valid_label_count": 57 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-tielt-rural-train_0000_r0_c0.png", + "invalid_label_count": 0, + "label_count": 56, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-tielt-rural-train_0000_r0_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-tielt-rural-train", + "split": "train", + "tile_index": 0, + "valid_label_count": 56 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-borgloon-rural-train_0003_r512_c0.png", + "invalid_label_count": 0, + "label_count": 54, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-borgloon-rural-train_0003_r512_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-borgloon-rural-train", + "split": "train", + "tile_index": 3, + "valid_label_count": 54 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-tielt-rural-train_0003_r512_c0.png", + "invalid_label_count": 0, + "label_count": 48, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-tielt-rural-train_0003_r512_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-tielt-rural-train", + "split": "train", + "tile_index": 3, + "valid_label_count": 48 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-kontich-lowrise-train_0000_r0_c0.png", + "invalid_label_count": 0, + "label_count": 45, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-kontich-lowrise-train_0000_r0_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-kontich-lowrise-train", + "split": "train", + "tile_index": 0, + "valid_label_count": 45 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-ronse-industry-train-bg_0001_r0_c512.png", + "invalid_label_count": 0, + "label_count": 43, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-ronse-industry-train-bg_0001_r0_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-ronse-industry-train-bg", + "split": "train", + "tile_index": 1, + "valid_label_count": 43 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-houthulst-forest-train-bg_0003_r512_c0.png", + "invalid_label_count": 0, + "label_count": 42, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-houthulst-forest-train-bg_0003_r512_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-houthulst-forest-train-bg", + "split": "train", + "tile_index": 3, + "valid_label_count": 42 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-lede-ribbon-train_0001_r0_c512.png", + "invalid_label_count": 0, + "label_count": 38, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-lede-ribbon-train_0001_r0_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-lede-ribbon-train", + "split": "train", + "tile_index": 1, + "valid_label_count": 38 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-wevelgem-industry-train_0001_r0_c512.png", + "invalid_label_count": 0, + "label_count": 36, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-wevelgem-industry-train_0001_r0_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-wevelgem-industry-train", + "split": "train", + "tile_index": 1, + "valid_label_count": 36 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-houthulst-forest-train-bg_0000_r0_c0.png", + "invalid_label_count": 0, + "label_count": 35, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-houthulst-forest-train-bg_0000_r0_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-houthulst-forest-train-bg", + "split": "train", + "tile_index": 0, + "valid_label_count": 35 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-wevelgem-industry-train_0003_r512_c0.png", + "invalid_label_count": 0, + "label_count": 35, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-wevelgem-industry-train_0003_r512_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-wevelgem-industry-train", + "split": "train", + "tile_index": 3, + "valid_label_count": 35 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-adinkerke-dunes-train-bg_0004_r512_c512.png", + "invalid_label_count": 0, + "label_count": 34, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-adinkerke-dunes-train-bg_0004_r512_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-adinkerke-dunes-train-bg", + "split": "train", + "tile_index": 4, + "valid_label_count": 34 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-houthulst-forest-train-bg_0001_r0_c512.png", + "invalid_label_count": 0, + "label_count": 34, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-houthulst-forest-train-bg_0001_r0_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-houthulst-forest-train-bg", + "split": "train", + "tile_index": 1, + "valid_label_count": 34 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-ronse-industry-train-bg_0003_r512_c0.png", + "invalid_label_count": 0, + "label_count": 34, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-ronse-industry-train-bg_0003_r512_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-ronse-industry-train-bg", + "split": "train", + "tile_index": 3, + "valid_label_count": 34 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-borgloon-rural-train_0000_r0_c0.png", + "invalid_label_count": 0, + "label_count": 33, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-borgloon-rural-train_0000_r0_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-borgloon-rural-train", + "split": "train", + "tile_index": 0, + "valid_label_count": 33 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-wevelgem-industry-train_0000_r0_c0.png", + "invalid_label_count": 0, + "label_count": 33, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-wevelgem-industry-train_0000_r0_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-wevelgem-industry-train", + "split": "train", + "tile_index": 0, + "valid_label_count": 33 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-wevelgem-industry-train_0004_r512_c512.png", + "invalid_label_count": 0, + "label_count": 33, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-wevelgem-industry-train_0004_r512_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-wevelgem-industry-train", + "split": "train", + "tile_index": 4, + "valid_label_count": 33 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-adinkerke-dunes-train-bg_0000_r0_c0.png", + "invalid_label_count": 0, + "label_count": 32, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-adinkerke-dunes-train-bg_0000_r0_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-adinkerke-dunes-train-bg", + "split": "train", + "tile_index": 0, + "valid_label_count": 32 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-lede-ribbon-train_0000_r0_c0.png", + "invalid_label_count": 0, + "label_count": 32, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-lede-ribbon-train_0000_r0_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-lede-ribbon-train", + "split": "train", + "tile_index": 0, + "valid_label_count": 32 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-adinkerke-dunes-train-bg_0001_r0_c512.png", + "invalid_label_count": 0, + "label_count": 30, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-adinkerke-dunes-train-bg_0001_r0_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-adinkerke-dunes-train-bg", + "split": "train", + "tile_index": 1, + "valid_label_count": 30 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-houthulst-forest-train-bg_0004_r512_c512.png", + "invalid_label_count": 0, + "label_count": 29, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-houthulst-forest-train-bg_0004_r512_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-houthulst-forest-train-bg", + "split": "train", + "tile_index": 4, + "valid_label_count": 29 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-doel-port-train-bg_0000_r0_c0.png", + "invalid_label_count": 0, + "label_count": 27, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-doel-port-train-bg_0000_r0_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-doel-port-train-bg", + "split": "train", + "tile_index": 0, + "valid_label_count": 27 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-schoten-lowrise-train_0003_r512_c0.png", + "invalid_label_count": 0, + "label_count": 27, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-schoten-lowrise-train_0003_r512_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-schoten-lowrise-train", + "split": "train", + "tile_index": 3, + "valid_label_count": 27 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-borgloon-rural-train_0004_r512_c512.png", + "invalid_label_count": 0, + "label_count": 21, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-borgloon-rural-train_0004_r512_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-borgloon-rural-train", + "split": "train", + "tile_index": 4, + "valid_label_count": 21 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-kaprijke-field-train-bg_0003_r512_c0.png", + "invalid_label_count": 0, + "label_count": 21, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-kaprijke-field-train-bg_0003_r512_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-kaprijke-field-train-bg", + "split": "train", + "tile_index": 3, + "valid_label_count": 21 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-doel-port-train-bg_0001_r0_c512.png", + "invalid_label_count": 0, + "label_count": 15, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-doel-port-train-bg_0001_r0_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-doel-port-train-bg", + "split": "train", + "tile_index": 1, + "valid_label_count": 15 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-kaprijke-field-train-bg_0004_r512_c512.png", + "invalid_label_count": 0, + "label_count": 14, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-kaprijke-field-train-bg_0004_r512_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-kaprijke-field-train-bg", + "split": "train", + "tile_index": 4, + "valid_label_count": 14 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-ronse-industry-train-bg_0004_r512_c512.png", + "invalid_label_count": 0, + "label_count": 11, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-ronse-industry-train-bg_0004_r512_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-ronse-industry-train-bg", + "split": "train", + "tile_index": 4, + "valid_label_count": 11 + }, + { + "background_category": "reference_aoi", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-borgloon-rural-train_0001_r0_c512.png", + "invalid_label_count": 0, + "label_count": 5, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-borgloon-rural-train_0001_r0_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "positive", + "sample_slug": "v73-borgloon-rural-train", + "split": "train", + "tile_index": 1, + "valid_label_count": 5 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-doel-port-train-bg_0003_r512_c0.png", + "invalid_label_count": 0, + "label_count": 5, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-doel-port-train-bg_0003_r512_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-doel-port-train-bg", + "split": "train", + "tile_index": 3, + "valid_label_count": 5 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-doel-port-train-bg_0004_r512_c512.png", + "invalid_label_count": 0, + "label_count": 2, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-doel-port-train-bg_0004_r512_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-doel-port-train-bg", + "split": "train", + "tile_index": 4, + "valid_label_count": 2 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-kaprijke-field-train-bg_0000_r0_c0.png", + "invalid_label_count": 0, + "label_count": 2, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-kaprijke-field-train-bg_0000_r0_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-kaprijke-field-train-bg", + "split": "train", + "tile_index": 0, + "valid_label_count": 2 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-kaprijke-field-train-bg_0001_r0_c512.png", + "invalid_label_count": 0, + "label_count": 1, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-kaprijke-field-train-bg_0001_r0_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-kaprijke-field-train-bg", + "split": "train", + "tile_index": 1, + "valid_label_count": 1 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-peer-field-train-bg_0003_r512_c0.png", + "invalid_label_count": 0, + "label_count": 1, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-peer-field-train-bg_0003_r512_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-peer-field-train-bg", + "split": "train", + "tile_index": 3, + "valid_label_count": 1 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-peer-field-train-bg_0000_r0_c0.png", + "invalid_label_count": 0, + "label_count": 0, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-peer-field-train-bg_0000_r0_c0.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-peer-field-train-bg", + "split": "train", + "tile_index": 0, + "valid_label_count": 0 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-peer-field-train-bg_0001_r0_c512.png", + "invalid_label_count": 0, + "label_count": 0, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-peer-field-train-bg_0001_r0_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-peer-field-train-bg", + "split": "train", + "tile_index": 1, + "valid_label_count": 0 + }, + { + "background_category": "sparse_building_context", + "highlighted_label_count": 0, + "image_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/images/train/v73-peer-field-train-bg_0004_r512_c512.png", + "invalid_label_count": 0, + "label_count": 0, + "label_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/labels/train/v73-peer-field-train-bg_0004_r512_c512.txt", + "low_visual_variance": false, + "missing_label_file": false, + "rendered": true, + "sample_role": "background_candidate", + "sample_slug": "v73-peer-field-train-bg", + "split": "train", + "tile_index": 4, + "valid_label_count": 0 + } + ], + "status": "ok", + "summary_path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/experimental_dataset_summary.json", + "thumb_size": 320, + "tiles_per_sheet": 24, + "valid_label_count": 1710 +} \ No newline at end of file diff --git a/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/outcome.json b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/outcome.json new file mode 100644 index 00000000..8a47731d --- /dev/null +++ b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/outcome.json @@ -0,0 +1,60 @@ +{ + "schema_version": 1, + "status": "completed_candidates_rejected", + "claim_boundary": "Experimental training and independent calibration only; no production release claim.", + "training_portfolio": { + "region": "flanders", + "sample_count": 12, + "unique_non_overlapping_tile_count": 48, + "label_count": 1710, + "negative_tile_count": 3, + "excluded_overlapping_edge_cover_tile_count": 60, + "source_authority": "GRB", + "source_manifest_sha256": "afa0edc5f229e0451d4a3630bb0d716b0ac1d446a6f8c2f22807d4f83b818525", + "human_review_complete": false, + "ai_assisted_visual_review_tiles": 48 + }, + "spatial_independence": { + "status": "independent", + "minimum_required_distance_m": 2000.0, + "observed_minimum_distance_m": 9203.454080711017 + }, + "frozen_v72_calibration": { + "tile_count": 24, + "instance_count": 348, + "active": { + "model_sha256": "a9088b8491dfae36694b53e9e9406cb4e3511d334a5712fa34f75078a47759c1", + "precision": 0.1576550586330707, + "recall": 0.11781609195402298, + "map50": 0.05677865740374553, + "map50_95": 0.02175035531261916 + }, + "aggressive_e20": { + "decision": "rejected", + "model_sha256": "c4d9995ca040dff4ca327f6022f30d679335998ef1968c3061102ae6ed4105ac", + "precision": 0.012361111111111111, + "recall": 0.2557471264367816, + "map50": 0.01885292400464415, + "map50_95": 0.00378065636983694 + }, + "controlled_e10": { + "decision": "rejected", + "model_sha256": "e4f5ffc3080dc5781868f7add07176fa7b59cc50fb947ebb9b87495f3d9f20b2", + "precision": 0.017933658902666374, + "recall": 0.32471264367816094, + "map50": 0.0222135694107064, + "map50_95": 0.005679536478252313 + } + }, + "production_decision": { + "active_model_unchanged": true, + "reason": "Both fresh-data candidates materially regress precision and mAP on independent V72 calibration.", + "promotion_allowed": false + }, + "remaining_evidence_limits": [ + "Accepted independent human label review is still pending.", + "V72 contains only 24 calibration tiles and is not a national accuracy claim.", + "Wallonia and Brussels remain diagnostic-only until PICC and UrbIS authority contracts are governed for training.", + "The current active detector remains low-accuracy on fresh regional imagery; fail-closed product messaging is required." + ] +} diff --git a/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/provisioning-spec.json b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/provisioning-spec.json new file mode 100644 index 00000000..6d576702 --- /dev/null +++ b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/provisioning-spec.json @@ -0,0 +1,212 @@ +{ + "schema_version": 1, + "side_m": 256.0, + "resolution_m": 0.25, + "status": "complete", + "samples": [ + { + "sample_slug": "v73-kontich-lowrise-train", + "region": "flanders", + "context": "detached-lowrise", + "split": "train", + "sample_role": "positive", + "require_empty": false, + "bbox_epsg4326": [ + 4.44516936687562, + 51.13384821464579, + 4.448830715037306, + 51.13615176149503 + ], + "raster_dataset_id": "56c5c3bd-ff0b-4d9a-9c98-572254c12594", + "reference_dataset_id": "f2b444f5-a3d3-4817-a466-d8001099d539", + "provider_reference_feature_count": 238 + }, + { + "sample_slug": "v73-schoten-lowrise-train", + "region": "flanders", + "context": "detached-lowrise", + "split": "train", + "sample_role": "positive", + "require_empty": false, + "bbox_epsg4326": [ + 4.498163542581232, + 51.248847445287225, + 4.501836539774341, + 51.25115253072368 + ], + "raster_dataset_id": "23084649-8bdf-4d82-a5ee-e7be64803039", + "reference_dataset_id": "4d888a2f-561a-4467-8846-def6b5d20f3d", + "provider_reference_feature_count": 252 + }, + { + "sample_slug": "v73-lede-ribbon-train", + "region": "flanders", + "context": "ribbon-development", + "split": "train", + "sample_role": "positive", + "require_empty": false, + "bbox_epsg4326": [ + 3.9831684358866886, + 50.964843450616485, + 3.9868314667126685, + 50.967156525915414 + ], + "raster_dataset_id": "9aa2ae96-4394-469a-8a63-8636b8deba94", + "reference_dataset_id": "439dcbb2-3e42-42dc-8a22-4204523c009c", + "provider_reference_feature_count": 203 + }, + { + "sample_slug": "v73-tielt-rural-train", + "region": "flanders", + "context": "rural-town", + "split": "train", + "sample_role": "positive", + "require_empty": false, + "bbox_epsg4326": [ + 3.325151142935416, + 50.99783336476096, + 3.328848759893323, + 51.00016661206988 + ], + "raster_dataset_id": "eef357e0-a6a0-4f04-b1c6-e2941b25811f", + "reference_dataset_id": "5a4de291-8c02-4cda-960d-ab688592541c", + "provider_reference_feature_count": 234 + }, + { + "sample_slug": "v73-borgloon-rural-train", + "region": "flanders", + "context": "rural-lowrise", + "split": "train", + "sample_role": "positive", + "require_empty": false, + "bbox_epsg4326": [ + 5.341160450290418, + 50.80383430945873, + 5.344839629814088, + 50.80616566808069 + ], + "raster_dataset_id": "7d23526d-3e5b-47aa-a4d2-bd47c3b99147", + "reference_dataset_id": "e39c2b9c-4f6d-4aa7-98d0-bb7284366071", + "provider_reference_feature_count": 123 + }, + { + "sample_slug": "v73-wevelgem-industry-train", + "region": "flanders", + "context": "industrial", + "split": "train", + "sample_role": "positive", + "require_empty": false, + "bbox_epsg4326": [ + 3.178154637518103, + 50.818831059349314, + 3.181845266034672, + 50.821168917839366 + ], + "raster_dataset_id": "a749c01e-8396-49b7-9f22-42428180989d", + "reference_dataset_id": "96b6e2ce-00cf-49b6-a133-94acf4aab96a", + "provider_reference_feature_count": 143 + }, + { + "sample_slug": "v73-kaprijke-field-train-bg", + "region": "flanders", + "context": "farmland-hard-negative", + "split": "train", + "sample_role": "background_candidate", + "require_empty": false, + "bbox_epsg4326": [ + 3.618149522227024, + 51.21883794179568, + 3.6218503796386172, + 51.221162034532675 + ], + "raster_dataset_id": "9efef01e-52f7-4d78-ba37-1667c15a8ec8", + "reference_dataset_id": "5da01064-bb86-4d4e-b42e-3eb81b5ec640", + "provider_reference_feature_count": 42 + }, + { + "sample_slug": "v73-doel-port-train-bg", + "region": "flanders", + "context": "port-hard-negative", + "split": "train", + "sample_role": "background_candidate", + "require_empty": false, + "bbox_epsg4326": [ + 4.258161673724995, + 51.308847843017254, + 4.261838227480093, + 51.311152132827466 + ], + "raster_dataset_id": "bc7b7dbd-c95b-4bc6-b379-e1bc337a35bf", + "reference_dataset_id": "69ba8adc-6f16-4c14-8459-211f32a56a2c", + "provider_reference_feature_count": 48 + }, + { + "sample_slug": "v73-adinkerke-dunes-train-bg", + "region": "flanders", + "context": "dunes-hard-negative", + "split": "train", + "sample_role": "background_candidate", + "require_empty": false, + "bbox_epsg4326": [ + 2.588130558194434, + 51.068822191152805, + 2.591869344793702, + 51.07117778596596 + ], + "raster_dataset_id": "53a169d3-dccd-48d9-9b1c-68be3111a9e1", + "reference_dataset_id": "7bc2d837-19eb-4e80-877c-185b7ea21af2", + "provider_reference_feature_count": 166 + }, + { + "sample_slug": "v73-houthulst-forest-train-bg", + "region": "flanders", + "context": "forest-hard-negative", + "split": "train", + "sample_role": "background_candidate", + "require_empty": false, + "bbox_epsg4326": [ + 2.948142792563102, + 50.978827613215564, + 2.951857110543986, + 50.98117236384764 + ], + "raster_dataset_id": "e44992c5-60b5-4b71-b7e9-5c2120ecf749", + "reference_dataset_id": "6d06cefd-980d-4e78-86f3-d335e87e8a4e", + "provider_reference_feature_count": 165 + }, + { + "sample_slug": "v73-ronse-industry-train-bg", + "region": "flanders", + "context": "industrial-hard-negative", + "split": "train", + "sample_role": "background_candidate", + "require_empty": false, + "bbox_epsg4326": [ + 3.608167745037314, + 50.748837614018925, + 3.611832158531078, + 50.75116236305027 + ], + "raster_dataset_id": "e70a5264-0974-4b6e-aa6f-51c0cb7e3537", + "reference_dataset_id": "f143ffa0-f03e-4ac3-b6e7-13bbac3fed41", + "provider_reference_feature_count": 171 + }, + { + "sample_slug": "v73-peer-field-train-bg", + "region": "flanders", + "context": "farmland-hard-negative", + "split": "train", + "sample_role": "background_candidate", + "require_empty": false, + "bbox_epsg4326": [ + 5.448145453581394, + 51.11883278920863, + 5.451854627730389, + 51.1211671879367 + ], + "raster_dataset_id": "918b6db3-5af9-4f47-b3dc-842c73abf559", + "reference_dataset_id": "dafc6274-8040-4a29-bba3-f6d492ef84b0", + "provider_reference_feature_count": 1 + } + ] +} \ No newline at end of file diff --git a/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/v72-v73-spatial-independence.json b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/v72-v73-spatial-independence.json new file mode 100644 index 00000000..aaac5179 --- /dev/null +++ b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/v72-v73-spatial-independence.json @@ -0,0 +1,110 @@ +{ + "evaluation_manifest_path": "/app/storage/operator-data/building-be-v72-fresh-calibration-r1/diagnostic-corpus/operator_samples_manifest.json", + "evaluation_manifest_sha256": "66bfaacaee11806ed035d3ac5725f7b3967dfc82e7a12ecf603dc3836bc26ad7", + "evaluation_samples": [ + { + "bbox_epsg4326": [ + 4.66116095047693, + 51.21284491062596, + 4.664839131648428, + 51.21515506560048 + ], + "minimum_lineage_distance_m": 11742.335203095918, + "nearest_lineage_raster_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-schoten-lowrise-train/image.tif", + "nearest_lineage_sample_slug": "v73-schoten-lowrise-train", + "passes_minimum_distance": true, + "sample_slug": "v72-zandhoven-lowrise-cal" + }, + { + "bbox_epsg4326": [ + 3.7481516695287884, + 51.24483994940647, + 3.7518482321727147, + 51.24716002681137 + ], + "minimum_lineage_distance_m": 9203.454080711017, + "nearest_lineage_raster_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-kaprijke-field-train-bg/image.tif", + "nearest_lineage_sample_slug": "v73-kaprijke-field-train-bg", + "passes_minimum_distance": true, + "sample_slug": "v72-assenede-field-cal-bg" + }, + { + "bbox_epsg4326": [ + 5.378193608487878, + 49.91683360963306, + 5.381806468144563, + 49.91916636935071 + ], + "minimum_lineage_distance_m": 98427.49240649818, + "nearest_lineage_raster_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-borgloon-rural-train/image.tif", + "nearest_lineage_sample_slug": "v73-borgloon-rural-train", + "passes_minimum_distance": true, + "sample_slug": "v72-libramont-lowrise-cal" + }, + { + "bbox_epsg4326": [ + 5.237179060792866, + 50.38783580367982, + 5.2408210177303065, + 50.39016417441682 + ], + "minimum_lineage_distance_m": 46555.585616985845, + "nearest_lineage_raster_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-borgloon-rural-train/image.tif", + "nearest_lineage_sample_slug": "v73-borgloon-rural-train", + "passes_minimum_distance": true, + "sample_slug": "v72-havelange-field-cal-bg" + }, + { + "bbox_epsg4326": [ + 4.305179924172925, + 50.871848393352586, + 4.308819978598048, + 50.87415158315595 + ], + "minimum_lineage_distance_m": 24551.91275864387, + "nearest_lineage_raster_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-lede-ribbon-train/image.tif", + "nearest_lineage_sample_slug": "v73-lede-ribbon-train", + "passes_minimum_distance": true, + "sample_slug": "v72-ganshoren-lowrise-cal" + }, + { + "bbox_epsg4326": [ + 4.349180265292469, + 50.89084908113465, + 4.3528196373886185, + 50.893150895320936 + ], + "minimum_lineage_distance_m": 26691.61793409974, + "nearest_lineage_raster_path": "/app/storage/operator-data/building-be-v73-fresh-flanders-train-r1/corpus/pairs/v73-lede-ribbon-train/image.tif", + "nearest_lineage_sample_slug": "v73-lede-ribbon-train", + "passes_minimum_distance": true, + "sample_slug": "v72-laeken-park-cal-bg" + } + ], + "lineage_sample_count": 12, + "lineage_summaries": [ + { + "path": "/app/storage/training/experimental/building-be-v73-fresh-flanders-train-r1/yolo512/experimental_dataset_summary.json", + "sample_slugs": [ + "v73-adinkerke-dunes-train-bg", + "v73-borgloon-rural-train", + "v73-doel-port-train-bg", + "v73-houthulst-forest-train-bg", + "v73-kaprijke-field-train-bg", + "v73-kontich-lowrise-train", + "v73-lede-ribbon-train", + "v73-peer-field-train-bg", + "v73-ronse-industry-train-bg", + "v73-schoten-lowrise-train", + "v73-tielt-rural-train", + "v73-wevelgem-industry-train" + ], + "sha256": "047874a4f9362c82263ffe11c389a2f65168c449d3f6cbcc77cea709c0ba4c59" + } + ], + "minimum_distance_m": 2000.0, + "missing_lineage_sample_slugs": [], + "resolved_lineage_sample_count": 12, + "schema_version": 1, + "status": "independent" +} diff --git a/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/visual-review.json b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/visual-review.json new file mode 100644 index 00000000..6a8ba546 --- /dev/null +++ b/artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/visual-review.json @@ -0,0 +1,19 @@ +{ + "schema_version": 1, + "review_type": "ai_assisted_visual_review", + "human": false, + "reviewed_tile_count": 48, + "coverage": "all canonical V73 training tiles", + "decision": "suitable_for_non_promotable_experiment_only", + "observations": [ + "GRB bounding boxes generally cover visible building roofs across all selected contexts.", + "Rotated and complex footprints produce intentionally loose axis-aligned detection boxes.", + "Sparse and empty field tiles are present; background_candidate does not imply pure empty.", + "The first export contained 60 overlapping edge-cover tiles; all were removed before training.", + "This review does not satisfy the independent human release gate." + ], + "contact_sheets": [ + "contact_sheet_001.png", + "contact_sheet_002.png" + ] +} diff --git a/configs/accuracy/v73-fresh-flanders-train-aois.json b/configs/accuracy/v73-fresh-flanders-train-aois.json new file mode 100644 index 00000000..7d08037d --- /dev/null +++ b/configs/accuracy/v73-fresh-flanders-train-aois.json @@ -0,0 +1,20 @@ +{ + "schema_version": 1, + "purpose": "Fresh train-only Flemish failure-remediation corpus; never calibration or test", + "frozen_before_acquisition": true, + "revision_note": "r2 replaces the rejected Maaseik border AOI with inland Peer; the provider reported zero Flemish orthophoto coverage for the original rectangle before any sample pair was accepted.", + "aois": [ + {"slug": "v73-kontich-lowrise-train", "region": "flanders", "context": "detached-lowrise", "split": "train", "lon": 4.447, "lat": 51.135, "sample_role": "positive"}, + {"slug": "v73-schoten-lowrise-train", "region": "flanders", "context": "detached-lowrise", "split": "train", "lon": 4.500, "lat": 51.250, "sample_role": "positive"}, + {"slug": "v73-lede-ribbon-train", "region": "flanders", "context": "ribbon-development", "split": "train", "lon": 3.985, "lat": 50.966, "sample_role": "positive"}, + {"slug": "v73-tielt-rural-train", "region": "flanders", "context": "rural-town", "split": "train", "lon": 3.327, "lat": 50.999, "sample_role": "positive"}, + {"slug": "v73-borgloon-rural-train", "region": "flanders", "context": "rural-lowrise", "split": "train", "lon": 5.343, "lat": 50.805, "sample_role": "positive"}, + {"slug": "v73-wevelgem-industry-train", "region": "flanders", "context": "industrial", "split": "train", "lon": 3.180, "lat": 50.820, "sample_role": "positive"}, + {"slug": "v73-kaprijke-field-train-bg", "region": "flanders", "context": "farmland-hard-negative", "split": "train", "lon": 3.620, "lat": 51.220, "sample_role": "background_candidate"}, + {"slug": "v73-doel-port-train-bg", "region": "flanders", "context": "port-hard-negative", "split": "train", "lon": 4.260, "lat": 51.310, "sample_role": "background_candidate"}, + {"slug": "v73-adinkerke-dunes-train-bg", "region": "flanders", "context": "dunes-hard-negative", "split": "train", "lon": 2.590, "lat": 51.070, "sample_role": "background_candidate"}, + {"slug": "v73-houthulst-forest-train-bg", "region": "flanders", "context": "forest-hard-negative", "split": "train", "lon": 2.950, "lat": 50.980, "sample_role": "background_candidate"}, + {"slug": "v73-ronse-industry-train-bg", "region": "flanders", "context": "industrial-hard-negative", "split": "train", "lon": 3.610, "lat": 50.750, "sample_role": "background_candidate"}, + {"slug": "v73-peer-field-train-bg", "region": "flanders", "context": "farmland-hard-negative", "split": "train", "lon": 5.450, "lat": 51.120, "sample_role": "background_candidate"} + ] +} diff --git a/docs/accuracy-program/13-v73-flanders-remediation.md b/docs/accuracy-program/13-v73-flanders-remediation.md new file mode 100644 index 00000000..2d23b1c2 --- /dev/null +++ b/docs/accuracy-program/13-v73-flanders-remediation.md @@ -0,0 +1,60 @@ +# V73 Vlaamse foutremediatie + +## Uitkomst + +V73 heeft de datadekking aantoonbaar verbreed, maar geen beter productiemodel +opgeleverd. Daarom blijft het actieve model ongewijzigd. Dit is een geslaagde +fail-closed beslissing: twee nieuw getrainde GPU-kandidaten zijn afgewezen op +de vooraf bevroren en ruimtelijk onafhankelijke V72-calibratieportfolio. + +## Nieuwe dekking + +- twaalf nieuwe Vlaamse train-only AOI's; +- woonwijken, lintbebouwing, landelijke kernen, industrie, haven, bos, duinen + en landbouwcontext; +- officiële orthofoto en GRB als primaire gebouwreferentie; +- 48 canonieke niet-overlappende tegels met 1.710 labels; +- drie lege tegels en meerdere moeilijke, dun bebouwde contexten; +- minimale afstand tot een V72-calibratie-AOI: 9.203 meter, tegenover de gate + van 2.000 meter. + +De oorspronkelijke Maaseik-grensselectie werd door de provider terecht +geweigerd wegens nuldekking binnen de Vlaamse orthofotozone. De gecheckpointte +acquisitie is hervat met een vooraf geregistreerde inlandse vervanging in Peer. + +## Visuele controle + +Alle 48 uiteindelijke tegels zijn via twee contact sheets gecontroleerd. De +eerste export maakte een bestaande edge-coverzwakte zichtbaar: rasters die iets +groter dan 1024 pixels waren, leverden vrijwel identieke tegels op de laatste +pixeloffset. Zestig zulke overlappende tegels zijn vóór training verwijderd en +de nieuwe experimentele exporter bevat hiervoor een regressiegate. + +De controle is AI-assisted en dus expliciet geen vervanging voor de vereiste +onafhankelijke menselijke labelreview. Het corpus en de modellen blijven +daardoor niet-promoveerbaar. + +## GPU-resultaten + +| Model | Precision | Recall | mAP50 | mAP50-95 | Besluit | +|---|---:|---:|---:|---:|---| +| Actief | 0,1577 | 0,1178 | 0,0568 | 0,0218 | behouden | +| V73 agressief, 20 epochs | 0,0124 | 0,2557 | 0,0189 | 0,0038 | afgewezen | +| V73 gecontroleerd, 10 epochs | 0,0179 | 0,3247 | 0,0222 | 0,0057 | afgewezen | + +Beide kandidaten verhogen recall maar produceren veel te veel foutpositieven. +Een drempel- of gemiddelde-scoretruc rechtvaardigt hier geen promotie: precision +en beide mAP-maten regresseren ernstig. + +## Conclusie en resterende grens + +De huidige detector is nog niet nauwkeurig genoeg om landelijke, regionale of +"100% correcte" gebouwclaims te dragen. V73 voorkomt wel dat een slechter model +in productie komt en levert nieuwe, herleidbare foutdekking voor een latere +training. Voor een echte volgende kwaliteitsstap zijn minimaal een grotere +onafhankelijk menselijk beoordeelde trainset, meer pure-backgroundtegels en +governed PICC/UrbIS-contracten nodig. Tot dan moeten resultaten als +modelvoorstellen met bronvergelijking en onzekerheid worden gepresenteerd. + +Alle ruwe manifests, matrices, hashes en contact sheets staan onder +`artifacts/evidence/accuracy/model-training/20260810-v73-flanders-remediation/`. diff --git a/scripts/export_experimental_yolo_train_shard.py b/scripts/export_experimental_yolo_train_shard.py new file mode 100644 index 00000000..8be0ed0a --- /dev/null +++ b/scripts/export_experimental_yolo_train_shard.py @@ -0,0 +1,201 @@ +#!/usr/bin/env python3 +"""Export an isolated train-only YOLO shard without making a release claim. + +This path exists for evidence-generating model experiments when source contracts +are eligible but accepted human label review is still pending. It deliberately +cannot create a training release and must never be used for model promotion. +""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import shutil +import sys +from pathlib import Path + +SCRIPT_DIR = Path(__file__).resolve().parent +if str(SCRIPT_DIR) not in sys.path: + sys.path.insert(0, str(SCRIPT_DIR)) + +from export_operator_yolo_tile_dataset import ( # noqa: E402 + ensure_dependencies, + ensure_yolo_directories, + export_sample_tiles, + file_sha256, + write_dataset_yaml, +) +from training_dataset_eligibility import ( # noqa: E402 + TrainingEligibilityError, + assert_frozen_manifest_training_eligible, +) + +EXPERIMENTAL_ROOT = Path("/app/storage/training/experimental") + + +def _inside(path: Path, root: Path) -> bool: + try: + path.resolve().relative_to(root.resolve()) + return True + except ValueError: + return False + + +def validate_experimental_request(manifest_path: Path, output_dir: Path) -> dict: + if not _inside(output_dir, EXPERIMENTAL_ROOT): + raise ValueError(f"output must remain below {EXPERIMENTAL_ROOT}") + if (manifest_path.parent / "NO_TRAINING.json").exists(): + raise ValueError("source corpus explicitly prohibits training") + manifest = json.loads(manifest_path.read_text(encoding="utf-8-sig")) + if manifest.get("purpose") != "training_corpus": + raise ValueError("source manifest is not a training corpus") + samples = manifest.get("samples") or [] + if not samples: + raise ValueError("source manifest contains no samples") + invalid_splits = sorted( + { + str(sample.get("split") or "").strip().lower() + for sample in samples + if str(sample.get("split") or "").strip().lower() != "train" + } + ) + if invalid_splits: + raise ValueError(f"experimental shard accepts train samples only: {invalid_splits}") + return manifest + + +def is_canonical_train_window(window: dict, tile_size: int) -> bool: + return bool( + int(window["row_off"]) % tile_size == 0 + and int(window["col_off"]) % tile_size == 0 + and int(window["height"]) == tile_size + and int(window["width"]) == tile_size + ) + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--manifest-path", type=Path, required=True) + parser.add_argument("--output-dir", type=Path, required=True) + parser.add_argument("--tile-size", type=int, default=512) + parser.add_argument("--stride", type=int, default=512) + parser.add_argument("--negative-keep-ratio", type=float, default=1.0) + parser.add_argument("--min-label-px", type=float, default=4.0) + parser.add_argument("--min-label-visible-ratio", type=float, default=0.25) + parser.add_argument("--force", action="store_true") + return parser.parse_args() + + +def main() -> int: + args = parse_args() + try: + manifest = validate_experimental_request(args.manifest_path, args.output_dir) + assert_frozen_manifest_training_eligible(args.manifest_path, verify_live=True) + except (ValueError, TrainingEligibilityError) as exc: + raise SystemExit(str(exc)) from exc + ensure_dependencies() + if args.force and args.output_dir.exists(): + shutil.rmtree(args.output_dir) + if args.output_dir.exists() and any(args.output_dir.iterdir()): + raise SystemExit("experimental output directory already exists and is not empty; use --force") + ensure_yolo_directories(args.output_dir) + tiles: list[dict] = [] + for sample in manifest["samples"]: + tiles.extend( + export_sample_tiles( + sample=sample, + manifest_path=args.manifest_path, + output_dir=args.output_dir, + val_slugs=set(), + tile_size=args.tile_size, + stride=args.stride, + negative_keep_ratio=args.negative_keep_ratio, + min_label_px=args.min_label_px, + min_label_visible_ratio=args.min_label_visible_ratio, + background_negative_repeat=1, + drop_low_variance_negatives=False, + blank_range_threshold=3, + reference_source="grb", + reference_layer="buildings", + ) + ) + kept: list[dict] = [] + excluded_edge_cover: list[dict] = [] + for tile in tiles: + if not tile["kept"]: + continue + if is_canonical_train_window(tile["window"], args.tile_size): + kept.append(tile) + continue + excluded_edge_cover.append( + { + "sample_slug": tile["sample_slug"], + "tile_index": tile["tile_index"], + "window": tile["window"], + "reason": "overlapping_edge_cover_tile", + } + ) + Path(tile["image_path"]).unlink(missing_ok=True) + Path(tile["label_path"]).unlink(missing_ok=True) + if not kept: + raise SystemExit("experimental export produced no tiles") + dataset_yaml = write_dataset_yaml(args.output_dir, "building") + # Ultralytics requires a val key while training. Its score is explicitly + # invalid for model selection; independent V72 evaluation is mandatory. + dataset_yaml.write_text( + dataset_yaml.read_text(encoding="utf-8").replace("val: images/val", "val: images/train"), + encoding="utf-8", + ) + asset_hash = hashlib.sha256() + for tile in sorted(kept, key=lambda item: str(item["image_path"])): + asset_hash.update(file_sha256(Path(tile["image_path"])).encode()) + asset_hash.update(file_sha256(Path(tile["label_path"])).encode()) + summary = { + "schema_version": 1, + "status": "experimental_only_human_review_pending", + "promotion_allowed": False, + "release_claim_allowed": False, + "internal_validation_valid_for_selection": False, + "required_independent_evaluation": "frozen V72 calibration portfolio", + "source_manifest": str(args.manifest_path), + "source_manifest_sha256": file_sha256(args.manifest_path), + "dataset_yaml": str(dataset_yaml), + "dataset_yaml_sha256": file_sha256(dataset_yaml), + "tile_asset_chain_sha256": asset_hash.hexdigest(), + "sample_count": len(manifest["samples"]), + "tile_count": len(kept), + "positive_tile_count": sum(not tile["is_negative"] for tile in kept), + "negative_tile_count": sum(tile["is_negative"] for tile in kept), + "excluded_overlapping_edge_cover_tile_count": len(excluded_edge_cover), + "excluded_overlapping_edge_cover_tiles": excluded_edge_cover, + "label_count": sum(int(tile["label_count"]) for tile in kept), + "tile_size": args.tile_size, + "stride": args.stride, + "min_label_px": args.min_label_px, + "min_label_visible_ratio": args.min_label_visible_ratio, + "tiles": kept, + } + summary_path = args.output_dir / "experimental_dataset_summary.json" + summary_path.write_text(json.dumps(summary, indent=2, sort_keys=True), encoding="utf-8") + marker = { + key: summary[key] + for key in ( + "schema_version", + "status", + "promotion_allowed", + "release_claim_allowed", + "source_manifest_sha256", + "dataset_yaml_sha256", + "tile_asset_chain_sha256", + ) + } + (args.output_dir / "EXPERIMENTAL_ONLY.json").write_text( + json.dumps(marker, indent=2, sort_keys=True) + "\n", encoding="utf-8" + ) + print(json.dumps({key: value for key, value in summary.items() if key != "tiles"}, indent=2)) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/train_experimental_yolo_candidate.py b/scripts/train_experimental_yolo_candidate.py new file mode 100644 index 00000000..41a4a857 --- /dev/null +++ b/scripts/train_experimental_yolo_candidate.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python3 +"""CUDA-train an isolated, non-promotable YOLO candidate.""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import shutil +from pathlib import Path + +EXPERIMENTAL_ROOT = Path("/app/storage/training/experimental") + + +def sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as handle: + for chunk in iter(lambda: handle.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def _inside(path: Path, root: Path) -> bool: + try: + path.resolve().relative_to(root.resolve()) + return True + except ValueError: + return False + + +def validate_paths(dataset_dir: Path, output_dir: Path) -> dict: + if not _inside(dataset_dir, EXPERIMENTAL_ROOT) or not _inside(output_dir, EXPERIMENTAL_ROOT): + raise ValueError(f"dataset and output must remain below {EXPERIMENTAL_ROOT}") + marker_path = dataset_dir / "EXPERIMENTAL_ONLY.json" + yaml_path = dataset_dir / "dataset.yaml" + if not marker_path.is_file() or not yaml_path.is_file(): + raise ValueError("experimental marker or dataset.yaml is missing") + marker = json.loads(marker_path.read_text(encoding="utf-8")) + if marker.get("promotion_allowed") is not False or marker.get("release_claim_allowed") is not False: + raise ValueError("experimental marker does not prohibit promotion and release claims") + if marker.get("dataset_yaml_sha256") != sha256(yaml_path): + raise ValueError("experimental dataset.yaml checksum mismatch") + return marker + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--dataset-dir", type=Path, required=True) + parser.add_argument("--base-model", type=Path, required=True) + parser.add_argument("--output-dir", type=Path, required=True) + parser.add_argument("--run-name", default="v73-flanders-remediation") + parser.add_argument("--epochs", type=int, default=20) + parser.add_argument("--imgsz", type=int, default=640) + parser.add_argument("--batch", type=int, default=8) + parser.add_argument("--learning-rate", type=float, default=0.0001) + parser.add_argument("--freeze", type=int, default=10) + parser.add_argument("--workers", type=int, default=0) + return parser.parse_args() + + +def main() -> int: + args = parse_args() + validate_paths(args.dataset_dir, args.output_dir) + if not args.base_model.is_file(): + raise SystemExit(f"base model missing: {args.base_model}") + import torch + from ultralytics import YOLO + + if not torch.cuda.is_available(): + raise SystemExit("CUDA is required for GeoIntel experimental training") + model = YOLO(str(args.base_model)) + result = model.train( + data=str(args.dataset_dir / "dataset.yaml"), + epochs=args.epochs, + imgsz=args.imgsz, + batch=args.batch, + workers=args.workers, + device=0, + project=str(args.output_dir), + name=args.run_name, + exist_ok=False, + pretrained=True, + deterministic=True, + seed=73, + amp=False, + val=False, + lr0=args.learning_rate, + lrf=0.1, + freeze=args.freeze, + mosaic=0.0, + translate=0.05, + scale=0.1, + plots=False, + verbose=True, + ) + run_dir = Path(result.save_dir) + best = run_dir / "weights" / "best.pt" + if not best.is_file(): + best = run_dir / "weights" / "last.pt" + candidate = run_dir / "candidate.experimental.pt" + shutil.copy2(best, candidate) + summary = { + "schema_version": 1, + "status": "trained_experimental_only", + "promotion_allowed": False, + "release_claim_allowed": False, + "human_review_pending": True, + "dataset_yaml_sha256": sha256(args.dataset_dir / "dataset.yaml"), + "base_model": str(args.base_model), + "base_model_sha256": sha256(args.base_model), + "candidate_model": str(candidate), + "candidate_model_sha256": sha256(candidate), + "epochs": args.epochs, + "imgsz": args.imgsz, + "batch": args.batch, + "learning_rate": args.learning_rate, + "freeze": args.freeze, + "workers": args.workers, + "device": torch.cuda.get_device_name(0), + "required_next_gate": "independent frozen V72 calibration evaluation", + } + (run_dir / "experimental_training_summary.json").write_text( + json.dumps(summary, indent=2, sort_keys=True) + "\n", encoding="utf-8" + ) + print(json.dumps(summary, indent=2)) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tests/test_experimental_yolo_guards.py b/tests/test_experimental_yolo_guards.py new file mode 100644 index 00000000..d014284a --- /dev/null +++ b/tests/test_experimental_yolo_guards.py @@ -0,0 +1,28 @@ +from pathlib import Path + +import pytest + +from scripts.export_experimental_yolo_train_shard import ( + is_canonical_train_window, + validate_experimental_request, +) +from scripts.train_experimental_yolo_candidate import validate_paths + + +def test_export_refuses_non_experimental_output(tmp_path: Path) -> None: + manifest = tmp_path / "manifest.json" + manifest.write_text("{}", encoding="utf-8") + with pytest.raises(ValueError, match="output must remain"): + validate_experimental_request(manifest, tmp_path / "output") + + +def test_training_refuses_paths_outside_experimental_root(tmp_path: Path) -> None: + with pytest.raises(ValueError, match="must remain"): + validate_paths(tmp_path / "dataset", tmp_path / "output") + + +def test_train_shard_rejects_near_duplicate_edge_cover_windows() -> None: + canonical = {"row_off": 512, "col_off": 0, "height": 512, "width": 512} + edge_cover = {"row_off": 513, "col_off": 0, "height": 512, "width": 512} + assert is_canonical_train_window(canonical, 512) + assert not is_canonical_train_window(edge_cover, 512)