GitHub超 30000+ star 背后,这款 Supervision 工具为何让视觉开发者欲罢不能?

简介: Roboflow 的 Supervision 是一个基于 MIT 协议的开源视觉辅助库,已获 GitHub 超 30,000 星标。它可解决视觉项目中的可视化、跟踪、计数、格式转换等常见问题,支持 YOLO、Detectron2、Transformers 等模型,适用于视频分析、区域统计、数据集处理等场景。其核心功能包括通用 Detections 类、多种 Annotator 可视化工具、区域统计工具(LineZone & PolygonZone)、视频跟踪与平滑处理、KeyPoints 跟踪、性能指标计算等。

嗨,我是小华同学,专注解锁高效工作与前沿AI工具!每日精选开源技术、实战技巧,助你省时50%、领先他人一步。👉免费订阅,与10万+技术人共享升级秘籍!

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

痛点场景

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

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"
)

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

识别效果

应用场景

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

与同类项目对比优势

功能模块 Supervision 自建逻辑 / 其他工具
多模型兼容 YOLO、Detectron2、Transformers、Inference 每种模型格式需手写适配
区域计数工具 内置 LineZoneCounter、PolygonZoneCounter 手写几何判断复杂冗余
可视化注释工具 丰富及定制化 Annotator 支持多样样式 平均只有简单画框,难定制
跟踪组件支持 自动整合 ByteTrack/SORT 等,输出 tracker_id 跟踪逻辑需手动植入
数据集工具支持 支持 coco、yolo、voc 等格式转换与加载 通常需自己写解析器
快速上手与文档完善 pip 安装 + 示例丰富 + 官方博客指导 学习成本高

总结

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

项目地址:

https://github.com/roboflow/supervision

相关文章
|
9天前
|
存储 监控 安全
RFID 让化工厂人员安全管理 “更智能、更可靠”
在化工厂生产环境中,高温、高压、有毒有害介质、易燃易爆物质等风险因素遍布,人员安全管理始终是企业安全生产的核心环节。RFID(无线射频识别技术)凭借其非接触式识别、多目标同时读取、环境适应性强等特点,成为化工厂人员安全管理的重要技术支撑,从实时监控、风险预警到应急救援,全方位为人员安全保驾护航,RFID 让化工厂人员安全管理 “更智能、更可靠”。
|
12天前
|
机器学习/深度学习 计算机视觉
让模型不再忽视少数类:MixUp、CutMix、Focal Loss三种技术解决数据不平衡问题
在机器学习应用中,数据集规模有限且类别分布不均(如医学影像中正类仅占5%)常导致模型偏向多数类,虽准确率高,但少数类识别效果差。本文探讨MixUp、CutMix和Focal Loss三种技术,分别从数据增强与损失函数角度提升小规模不平衡数据集上的模型表现。
109 27
让模型不再忽视少数类:MixUp、CutMix、Focal Loss三种技术解决数据不平衡问题
|
7天前
|
Python
Python中的f-string:更简洁的字符串格式化
Python中的f-string:更简洁的字符串格式化
141 92
|
7天前
|
程序员 测试技术 开发者
Python装饰器:简化代码的强大工具
Python装饰器:简化代码的强大工具
133 92
|
7天前
|
安全 Java API
Java中的Lambda表达式:简洁与功能的结合
Java中的Lambda表达式:简洁与功能的结合
148 91
|
15天前
|
存储 缓存 网络协议
探讨域名与IP地址的关联性
总结起来说:每次你输入一个易读易记得名称即可方便地让计算机帮你找到那串难以记住但却必须用到精确无误数字串——也就完成了从人类语言向计算机语言转化工作使得两者之间沟能顺畅交流无阻碍发生同时保证数据传输精准性及高效率性质维护整体网络环境稳定运行状态。
210 53
|
12天前
|
存储 存储控制器 Windows
错误代码0x80070570解决办法
错误代码0x80070570通常与文件系统损坏或硬件问题相关,以下是综合解决方案:
|
29天前
|
JSON iOS开发 数据格式
最新研发flutter3.32+window_manager客户端OS管理系统
原创Flutter3.32+Dart3.8+Getx+Window_Manager实战桌面客户端os系统解决方案。支持macOS和windows两种主题风格、自定义桌面栅格布局。
157 49
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
ReasonRank:从关键词匹配到逻辑推理,排序准确性大幅超越传统方法
ReasonRank是一种创新段落重排系统,采用自动化数据合成与两阶段训练(监督微调+强化学习),在BRIGHT等测试中超越更大模型,显著提升信息检索中的推理能力。
90 0
ReasonRank:从关键词匹配到逻辑推理,排序准确性大幅超越传统方法