supervision

roboflow / supervision

一个开源的计算机视觉工具库,提供目标检测、跟踪、分割等任务的通用组件和实用工具,帮助开发者快速构建视觉应用。

Python AI 基础设施 开发工具 数据科学 计算机视觉 目标检测 图像处理 视频分析

为什么值得看

编辑点评

由 Roboflow 出品,代码质量高,封装了检测、追踪、标注、可视化等常用功能,能显著减少CV项目的重复开发。适合做目标检测、视频分析、图像处理等场景,尤其适合需要快速集成现有模型进行推理和展示的开发者。注意项目迭代较快,API可能有变动,建议锁定版本使用。

Star 趋势

近 7 日
  • Star 总数50,535
  • 今日新增+150
  • 7 日增速+2400%
  • Fork4,811

同类项目

同场景 · AI 基础设施 / 开发工具 / 数据科学

项目文档

来自 GitHub README · develop 分支

notebooks | inference | autodistill | maestro

colab

<a href="https://trendshift.io/repositories/124"  target="_blank"></a>
📑 Table of Contents

👋 Hello

We are your essential toolkit for computer vision. From data loading to real-time zone counting, we provide the building blocks so you can focus on building applications around your models. 🤝

💻 Install

Pip install the supervision package in a Python>=3.10 environment.

pip install supervision

Read more about conda, mamba, and installing from source in our guide.

🔥 Quickstart

Models

Supervision was designed to be model agnostic. Just plug in any classification, detection, or segmentation model. For your convenience, we have created connectors for the most popular libraries like Ultralytics, Transformers, MMDetection, or Inference. Other integrations, like rfdetr, already return sv.Detections directly.

Install the optional dependencies for this example with pip install pillow rfdetr.

import supervision as sv
from PIL import Image
from rfdetr import RFDETRSmall

image = Image.open("path/to/image.jpg")
model = RFDETRSmall()
detections = model.predict(image, threshold=0.5)

len(detections)
# 5
👉 more model connectors
  • inference

Running with Inference requires a Roboflow API KEY.

```python import supervision as sv from PIL import Image from inference import get_model

image = Image.open("path/to/image.jpg") 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 ```

Annotators

Supervision offers a wide range of highly customizable annotators, allowing you to compose the perfect visualization for your use case.

import cv2
import supervision as sv

image = cv2.imread("path/to/image.jpg")
# Assuming detections are obtained from a model
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

Datasets

Supervision provides a set of utils that allow you to load, split, merge, and save datasets in one of the supported formats.

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]
# loads image on demand

for path, image, annotation in ds:
    # loads image on demand
    pass
👉 more dataset utils
  • load

```python 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=..., ) ```

  • split

```python 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) ```

  • merge

```python 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'] ```

  • save

```python 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=..., ) ```

  • convert

python sv.DetectionDataset.from_yolo( images_directory_path=..., annotations_directory_path=..., data_yaml_path=..., ).as_pascal_voc( images_directory_path=..., annotations_directory_path=..., )

🎬 Tutorials

Want to learn how to use Supervision? Explore our how-to guides, end-to-end examples, cheatsheet, and cookbooks!

Dwell Time Analysis with Computer Vision | Real-Time Stream Processing Created: 5 Apr 2024
Learn how to use computer vision to analyze wait times and optimize processes. This tutorial covers object detection, tracking, and calculating time spent in designated zones. Use these techniques to improve customer experience in retail, traffic management, or other scenarios.

Speed Estimation & Vehicle Tracking | Computer Vision | Open Source Created: 11 Jan 2024
Learn how to track and estimate the speed of vehicles using YOLO, ByteTrack, and Roboflow Inference. This comprehensive tutorial covers object detection, multi-object tracking, filtering detections, perspective transformation, speed estimation, visualization improvements, and more.

💜 Built with Supervision

Did you build something cool using supervision? Let us know!

https://user-images.githubusercontent.com/26109316/207858600-ee862b22-0353-440b-ad85-caa0c4777904.mp4

https://github.com/roboflow/supervision/assets/26109316/c9436828-9fbf-4c25-ae8c-60e9c81b3900

https://github.com/roboflow/supervision/assets/26109316/3ac6982f-4943-4108-9b7f-51787ef1a69f

📚 Documentation

Visit our documentation page to learn how supervision can help you build computer vision applications faster and more reliably.

🏆 Contribution

We love your input! Please see our contributing guide to get started. Thank you 🙏 to all our contributors!

  <a href="https://youtube.com/roboflow">

  </a>

  <a href="https://roboflow.com">

  </a>

  <a href="https://www.linkedin.com/company/roboflow-ai/">

  </a>

  <a href="https://docs.roboflow.com">

  </a>

  <a href="https://discuss.roboflow.com">

  </a>

  <a href="https://blog.roboflow.com">

  </a>

文档抓取自 GitHub 仓库 README,版权归原作者所有;已过滤徽章等噪音并经安全消毒后展示。