2026-06-06 · shooter A · 10 m · held-out target
| reading | proposed | matched | missed | spurious | offset |
|---|---|---|---|---|---|
| cv_blob | 23 | 23 | 14 | 0 | 0.74 mm |
| yolo ≥ 0.25 | 32 | 32 | 5 | 0 | 0.46 mm |
move the threshold
| yolo cut at | proposed | matched | missed | spurious | offset |
|---|---|---|---|---|---|
| yolo ≥ 0.05 | 51 | 34 | 3 | 17 | 0.44 mm |
| yolo ≥ 0.10 (the default) | 44 | 34 | 3 | 10 | 0.44 mm |
| yolo ≥ 0.15 | 39 | 33 | 4 | 6 | 0.45 mm |
| yolo ≥ 0.25 | 32 | 32 | 5 | 0 | 0.46 mm |
| yolo ≥ 0.40 | 24 | 24 | 13 | 0 | 0.45 mm |
A detector only proposes: a person confirms every target, so a spurious hole costs one click to remove and a missed one costs a click to place. Lowering the threshold trades misses for spurious holes. 0.10 is the default the real app ships with. Two readings are the same hole within 4 mm.
confirmed by a person
the truth every reading is scored against
cv_blob
classic blob detection, no threshold to move
yolo ≥ 0.25
the trained detector, cut at the threshold chosen above