roboflow/supervisionPublic

We write your reusable computer vision tools. 💜

AI summary: A reusable computer vision utility library for writing robust detection and tracking pipelines.

Stars
51.1K
+18 today
Forks
4.9K
Watchers
313
Open issues
36
Open PRs
23
Contributors
~203
Commits
5.2K
Branches
36

PythonMITCreated Nov 28, 2022Last push 2d agoLatest release 0.30.5+82 stars this week+1.3K this month

Quick answers

What is supervision?
A reusable computer vision utility library for writing robust detection and tracking pipelines.
What does supervision do?
Supervision is an open-source Python library designed to simplify the development of computer vision applications. It acts as a universal bridge between various object detection models (like YOLOv8, Ultralytics, and HuggingFace models) and practical application logic. Instead of writing boilerplate code for parsing complex model outputs, drawing bounding boxes, tracking object trajectories across frames, or filtering detections by specific zones, developers can use Supervision's high-level API. This dramatically accelerates the deployment of AI models into production environments by handling the tedious post-processing steps of computer vision workflows.
Who is supervision for?
Computer vision engineers, machine learning researchers, and developers building AI-powered video analytics applications. It is the go-to tool for rapidly translating raw model outputs into actionable data and visualizations.
How do I get started with supervision?
pip install supervision
How popular is supervision on GitHub?
roboflow/supervision has 51,108 stars and 4,860 forks on GitHub, and gained 82 stars in the last 7 days.
What license does supervision use?
roboflow/supervision is released under the MIT license.

Star history

