Skip to content

Commit b831030

Browse files
committed
Address delayed mask creation review comments
1 parent a165e48 commit b831030

2 files changed

Lines changed: 27 additions & 5 deletions

File tree

src/trackers/core/mcbyte/mask_manager.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ def __init__(
8484
) -> None:
8585
self.mask_generator = mask_generator
8686
self.mask_propagator = mask_propagator
87+
if not 0.0 <= mask_creation_bbox_overlap_threshold <= 1.0:
88+
raise ValueError("mask_creation_bbox_overlap_threshold must be between 0 and 1.")
8789
self.mask_creation_bbox_overlap_threshold = mask_creation_bbox_overlap_threshold
8890
self._initialized = False
8991
self._pending_tracklet_ids: set[int] = set()
@@ -147,17 +149,17 @@ def get_updated_masks(
147149
if previous_frame is None:
148150
return None
149151

152+
new_tracklets = [] if new_tracklets is None else new_tracklets
153+
removed_tracklet_ids = [] if removed_tracklet_ids is None else removed_tracklet_ids
154+
155+
self._remove_pending_tracklets(removed_tracklet_ids)
156+
150157
if not self._initialized and len(previous_tracklets) == 0:
151158
return None
152159

153160
if self.mask_propagator is None:
154161
return None
155162

156-
new_tracklets = [] if new_tracklets is None else new_tracklets
157-
removed_tracklet_ids = [] if removed_tracklet_ids is None else removed_tracklet_ids
158-
159-
self._remove_pending_tracklets(removed_tracklet_ids)
160-
161163
if not self._initialized:
162164
candidates = previous_tracklets
163165
clean_tracklets = self._select_clean_tracklets(candidates, previous_tracklets)

tests/core/test_mcbyte_mask_manager.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,3 +432,23 @@ def test_mask_manager_removes_terminated_tracklet_from_pending_pool() -> None:
432432
assert output is not None
433433
assert output.tracklet_mask_dict == {2: 0}
434434
assert manager._pending_tracklet_ids == set()
435+
436+
437+
def test_mask_manager_removes_terminated_tracklet_from_pending_pool_before_initialization() -> None:
438+
manager = MaskManager(
439+
mask_generator=DummyBoxMaskGenerator(),
440+
mask_propagator=DummyIdentityMaskPropagator(),
441+
mask_creation_bbox_overlap_threshold=0.6,
442+
)
443+
444+
manager._pending_tracklet_ids = {1}
445+
446+
output = manager.get_updated_masks(
447+
frame=_make_frame(),
448+
previous_frame=_make_frame(),
449+
previous_tracklets=[],
450+
removed_tracklet_ids=[1],
451+
)
452+
453+
assert output is None
454+
assert manager._pending_tracklet_ids == set()

0 commit comments

Comments
 (0)