Supervision Vibe 项目
**项目简介** Supervision 是由 Roboflow 开源维护的 Python 计算机视觉工具库
项目简介
Supervision 是由 Roboflow 开源维护的 Python 计算机视觉工具库,专为 AI 视觉模型开发者设计,提供统一的检测结果数据结构和丰富的可视化、跟踪、过滤与数据集转换能力。该项目在 GitHub 累计获得近 50,000 颗星,月均 PyPI 下载量突破 100 万次,是当前开源 CV 领域最活跃的工具库之一。Supervision 采用 MIT 许可证,完全开源,支持模型无关的灵活架构,可与 RF-DETR、YOLO、Detectron2、SAM 等主流检测模型无缝配合使用。
核心功能
统一检测数据结构(Detections) Supervision 定义了 sv.Detections 统一数据结构,兼容 Roboflow Inference、Hugging Face Transformers、SAM、Detectron2、MMDetection、Ultralytics YOLO、YOLO-NAS、PaddleDet、NCNN、Azure AI Vision 等十余种主流检测模型的输出格式,开发者无需为每个模型单独编写后处理逻辑。
目标标注与可视化 提供 sv.BoxAnnotator、sv.MaskAnnotator、sv.LabelAnnotator、sv.TraceAnnotator 等一系列标注工具,支持在图片和视频上绘制边界框、分割掩码、类别标签和轨迹线。可灵活组合使用,满足实时视频流分析和静态图片批量处理两类场景需求。
多目标跟踪 通过集成 ByteTrack 等跟踪算法,Supervision 支持跨帧维持目标 ID 的持久性,实现多目标跟踪。配合 PolygonZone 和 LineZone,可统计特定区域内的目标数量或穿越某条线的事件次数,适用于安防监控、人流统计和工业质检等场景。
数据集加载与格式转换 内置 DetectionDataset 类,支持从 YOLO、COCO JSON 和 Pascal VOC 三种主流数据集格式中加载数据,并提供 as_yolo()、as_coco()、as_pascal_voc() 等方法实现格式互转,大幅简化数据 pipeline 搭建工作。
模型性能评估 提供 sv.MeanAveragePrecision(mAP)和 sv.ConfusionMatrix 两大评估工具,帮助开发者量化检测模型在验证集上的表现,支持主流评测指标的自动化计算。
技术实现
Supervision 的核心设计理念是「模型无关 + 统一抽象」。项目以 sv.Detections 类为中心,该类封装了边界框坐标、类别 ID、置信度分数和跟踪 ID 四类基本信息,并提供 from_ 系列工厂方法将各类模型的私有输出结构转换为统一格式。例如 from_yolov5() 负责解析 Ultralytics YOLO 的检测结果,from_sam() 则处理 SAM 模型的分割输出。这种设计使得更换底座模型时,上层的标注、跟踪和统计逻辑完全不需要修改。
在跟踪实现上,Supervision 封装了 ByteTrack 算法,将检测结果(sv.Detections)与跟踪状态分离,跟踪器调用 update_with_detections() 方法接受新一帧的检测结果,返回附带持久 tracker_id 的 Detections 对象,后续直接可用于 LineZone 触发统计。PolygonZone 则允许开发者定义任意形状的多边形区域,通过 generate_polygon_zone() 工厂方法创建,配合 sv.PolygonZoneTrigger 实现区域内目标过滤。
项目采用 Python>=3.10 环境,通过 pip/poetry/uv/conda 均可安装,核心代码结构清晰,每个模块职责单一,便于二次开发和扩展。
快速上手
第一步:安装 Supervision
pip install supervision
或使用 uv:uv pip install supervision
第二步:加载检测模型
from rfdetr import RFDETRMedium model = RFDETRMedium()
第三步:读取图片并推理
import cv2 image = cv2.imread("image.jpg") detections = model.predict(image[:, :, ::-1])
第四步:绑定标注器并输出结果图
box_annotator = sv.BoxAnnotator() label_annotator = sv.LabelAnnotator() annotated_image = box_annotator.annotate(scene=image, detections=detections) annotated_image = label_annotator.annotate(scene=annotated_image, detections=detections) cv2.imwrite("result.jpg", annotated_image)
适用人群
Supervision 主要面向以下三类开发者:一是需要在项目中快速集成目标检测、分割或跟踪能力的应用开发者;二是研究计算机视觉算法、频繁需要对比不同模型效果的科研人员;三是构建工业质检、安防监控或视频分析平台系统工程团队。由于项目对模型无绑定依赖,算法工程师和数据科学家可以用它快速搭建实验性 pipeline,验证思路后再替换为生产级模型。
评论与建议
登录 后参与评论或提建议