GitHub超 30000+ star , 超强大的开源项目Supervision

Roboflow 的 Supervision 项目已于近期突破 30,000GitHub Stars,是视觉工程师常用的辅助库,让你告别重复造轮子。 Supervision 是 Roboflow 出品、基于 MIT 协议的开源库,用于解决视觉项目中常见的可视化、跟踪、计数、格式转换等需求。可与 YOLO、Detectron2、Transformers 等模型无缝对接,适用于视频分析、物体追踪、区域计数、数据集处理等场景。

项目地址:

https://github.com/roboflow/supervision

痛点场景

  • 每次项目都重复写绘图、标注、计数逻辑,效率低且容易出错;
  • 不同模型结果格式多样,混用时需要麻烦转格式处理;
  • 视频中要统计物体进出特定区域,自己写逻辑十分繁琐;
  • 可视化效果平淡,缺少统一样式和灵活定制能力。

Supervision 正是为此而生,让你专注模型和应用,不再纠结基础设施。

核心功能

通用 Detections

统一封装检测框、分割 mask、类别、跟踪 ID 等信息,支持从 Ultralytics、Transformers、inference 输出中加载 。

多种 Annotator 可视化

提供超过 20 种 annotator,例如 BoxAnnotator、LabelAnnotator、MaskAnnotator、TraceAnnotator、VertexAnnotator … 支持灵活组合搭配 。

区域工具(LineZone & PolygonZone)

支持定义直线或多边形区域统计目标穿越次数、筛选区域内对象等,适合行为分析、出入口统计 。

视频跟踪与平滑处理

集成 ByteTrack 跟踪器、检测平滑器(DetectionsSmoother),可将视频目标轨迹可视化为 trace 抽象路径与轨迹图 。

支持 KeyPoints 跟踪

可处理姿态估计模型输出(KeyPoints),通过 .as_detections() 转换为 Detections,并与跟踪结合统计人体行为 。

计算性能指标

提供 Precision、Recall、Mean Average Recall、F1 Score 等 CV 评估指标,支持普通与 Oriented Bounding Boxes 评估 。

坐标转换与 IoU / IOS 计算

提供 xyxy_to_xywh/xcycarh 坐标转换函数,支持 IoU 与 IOS(Intersection over Smallest)重叠度评估 。

技术优势整理表

模块

优势

Detections 标准化

支持多种模型输入,处理统一一致,代码简洁清晰

Annotator 可定制性

支持样式、颜色、标签、字体等灵活配置

Zone 工具(Line/Polygon)

快速实现区域计数与过滤功能,适用于安防、物流、零售等场景

跟踪集成

自动跟踪目标,获得 tracker_id,后续统计更精准

数据集工具支持

自动转换数据格式,支持 YOLO/COCO/VOC 等格式兼容

使用示例

快速使用示例:YOLOv8 + Supervision 计数视频中的物体

import cv2
import supervision as sv
from ultralytics import YOLO
from supervision.tools.line_counter import LineCounter
from supervision.geometry.dataclasses import Point

model = YOLO("yolov8s.pt")
line = LineCounter(start=Point(100,400), end=Point(100,100))
box_annotator = sv.BoxAnnotator()

cap = cv2.VideoCapture("input.mp4")
while cap.isOpened():
    ret, frame = cap.read()
    if not ret: break
    result = model(frame)[0]
    detections = sv.Detections.from_ultralytics(result)
    line.update(detections=detections)
    annotated = box_annotator.annotate(scene=frame, detections=detections)
    line.annotator.annotate(scene=annotated, line_counter=line)
    cv2.imshow("output", annotated)
    if cv2.waitKey(1)==27: break
print(f"In: {line.in_count}, Out: {line.out_count}")

结果界面可展示视频中方框、轨迹线、计数标签,非常直观(参考上方截图第3张、第4张)。

数据集加载与转换示例

from roboflow import Roboflow
import supervision as sv

rf = Roboflow(api_key="YOUR_KEY")
proj = rf.workspace("...").project("...")
version = proj.version(1)
dataset = version.download("coco")

ds = sv.DetectionDataset.from_coco(
    images_directory_path=f"{dataset.location}/train",
    annotations_path=f"{dataset.location}/train/_annotations.coco.json"
)

 

可方便地进行训练与验证集格式管理。

识别效果

d

 

应用场景

  • 工业流水线检测与计数:使用 LineZoneCounter 对输送带上的物体进出计数。
  • 门禁与人流监控:统计进入/离开指定区域的人数。
  • 零售货架监控:检测商品缺货、位置变化。
  • 交通场景:车辆检测与轨迹跟踪。
  • 通用视频分析平台:辅助模型输出可视化展示与统计分析。
  • 体育分析:球员追踪、区域活动热度可视化

与同类项目对比优势

功能模块

Supervision

自建逻辑 / 其他工具

多模型兼容

YOLO、Detectron2、Transformers、Inference

每种模型格式需手写适配

区域计数工具

内置 LineZoneCounter、PolygonZoneCounter

手写几何判断复杂冗余

可视化注释工具

丰富及定制化 Annotator 支持多样样式

平均只有简单画框,难定制

跟踪组件支持

自动整合 ByteTrack/SORT 等,输出 tracker_id

跟踪逻辑需手动植入

数据集工具支持

支持 coco、yolo、voc 等格式转换与加载

通常需自己写解析器

快速上手与文档完善

pip 安装 + 示例丰富 + 官方博客指导

学习成本高

总结

Roboflow Supervision 已获 GitHub ⭐30.9 k,成为 CV 项目可视化与分析的标配工具库。 它弥合模型输出与业务可视化之间的鸿沟,适配多模型、输出统一、注释灵活、区域统计精准、目标跟踪平滑,可显著降低开发成本。

posted @ 2025-09-15 09:21  小y  阅读(116)  评论(0)    收藏  举报