fix: restore reliable authenticated live recognition
This commit is contained in:
parent
0e23425ef0
commit
934615b593
40 changed files with 2556 additions and 820 deletions
|
|
@ -122,16 +122,30 @@ class _SessionByteTrack(BYTETracker):
|
|||
class TrackOut:
|
||||
"""One tracked object for a frame."""
|
||||
|
||||
__slots__ = ("track_id", "box", "score", "det_index")
|
||||
__slots__ = ("track_id", "box", "score", "det_index", "low_score")
|
||||
|
||||
def __init__(self, track_id: int, box: List[int], score: float, det_index: Optional[int]):
|
||||
def __init__(
|
||||
self,
|
||||
track_id: int,
|
||||
box: List[int],
|
||||
score: float,
|
||||
det_index: Optional[int],
|
||||
*,
|
||||
low_score: bool = False,
|
||||
):
|
||||
self.track_id = int(track_id)
|
||||
self.box = [int(v) for v in box]
|
||||
self.score = float(score)
|
||||
self.det_index = None if det_index is None or det_index < 0 else int(det_index)
|
||||
# ByteTrack's second pass keeps an id alive on a low-score box. That box
|
||||
# is not a new measurement: callers must not crop or re-label from it.
|
||||
self.low_score = bool(low_score)
|
||||
|
||||
def __repr__(self) -> str: # pragma: no cover - debug helper
|
||||
return f"TrackOut(id={self.track_id}, box={self.box}, score={self.score:.3f}, det={self.det_index})"
|
||||
return (
|
||||
f"TrackOut(id={self.track_id}, box={self.box}, score={self.score:.3f}, "
|
||||
f"det={self.det_index}, low={self.low_score})"
|
||||
)
|
||||
|
||||
|
||||
class SessionTracker:
|
||||
|
|
@ -171,14 +185,17 @@ class SessionTracker:
|
|||
outputs: List[TrackOut] = []
|
||||
if rows is None or len(rows) == 0:
|
||||
return outputs
|
||||
high = float(self.args.track_high_thresh)
|
||||
for row in np.asarray(rows):
|
||||
# [x1, y1, x2, y2, track_id, score, cls, idx]
|
||||
score = float(row[5])
|
||||
outputs.append(
|
||||
TrackOut(
|
||||
track_id=int(row[4]),
|
||||
box=[int(round(row[0])), int(round(row[1])), int(round(row[2])), int(round(row[3]))],
|
||||
score=float(row[5]),
|
||||
score=score,
|
||||
det_index=int(row[7]) if len(row) > 7 else None,
|
||||
low_score=score < high,
|
||||
)
|
||||
)
|
||||
return outputs
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue