Add hard-negative balanced YOLO tile export
GeoIntel CI / docs-smoke (push) Has been cancelled
GeoIntel CI / contract-smoke (push) Has been cancelled

This commit is contained in:
Codex
2026-07-07 23:01:51 +02:00
parent 558c17129b
commit 9bd6752128
6 changed files with 187 additions and 25 deletions
+12
View File
@@ -7,6 +7,18 @@
# Changelog
## Sprint 133 Hard-negative-balanced YOLO candidate (2026-07-07)
- Added `--background-negative-repeat` / `OPERATOR_YOLO_BACKGROUND_NEGATIVE_REPEAT` support to `scripts/export_operator_yolo_tile_dataset.py` so train-split background-candidate negative tiles can be repeated deterministically without duplicating validation tiles.
- Added exported tile provenance fields `sample_role`, `repeat_index` and `is_repeated_background_negative` plus regression coverage in `backend/tests/test_sprint130_operator_yolo_tile_dataset.py`.
- Live Tower export produced `/app/storage/operator-data/yolo-building-tile-hardneg160r8` with tile size `160`, stride `80`, background repeat `8`, 864 tiles, 260 positive tiles, 604 negative tiles, 11213 labels, 756 train tiles and 108 validation tiles.
- Live Tower 40-epoch CPU training produced `/app/models/geointel-building-yolov8n-hardneg160r8e40.pt`; the model catalog exposes it as `geointel-building-yolov8n-hardneg160r8e40-pt` with SHA256 `7a77bd9f68e4c3927ffc8a8cd978a81067b02f42cffe77ada5334b5f8dbb6b50`.
- Live YOLO preflight loaded the model successfully with `status=ready`, `model_load_ok=true`, `manifest_valid=true`, `tile_paths_exist=true`, `will_download_models=false` and `will_run_inference=false`.
- Live 60-run dense QA matrix showed `geointel-building-yolov8n-expanded160e50-pt` remains the better dense-AOI candidate; hardneg160r8e40 underperformed it on Geel, Mol, Turnhout and Retie.
- Live 36-run background matrix showed hardneg160r8e40 materially reduced false-positive pressure: Kasterlee-bos dropped from expanded160e50's 38/46/76 detections to 5/9/25 at thresholds `0.25`/`0.15`/`0.05`, and Postel-bos/Lommel-heide stayed at 0 detections across all thresholds.
- Decision: hardneg160r8e40 is useful evidence for a low-false-positive training direction, but it should not become the V1 default because dense-AOI recall/F1 regressed. The next model pass should combine stronger positive coverage with hard-negative balancing or test a stronger aerial-building architecture.
- No Training Studio UI, API contract change, provider fetching, model auto-provisioning, fake detections or app-side model training behavior was introduced.
## Sprint 132 Operator hard-negative detection matrix (2026-07-07)
- Added `scripts/run_operator_hard_negative_detection_matrix.sh` to score configured-YOLO false-positive pressure on documented background-candidate operator AOIs without uploading reference vectors or running QA/QC.