🔍 Supervision
Roboflow 开源计算机视觉工具库
🍴 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