since Jan 15, 2023
020K40KJan 2023Apr 2024Jun 2025Oct 2026
51.1K stars as of Oct 3, 2026. Before Jul 29, 2026, reconstructed from public GitHub event archives (checked against the repository's real star total); since then measured daily.

Contribution activity

commits per day, last 52 weeks
SepOctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 1 commit2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 1 commit2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 1 commit2025-10-28: 3 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 14 commits2025-11-06: 3 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 1 commit2025-11-13: 2 commits2025-11-14: 17 commits2025-11-15: 17 commits2025-11-16: 5 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 7 commits2026-01-06: 2 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 23 commits2026-01-13: 3 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 1 commit2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 5 commits2026-01-20: 1 commit2026-01-21: 0 commits2026-01-22: 1 commit2026-01-23: 1 commit2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 3 commits2026-01-27: 15 commits2026-01-28: 1 commit2026-01-29: 2 commits2026-01-30: 7 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 36 commits2026-02-03: 23 commits2026-02-04: 11 commits2026-02-05: 1 commit2026-02-06: 1 commit2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 9 commits2026-02-11: 0 commits2026-02-12: 7 commits2026-02-13: 1 commit2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 3 commits2026-02-20: 6 commits2026-02-21: 0 commits2026-02-22: 1 commit2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 2 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 1 commit2026-03-03: 1 commit2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 10 commits2026-03-11: 1 commit2026-03-12: 0 commits2026-03-13: 4 commits2026-03-14: 1 commit2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 2 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 2 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 2 commits2026-03-30: 7 commits2026-03-31: 3 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 1 commit2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 6 commits2026-04-14: 4 commits2026-04-15: 7 commits2026-04-16: 1 commit2026-04-17: 3 commits2026-04-18: 3 commits2026-04-19: 0 commits2026-04-20: 1 commit2026-04-21: 2 commits2026-04-22: 6 commits2026-04-23: 1 commit2026-04-24: 2 commits2026-04-25: 1 commit2026-04-26: 0 commits2026-04-27: 1 commit2026-04-28: 1 commit2026-04-29: 0 commits2026-04-30: 4 commits2026-05-01: 1 commit2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 3 commits2026-05-14: 1 commit2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 4 commits2026-05-20: 3 commits2026-05-21: 0 commits2026-05-22: 7 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 1 commit2026-05-26: 1 commit2026-05-27: 2 commits2026-05-28: 1 commit2026-05-29: 1 commit2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 1 commit2026-06-02: 1 commit2026-06-03: 0 commits2026-06-04: 3 commits2026-06-05: 0 commits2026-06-06: 1 commit2026-06-07: 2 commits2026-06-08: 3 commits2026-06-09: 4 commits2026-06-10: 4 commits2026-06-11: 2 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 9 commits2026-06-16: 3 commits2026-06-17: 8 commits2026-06-18: 7 commits2026-06-19: 1 commit2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 2 commits2026-06-23: 3 commits2026-06-24: 1 commit2026-06-25: 6 commits2026-06-26: 4 commits2026-06-27: 4 commits2026-06-28: 0 commits2026-06-29: 8 commits2026-06-30: 1 commit2026-07-01: 12 commits2026-07-02: 3 commits2026-07-03: 8 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 6 commits2026-07-07: 4 commits2026-07-08: 3 commits2026-07-09: 4 commits2026-07-10: 1 commit2026-07-11: 3 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 1 commit2026-07-15: 4 commits2026-07-16: 4 commits2026-07-17: 8 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 5 commits2026-07-21: 7 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 1 commit2026-07-27: 3 commits2026-07-28: 4 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 1 commit2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 5 commits2026-08-04: 5 commits2026-08-05: 2 commits2026-08-06: 1 commit2026-08-07: 1 commit2026-08-08: 0 commits2026-08-09: 0 commits2026-08-10: 4 commits2026-08-11: 1 commit2026-08-12: 1 commit2026-08-13: 0 commits2026-08-14: 1 commit2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 1 commit2026-08-18: 0 commits2026-08-19: 2 commits2026-08-20: 3 commits2026-08-21: 3 commits2026-08-22: 1 commit2026-08-23: 0 commits2026-08-24: 9 commits2026-08-25: 2 commits2026-08-26: 0 commits2026-08-27: 0 commits2026-08-28: 0 commits2026-08-29: 0 commits2026-08-30: 0 commits2026-08-31: 0 commits2026-09-01: 0 commits2026-09-02: 8 commits2026-09-03: 8 commits2026-09-04: 3 commits2026-09-05: 1 commit2026-09-06: 0 commits2026-09-07: 6 commits2026-09-08: 4 commits2026-09-09: 6 commits2026-09-10: 2 commits2026-09-11: 5 commits2026-09-12: 0 commits2026-09-13: 0 commits2026-09-14: 11 commits2026-09-15: 6 commits2026-09-16: 12 commits2026-09-17: 7 commits2026-09-18: 7 commits2026-09-19: 0 commits2026-09-20: 0 commits2026-09-21: 4 commits2026-09-22: 11 commits2026-09-23: 0 commits2026-09-24: 0 commits2026-09-25: 6 commits2026-09-26: 0 commits
650 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Landmark project

    51,108 stars

  • Very active

    650 commits in 52 weeks

  • Community-driven

    ~203 contributors

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

  • Repeat trending

    8 trending appearances

What supervision does

Supervision is an open-source Python library designed to simplify the development of computer vision applications. It acts as a universal bridge between various object detection models (like YOLOv8, Ultralytics, and HuggingFace models) and practical application logic. Instead of writing boilerplate code for parsing complex model outputs, drawing bounding boxes, tracking object trajectories across frames, or filtering detections by specific zones, developers can use Supervision's high-level API. This dramatically accelerates the deployment of AI models into production environments by handling the tedious post-processing steps of computer vision workflows.

Computer vision engineers, machine learning researchers, and developers building AI-powered video analytics applications. It is the go-to tool for rapidly translating raw model outputs into actionable data and visualizations.

  • Model Agnostic API: Provides a unified interface to process outputs from almost any object detection or segmentation model.
  • Advanced Annotators: Includes a wide array of highly customizable drawing tools for bounding boxes, polygons, and labels.
  • Object Tracking Integration: Seamlessly integrates robust multi-object tracking algorithms to follow entities across video frames.
  • Zone Filtering: Allows developers to define specific polygonal zones to filter detections or trigger events based on spatial location.
  • Dataset Management: Offers utilities for converting, filtering, and merging computer vision datasets in various formats.

Where teams use it

Video Analytics

Building a pipeline to count vehicles crossing a specific line in a traffic camera feed.

Retail Monitoring

Tracking customer movement and dwell times within specific zones of a retail store using security footage.

Model Evaluation

Visually debugging and evaluating the accuracy of a newly trained object detection model by plotting its predictions.

Manufacturing Inspection

Setting up a rapid prototype to detect defects on a conveyor belt, filtering out objects outside the inspection area.

Getting started: pip install supervision

README

develop branch
📑 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.

    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)
