From c717201cb2e289e47b1d77861cf7ddff659e4b6d Mon Sep 17 00:00:00 2001 From: Jens Date: Mon, 27 Jul 2026 02:51:10 +0200 Subject: [PATCH] Record dated 75 AOI corpus iteration --- docs/BELGIUM_BUILDING_TRAINING_LOOP.md | 14 +++++++------- docs/CODEX_EXECUTION_LOG.md | 16 ++++++++++++++++ docs/TODO.md | 2 +- ...vision_belgium_building_training_portfolio.py | 2 +- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/docs/BELGIUM_BUILDING_TRAINING_LOOP.md b/docs/BELGIUM_BUILDING_TRAINING_LOOP.md index 0316a568..31b4e01c 100644 --- a/docs/BELGIUM_BUILDING_TRAINING_LOOP.md +++ b/docs/BELGIUM_BUILDING_TRAINING_LOOP.md @@ -46,14 +46,14 @@ simultaneous gate. ## Current gap inventory -The v3 corpus closes basic composition and leakage gaps with 60 independent -AOIs and 10,262 accepted building labels. It adds coastal, ribbon-development, -farmland, park, forest and additional urban contexts. Its remaining known gaps -are: +The v4 dated corpus closes basic composition, leakage and temporal-identity +gaps with 75 independent AOIs and 13,765 accepted building labels. It adds +coastal, ribbon-development, farmland, park, forest and additional urban +contexts. Its remaining known gaps are: -- all rolling regional mosaics have an unknown exact per-pixel observation - date; this is recorded honestly and must be resolved through dated provider - products or change-aware label review, never inferred from download time; +- dated 2025 imagery is used for Flanders and Brussels and the dated 2024 SPW + campaign for Wallonia. Exact flight days remain a later metadata refinement, + but all corpus relations are now measured periods rather than download dates; - GRB/PICC/UrbIS describe ground footprints, whereas visible roofs can remain displaced. The existing detector QA contract therefore uses IoU 0.25; the threshold is frozen and cannot be relaxed per candidate; diff --git a/docs/CODEX_EXECUTION_LOG.md b/docs/CODEX_EXECUTION_LOG.md index 753c3415..2331411f 100644 --- a/docs/CODEX_EXECUTION_LOG.md +++ b/docs/CODEX_EXECUTION_LOG.md @@ -11554,3 +11554,19 @@ Next gate: for Flanders and Wallonia, and recorded one pure-empty false positive at the calibration-selected threshold. Training therefore continued on v3; no model was promoted and human review remains intentionally deferred. + +## 2026-07-27 - Dated imagery corpus v4 and loop continuation + +- Added governed, detection-capable fixed products for SPW Orthophotos 2024, + Digitaal Vlaanderen 2025 and its official Brussels coverage. Rolling + `latest` mosaics are no longer used by the training provisioner. +- Expanded the corpus to 75 AOIs, with 15 training AOIs per region and the + protected validation/calibration/test/background composition unchanged. +- Frozen corpus `building-be-v4-dated-20260727-r1` contains 13,765 accepted + labels from 13,899 inputs. Manifest SHA-256 is + `32f0c969e3131da33497ebffb6782ddf1b58e83b8a46f929818c2140af867fd3`. + Spatial leakage passed and temporal-unknown samples fell from 60 to zero. +- Iteration 2 improved fixed-IoU test F1 from `0.375` to `0.419`; regional F1 + became Brussels `0.566`, Wallonia `0.427`, Flanders `0.222`. The generic-base + iteration did not beat it. Both remained rejected, and iteration 4 started + from the stronger candidate on the dated 75-AOI corpus. diff --git a/docs/TODO.md b/docs/TODO.md index a72720e0..3da71425 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -953,4 +953,4 @@ This file now starts with the current implementation status. Older preparation/b - [x] Freeze the objective train/evaluate/error-analysis loop and regional exit gates. - [x] Expand the second corpus wave to 60 independent AOIs and 10,262 accepted labels. - [ ] Resolve the v3 Flanders and Wallonia generalisation failures through additional training-only evidence and retraining. -- [ ] Replace unknown rolling-mosaic observation time with governed dated imagery where the regional provider exposes it; otherwise retain the explicit temporal limitation. +- [x] Replace rolling-mosaic training inputs with governed dated 2025 Flanders/Brussels and 2024 SPW imagery; retain exact flight-day limitations. diff --git a/scripts/provision_belgium_building_training_portfolio.py b/scripts/provision_belgium_building_training_portfolio.py index 4b653aab..6759a923 100644 --- a/scripts/provision_belgium_building_training_portfolio.py +++ b/scripts/provision_belgium_building_training_portfolio.py @@ -92,7 +92,7 @@ AOIS = ( Aoi("evere-train", "brussels", "dense-residential", "train", 4.400, 50.870), Aoi("berchem-train", "brussels", "suburban", "train", 4.290, 50.860), Aoi("watermael-train", "brussels", "forest-edge-residential", "train", 4.400, 50.810), - Aoi("neder-over-heembeek-train", "brussels", "mixed-urban", "train", 4.380, 50.900), + Aoi("neder-over-heembeek-train", "brussels", "mixed-urban", "train", 4.385, 50.895), Aoi("brussels-canal-south-train-hard", "brussels", "canal-hard-negative", "train", 4.320, 50.820, "background_candidate"), Aoi("woluwe-val", "brussels", "suburban", "val", 4.430, 50.845), Aoi("molenbeek-val", "brussels", "mixed-urban", "val", 4.325, 50.855),