👋 你好
我们为您编写可复用的计算机视觉工具。 无论您是需要从硬盘加载数据集、在图像或视频上绘制检测结果,还是计算某一区域内的检测数量,都可以依赖我们!🤝
💻 安装
在 Python>=3.8 环境中使用 Pip 安装 supervision 包。
pip install supervision
在我们的 指南 中了解更多关于 conda、mamba 和从源代码安装的信息。
🔥 快速入门
模型
Supervision 设计为与模型无关。只需插入任何分类、检测或分割模型。为方便起见,我们为 Ultralytics、Transformers 或 MMDetection 等最流行的库创建了 连接器。
import cv2
import supervision as sv
from ultralytics import YOLO
image = cv2.imread(...)
model = YOLO('yolov8s.pt')
result = model(image)[0]
detections = sv.Detections.from_ultralytics(result)
len(detections)
# 5
👉 更多模型连接器
-
推理
使用 Inference 运行需要一个 Roboflow API 密钥。
import cv2 import supervision as sv from inference import get_model image = cv2.imread(...) model = get_model(model_id="yolov8s-640", api_key=<ROBOFLOW API KEY>) result = model.infer(image)[0] detections = sv.Detections.from_inference(result) len(detections) # 5
标注工具
Supervision 提供了一系列高度可定制的 标注工具,允许您为您的使用案例打造完美的可视化效果。
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
)
https://github.com/roboflow/supervision/assets/26109316/691e219c-0565-4403-9218-ab5644f39bce
数据集
Supervision 提供了一组 工具,使您能够以支持的格式加载、拆分、合并和保存数据集。
import supervision as sv
from roboflow import Roboflow
project = Roboflow().workspace(<WORKSPACE_ID>).project(<PROJECT_ID>)
dataset = project.version(<PROJECT_VERSION>).download("coco")
ds = sv.DetectionDataset.from_coco(
images_directory_path=f"{dataset.location}/train",
annotations_path=f"{dataset.location}/train/_annotations.coco.json",
)
path, image, annotation = ds[0]
# 按需加载图像
for path, image, annotation in ds:
# 按需加载图像
👉 更多数据集工具
-
加载
dataset = sv.DetectionDataset.from_yolo( images_directory_path=..., annotations_directory_path=..., data_yaml_path=... ) dataset = sv.DetectionDataset.from_pascal_voc( images_directory_path=..., annotations_directory_path=... ) dataset = sv.DetectionDataset.from_coco( images_directory_path=..., annotations_path=... )
-
拆分
train_dataset, test_dataset = dataset.split(split_ratio=0.7) test_dataset, valid_dataset = test_dataset.split(split_ratio=0.5) len(train_dataset), len(test_dataset), len(valid_dataset) # (700, 150, 150)
-
合并
ds_1 = sv.DetectionDataset(...) len(ds_1) # 100 ds_1.classes # ['dog', 'person'] ds_2 = sv.DetectionDataset(...) len(ds_2) # 200 ds_2.classes # ['cat'] ds_merged = sv.DetectionDataset.merge([ds_1, ds_2]) len(ds_merged) # 300 ds_merged.classes # ['cat', 'dog', 'person']
-
保存
dataset.as_yolo( images_directory_path=..., annotations_directory_path=..., data_yaml_path=... ) dataset.as_pascal_voc( images_directory_path=..., annotations_directory_path=... ) dataset.as_coco( images_directory_path=..., annotations_path=... )
-
转换
sv.DetectionDataset.from_yolo( images_directory_path=..., annotations_directory_path=..., data_yaml_path=... ).as_pascal_voc( images_directory_path=..., annotations_directory_path=... )
🎬 教程
想学习如何使用Supervision?探索我们的操作指南、端到端示例、备忘单和烹饪书!
学习如何使用计算机视觉分析等待时间并优化流程。本教程涵盖了目标检测、跟踪以及计算在指定区域内花费的时间。使用这些技术可以改善零售、交通管理或其他场景中的客户体验。
学习如何使用YOLO、ByteTrack和Roboflow Inference跟踪并估算车辆速度。本综合教程涵盖了目标检测、多目标跟踪、过滤检测、透视变换、速度估算、可视化改进等内容。
💜 使用Supervision构建
你用Supervision构建了什么酷东西吗?让我们知道!
https://github.com/roboflow/supervision/assets/26109316/c9436828-9fbf-4c25-ae8c-60e9c81b3900
https://github.com/roboflow/supervision/assets/26109316/3ac6982f-4943-4108-9b7f-51787ef1a69f
📚 文档
访问我们的文档页面,了解Supervision如何帮助你更快、更可靠地构建计算机视觉应用程序。
🏆 贡献
我们欢迎你的反馈!请查看我们的贡献指南以开始贡献。感谢🙏所有贡献者!