MCPcopy Create free account
hub / github.com/FoundationVision/ByteTrack / STrack

Class STrack

tutorials/fairmot/byte_tracker.py:23–153  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

21from models.utils import _tranpose_and_gather_feat
22
23class STrack(BaseTrack):
24 shared_kalman = KalmanFilter()
25 def __init__(self, tlwh, score):
26
27 # wait activate
28 self._tlwh = np.asarray(tlwh, dtype=np.float)
29 self.kalman_filter = None
30 self.mean, self.covariance = None, None
31 self.is_activated = False
32
33 self.score = score
34 self.tracklet_len = 0
35
36 def predict(self):
37 mean_state = self.mean.copy()
38 if self.state != TrackState.Tracked:
39 mean_state[7] = 0
40 self.mean, self.covariance = self.kalman_filter.predict(mean_state, self.covariance)
41
42 @staticmethod
43 def multi_predict(stracks):
44 if len(stracks) > 0:
45 multi_mean = np.asarray([st.mean.copy() for st in stracks])
46 multi_covariance = np.asarray([st.covariance for st in stracks])
47 for i, st in enumerate(stracks):
48 if st.state != TrackState.Tracked:
49 multi_mean[i][7] = 0
50 multi_mean, multi_covariance = STrack.shared_kalman.multi_predict(multi_mean, multi_covariance)
51 for i, (mean, cov) in enumerate(zip(multi_mean, multi_covariance)):
52 stracks[i].mean = mean
53 stracks[i].covariance = cov
54
55 def activate(self, kalman_filter, frame_id):
56 """Start a new tracklet"""
57 self.kalman_filter = kalman_filter
58 self.track_id = self.next_id()
59 self.mean, self.covariance = self.kalman_filter.initiate(self.tlwh_to_xyah(self._tlwh))
60
61 self.tracklet_len = 0
62 self.state = TrackState.Tracked
63 if frame_id == 1:
64 self.is_activated = True
65 #self.is_activated = True
66 self.frame_id = frame_id
67 self.start_frame = frame_id
68
69 def re_activate(self, new_track, frame_id, new_id=False):
70 self.mean, self.covariance = self.kalman_filter.update(
71 self.mean, self.covariance, self.tlwh_to_xyah(new_track.tlwh)
72 )
73
74 self.tracklet_len = 0
75 self.state = TrackState.Tracked
76 self.is_activated = True
77 self.frame_id = frame_id
78 if new_id:
79 self.track_id = self.next_id()
80 self.score = new_track.score

Callers 1

updateMethod · 0.70

Calls 1

KalmanFilterClass · 0.90

Tested by

no test coverage detected