task1 / src /pmdm /baseline.py
siddhant20's picture
Add files using upload-large-folder tool
d667566 verified
Raw History Blame Contribute Delete
1.08 kB
"""Classical difference baseline — the floor every learned model must beat.
Measured on the first 40 training pairs: recall 0.57, precision 0.015, F1 0.03.
"""
from __future__ import annotations
import cv2
import numpy as np
from .preprocess import load_prepared
def baseline_pair(split: str, idx: int, diff_thr: float = 25.0, min_area: int = 12,
prep_root=None):
_, _, tn, pn = load_prepared(split, idx, prep_root)
diff = np.abs(pn.astype(np.float32) - tn.astype(np.float32))
mask = (diff > diff_thr).astype(np.uint8)
mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, np.ones((3, 3), np.uint8))
n, _, stats, _ = cv2.connectedComponentsWithStats(mask, 8)
boxes, scores = [], []
for i in range(1, n):
x, y, w, h, area = stats[i]
if area < min_area:
continue
boxes.append([x, y, x + w, y + h])
scores.append(min(1.0, area / 200.0))
if not boxes:
return np.zeros((0, 4), np.float32), np.zeros(0, np.float32)
return np.asarray(boxes, np.float32), np.asarray(scores, np.float32)