supervision-0.16.0-annotators.mp4

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

    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

    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

    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

    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

    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 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 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!

football-players-tracking-25.mp4
traffic_analysis_result.mov
vehicles-step-7-new.mp4

📚 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!


View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Discussions

all 270

Releases and announcements

45 total
  1. supervision-0.30.50.30.5Sep 22, 202617 downloads

    # 0.30.5: Tracking, metrics, and image-drawing correctness fixes supervision 0.30.5 is a patch release closing 11 correctness and crash bugs across line-crossing tracking, mAR@K scoring, model connectors, key points, and image drawing/loading — no new public API of note, no breaking changes. The most consequential fixes are silent, not crashes: `LineZone.trigger` miscounted crossings by one per flicker whenever a tracker briefly touched the far side of the line, and `MeanAverageRecall` scored mAR@K against the wrong predictions when a lower-ranked one fit a target more tightly than one within the top K. The remaining fixes close a hard crash in `InferenceSlicer` on conflicting slice metadata (plus two related `Detections.__eq__` bugs), bring the OpenCV-free fallback backend to parity with OpenCV for rotated videos, CMYK images, transparent/1-bit PNGs, and default JPEG/WebP write quality, fix two drawing bugs that reproduce with OpenCV installed (16-bit `draw_image`, grayscale `IconAnnotator` icons), and fix two isolated bugs in `KeyPoints.as_detections` and `plot_images_grid`. Every fix ships a regression test. ## ✨ Spotlights / highlights ### `sv.LineZone.trigger` no long

  2. supervision-0.30.40.30.4Sep 17, 202621 downloads

    # 0.30.4: Dataset, connector, and key point correctness fixes supervision 0.30.4 is a patch release closing 14 correctness and crash bugs across dataset loaders/exporters, model connectors, and key point/annotator/video handling — no new public API, no breaking changes. The most consequential fixes are silent, not crashes: COCO polygon masks loaded shifted by up to a pixel, EXIF-rotated photos loaded with swapped width/height across two loaders and both image backends, and non-ASCII class names were mangled or rejected on Windows across four loaders and one writer. The remaining fixes close hard crashes in the Transformers v4/v5 connectors, Ultralytics pose loading, `TraceAnnotator`, `iterative_seek`, and three more dataset-format edge cases. Every fix ships a regression test. ## ✨ Spotlights / highlights ### `sv.DetectionDataset.from_coco` no longer shifts mask polygons by up to a pixel COCO polygons commonly hold sub-pixel float coordinates, but the loader cast them straight to `int32`, which truncates rather than rounds. Every polygon mask loaded shifted up and to the left by up to a pixel — the same polygon loaded one pixel apart depending on the format it was store

  3. supervision-0.30.30.30.3Sep 14, 202616 downloads

    # 0.30.3: Pose, VLM, and video/CSV crash and correctness fixes supervision 0.30.3 is a bug-fix release closing crash and silent-correctness gaps across pose estimation, VLM parsing, video/CSV output, and geometry utilities. Non-finite key points — how pose estimators report an undetected joint — no longer produce duplicate poses that survive `sv.KeyPoints.with_nms`, or crash the key point annotators outright. `sv.Detections.from_vlm` now orders backwards box corners, closing a bug where such a box scored a false `0.0` IoU and both survived NMS as a duplicate and counted as a total miss in mAP. `sv.TraceAnnotator` and `sv.CSVSink` no longer crash or silently drop columns on the first frame with no detections — a case every non-`ByteTrack` tracker pipeline hits. `sv.process_video` no longer hangs forever when `max_frames` exceeds the video length. Continuing 0.30.2's numeric-correctness theme, `sv.pad_boxes` and `sv.scale_boxes` are fixed against integer overflow. No breaking API changes, no new public API. ## ✨ Spotlights / highlights ### Non-finite key points no longer produce duplicate poses or crash annotators `sv.KeyPoints.with_nms` tested key point validity with `xy

  4. supervision-0.30.20.30.2Sep 4, 202640 downloads

    # 0.30.2: Detection numeric-correctness fixes supervision 0.30.2 fixes three silent numeric-correctness bugs in the detection utilities — integer box areas that could wrap negative on large boxes, and two coordinate converters that truncated fractional values on integer input — plus an `InferenceSlicer` determinism fix that restores its documented source-order result guarantee under multithreading. A set of versioned-docs reliability fixes rounds out the release. No breaking API changes, no new public API. ## ✨ Spotlights / highlights ### `sv.Detections.box_area` no longer overflows to a negative number Integer-coordinate box area now computes in `float64`. A large `int32` box (`50000 x 50000`) previously wrapped to a negative area. ```python detections = sv.Detections(xyxy=np.array([[0, 0, 50000, 50000]], dtype=np.int32)) detections.box_area # array([2.5e+09]) — was negative before the fix ``` ### `xcycwh_to_xyxy` / `denormalize_boxes` stop truncating integer boxes Both converters wrote fractional half-extent or scaled coordinates into a copy of the integer input, silently truncating toward zero — relevant when converting quantized VLM output (e.g. boxes o

  5. supervision-0.30.10.30.1Aug 24, 202634 downloads

    # 0.30.1: Numeric-precision and stability fixes supervision 0.30.1 is a bug-fix patch release. It corrects numeric-precision issues that only surface on specific inputs — large-coordinate oriented boxes (geospatial data, stitched frames), large integer boxes for `box_iou`, and rotated tracks in `DetectionsSmoother` — where prior versions could silently return imprecise or self-inconsistent results instead of erroring. It also fixes a duplicate-`libavdevice`-load crash risk on macOS when both `av` and `opencv-python` are installed, plus smaller fixes to `list_files_with_extensions` and the cv2-free RGBA fallback. No public API was added or removed, and no signature changed — a drop-in upgrade from 0.30.0 for virtually all users. See **Migration guide** below for the one narrow exception (`box_iou` on complex-valued coordinates) and for the precision caveats on the numeric fixes. ## ✨ Spotlights / highlights ### 1. Oriented-box area/IoU precision fix for large coordinates `sv.Detections.area` and `sv.oriented_box_iou_batch` now translate OBB coordinates to a local origin before floating-point math. Previously, large-coordinate inputs could lose enough precision that a box

