Supervision:计算机视觉必备工具包,提供基础组件助力应用构建!

计算机视觉必备工具包Supervision
各位,Supervision是计算机视觉的必备工具包,从数据加载到实时区域计数,它提供基础组件,能让用户专注于围绕模型构建应用程序。
安装方式
在Python >= 3.9的环境中,可使用Pip安装 `supervision` 包,命令为:pip install supervision。也可以在其指南中了解更多关于使用Conda、Mamba安装以及从源代码安装的信息。
快速开始:模型
Supervision设计为与模型无关,用户可以接入任何分类、检测或分割模型。为方便使用,它为最流行的库(如Ultralytics、Transformers、MMDetection或Inference)创建了连接器,其他集成(如 `rfdetr`)已经可以直接返回 `sv.Detections`。使用以下命令安装此示例的可选依赖项:pip install pillow rfdetr。示例代码如下:
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
更多模型连接器:推理
使用Inference运行需要Roboflow API KEY。示例代码如下:
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
标注器
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)
[supervision-0.16.0-annotators.mp4](supervision-0.16.0-annotators.mp4)
数据集
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: # 按需加载图像
pass
更多数据集实用工具
包括加载、拆分、合并、保存和转换数据集等操作,示例代码如下:
加载数据集
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` 吗?可以探索其操作指南、端到端示例、速查表和实用手册。以下是两个教程:
- [计算机视觉的驻留时间分析 | 实时流处理](Dwell Time Analysis with Computer Vision | Real-Time Stream Processing),创建时间:2024年4月5日。学习如何使用计算机视觉分析等待时间并优化流程,涵盖目标检测、跟踪以及计算在指定区域内的停留时间,可运用这些技术改善零售、交通管理或其他场景中的客户体验。
- [速度估计与车辆跟踪 | 计算机视觉 | 开源](Speed Estimation & Vehicle Tracking | Computer Vision | Open Source),创建时间:2024年1月11日。学习如何使用YOLO、ByteTrack和Roboflow Inference跟踪和估计车辆速度,涵盖目标检测、多目标跟踪、检测过滤、透视变换、速度估计、可视化改进等内容。
使用 `Supervision` 构建的项目
如果用户使用 `Supervision` 构建了很酷的项目,可以告诉官方。以下是一些项目示例:
- [football-players-tracking-25.mp4](football-players-tracking-25.mp4)
- [traffic_analysis_result.mov](traffic_analysis_result.mov)
- [vehicles-step-7-new.mp4](vehicles-step-7-new.mp4)
文档
访问其文档页面,可了解 `Supervision` 如何帮助用户更快速、更可靠地构建计算机视觉应用程序。
贡献
官方欢迎用户参与,用户可查看其贡献指南以开始贡献,同时感谢所有贡献者!
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)