GeoIntel release gates / Compile, test, contracts and builds (push) Successful in 1m49s
GeoIntel release gates / Python and npm vulnerability policy (push) Successful in 21s
GeoIntel release gates / Production AI image, SBOM and container scan (push) Successful in 5m39s
GeoIntel release gates / Deploy exact gated revision to Unraid (push) Failing after 58m43s
1.2 KiB
1.2 KiB
QA/QC Matching Algorithm
Goal
Compare AI detections/segmentations with a reference layer such as GRB buildings.
Inputs
- predicted polygons
- reference polygons
- class filter
- IoU threshold, default 0.5
Steps
- Validate CRS alignment.
- Reproject to analytical CRS.
- Build spatial indexes.
- For every predicted polygon, find candidate reference polygons by bbox intersection.
- Compute IoU for candidates.
- Assign best match above threshold greedily, one reference per prediction.
- Count true positives, false positives, false negatives.
- Compute precision, recall, F1, mean IoU.
- Produce unmatched prediction layer and unmatched reference layer.
Metrics
precision = TP / (TP + FP)
recall = TP / (TP + FN)
f1 = 2 * precision * recall / (precision + recall)
IoU = intersection_area / union_area
Output Layers
- matched predictions
- false positives
- false negatives
- low IoU matches
Edge Cases
- empty predictions and empty reference: score should be explicit
no_objectsnot perfect success; - empty predictions with reference: recall 0;
- predictions with empty reference: precision 0;
- invalid polygons must be repaired or excluded with warning.