Document operator YOLO training benchmark
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 05:34:31 +02:00
parent 39367684d8
commit 404b37fa07
3 changed files with 27 additions and 3 deletions
+21 -2
View File
@@ -24,15 +24,34 @@ Tested:
- Live Tower export passed: `/app/storage/operator-data/yolo-building-dataset` contains 3 images and 1427 labels from the current Geel/Mol/Turnhout samples.
- Live Tower training smoke passed with the existing `/app/models/yolov8n.pt` base model and wrote `/app/models/geointel-building-yolov8n-smoke.pt`.
- The first live smoke showed Ultralytics fetching an auxiliary plot font. The wrapper now sets `plots=False` and seeds `Arial.ttf` from an existing local system font before importing Ultralytics so the operator smoke path does not invoke plot/font network behavior.
- Full local readiness passed after the final wrapper hardening: `bash scripts/run_readiness_check.sh` ran 396 backend tests, frontend typecheck/build, Alembic head and smoke syntax checks.
- Pushed commits through `3936768` to Gitea and reset Tower `/mnt/user/appdata/geointel` to the same commit.
- Live Tower no-font smoke passed after deleting `/app/storage/ultralytics/Ultralytics/Arial.ttf`; the wrapper seeded the font locally and the 1-epoch run completed without the previous font fetch line.
- Live Tower final 8-epoch training smoke passed:
- output model: `/app/models/geointel-building-yolov8n-operator8.pt`
- catalog asset: `geointel-building-yolov8n-operator8-pt`
- SHA256: `071d64c89a8fd28f915f7a5a553e2d164942721292693a1612c725284c6e2e1e`
- training summary: `/app/storage/training/operator-yolo/geointel-building-yolov8n-operator8/training_summary.json`.
- Live API preflight passed for `geointel-building-yolov8n-operator8-pt` with `status=ready`, `model_load_ok=true`, `manifest_valid=true`, `tile_paths_exist=true`, `will_download_models=false` and `will_run_inference=false`.
- Live 36-run multi-sample QA matrix completed:
- command compared `geointel-building-yolov8n-operator8-pt` with `yolov8s-building-segmentation-pt` over Geel, Mol and Turnhout, tile sizes `512`/`640`, thresholds `0.50`/`0.25`/`0.15`.
- output: `/mnt/user/appdata/geointel/artifacts/detection-quality-matrix/multi-sample/20260707T033048Z/multi_sample_quality_summary.json`.
- `geointel-building-yolov8n-operator8-pt` produced zero detections for every sample/tile combination at thresholds `0.15` through `0.50`.
- best overall remained `yolov8s-building-segmentation-pt` on Mol, tile `640`, threshold `0.15`: 55 detections, 9 matches, 46 false positives, 365 false negatives, precision `0.16363636363636364`, recall `0.02406417112299465`, F1 `0.04195804195804196`.
- Live low-threshold operator8 matrix completed:
- output: `/mnt/user/appdata/geointel/artifacts/detection-quality-matrix/multi-sample/20260707T033230Z/multi_sample_quality_summary.json`.
- at threshold `0.05`, operator8 still produced zero detections on all samples.
- at threshold `0.01`, operator8 produced many false positives and almost no matches; best case was Turnhout tile `512` with 280 detections, 2 matches, 278 false positives, precision `0.007142857142857143`, recall `0.00258732212160414`, F1 `0.003798670465337132`.
Open:
- Run the exporter and training smoke inside the AI-enabled Tower runtime, then benchmark the trained artifact through the existing multi-sample Detection + QA matrix.
- None for the operator training/export tooling itself.
Limitations:
- This is operator tooling only. It does not add Training Studio, browser training controls, provider fetching, fake detections, model auto-provisioning or API contract changes.
- The 3-sample/8-epoch operator model is not production-useful and should not be activated as the default building detector.
Next recommended pass:
- Generate the local YOLO dataset from the current Geel/Mol/Turnhout samples, train a small local model smoke from `yolov8n.pt`, and compare it against the current `yolov8s-building-segmentation-pt` benchmark.
- Improve the training dataset before more model work: generate tile-level YOLO labels with enough positive/negative tiles, add more AOIs, then train a longer local model and rerun the same persisted QA matrix.
## Sprint 128 Stronger building model runtime benchmark (2026-07-07)
+2 -1
View File
@@ -405,4 +405,5 @@ This file now starts with the current implementation status. Older preparation/b
- [x] Add safe local YOLO model env configuration helper for Unraid/Tower runtime activation.
- [x] Harden configured YOLO inference for single-band raster tiles and wrapped runtime errors.
- [x] Add operator-only YOLO dataset export and local training-smoke wrapper for real sample calibration.
- [ ] Train/evaluate a local GeoIntel building detector from the operator samples and only activate it after QA/QC matrix improvement.
- [x] Train/evaluate a small local GeoIntel building-detector smoke from the current operator samples and reject it because QA/QC did not improve.
- [ ] Build a larger tile-level training dataset with more AOIs, positive/negative tiles and validation splits before the next local model attempt.