Safemotion Lib
Loading...
Searching...
No Matches
byte_tracker_mod_runner.py
Go to the documentation of this file.
1from smutils.bbox.result_transforms import outs2results
2from smutils.bbox.transforms import bbox_cxcyah_to_xyxy
3# from .base_tracker_runner import BaseTrackerRunner
4
5from smtrack.models.trackers.byte_tracker_mod import ByteTrackerMod
6from smtrack.models.motion.optical_flow_motion import OpticalFlowMotion
7
8import numpy as np
9
11 def __init__(self, tracker=None, motion=None):
12 # super().__init__(tracker=tracker, motion=motion)
13 self.motion = OpticalFlowMotion()
14 self.tracker = ByteTrackerMod()
15
16 def run_tracker(self, image, mask, det_bboxes, det_labels, frame_id, num_classes=1):
17 track_bboxes, track_labels, track_ids = self.tracker.track(
18 img=image,
19 mask=mask,
20 motion=self.motion,
21 bboxes=det_bboxes,
22 labels=det_labels,
23 frame_id=frame_id)
24
25 track_results = outs2results(
26 bboxes=track_bboxes,
27 labels=track_labels,
28 ids=track_ids,
29 num_classes=num_classes)
30 det_results = outs2results(
31 bboxes=det_bboxes, labels=det_labels, num_classes=num_classes)
32
33 return dict(
34 det_bboxes=det_results['bbox_results'],
35 track_bboxes=track_results['bbox_results'])
36
37 def get_tracks(self):
38 track_ids = []
39 track_bboxes = np.zeros((0, 4))
40 for track_id in self.tracker.tracks.keys():
41 if not self.tracker.tracks[track_id].valid:
42 continue
43
44 track_bboxes = np.concatenate(
45 (track_bboxes, self.tracker.tracks[track_id].mean[:4][None]), axis=0)
46 track_ids.append(track_id)
47
48 return track_bboxes, track_ids
run_tracker(self, image, mask, det_bboxes, det_labels, frame_id, num_classes=1)