ep29 weights + miner.py pipeline tuning (NMS sigma 0.3, SAHI overlap 5%, no adaptive fallback)
Browse files- miner.py +9 -19
- numberplate_weights.onnx +2 -2
miner.py
CHANGED
|
@@ -163,7 +163,9 @@ class Miner:
|
|
| 163 |
# given 0.6 weight on map50 vs 0.4 on false_positive in composite.
|
| 164 |
self.conf_threshold = 0.16
|
| 165 |
# Soft-NMS hyperparameters (Gaussian variant).
|
| 166 |
-
|
|
|
|
|
|
|
| 167 |
# Final score floor after Soft-NMS decay. Was 0.20 — raised threshold
|
| 168 |
# killed decayed real plates (e.g. plate adjacent to a higher-conf
|
| 169 |
# detection gets decayed below 0.20 and dropped). Matches competitor
|
|
@@ -445,8 +447,8 @@ class Miner:
|
|
| 445 |
"""Run the quad-4 tile pipeline and return RAW (pre-Soft-NMS)
|
| 446 |
detections in original-image coordinates."""
|
| 447 |
orig_h, orig_w = image_bgr.shape[:2]
|
| 448 |
-
OVERLAP_X =
|
| 449 |
-
OVERLAP_Y =
|
| 450 |
mx = orig_w // 2
|
| 451 |
my = orig_h // 2
|
| 452 |
|
|
@@ -485,22 +487,10 @@ class Miner:
|
|
| 485 |
|
| 486 |
all_dets = self._quad4_raw_dets(image_bgr)
|
| 487 |
|
| 488 |
-
# Adaptive conf fallback
|
| 489 |
-
#
|
| 490 |
-
#
|
| 491 |
-
#
|
| 492 |
-
if not all_dets:
|
| 493 |
-
_orig_conf = self.conf_threshold
|
| 494 |
-
try:
|
| 495 |
-
self.conf_threshold = 0.10
|
| 496 |
-
all_dets = self._quad4_raw_dets(image_bgr)
|
| 497 |
-
finally:
|
| 498 |
-
self.conf_threshold = _orig_conf
|
| 499 |
-
if all_dets:
|
| 500 |
-
_cuda_log.warning(
|
| 501 |
-
"adaptive conf fallback rescued %d raw dets at conf=0.10",
|
| 502 |
-
len(all_dets),
|
| 503 |
-
)
|
| 504 |
|
| 505 |
# Keep flipped-view detections SEPARATE from original, so we can use
|
| 506 |
# them as a cross-view verifier (hermes-style gate) later — not just
|
|
|
|
| 163 |
# given 0.6 weight on map50 vs 0.4 on false_positive in composite.
|
| 164 |
self.conf_threshold = 0.16
|
| 165 |
# Soft-NMS hyperparameters (Gaussian variant).
|
| 166 |
+
# Tightened 0.5 → 0.3: sharper decay collapses near-duplicates from SAHI
|
| 167 |
+
# tile-seam overlaps faster, dropping more below the 0.01 score floor.
|
| 168 |
+
self.soft_nms_sigma = 0.3
|
| 169 |
# Final score floor after Soft-NMS decay. Was 0.20 — raised threshold
|
| 170 |
# killed decayed real plates (e.g. plate adjacent to a higher-conf
|
| 171 |
# detection gets decayed below 0.20 and dropped). Matches competitor
|
|
|
|
| 447 |
"""Run the quad-4 tile pipeline and return RAW (pre-Soft-NMS)
|
| 448 |
detections in original-image coordinates."""
|
| 449 |
orig_h, orig_w = image_bgr.shape[:2]
|
| 450 |
+
OVERLAP_X = 35 # ~5% of 1408/2 (was 70/10%; halved to cut tile-seam duplicates)
|
| 451 |
+
OVERLAP_Y = 19 # ~5% of 768/2 (was 38/10%; halved to cut tile-seam duplicates)
|
| 452 |
mx = orig_w // 2
|
| 453 |
my = orig_h // 2
|
| 454 |
|
|
|
|
| 487 |
|
| 488 |
all_dets = self._quad4_raw_dets(image_bgr)
|
| 489 |
|
| 490 |
+
# Adaptive conf fallback removed Apr 26: ep 29 has higher recall than
|
| 491 |
+
# v3 so the empty-first-pass case is rarer, and when it did fire the
|
| 492 |
+
# conf=0.10 retry generated phantoms (FP drag) AND added a ~3s
|
| 493 |
+
# inference pass (latency gate trigger). See mining_history.md.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 494 |
|
| 495 |
# Keep flipped-view detections SEPARATE from original, so we can use
|
| 496 |
# them as a cross-view verifier (hermes-style gate) later — not just
|
numberplate_weights.onnx
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f585a11f502df54f9610520b0cdef3b5414732a61543ab63113d0b0eb1239c41
|
| 3 |
+
size 19761271
|