fix(ai): bind model scope to immutable geometry
This commit is contained in:
+26
-2
@@ -121,8 +121,13 @@ Environment variables:
|
||||
- `YOLO_REQUIRE_CUDA` (set to `true` on the production server; inference then
|
||||
fails closed when CUDA is unavailable or `YOLO_DEVICE` selects CPU)
|
||||
- `YOLO_MODEL_CLASSES` (the active promoted detector is `building` only)
|
||||
- `YOLO_ENFORCE_VALIDATION_SCOPE` and `YOLO_VALIDATED_AREA_NAMES` (production
|
||||
rejects inference when the raster is not bound to a persisted validated Area)
|
||||
- `YOLO_ENFORCE_VALIDATION_SCOPE` (keep `true` in production)
|
||||
- `YOLO_VALIDATION_SCOPE_MANIFEST_PATH` and
|
||||
`YOLO_VALIDATION_SCOPE_MANIFEST_SHA256` (production accepts inference only
|
||||
when the exact active model bytes match the manifest and the complete
|
||||
persisted Dataset AOI is covered by its valid EPSG:4326 geometry)
|
||||
- `YOLO_VALIDATED_AREA_NAMES` is deprecated display metadata and never grants
|
||||
inference access
|
||||
- `YOLO_IMAGE_SIZE`
|
||||
- `YOLO_MAX_TILES`
|
||||
- `YOLO_MAX_DETECTIONS`
|
||||
@@ -136,6 +141,25 @@ the upstream default would cap recall before QA/QC begins. Operators may lower
|
||||
the value for small rasters or raise it for dense urban tiles after reviewing
|
||||
runtime and false-positive behavior.
|
||||
|
||||
Create a new immutable scope artifact whenever either the model bytes or the
|
||||
governed validation boundary changes:
|
||||
|
||||
```bash
|
||||
python /app/scripts/build_model_validation_scope_manifest.py \
|
||||
--model /app/models/active-building.pt \
|
||||
--model-id yolo-configured \
|
||||
--scope-geojson /app/storage/operator-data/geographic-scopes/kempen-transport-region/kempen_transport_region_boundary_YYYY-MM-DD.geojson \
|
||||
--scope-key kempen-transport-region \
|
||||
--authority "Digitaal Vlaanderen VRBG/Refgem" \
|
||||
--snapshot-date YYYY-MM-DD \
|
||||
--output /app/storage/operator-data/model-validation-scopes/active-building-model.json
|
||||
```
|
||||
|
||||
The command refuses to overwrite an existing manifest and prints the checksum
|
||||
for `YOLO_VALIDATION_SCOPE_MANIFEST_SHA256`. Area names are intentionally not
|
||||
part of this decision: they are mutable presentation text, not accuracy or
|
||||
authorization evidence.
|
||||
|
||||
After YOLO boxes are georeferenced, configured-YOLO runs apply a GeoIntel
|
||||
cross-tile duplicate suppression pass before persistence. Candidates are grouped
|
||||
by canonical class and sorted by confidence; lower-confidence same-class
|
||||
|
||||
Reference in New Issue
Block a user