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

Class STrack

yolox/tracker/byte_tracker.py:13–142  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 1

updateMethod · 0.70

Calls 1

KalmanFilterClass · 0.70

Tested by

no test coverage detected