ByteTrack类
ByteTrack
是一个用于目标跟踪的高效工具,能够根据检测结果更新其内部状态,并能处理多种参数以优化跟踪表现。其提供的重置和更新方法使其能够灵活应对不同视频的处理需求。
-
ByteTrack 初始化参数
-
track_activation_threshold (float)
-
描述:用于激活跟踪的检测置信度阈值。
-
默认值:0.25
-
影响:增加该值可提高准确性和稳定性,但可能错过真实检测;减少该值会增加完整性,但可能引入噪声和不稳定性。
-
-
lost_track_buffer (int)
-
描述:丢失跟踪时的帧缓冲数量。
-
默认值:30
-
影响:增加该值可改善遮挡处理,显著降低因短暂检测间隙导致的跟踪碎片化或消失的可能性。
-
-
minimum_matching_threshold (float)
-
描述:与检测匹配的阈值。
-
默认值:0.8
-
影响:增加该值可提高准确性,但可能导致碎片化;减少该值可改善完整性,但可能引入假阳性和漂移。
-
-
frame_rate (int)
-
描述:视频的帧率。
-
默认值:30
-
-
minimum_consecutive_frames (int)
-
描述:对象必须被跟踪的连续帧数,才能被视为有效跟踪。
-
默认值:1
-
影响:增加该值可以防止因误检测或双重检测而创建意外跟踪,但可能错过较短的轨迹。
-
-
-
主要方法
-
reset()
-
描述:重置
ByteTrack
跟踪器的内部状态。 -
作用:清除跟踪数据(包括已跟踪、丢失和移除的轨迹),重置帧计数器。适合在顺序处理多个视频时使用,以确保每个新视频的跟踪器以干净的状态开始。
-
-
update_with_detections(detections)
-
描述:使用提供的检测结果更新跟踪器并返回更新后的检测结果,该方法会为每个检测结果分配一个唯一的tracker_id
-
参数:
detections
(Detections):需要传入跟踪器的检测结果。
-
示例代码:
import supervision as sv from ultralytics import YOLO model = YOLO('yolo11n.pt') tracker = sv.ByteTrack() box_annotator = sv.BoxAnnotator() label_annotator = sv.LabelAnnotator() def callback(frame: np.ndarray, index: int) -> np.ndarray: results = model(frame)[0] detections = sv.Detections.from_ultralytics(results) detections = tracker.update_with_detections(detections) labels = [f"#{tracker_id}" for tracker_id in detections.tracker_id] annotated_frame = box_annotator.annotate( scene=frame.copy(), detections=detections) annotated_frame = label_annotator.annotate( scene=annotated_frame, detections=detections, labels=labels) return annotated_frame sv.process_video( source_path=<SOURCE_VIDEO_PATH>, target_path=<TARGET_VIDEO_PATH>, callback=callback )
这里由于要处理视频,具体处理结果无法详细展示。详情可见https://supervision.roboflow.com/latest/trackers/
-
-
update_with_tensors(tensors)
-
描述:使用提供的张量更新跟踪器并返回更新后的轨迹。
-
参数:
tensors
(ndarray):需要更新的张量。
-
返回值:返回更新后的轨迹列表 (
List[STrack]
)。
-
-