Roboflow Supervision是面向非机器视觉专家的可重复使用的计算机视觉工具。 无论你是需要从硬盘加载数据集、在图像或视频上绘制检测,或者计算一个区域中有多少检测目标,都可以依靠Supervison!
NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割
1、安装supervision
在Python>=3.8环境下pip安装监管包:
pip install supervision
在官方指南中阅读有关桌面、无头和本地安装的更多信息。
2、通过连接器使用第三方模型
Supervision被设计为与模型无关。 只需插入任何分类、检测或分割模型即可。 为了使用方便,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
运行如下推理需要 Roboflow API 密钥:
import cv2
import supervision as sv
from inference.models.utils import get_roboflow_model
image = cv2.imread(...)
model = get_roboflow_model(model_id="yolov8s-640", api_key=<ROBOFLOW API KEY>)
result = model.infer(image)[0]
detections = sv.Detections.from_inference(result)
len(detections)
# 5
3、标注器
Supervision 提供了各种高度可定制的标注器,使你能够为用例构建完美的可视化。
import cv2
import supervision as sv
image = cv2.imread(...)
detections = sv.Detections(...)
bounding_box_annotator = sv.BoundingBoxAnnotator()
annotated_frame = bounding_box_annotator.annotate(
scene=image.copy(),
detections=detections
)
4、数据集
Supervision 提供了一组实用程序,允许你以受支持的格式加载、拆分、合并和保存数据集:
import supervision as sv
dataset = sv.DetectionDataset.from_yolo(
images_directory_path=...,
annotations_directory_path=...,
data_yaml_path=...
)
dataset.classes
['dog', 'person']
len(dataset)
# 1000
加载数据集的示例代码:
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=...
)
5、教程资源
- 速度估计和车辆跟踪
了解如何使用 YOLO、ByteTrack 和 Roboflow Inference 跟踪和估计车辆的速度。 这个综合教程涵盖了对象检测、多对象跟踪、过滤检测、透视变换、速度估计、可视化改进等。
- 使用 YOLOv8 和 ByteTrack 进行流量分析 - 车辆检测和跟踪
在本视频中探索使用 YOLOv8 和 ByteTrack 进行实时交通分析,以检测和跟踪航空图像上的车辆。 利用 Python 和Supervision的力量,深入研究将汽车分配到特定的入口区域并了解它们的运动方向。 通过可视化他们的路径,可以深入了解熙熙攘攘的环岛的交通流量......
原文链接:机器视觉的技术平权 - BimAnt