ByteTrack类

ByteTrack 是一个用于目标跟踪的高效工具,能够根据检测结果更新其内部状态,并能处理多种参数以优化跟踪表现。其提供的重置和更新方法使其能够灵活应对不同视频的处理需求。

  • ByteTrack 初始化参数

    1. track_activation_threshold (float)

      • 描述:用于激活跟踪的检测置信度阈值。

      • 默认值:0.25

      • 影响:增加该值可提高准确性和稳定性,但可能错过真实检测;减少该值会增加完整性,但可能引入噪声和不稳定性。

    2. lost_track_buffer (int)

      • 描述:丢失跟踪时的帧缓冲数量。

      • 默认值:30

      • 影响:增加该值可改善遮挡处理,显著降低因短暂检测间隙导致的跟踪碎片化或消失的可能性。

    3. minimum_matching_threshold (float)

      • 描述:与检测匹配的阈值。

      • 默认值:0.8

      • 影响:增加该值可提高准确性,但可能导致碎片化;减少该值可改善完整性,但可能引入假阳性和漂移。

    4. frame_rate (int)

      • 描述:视频的帧率。

      • 默认值:30

    5. minimum_consecutive_frames (int)

      • 描述:对象必须被跟踪的连续帧数,才能被视为有效跟踪。

      • 默认值:1

      • 影响:增加该值可以防止因误检测或双重检测而创建意外跟踪,但可能错过较短的轨迹。

  • 主要方法

    1. reset()

      • 描述:重置 ByteTrack 跟踪器的内部状态。

      • 作用:清除跟踪数据(包括已跟踪、丢失和移除的轨迹),重置帧计数器。适合在顺序处理多个视频时使用,以确保每个新视频的跟踪器以干净的状态开始。

    2. 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/

    3. update_with_tensors(tensors)

      • 描述:使用提供的张量更新跟踪器并返回更新后的轨迹。

      • 参数:

        • tensors (ndarray):需要更新的张量。
      • 返回值:返回更新后的轨迹列表 (List[STrack])。

posted on 2024-10-30 09:18  氿痕  阅读(28)  评论(0编辑  收藏  举报