GStars
    roboflow

    roboflow/supervision

    We write your reusable computer vision tools. ๐Ÿ’œ

    computer-vision
    deep-learning
    low-code
    machine-learning
    monitoring
    classification
    coco
    hacktoberfest
    image-processing
    instance-segmentation
    metrics
    object-detection
    oriented-bounding-box
    pascal-voc
    python
    pytorch
    tensorflow
    tracking
    video-processing
    yolo
    Python
    MIT
    36.5K stars
    3.1K forks
    36.5K watching
    Updated 2/27/2026
    View on GitHub
    Backblaze Advertisement

    Loading star history...

    Health Score

    24.78

    Weekly Growth

    +0

    +0.0% this week

    Contributors

    1

    Total contributors

    Open Issues

    132

    Generated Insights

    About supervision

    ๐Ÿ‘‹ hello

    We write your reusable computer vision tools. Whether you need to load your dataset from your hard drive, draw detections on an image or video, or count how many detections are in a zone. You can count on us! ๐Ÿค

    ๐Ÿ’ป install

    Pip install the supervision package in a Python>=3.9 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, or 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
    
    ๐Ÿ‘‰ more model connectors
    • inference

      Running with Inference requires a Roboflow API KEY.

      import cv2
      import supervision as sv
      from inference import get_model
      
      image = cv2.imread(...)
      model = get_model(model_id="yolov8s-640", 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(...)
    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

      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!

    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!


    Discover Repositories

    Search across tracked repositories by name or description