notebooks | inference | autodistill | maestro
👋 Hello
💻 Install
🔥 Quickstart Models Annotators Datasets
Models
Annotators
Datasets
🎬 Tutorials
💜 Built with Supervision
📚 Documentation
🏆 Contribution
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. 🤝
Pip install the supervision package in a Python>=3.10 environment.
Read more about conda, mamba, and installing from source in our guide .
🔥 Quickstart
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 .
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
inference
Running with Inference requires a Roboflow API KEY .
Supervision offers a wide range of highly customizable annotators , allowing you to compose the perfect visualization for your use case.
Supervision provides a set of utils that allow you to load, split, merge, and save datasets in one of the supported formats.
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 = ..., )
load
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)
split
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']
merge
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 = ..., )
save
convert sv . DetectionDataset . from_yolo ( images_directory_path = ..., annotations_directory_path = ..., data_yaml_path = ..., ). as_pascal_voc ( images_directory_path = ..., annotations_directory_path = ..., )
convert
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
Speed Estimation & Vehicle Tracking | Computer Vision | Open Source
Did you build something cool using supervision? Let us know!
Visit our documentation page to learn how supervision can help you build computer vision applications faster and more reliably.
We love your input! Please see our contributing guide to get started. Thank you 🙏 to all our contributors!