Code frequency

additions and deletions
+50.3K-50.3KWeek of 2025-10-05: +0 linesWeek of 2025-10-05: -0 linesWeek of 2025-10-12: +1 linesWeek of 2025-10-12: -1 linesWeek of 2025-10-19: +0 linesWeek of 2025-10-19: -0 linesWeek of 2025-10-26: +369 linesWeek of 2025-10-26: -6 linesWeek of 2025-11-02: +909 linesWeek of 2025-11-02: -294 linesWeek of 2025-11-09: +1,805 linesWeek of 2025-11-09: -1,004 linesWeek of 2025-11-16: +108 linesWeek of 2025-11-16: -55 linesWeek of 2025-11-23: +0 linesWeek of 2025-11-23: -0 linesWeek of 2025-11-30: +0 linesWeek of 2025-11-30: -0 linesWeek of 2025-12-07: +0 linesWeek of 2025-12-07: -0 linesWeek of 2025-12-14: +0 linesWeek of 2025-12-14: -0 linesWeek of 2025-12-21: +0 linesWeek of 2025-12-21: -0 linesWeek of 2025-12-28: +0 linesWeek of 2025-12-28: -0 linesWeek of 2026-01-04: +65 linesWeek of 2026-01-04: -29 linesWeek of 2026-01-11: +1,051 linesWeek of 2026-01-11: -891 linesWeek of 2026-01-18: +562 linesWeek of 2026-01-18: -86 linesWeek of 2026-01-25: +2,942 linesWeek of 2026-01-25: -902 linesWeek of 2026-02-01: +50,303 linesWeek of 2026-02-01: -46,494 linesWeek of 2026-02-08: +3,409 linesWeek of 2026-02-08: -1,202 linesWeek of 2026-02-15: +1,055 linesWeek of 2026-02-15: -137 linesWeek of 2026-02-22: +115 linesWeek of 2026-02-22: -4 linesWeek of 2026-03-01: +9 linesWeek of 2026-03-01: -9 linesWeek of 2026-03-08: +1,349 linesWeek of 2026-03-08: -1,079 linesWeek of 2026-03-15: +6 linesWeek of 2026-03-15: -7 linesWeek of 2026-03-22: +13 linesWeek of 2026-03-22: -13 linesWeek of 2026-03-29: +1,434 linesWeek of 2026-03-29: -75 linesWeek of 2026-04-05: +3 linesWeek of 2026-04-05: -3 linesWeek of 2026-04-12: +6,773 linesWeek of 2026-04-12: -686 linesWeek of 2026-04-19: +3,458 linesWeek of 2026-04-19: -334 linesWeek of 2026-04-26: +1,367 linesWeek of 2026-04-26: -592 linesWeek of 2026-05-03: +0 linesWeek of 2026-05-03: -0 linesWeek of 2026-05-10: +9 linesWeek of 2026-05-10: -9 linesWeek of 2026-05-17: +1,318 linesWeek of 2026-05-17: -401 linesWeek of 2026-05-24: +1,280 linesWeek of 2026-05-24: -36 linesWeek of 2026-05-31: +1,526 linesWeek of 2026-05-31: -1,057 linesWeek of 2026-06-07: +4,419 linesWeek of 2026-06-07: -1,755 linesWeek of 2026-06-14: +4,393 linesWeek of 2026-06-14: -580 linesWeek of 2026-06-21: +5,589 linesWeek of 2026-06-21: -685 linesWeek of 2026-06-28: +10,221 linesWeek of 2026-06-28: -3,026 linesWeek of 2026-07-05: +6,931 linesWeek of 2026-07-05: -1,007 linesWeek of 2026-07-12: +12,108 linesWeek of 2026-07-12: -6,222 linesWeek of 2026-07-19: +3,189 linesWeek of 2026-07-19: -1,246 linesWeek of 2026-07-26: +1,227 linesWeek of 2026-07-26: -340 linesWeek of 2026-08-02: +1,300 linesWeek of 2026-08-02: -230 linesWeek of 2026-08-09: +265 linesWeek of 2026-08-09: -185 linesWeek of 2026-08-16: +2,708 linesWeek of 2026-08-16: -272 linesWeek of 2026-08-23: +450 linesWeek of 2026-08-23: -88 linesWeek of 2026-08-30: +4,206 linesWeek of 2026-08-30: -939 linesWeek of 2026-09-06: +6,090 linesWeek of 2026-09-06: -4,625 linesWeek of 2026-09-13: +4,398 linesWeek of 2026-09-13: -3,469 linesWeek of 2026-09-20: +3,765 linesWeek of 2026-09-20: -363 linesWeek of 2026-09-27: +0 linesWeek of 2026-09-27: -0 linesOct 5, 2025Sep 27, 2026
+152.5K lines added, -80.4K removed over the last year.

