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

Class STrack

tutorials/trades/byte_tracker.py:14–143  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 1

stepMethod · 0.70

Calls 1

KalmanFilterClass · 0.50

Tested by

no test coverage detected