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

Class STrack

tutorials/jde/byte_tracker.py:11–134  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 1

updateMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected