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

Class STrack

tutorials/qdtrack/tracker_reid_motion.py:15–162  ·  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, temp_feat, buffer_size=30):
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 self.smooth_feat = None
29 self.update_features(temp_feat)
30 self.features = deque([], maxlen=buffer_size)
31 self.alpha = 0.9
32
33 def update_features(self, feat):
34 feat /= np.linalg.norm(feat)
35 self.curr_feat = feat
36 if self.smooth_feat is None:
37 self.smooth_feat = feat
38 else:
39 self.smooth_feat = self.alpha * self.smooth_feat + (1 - self.alpha) * feat
40 self.features.append(feat)
41 self.smooth_feat /= np.linalg.norm(self.smooth_feat)
42
43 def predict(self):
44 mean_state = self.mean.copy()
45 if self.state != TrackState.Tracked:
46 mean_state[7] = 0
47 self.mean, self.covariance = self.kalman_filter.predict(mean_state, self.covariance)
48
49 @staticmethod
50 def multi_predict(stracks):
51 if len(stracks) > 0:
52 multi_mean = np.asarray([st.mean.copy() for st in stracks])
53 multi_covariance = np.asarray([st.covariance for st in stracks])
54 for i, st in enumerate(stracks):
55 if st.state != TrackState.Tracked:
56 multi_mean[i][7] = 0
57 multi_mean, multi_covariance = STrack.shared_kalman.multi_predict(multi_mean, multi_covariance)
58 for i, (mean, cov) in enumerate(zip(multi_mean, multi_covariance)):
59 stracks[i].mean = mean
60 stracks[i].covariance = cov
61
62 def activate(self, kalman_filter, frame_id):
63 """Start a new tracklet"""
64 self.kalman_filter = kalman_filter
65 self.track_id = self.next_id()
66 self.mean, self.covariance = self.kalman_filter.initiate(self.tlwh_to_xyah(self._tlwh))
67
68 self.tracklet_len = 0
69 self.state = TrackState.Tracked
70 if frame_id == 1:
71 self.is_activated = True
72 # self.is_activated = True

Callers 1

updateMethod · 0.70

Calls 1

KalmanFilterClass · 0.90

Tested by

no test coverage detected