Spaces:
Sleeping
Sleeping
| import supervision as sv | |
| from supervision import ByteTrack | |
| from trackers import SORTTracker, DeepSORTTracker | |
| def get_tracker(tracker_name, track_activation_threshold = 0.25, lost_track_buffer = 30, | |
| frame_rate = 30.0, minimum_consecutive_frames = 3, minimum_iou_threshold = 0.3): | |
| """ | |
| Factory method to return the correct tracking algorithm based on name. | |
| Args: | |
| tracker_name (str): Name of the tracker ('bytetrack', 'sort', 'deepsort'). | |
| track_activation_threshold (float): Min confidence to activate a track. | |
| lost_track_buffer (int): Number of frames to keep a lost track. | |
| frame_rate (float): Frame rate of the video. | |
| minimum_consecutive_frames (int): Minimum frames an object must persist to be tracked. | |
| minimum_iou_threshold (float): IOU threshold for SORT/DeepSORT. | |
| Returns: | |
| BaseInference: A tracker instance. | |
| Raises: | |
| ValueError: If the tracker_name is unsupported. | |
| """ | |
| if tracker_name == 'bytetrack': | |
| return sv.ByteTrack( | |
| track_activation_threshold=track_activation_threshold, | |
| lost_track_buffer=lost_track_buffer, | |
| minimum_matching_threshold=minimum_iou_threshold, | |
| minimum_consecutive_frames=minimum_consecutive_frames, | |
| frame_rate=frame_rate | |
| ) | |
| elif tracker_name == 'sort': | |
| return SORTTracker( | |
| track_activation_threshold=track_activation_threshold, | |
| lost_track_buffer=lost_track_buffer, | |
| frame_rate=frame_rate, | |
| minimum_consecutive_frames=minimum_consecutive_frames, | |
| minimum_iou_threshold=minimum_iou_threshold | |
| ) | |
| elif tracker_name == 'deepsort': | |
| return DeepSORTTracker( | |
| track_activation_threshold=track_activation_threshold, | |
| lost_track_buffer=lost_track_buffer, | |
| frame_rate=frame_rate, | |
| minimum_consecutive_frames=minimum_consecutive_frames, | |
| minimum_iou_threshold=minimum_iou_threshold | |
| ) | |
| else: | |
| raise ValueError(f"Unsupported tracker: {tracker_name}") | |