NSDT工具推荐Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割

Roboflow Supervision是面向非机器视觉专家的可重复使用的计算机视觉工具。 无论你是需要从硬盘加载数据集、在图像或视频上绘制检测,或者计算一个区域中有多少检测目标,都可以依靠Supervison!

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 进行实时交通分析,以检测和跟踪航空图像上的车辆。 利用 Python 和Supervision的力量,深入研究将汽车分配到特定的入口区域并了解它们的运动方向。 通过可视化他们的路径,可以深入了解熙熙攘攘的环岛的交通流量......


原文链接:We write your reusable computer vision tools

BimAnt翻译整理,转载请标明出处