supervision

We write your reusable computer vision tools. 💜

https://github.com/devrhylme-foundation/supervision

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.0%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

We write your reusable computer vision tools. 💜

Basic Info
  • Host: GitHub
  • Owner: DEVRhylme-Foundation
  • License: mit
  • Language: Python
  • Default Branch: develop
  • Homepage:
  • Size: 221 MB
Statistics
  • Stars: 11
  • Watchers: 0
  • Forks: 29
  • Open Issues: 26
  • Releases: 0
Created over 1 year ago · Last pushed about 1 year ago
Metadata Files
Readme Contributing License Code of conduct Citation Codeowners

README.md

Supervision

version downloads snyk license python-version colab gradio discord built-with-material-for-mkdocs

👋 hello

We write your reusable computer vision tools. 💜

Project Overview

Supervision is an open-source Python library designed to simplify the development of computer vision applications. It provides a collection of modular, reusable tools that address common tasks in computer vision, such as object detection, tracking, annotation, and dataset management. By leveraging Supervision, developers can accelerate their workflows, reduce complexity, and focus on building innovative solutions.

Key Features

  • Model Agnostic: Supports various computer vision models, including Ultralytics, Transformers, and MMDetection.
  • Inference: Easily integrate with Roboflow for model inference.
  • Annotators: Provides tools for annotating images and videos with bounding boxes, masks, and more.
  • Datasets: Simplifies loading, splitting, merging, and saving datasets in popular formats like COCO, YOLO, and Pascal VOC.

Goals

The Supervision project aims to:

  • Enhance System Monitoring: Offer real-time insights into the performance of computer vision models, detecting anomalies and ensuring optimal operation.
  • Improve Security & Compliance: Ensure the library adheres to security best practices and industry standards, protecting user data and ensuring compliance.
  • Optimize Performance: Provide efficient, optimized code that leverages hardware acceleration where possible.
  • User-Friendly Interface: Develop an intuitive API with comprehensive documentation and examples to make it accessible to developers of all levels.
  • Scalability: Support large-scale datasets and real-time processing requirements, making it suitable for both small projects and enterprise-level applications.

Why Supervision?

Developing computer vision applications can be complex and time-consuming, requiring expertise in multiple areas such as object detection, tracking, annotation, and dataset management. Supervision addresses this by providing a unified, easy-to-use interface for these common tasks, allowing developers to focus on their specific application logic rather than reinventing the wheel.

Expected Outcomes

By using Supervision, developers can expect to:

  • Reduce development time for computer vision projects.
  • Improve the reliability and performance of their vision systems.
  • Benefit from a community-driven library that is continuously updated and improved.

💻 install

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

bash pip install supervision

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

🔐 Environment Variables

Create a .env file to store sensitive configuration:

bash ROBOFLOW_API_KEY=your_api_key_here LOG_LEVEL=INFO

Then load them in your code: ```python from dotenv import load_dotenv

load_dotenv() # Load before other imports

Now use os.getenv() to access values

```

🔥 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, or MMDetection.

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

```

👉 more model connectors - inference Running with [Inference](https://github.com/roboflow/inference) requires a [Roboflow API KEY](https://docs.roboflow.com/api-reference/authentication#retrieve-an-api-key). ```python import cv2 import supervision as sv from inference import get_model image = cv2.imread(...) model = get_model(model_id="yolov8s-640", 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.

```python import cv2 import supervision as sv

image = cv2.imread(...) detections = sv.Detections(...)

boxannotator = sv.BoxAnnotator() annotatedframe = 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.

```python import supervision as sv from roboflow import Roboflow

project = Roboflow().workspace().project() dataset = project.version().download("coco")

ds = sv.DetectionDataset.fromcoco( imagesdirectorypath=f"{dataset.location}/train", annotationspath=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 ```

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

💜 built with supervision

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!

Owner

  • Name: DEVRhylme Foundation
  • Login: DEVRhylme-Foundation
  • Kind: organization
  • Email: contact@devrhylme.org

Building Hope, Creating Lasting Impact

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: Supervision
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Roboflow
    email: support@roboflow.com
repository-code: 'https://github.com/roboflow/supervision'
url: 'https://roboflow.github.io/supervision/'
abstract: >-
  supervision features a range of utilities for use in
  computer vision projects, from detections processing and
  filtering to confusion matrix calculation.
keywords:
  - computer vision
  - image processing
  - video processing
license: MIT

GitHub Events

Total
  • Issues event: 22
  • Watch event: 19
  • Issue comment event: 45
  • Member event: 4
  • Push event: 13
  • Pull request review event: 2
  • Pull request event: 24
  • Fork event: 38
  • Create event: 1
Last Year
  • Issues event: 22
  • Watch event: 19
  • Issue comment event: 45
  • Member event: 4
  • Push event: 13
  • Pull request review event: 2
  • Pull request event: 24
  • Fork event: 38
  • Create event: 1

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 12
  • Total pull requests: 18
  • Average time to close issues: 21 days
  • Average time to close pull requests: 6 days
  • Total issue authors: 8
  • Total pull request authors: 12
  • Average comments per issue: 1.67
  • Average comments per pull request: 0.06
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 12
  • Pull requests: 18
  • Average time to close issues: 21 days
  • Average time to close pull requests: 6 days
  • Issue authors: 8
  • Pull request authors: 12
  • Average comments per issue: 1.67
  • Average comments per pull request: 0.06
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • Durgesh4993 (3)
  • GautamAnjali569 (2)
  • Shashikumar-ezhilarasu (2)
  • viraj0112 (1)
  • oathar (1)
  • devsayanR (1)
  • Laxmi2707 (1)
  • Somya2010 (1)
Pull Request Authors
  • JaySoni1 (5)
  • 0xSiddu (2)
  • Ronit-Raj9 (2)
  • kaushiksai711 (1)
  • aryan0931 (1)
  • Viraj465 (1)
  • Abs6187 (1)
  • GautamAnjali569 (1)
  • Arjunmehta312 (1)
  • sparrowjack234 (1)
  • Shashikumar-ezhilarasu (1)
  • jhansilakshmi27 (1)
Top Labels
Issue Labels
C4GT Community (5) C4GT Coding (3) enhancement (2) Medium (1) Hard (1)
Pull Request Labels