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

Function _track_individuals

deeplabcut/core/trackingutils.py:789–819  ·  view source on GitHub ↗
(individuals, min_hits=1, max_age=5, similarity_threshold=0.6, track_method="ellipse")

Source from the content-addressed store, hash-verified

787
788
789def _track_individuals(individuals, min_hits=1, max_age=5, similarity_threshold=0.6, track_method="ellipse"):
790 if track_method not in TRACK_METHODS:
791 raise ValueError(f"Unknown {track_method} tracker.")
792
793 if track_method == "ellipse":
794 tracker = SORTEllipse(max_age, min_hits, similarity_threshold)
795 elif track_method == "box":
796 tracker = SORTBox(max_age, min_hits, similarity_threshold)
797 else:
798 n_bodyparts = individuals[0][0].shape[0]
799 tracker = SORTSkeleton(n_bodyparts, max_age, min_hits, similarity_threshold)
800
801 tracklets = defaultdict(dict)
802 all_hyps = dict()
803 for i, (multi, single) in enumerate(tqdm(individuals)):
804 if single is not None:
805 tracklets["single"][i] = single
806 if multi is None:
807 continue
808 if track_method == "box":
809 # TODO: get cropping parameters and utilize!
810 xy = calc_bboxes_from_keypoints(multi)
811 else:
812 xy = multi[..., :2]
813 hyps = tracker.track(xy)
814 all_hyps[i] = hyps
815 for hyp in hyps:
816 tracklet_id, pred_id = hyp[-2:].astype(int)
817 if pred_id != -1:
818 tracklets[tracklet_id][i] = multi[pred_id]
819 return tracklets, all_hyps

Callers

nothing calls this directly

Calls 5

trackMethod · 0.95
SORTEllipseClass · 0.85
SORTBoxClass · 0.85
SORTSkeletonClass · 0.85

Tested by

no test coverage detected