MCPcopy Index your code
hub / github.com/FoundationVision/ByteTrack / STrack

Class STrack

tutorials/ctracker/byte_tracker.py:15–144  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 1

updateMethod · 0.70

Calls 1

KalmanFilterClass · 0.90

Tested by

no test coverage detected