Commits per week

last 52 weeks
720Week of 2025-09-28: 1 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 1 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 4 commitsWeek of 2025-11-02: 17 commitsWeek of 2025-11-09: 37 commitsWeek of 2025-11-16: 5 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 9 commitsWeek of 2026-01-11: 27 commitsWeek of 2026-01-18: 8 commitsWeek of 2026-01-25: 28 commitsWeek of 2026-02-01: 72 commitsWeek of 2026-02-08: 17 commitsWeek of 2026-02-15: 9 commitsWeek of 2026-02-22: 3 commitsWeek of 2026-03-01: 2 commitsWeek of 2026-03-08: 16 commitsWeek of 2026-03-15: 2 commitsWeek of 2026-03-22: 2 commitsWeek of 2026-03-29: 12 commitsWeek of 2026-04-05: 1 commitsWeek of 2026-04-12: 24 commitsWeek of 2026-04-19: 13 commitsWeek of 2026-04-26: 7 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 4 commitsWeek of 2026-05-17: 14 commitsWeek of 2026-05-24: 6 commitsWeek of 2026-05-31: 6 commitsWeek of 2026-06-07: 15 commitsWeek of 2026-06-14: 28 commitsWeek of 2026-06-21: 20 commitsWeek of 2026-06-28: 32 commitsWeek of 2026-07-05: 21 commitsWeek of 2026-07-12: 17 commitsWeek of 2026-07-19: 12 commitsWeek of 2026-07-26: 9 commitsWeek of 2026-08-02: 14 commitsWeek of 2026-08-09: 7 commitsWeek of 2026-08-16: 10 commitsWeek of 2026-08-23: 11 commitsWeek of 2026-08-30: 20 commitsWeek of 2026-09-06: 23 commitsWeek of 2026-09-13: 43 commitsWeek of 2026-09-20: 21 commitsSep 28, 2025Sep 20, 2026
650 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 4 commitsSun 2:00 — 1 commitsSun 3:00 — 4 commitsSun 4:00 — 1 commitsSun 5:00 — 1 commitsSun 6:00 — 0 commitsSun 7:00 — 2 commitsSun 8:00 — 0 commitsSun 9:00 — 1 commitsSun 10:00 — 1 commitsSun 11:00 — 10 commitsSun 12:00 — 5 commitsSun 13:00 — 13 commitsSun 14:00 — 3 commitsSun 15:00 — 4 commitsSun 16:00 — 7 commitsSun 17:00 — 7 commitsSun 18:00 — 3 commitsSun 19:00 — 6 commitsSun 20:00 — 10 commitsSun 21:00 — 4 commitsSun 22:00 — 10 commitsSun 23:00 — 16 commitsMon 0:00 — 70 commitsMon 1:00 — 50 commitsMon 2:00 — 2 commitsMon 3:00 — 1 commitsMon 4:00 — 2 commitsMon 5:00 — 1 commitsMon 6:00 — 8 commitsMon 7:00 — 9 commitsMon 8:00 — 25 commitsMon 9:00 — 39 commitsMon 10:00 — 24 commitsMon 11:00 — 32 commitsMon 12:00 — 36 commitsMon 13:00 — 57 commitsMon 14:00 — 51 commitsMon 15:00 — 55 commitsMon 16:00 — 50 commitsMon 17:00 — 104 commitsMon 18:00 — 32 commitsMon 19:00 — 43 commitsMon 20:00 — 41 commitsMon 21:00 — 34 commitsMon 22:00 — 33 commitsMon 23:00 — 27 commitsTue 0:00 — 39 commitsTue 1:00 — 20 commitsTue 2:00 — 9 commitsTue 3:00 — 4 commitsTue 4:00 — 6 commitsTue 5:00 — 6 commitsTue 6:00 — 0 commitsTue 7:00 — 7 commitsTue 8:00 — 16 commitsTue 9:00 — 17 commitsTue 10:00 — 33 commitsTue 11:00 — 43 commitsTue 12:00 — 59 commitsTue 13:00 — 61 commitsTue 14:00 — 50 commitsTue 15:00 — 60 commitsTue 16:00 — 62 commitsTue 17:00 — 54 commitsTue 18:00 — 26 commitsTue 19:00 — 28 commitsTue 20:00 — 29 commitsTue 21:00 — 43 commitsTue 22:00 — 28 commitsTue 23:00 — 26 commitsWed 0:00 — 52 commitsWed 1:00 — 20 commitsWed 2:00 — 13 commitsWed 3:00 — 4 commitsWed 4:00 — 1 commitsWed 5:00 — 1 commitsWed 6:00 — 8 commitsWed 7:00 — 7 commitsWed 8:00 — 19 commitsWed 9:00 — 35 commitsWed 10:00 — 40 commitsWed 11:00 — 37 commitsWed 12:00 — 52 commitsWed 13:00 — 47 commitsWed 14:00 — 58 commitsWed 15:00 — 83 commitsWed 16:00 — 60 commitsWed 17:00 — 45 commitsWed 18:00 — 46 commitsWed 19:00 — 45 commitsWed 20:00 — 45 commitsWed 21:00 — 37 commitsWed 22:00 — 34 commitsWed 23:00 — 41 commitsThu 0:00 — 63 commitsThu 1:00 — 20 commitsThu 2:00 — 14 commitsThu 3:00 — 5 commitsThu 4:00 — 2 commitsThu 5:00 — 1 commitsThu 6:00 — 3 commitsThu 7:00 — 8 commitsThu 8:00 — 8 commitsThu 9:00 — 29 commitsThu 10:00 — 29 commitsThu 11:00 — 22 commitsThu 12:00 — 44 commitsThu 13:00 — 52 commitsThu 14:00 — 48 commitsThu 15:00 — 64 commitsThu 16:00 — 38 commitsThu 17:00 — 50 commitsThu 18:00 — 40 commitsThu 19:00 — 29 commitsThu 20:00 — 31 commitsThu 21:00 — 24 commitsThu 22:00 — 35 commitsThu 23:00 — 29 commitsFri 0:00 — 58 commitsFri 1:00 — 42 commitsFri 2:00 — 11 commitsFri 3:00 — 2 commitsFri 4:00 — 4 commitsFri 5:00 — 1 commitsFri 6:00 — 2 commitsFri 7:00 — 6 commitsFri 8:00 — 4 commitsFri 9:00 — 29 commitsFri 10:00 — 27 commitsFri 11:00 — 29 commitsFri 12:00 — 29 commitsFri 13:00 — 28 commitsFri 14:00 — 38 commitsFri 15:00 — 39 commitsFri 16:00 — 42 commitsFri 17:00 — 34 commitsFri 18:00 — 39 commitsFri 19:00 — 20 commitsFri 20:00 — 31 commitsFri 21:00 — 21 commitsFri 22:00 — 34 commitsFri 23:00 — 14 commitsSat 0:00 — 13 commitsSat 1:00 — 12 commitsSat 2:00 — 5 commitsSat 3:00 — 5 commitsSat 4:00 — 0 commitsSat 5:00 — 1 commitsSat 6:00 — 1 commitsSat 7:00 — 5 commitsSat 8:00 — 2 commitsSat 9:00 — 3 commitsSat 10:00 — 10 commitsSat 11:00 — 4 commitsSat 12:00 — 4 commitsSat 13:00 — 7 commitsSat 14:00 — 5 commitsSat 15:00 — 4 commitsSat 16:00 — 6 commitsSat 17:00 — 11 commitsSat 18:00 — 12 commitsSat 19:00 — 7 commitsSat 20:00 — 6 commitsSat 21:00 — 9 commitsSat 22:00 — 9 commitsSat 23:00 — 8 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Sep 18, 2026daily#13+260
Sep 17, 2026daily#13+260
Sep 16, 2026daily#10+217
Aug 7, 2026daily#8+146
Aug 6, 2026daily#8+146
Jun 9, 2026daily#24+17
Jun 8, 2026daily#12+43
Jun 7, 2026daily#5+128