Supervision:可复用的计算机视觉工具包
Supervision 是一个核心的计算机视觉工具包,提供从数据加载到实时区域计数等一系列构建模块,使开发者能专注于围绕模型构建应用程序。
📦 安装
在 Python >= 3.9 环境中通过 pip 安装:
pip install supervision
也支持通过 conda、mamba 或从源码安装。
🔥 快速开始
1. 模型连接
Supervision 采用模型无关设计,可连接任何分类、检测或分割模型。它为多个流行库(如 Ultralytics、Transformers、MMDetection、Inference)提供了连接器,部分集成(如 rfdetr)已直接返回 sv.Detections 对象。
示例:使用 RFDETRSmall 模型
import supervision as sv
from PIL import Image
from rfdetr import RFDETRSmall
image = Image.open(...)
model = RFDETRSmall()
detections = model.predict(image, threshold=0.5)
# len(detections) -> 5
示例:使用 Roboflow Inference(需 API 密钥)
import supervision as sv
from PIL import Image
from inference import get_model
image = Image.open(...)
model = get_model(model_id="rfdetr-small", api_key="ROBOFLOW_API_KEY")
result = model.infer(image)[0]
detections = sv.Detections.from_inference(result)
# len(detections) -> 5
2. 注解器
提供一系列高度可定制的注解器,用于可视化检测结果。
import cv2
import supervision as sv
image = cv2.imread(...)
detections = sv.Detections(...)
box_annotator = sv.BoxAnnotator()
annotated_frame = box_annotator.annotate(scene=image.copy(), detections=detections)
3. 数据集工具
支持加载、分割、合并和保存多种格式(如 COCO、YOLO、Pascal VOC)的数据集。
加载数据集
# 从 YOLO、Pascal VOC 或 COCO 格式加载
dataset = sv.DetectionDataset.from_yolo(...)
dataset = sv.DetectionDataset.from_pascal_voc(...)
dataset = sv.DetectionDataset.from_coco(...)
数据集操作
- 分割:将数据集划分为训练集、测试集和验证集。
train_dataset, test_dataset = dataset.split(split_ratio=0.7)
test_dataset, valid_dataset = test_dataset.split(split_ratio=0.5)
- 合并:合并多个数据集及其类别。
ds_merged = sv.DetectionDataset.merge([ds_1, ds_2])
- 保存与格式转换:将数据集保存为指定格式,或在不同格式间转换。
dataset.as_yolo(...)
dataset.as_coco(...)
sv.DetectionDataset.from_yolo(...).as_pascal_voc(...)
🎬 教程
项目提供了多个端到端教程,涵盖实际应用场景,例如:
- 停留时间分析:使用计算机视觉分析等待时间,优化流程,涉及目标检测、跟踪和区域停留时间计算。
- 车速估计与车辆跟踪:使用 YOLO、ByteTrack 和 Roboflow Inference 跟踪车辆并估计速度。
💜 社区展示
用户已使用 Supervision 构建了诸多应用,包括足球球员追踪、交通分析等。
📚 文档与贡献
- 文档:提供详细文档以帮助快速、可靠地构建计算机视觉应用。
- 贡献:欢迎社区参与贡献。