标签: Supervision

  • Supervision:Roboflow 开源计算机视觉工具库,46.3K+ Stars 让 CV 开发不再重复造轮子

    Supervision:Roboflow 开源计算机视觉工具库,46.3K+ Stars 让 CV 开发不再重复造轮子

    🔍 Supervision

    Roboflow 开源计算机视觉工具库

    ⭐ 46.3K+ Stars
    🍴 4.1K+ Forks
    🐍 Python
    📜 MIT 许可

    📌 项目简介

    Supervision 是 Roboflow 团队开发的开源 Python 计算机视觉工具库,提供模型无关的检测、跟踪、标注和数据集处理能力。它让你专注于业务场景,而不是重复编写基础 CV 工具函数。

    ✨ 核心特色

    🔗 模型无关设计

    内置 Ultralytics (YOLO)、Transformers、MMDetection、RF-DETR 等主流库的连接器,统一输出 sv.Detections 格式,换模型不改代码。

    🎨 丰富可视化标注

    提供 BoxAnnotator、MaskAnnotator、EllipseAnnotator、LabelAnnotator 等多种标注器,高度可定制,一行代码完成结果可视化。

    📦 数据集处理

    支持 COCO、YOLO、Pascal VOC、YOLOv8 Oriented Bounding Box 等格式的加载、拆分、合并、格式转换,一站式数据集管理。

    📹 视频分析工具

    内置目标跟踪(ByteTrack/Norfair)、区域计数、速度估计、驻留时间分析等常见 CV 任务的配套工具,开箱即用。

    ⚙️ 安装要求和过程

    环境要求

    • Python ≥ 3.10
    • 操作系统:Windows / macOS / Linux 全平台支持
    • 可选依赖:根据使用的模型后端选择安装(ultralytics / transformers / mmdet 等)

    快速安装

    # 使用 pip 安装(推荐)
    pip install supervision
    
    # 使用 conda 安装
    conda install -c conda-forge supervision
    
    # 从源码安装最新版
    pip install git+https://github.com/roboflow/supervision.git

    💡 安装后可在 Google Colab 中在线体验,或访问 HuggingFace Spaces 体验标注器效果。

    🚀 典型使用场景

    场景一:目标检测 + 可视化标注

    使用 YOLO 或 RF-DETR 模型进行目标检测,并用 Supervision 的标注器一键可视化结果:

    import cv2
    import supervision as sv
    from rfdetr import RFDETRSmall
    
    # 加载模型
    model = RFDETRSmall()
    image = cv2.imread("image.jpg")
    
    # 推理
    detections = model.predict(image, threshold=0.5)
    
    # 可视化
    box_annotator = sv.BoxAnnotator()
    label_annotator = sv.LabelAnnotator()
    
    annotated = box_annotator.annotate(
        scene=image.copy(), detections=detections
    )
    annotated = label_annotator.annotate(
        scene=annotated, detections=detections
    )
    
    cv2.imwrite("result.jpg", annotated)

    场景二:视频目标跟踪与区域计数

    对视频中的目标进行跨帧跟踪,并统计穿越特定区域的目标数量:

    import supervision as sv
    
    # 定义感兴趣区域(多边形)
    ZONE = sv.PolygonZone(
        polygon=sv.Polygon.from_file("zone.json")
    )
    
    tracker = sv.ByteTrack()
    
    for frame in sv.get_video_frames_generator("video.mp4"):
        detections = model.predict(frame)
        detections = tracker.update(detections)
        
        # 统计区域内的目标
        zone_count = ZONE.trigger(detections)
        print(f"区域内目标数: {zone_count}")

    场景三:数据集格式转换

    在不同标注格式之间自由转换,方便切换训练框架:

    import supervision as sv
    
    # 从 COCO 格式加载
    dataset = sv.DetectionDataset.from_coco(
        images_directory_path="data/train/images",
        annotations_path="data/train/_annotations.coco.json",
    )
    
    # 拆分为训练集和验证集
    train_ds, val_ds = dataset.split(split_ratio=0.8)
    
    # 保存为 YOLO 格式
    train_ds.as_yolo(
        images_directory_path="data/yolo/images/train",
        annotations_directory_path="data/yolo/labels/train",
    )

    💡 推荐理由

    计算机视觉开发者最头疼的事情之一,就是每次用新的检测模型都要重新写一遍数据预处理、结果解析、可视化标注、数据集转换的代码。Supervision 把这个痛点彻底解决了。

    它的 模型无关设计 是一大亮点——不管你用 YOLOv8、YOLO11、RT-DETR、SAM 还是 Grounding DINO,Supervision 都能以统一的 sv.Detections 格式输出结果,让你的下游代码完全不用改。

    另一个让人惊喜的地方是数据集处理工具。以前 COCO 转 YOLO 要写几十行脚本,现在几行代码就搞定。格式拆分、合并、统计类别分布,全都内置了。

    Roboflow 作为计算机视觉领域的头部公司,维护质量和文档完善度都非常高。PyPI 月下载量超百万,社区活跃,Discord 里提问基本当天就有回复。不管是做学术研究还是工业落地,这都是必备工具库。

    📊 项目信息

    GitHub Stars ⭐ 46,329+
    Forks 🍴 4,106+
    语言 🐍 Python
    许可 📜 MIT License
    最新版本 v0.29.0(要求 Python ≥ 3.10)
    创建时间 2022-11-28
    维护方 Roboflow 团队

    🤖 本文由 AI 自动生成 · 数据来源:GitHub – roboflow/supervision