首页 > 其他分享 >supervision ByteTrack类 Day(5)

supervision ByteTrack类 Day(5)

时间:2024-10-30 09:10:06浏览次数:5  
标签:检测 ByteTrack supervision 该值 detections tracker frame Day

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])。

标签:检测,ByteTrack,supervision,该值,detections,tracker,frame,Day
From: https://www.cnblogs.com/WineMarks-Garden/p/18514984

相关文章

  • 关于自己写阿里云OSS相关工具类的自动配置(黑马web开发day14)
    阿里云OSS的自动配置主要分为:驱动类:aliyun-oss-spring-boot-autoconfigure自动配置类:aliyun-oss-spring-boot-starter文章目录aliyun-oss-spring-boot-starter创建aliyun-oss-spring-boot-starteraliyun-oss-spring-boot-autoconfigure创建aliyun-oss-spring-boot-aut......
  • offer68题 Day3
    面试题12.矩阵中的路径#include<iostream>#include<vector>#include<functional>usingnamespacestd;classSolution{public: boolexist(vector<vector<char>>&grid,conststring&target)const { constintm=grid.size(......
  • Offer68题 Day2 树的基础算法
    1.前中后序递归遍历//前序遍历classSolution{public:voidtraversal(TreeNode*cur,vector<int>&vec){if(cur==NULL)return;vec.push_back(cur->val);//中traversal(cur->left,vec);//左traversal(cur-&g......
  • Offer68题 Day3 两个基础算法
    1.DFS深度优先算法/* -深度优先算法 DFS从起始节点出发,沿着一条路径尽可能深入地访问每个节点,直到无法继续时再回退,寻找未访问的节点。 -使用递归实现。*/#include<iostream>#include<vector>usingnamespacestd;voidDFS(intnode,vector<vector<int>>&gra......
  • 代码随想录算法训练营day30| 452. 用最少数量的箭引爆气球 435. 无重叠区间 763.
    学习资料:https://programmercarl.com/0452.用最少数量的箭引爆气球.html重叠区域问题最远位置问题452.用最少数量的箭引爆气球(重叠区域;按左边界排序;i区间的左边界与i-1区间的右边界比较来确定是否重叠;更新i的右边界,取i与i-1区域右边界的最小值)点击查看代码classSolution(ob......
  • 代码随想录一刷-day3
    T209长度最小子数组核心:滑动窗口思想,如何用一个for循环达到两个循环的效果for(intj=0;j<num.size();j++){sum+=nums[j];//外层for循环内负责将窗口结束的坐标++;while(sum>=target){window_length=j-i+1;result=min(result,window_length);sum-=nums[i++];......
  • 代码随想录day14 二叉树(2)
    文章目录day11栈与队列(2)栈与队列的总结day13二叉树(1)day14二叉树(2)day11栈与队列(2)逆波兰表达式求值https://leetcode.cn/problems/evaluate-reverse-polish-notation/逆波兰表达式,也就是后缀表达式,所谓后缀就是指运算符写在后面。平常使用的算式则是一种......
  • 算法刷题记录(day5)
    LC160.相交链表题目描述:给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回null。classSolution{public:ListNode*getIntersectionNode(ListNode*headA,ListNode*headB){if(head......
  • Day20 数据结构
    队列(Queue)队列是一种运算受限的线性结构,遵循先进先出(FIFO)原则。队列是一种受限的线性结构受限之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作  普通队列 queue.Queue,适用于多线程环境。  双端队列 collections.deque,具有队列和......
  • 国庆day1补题
    国庆day1补题单调数据结构单调栈的性质:1.单调栈里的元素具有单调性2.元素加入栈前,会在栈顶端把破坏栈单调性的元素都删除3.使用单调栈可以找到元素向左遍历第一个比他小的元素,也可以找到元素向左遍历第一个比他大的元素,具体的,假设要找到一个元素向前第一个比它大的数,就是维......