MCPcopy Index your code
hub / github.com/DeepLabCut/DeepLabCut / track

Method track

deeplabcut/core/trackingutils.py:550–610  ·  view source on GitHub ↗
(self, poses)

Source from the content-addressed store, hash-verified

548 return mat
549
550 def track(self, poses):
551 self.n_frames += 1
552
553 if not len(self.trackers):
554 for pose in poses:
555 tracker = SkeletonTracker(self.n_bodyparts)
556 tracker.state = pose
557 self.trackers.append(tracker)
558
559 poses_ref = []
560 for _, tracker in enumerate(self.trackers):
561 pose_ref = tracker.predict()
562 poses_ref.append(pose_ref.reshape((-1, 2)))
563
564 # mat = self.calc_pairwise_oks(poses, poses_ref)
565 mat = self.calc_pairwise_hausdorff_dist(poses, poses_ref)
566 row_indices, col_indices = linear_sum_assignment(mat, maximize=False)
567
568 unmatched_poses = [p for p, _ in enumerate(poses) if p not in row_indices]
569 unmatched_trackers = [t for t, _ in enumerate(poses_ref) if t not in col_indices]
570 # Remove matched detections with low OKS
571 # matches = []
572 # for row, col in zip(row_indices, col_indices):
573 # if mat[row, col] < self.oks_threshold:
574 # unmatched_poses.append(row)
575 # unmatched_trackers.append(col)
576 # else:
577 # matches.append([row, col])
578 # if not len(matches):
579 # matches = np.empty((0, 2), dtype=int)
580 # else:
581 # matches = np.stack(matches)
582 matches = np.c_[row_indices, col_indices]
583
584 animalindex = []
585 for t, tracker in enumerate(self.trackers):
586 if t not in unmatched_trackers:
587 ind = matches[matches[:, 1] == t, 0][0]
588 animalindex.append(ind)
589 tracker.update(poses[ind])
590 else:
591 animalindex.append(-1)
592
593 for i in unmatched_poses:
594 tracker = SkeletonTracker(self.n_bodyparts)
595 tracker.state = poses[i]
596 self.trackers.append(tracker)
597 animalindex.append(i)
598
599 states = []
600 i = len(self.trackers)
601 for tracker in reversed(self.trackers):
602 i -= 1
603 if tracker.time_since_update > self.max_age:
604 self.trackers.pop()
605 continue
606 state = tracker.predict()
607 states.append(np.r_[state, [tracker.id, int(animalindex[i])]])

Callers 1

_track_individualsFunction · 0.95

Calls 5

updateMethod · 0.95
SkeletonTrackerClass · 0.85
emptyMethod · 0.80
predictMethod · 0.45

Tested by

no test coverage detected