Releases: roboflow/supervision
supervision-0.21.0
π Timeline
The supervision-0.21.0
release is around the corner. Here is the timeline:
5 Jun 2024 08:00 PM CEST (UTC +2) / 5 Jun 2024 11:00 AM PDT (UTC -7)
- mergedevelop
intomain
- closing listsupervision-0.21.0
features6 Jun 2024 11:00 AM CEST (UTC +2) / 6 Jun 2024 02:00 AM PDT (UTC -7)
- releasesupervision-0.21.0
πͺ΅ Changelog
π Added
sv.Detections.with_nmm
to perform non-maximum merging on the current set of object detections. (#500)
sv.Detections.from_lmm
allowing to parse Large Multimodal Model (LMM) text result intosv.Detections
object. For nowfrom_lmm
supports only PaliGemma result parsing. (#1221)
import supervision as sv
paligemma_result = "<loc0256><loc0256><loc0768><loc0768> cat"
detections = sv.Detections.from_lmm(
sv.LMM.PALIGEMMA,
paligemma_result,
resolution_wh=(1000, 1000),
classes=['cat', 'dog']
)
detections.xyxy
# array([[250., 250., 750., 750.]])
detections.class_id
# array([0])
sv.VertexLabelAnnotator
allowing to annotate every vertex of a keypoint skeleton with custom text and color. (#1236)
import supervision as sv
image = ...
key_points = sv.KeyPoints(...)
LABELS = [
"nose", "left eye", "right eye", "left ear",
"right ear", "left shoulder", "right shoulder", "left elbow",
"right elbow", "left wrist", "right wrist", "left hip",
"right hip", "left knee", "right knee", "left ankle",
"right ankle"
]
COLORS = [
"#FF6347", "#FF6347", "#FF6347", "#FF6347",
"#FF6347", "#FF1493", "#00FF00", "#FF1493",
"#00FF00", "#FF1493", "#00FF00", "#FFD700",
"#00BFFF", "#FFD700", "#00BFFF", "#FFD700",
"#00BFFF"
]
COLORS = [sv.Color.from_hex(color_hex=c) for c in COLORS]
vertex_label_annotator = sv.VertexLabelAnnotator(
color=COLORS,
text_color=sv.Color.BLACK,
border_radius=5
)
annotated_frame = vertex_label_annotator.annotate(
scene=image.copy(),
key_points=key_points,
labels=labels
)
-
sv.KeyPoints.from_inference
andsv.KeyPoints.from_yolo_nas
allowing to createsv.KeyPoints
from Inference and YOLO-NAS result. (#1147 and #1138) -
sv.mask_to_rle
andsv.rle_to_mask
allowing for easy conversion between mask and rle formats. (#1163)
π± Changed
-
sv.InferenceSlicer
allowing to select overlap filtering strategy (NONE
,NON_MAX_SUPPRESSION
andNON_MAX_MERGE
). (#1236) -
sv.InferenceSlicer
adding instance segmentation model support. (#1178)
import cv2
import numpy as np
import supervision as sv
from inference import get_model
model = get_model(model_id="yolov8x-seg-640")
image = cv2.imread(<SOURCE_IMAGE_PATH>)
def callback(image_slice: np.ndarray) -> sv.Detections:
results = model.infer(image_slice)[0]
return sv.Detections.from_inference(results)
slicer = sv.InferenceSlicer(callback = callback)
detections = slicer(image)
mask_annotator = sv.MaskAnnotator()
label_annotator = sv.LabelAnnotator()
annotated_image = mask_annotator.annotate(
scene=image, detections=detections)
annotated_image = label_annotator.annotate(
scene=annotated_image, detections=detections)
sv.LineZone
making it 10-20 times faster, depending on the use case. (#1228)
sv.DetectionDataset.from_coco
andsv.DetectionDataset.as_coco
adding support for run-length encoding (RLE) mask format. (#1163)
π Contributors
@onuralpszr (Onuralp SEZER), @LinasKo (Linas Kondrackis), @rolson24 (Raif Olson), @mario-dg (Mario da Graca), @xaristeidou (Christoforos Aristeidou), @ManzarIMalik (Manzar Iqbal Malik), @tc360950 (Tomasz CΔ kaΕa), @emSko, @SkalskiP (Piotr Skalski)
supervision-0.20.0
π Added
-
sv.KeyPoints
to provide initial support for pose estimation and broader keypoint detection models. (#1128) -
sv.EdgeAnnotator
andsv.VertexAnnotator
to enable rendering of results from keypoint detection models. (#1128)
import cv2
import supervision as sv
from ultralytics import YOLO
image = cv2.imread(<SOURCE_IMAGE_PATH>)
model = YOLO('yolov8l-pose')
result = model(image, verbose=False)[0]
keypoints = sv.KeyPoints.from_ultralytics(result)
edge_annotators = sv.EdgeAnnotator(color=sv.Color.GREEN, thickness=5)
annotated_image = edge_annotators.annotate(image.copy(), keypoints)
import cv2
import supervision as sv
from ultralytics import YOLO
image = cv2.imread(<SOURCE_IMAGE_PATH>)
model = YOLO('yolov8l-pose')
result = model(image, verbose=False)[0]
keypoints = sv.KeyPoints.from_ultralytics(result)
vertex_annotators = sv.VertexAnnotator(color=sv.Color.GREEN, radius=10)
annotated_image = vertex_annotators.annotate(image.copy(), keypoints)
π± Changed
-
sv.LabelAnnotator
by adding an additionalcorner_radius
argument that allows for rounding the corners of the bounding box. (#1037) -
sv.PolygonZone
such that theframe_resolution_wh
argument is no longer required to initializesv.PolygonZone
. (#1109)
Warning
The frame_resolution_wh
parameter in sv.PolygonZone
is deprecated and will be removed in supervision-0.24.0
.
-
sv.get_polygon_center
to calculate a more accurate polygon centroid. (#1084) -
sv.Detections.from_transformers
by adding support for Transformers segmentation models and extract class names values. (#1069)
import torch
import supervision as sv
from PIL import Image
from transformers import DetrImageProcessor, DetrForSegmentation
processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50-panoptic")
model = DetrForSegmentation.from_pretrained("facebook/detr-resnet-50-panoptic")
image = Image.open(<SOURCE_IMAGE_PATH>)
inputs = processor(images=image, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
width, height = image.size
target_size = torch.tensor([[height, width]])
results = processor.post_process_segmentation(
outputs=outputs, target_sizes=target_size)[0]
detections = sv.Detections.from_transformers(results, id2label=model.config.id2label)
mask_annotator = sv.MaskAnnotator()
label_annotator = sv.LabelAnnotator(text_position=sv.Position.CENTER)
annotated_image = mask_annotator.annotate(
scene=image, detections=detections)
annotated_image = label_annotator.annotate(
scene=annotated_image, detections=detections)
π οΈ Fixed
sv.ByteTrack.update_with_detections
which was removing segmentation masks while tracking. Now,ByteTrack
can be used alongside segmentation models. (#787)
π Contributors
@onuralpszr (Onuralp SEZER), @rolson24 (Raif Olson), @xaristeidou (Christoforos Aristeidou), @jeslinpjames (Jeslin P James), @Griffin-Sullivan (Griffin Sullivan), @PawelPeczek-Roboflow (PaweΕ PΔczek), @pirnerjonas (Jonas Pirner), @sharingan000, @macc-n, @LinasKo (Linas Kondrackis), @SkalskiP (Piotr Skalski)
supervision-0.19.0
π§βπ³ Cookbooks
Supervision Cookbooks - A curated open-source collection crafted by the community, offering practical examples, comprehensive guides, and walkthroughs for leveraging Supervision alongside diverse Computer Vision models. (#860)
π Added
sv.CSVSink
allowing for the straightforward saving of image, video, or stream inference results in a.csv
file. (#818)
import supervision as sv
from ultralytics import YOLO
model = YOLO(<SOURCE_MODEL_PATH>)
csv_sink = sv.CSVSink(<RESULT_CSV_FILE_PATH>)
frames_generator = sv.get_video_frames_generator(<SOURCE_VIDEO_PATH>)
with csv_sink:
for frame in frames_generator:
result = model(frame)[0]
detections = sv.Detections.from_ultralytics(result)
csv_sink.append(detections, custom_data={<CUSTOM_LABEL>:<CUSTOM_DATA>})
traffic_csv_2.mp4
sv.JSONSink
allowing for the straightforward saving of image, video, or stream inference results in a.json
file. (#819)
import supervision as sv
from ultralytics import YOLO
model = YOLO(<SOURCE_MODEL_PATH>)
json_sink = sv.JSONSink(<RESULT_JSON_FILE_PATH>)
frames_generator = sv.get_video_frames_generator(<SOURCE_VIDEO_PATH>)
with json_sink:
for frame in frames_generator:
result = model(frame)[0]
detections = sv.Detections.from_ultralytics(result)
json_sink.append(detections, custom_data={<CUSTOM_LABEL>:<CUSTOM_DATA>})
sv.mask_iou_batch
allowing to compute Intersection over Union (IoU) of two sets of masks. (#847)sv.mask_non_max_suppression
allowing to perform Non-Maximum Suppression (NMS) on segmentation predictions. (#847)sv.CropAnnotator
allowing users to annotate the scene with scaled-up crops of detections. (#888)
import cv2
import supervision as sv
from inference import get_model
image = cv2.imread(<SOURCE_IMAGE_PATH>)
model = get_model(model_id="yolov8n-640")
result = model.infer(image)[0]
detections = sv.Detections.from_inference(result)
crop_annotator = sv.CropAnnotator()
annotated_frame = crop_annotator.annotate(
scene=image.copy(),
detections=detections
)
supervision-0.19.0-promo.mp4
π± Changed
sv.ByteTrack.reset
allowing users to clear trackers state, enabling the processing of multiple video files in sequence. (#827)sv.LineZoneAnnotator
allowing to hide in/out count usingdisplay_in_count
anddisplay_out_count
properties. (#802)sv.ByteTrack
input arguments and docstrings updated to improve readability and ease of use. (#787)
Warning
The track_buffer
, track_thresh
, and match_thresh
parameters in sv.ByterTrack
are deprecated and will be removed in supervision-0.23.0
. Use lost_track_buffer,
track_activation_threshold
, and minimum_matching_threshold
instead.
sv.PolygonZone
to now accept a list of specific box anchors that must be in zone for a detection to be counted. (#910)
Warning
The triggering_position
parameter in sv.PolygonZone
is deprecated and will be removed in supervision-0.23.0
. Use triggering_anchors
instead.
- Annotators adding support for Pillow images. All supervision Annotators can now accept an image as either a numpy array or a Pillow Image. They automatically detect its type, draw annotations, and return the output in the same format as the input. (#875)
π οΈ Fixed
sv.DetectionsSmoother
removingtracking_id
fromsv.Detections
. (#944)sv.DetectionDataset
which, after changes introduced insupervision-0.18.0
, failed to load datasets in YOLO, PASCAL VOC, and COCO formats.
π Contributors
@onuralpszr (Onuralp SEZER), @LinasKo (Linas Kondrackis), @LeviVasconcelos (Levi Vasconcelos), @AdonaiVera (Adonai Vera), @xaristeidou (Christoforos Aristeidou), @Kadermiyanyedi (Kader Miyanyedi), @NickHerrig (Nick Herrig), @PacificDou (Shuyang Dou), @iamhatesz (Tomasz Wrona), @capjamesg (James Gallagher), @sansyo, @SkalskiP (Piotr Skalski)
supervision-0.18.0
π Added
sv.PercentageBarAnnotator
allowing to annotate images and videos with percentage values representing confidence or other custom property. (#720)
import supervision as sv
image = ...
detections = sv.Detections(...)
percentage_bar_annotator = sv.PercentageBarAnnotator()
annotated_frame = percentage_bar_annotator.annotate(
scene=image.copy(),
detections=detections
)
sv.RoundBoxAnnotator
allowing to annotate images and videos with rounded corners bounding boxes. (#702)sv.DetectionsSmoother
allowing for smoothing detections over multiple frames in video tracking. (#696)
supervision-detection-smoothing.mp4
sv.OrientedBoxAnnotator
allowing to annotate images and videos with OBB (Oriented Bounding Boxes). (#770)
import cv2
import supervision as sv
from ultralytics import YOLO
image = cv2.imread(<SOURCE_IMAGE_PATH>)
model = YOLO("yolov8n-obb.pt")
result = model(image)[0]
detections = sv.Detections.from_ultralytics(result)
oriented_box_annotator = sv.OrientedBoxAnnotator()
annotated_frame = oriented_box_annotator.annotate(
scene=image.copy(),
detections=detections
)
sv.ColorPalette.from_matplotlib
allowing users to create asv.ColorPalette
instance from a Matplotlib color palette. (#769)
import supervision as sv
sv.ColorPalette.from_matplotlib('viridis', 5)
# ColorPalette(colors=[Color(r=68, g=1, b=84), Color(r=59, g=82, b=139), ...])
π± Changed
sv.Detections.from_ultralytics
adding support for OBB (Oriented Bounding Boxes). (#770)sv.LineZone
to now accept a list of specific box anchors that must cross the line for a detection to be counted. This update marks a significant improvement from the previous requirement, where all four box corners were necessary. Users can now specify a single anchor, such assv.Position.BOTTOM_CENTER
, or any other combination of anchors defined asList[sv.Position]
. (#735)sv.Detections
to support custom payload. (#700)sv.Color
's andsv.ColorPalette
's method of accessing predefined colors, transitioning from a function-based approach (sv.Color.red()
) to a more intuitive and conventional property-based method (sv.Color.RED
). (#756) (#769)
Warning
sv.ColorPalette.default()
is deprecated and will be removed in supervision-0.21.0
. Use sv.ColorPalette.DEFAULT
instead.
sv.ColorPalette.DEFAULT
value, giving users a more extensive set of annotation colors. (#769)
sv.Detections.from_roboflow
tosv.Detections.from_inference
streamlining its functionality to be compatible with both the both inference pip package and the Roboflow hosted API. (#677)
Warning
Detections.from_roboflow()
is deprecated and will be removed in supervision-0.21.0
. Use Detections.from_inference
instead.
import cv2
import supervision as sv
from inference.models.utils import get_roboflow_model
image = cv2.imread(<SOURCE_IMAGE_PATH>)
model = get_roboflow_model(model_id="yolov8s-640")
result = model.infer(image)[0]
detections = sv.Detections.from_inference(result)
π οΈ Fixed
sv.LineZone
functionality to accurately update the counter when an object crosses a line from any direction, including from the side. This enhancement enables more precise tracking and analytics, such as calculating individual in/out counts for each lane on the road. (#735)
supervision-0.18.0-promo-sample-2-result.mp4
π Contributors
@onuralpszr (Onuralp SEZER), @HinePo (Rafael Levy), @xaristeidou (Christoforos Aristeidou), @revtheundead (Utku Γzbek), @paulguerrie (Paul Guerrie), @yeldarby (Brad Dwyer), @capjamesg (James Gallagher), @SkalskiP (Piotr Skalski)
supervision-0.17.1
π Added
- Support for Python 3.12.
π Contributors
@onuralpszr (Onuralp SEZER), @SkalskiP (Piotr Skalski)
supervision-0.17.0
π Added
sv.PixelateAnnotator
allowing to pixelate objects on images and videos. (#633)
walking-pixelate-corner-optimized.mp4
-
sv.TriangleAnnotator
allowing to annotate images and videos with triangle markers. (#652) -
sv.PolygonAnnotator
allowing to annotate images and videos with segmentation mask outline. (#602)>>> import supervision as sv >>> image = ... >>> detections = sv.Detections(...) >>> polygon_annotator = sv.PolygonAnnotator() >>> annotated_frame = polygon_annotator.annotate( ... scene=image.copy(), ... detections=detections ... )
walking-polygon-optimized.mp4
-
sv.assets
allowing download of video files that you can use in your demos. (#476)>>> from supervision.assets import download_assets, VideoAssets >>> download_assets(VideoAssets.VEHICLES) "vehicles.mp4"
-
Position.CENTER_OF_MASS
allowing to place labels in center of mass of segmentation masks. (#605) -
sv.scale_boxes
allowing to scalesv.Detections.xyxy
values. (#651) -
sv.calculate_dynamic_text_scale
andsv.calculate_dynamic_line_thickness
allowing text scale and line thickness to match image resolution. (#637) -
sv.Color.as_hex
allowing to extract color value in HEX format. (#620) -
sv.Classifications.from_timm
allowing to load classification result from timm models. (#572) -
sv.Classifications.from_clip
allowing to load classification result from clip model. (#478) -
sv.Detections.from_azure_analyze_image
allowing to load detection results from Azure Image Analysis. (#571)
π± Changed
-
sv.BoxMaskAnnotator
renaming it tosv.ColorAnnotator
. (#646) -
sv.MaskAnnotator
to make it 5x faster. (#606)
π οΈ Fixed
-
sv.DetectionDataset.from_yolo
to ignore empty lines in annotation files. (#584) -
sv.BlurAnnotator
to trim negative coordinates before bluring detections. (#555) -
sv.TraceAnnotator
to respect trace position. (#511)
π Contributors
@onuralpszr (Onuralp SEZER), @hugoles (Hugo Dutra), @karanjakhar (Karan Jakhar), @kim-jeonghyun (Jeonghyun Kim), @fdloopes (
Felipe Lopes), @abhishek7kalra (Abhishek Kalra), @SummitStudiosDev, @xenteros @capjamesg (James Gallagher), @SkalskiP (Piotr Skalski)
supervision-0.16.0
π Added
supervision-0.16.0-annotators.mp4
sv.BoxMaskAnnotator
allowing to annotate images and videos with mox masks. (#422)sv.HaloAnnotator
allowing to annotate images and videos with halo effect. (#433)
>>> import supervision as sv
>>> image = ...
>>> detections = sv.Detections(...)
>>> halo_annotator = sv.HaloAnnotator()
>>> annotated_frame = halo_annotator.annotate(
... scene=image.copy(),
... detections=detections
... )
sv.HeatMapAnnotator
allowing to annotate videos with heat maps. (#466)sv.DotAnnotator
allowing to annotate images and videos with dots. (#492)sv.draw_image
allowing to draw an image onto a given scene with specified opacity and dimensions. (#449)sv.FPSMonitor
for monitoring frames per second (FPS) to benchmark latency. (#280)- π€ Hugging Face Annotators space. (#454)
π± Changed
sv.LineZone.trigger
now returnTuple[np.ndarray, np.ndarray]
. The first array indicates which detections have crossed the line from outside to inside. The second array indicates which detections have crossed the line from inside to outside. (#482)- Annotator argument name from
color_map: str
tocolor_lookup: ColorLookup
enum to increase type safety. (#465) sv.MaskAnnotator
allowing 2x faster annotation. (#426)
π οΈ Fixed
- Poetry env definition allowing proper local installation. (#477)
sv.ByteTrack
to returnnp.array([], dtype=int)
whensvDetections
is empty. (#430)- YOLONAS detection missing predication part added & fixed (#416)
- SAM detection at Demo Notebook
MaskAnnotator(color_map="index")
color_map
set toindex
(#416)
ποΈ Deleted
Warning
Deletedsv.Detections.from_yolov8
andsv.Classifications.from_yolov8
as those are now replaced bysv.Detections.from_ultralytics
andsv.Classifications.from_ultralytics
. (#438)
π Contributors
@hardikdava (Hardik Dava), @onuralpszr (Onuralp SEZER), @kapter, @keshav278 (Keshav Subramanian), @akashpambhar (Akash Pambhar), @AntonioConsiglio (Antonio Consiglio), @ashishdatta, @mario-dg (Mario da Graca), @ jayaBalaR (JAYABALAMBIKA.R), @abhishek7kalra (Abhishek Kalra), @PankajKrana (Pankaj Kumar Rana), @capjamesg (James Gallagher), @SkalskiP (Piotr Skalski)
supervision-0.15.0
π Added
supervision-0.15.0.mp4
-
sv.LabelAnnotator
allowing to annotate images and videos with text. (#170) -
sv.BoundingBoxAnnotator
allowing to annotate images and videos with bounding boxes. (#170) -
sv.BoxCornerAnnotator
allowing to annotate images and videos with just bounding box corners. (#170) -
sv.MaskAnnotator
allowing to annotate images and videos with segmentation masks. (#170) -
sv.EllipseAnnotator
allowing to annotate images and videos with ellipses (sports game style). (#170) -
sv.CircleAnnotator
allowing to annotate images and videos with circles. (#386) -
sv.TraceAnnotator
allowing to draw path of moving objects on videos. (#354) -
sv.BlurAnnotator
allowing to blur objects on images and videos. (#405)
>>> import supervision as sv
>>> image = ...
>>> detections = sv.Detections(...)
>>> bounding_box_annotator = sv.BoundingBoxAnnotator()
>>> annotated_frame = bounding_box_annotator.annotate(
... scene=image.copy(),
... detections=detections
... )
- Supervision usage example. You can now learn how to perform traffic flow analysis with Supervision. (#354)
traffic_analysis_result.mov
π± Changed
-
sv.Detections.from_roboflow
now does not requireclass_list
to be specified. Theclass_id
value can be extracted directly from the inference response. (#399) -
sv.VideoSink
now allows to customize the output codec. (#381) -
sv.InferenceSlicer
can now operate in multithreading mode. (#361)
π οΈ Fixed
sv.Detections.from_deepsparse
to allow processing empty deepsparse result object. (#348)
π Contributors
@hardikdava (Hardik Dava), @onuralpszr (Onuralp SEZER), @Killua7362 (Akshay Bhat), @fcakyon (Fatih C. Akyon), @akashAD98 (Akash A Desai), @Rajarshi-Misra (Rajarshi Misra), @capjamesg (James Gallagher), @SkalskiP (Piotr Skalski)
supervision-0.14.0
π Added
- Support for SAHI inference technique with
sv.InferenceSlicer
. (#282)
>>> import cv2
>>> import supervision as sv
>>> import numpy as np
>>> from ultralytics import YOLO
>>> image = cv2.imread(SOURCE_IMAGE_PATH)
>>> model = YOLO(...)
>>> def callback(image_slice: np.ndarray) -> sv.Detections:
... result = model(image_slice)[0]
... return sv.Detections.from_ultralytics(result)
>>> slicer = sv.InferenceSlicer(callback = callback)
>>> detections = slicer(image)
inference-slicer.mov
-
Detections.from_deepsparse
to enable seamless integration with DeepSparse framework. (#297) -
sv.Classifications.from_ultralytics
to enable seamless integration with Ultralytics framework. This will enable you to use supervision with all models that Ultralytics supports. (#281)Warning
sv.Detections.from_yolov8
andsv.Classifications.from_yolov8
are now deprecated and will be removed withsupervision-0.16.0
release. -
First supervision usage example script showing how to detect and track objects on video using YOLOv8 + Supervision. (#341)
detect-and-track-objects-on-video.mov
π± Changed
sv.ClassificationDataset
andsv.DetectionDataset
now use image path (not image name) as dataset keys. (#296)
π οΈ Fixed
Detections.from_roboflow
to filter out polygons with less than 3 points. (#300)
π Contributors
@hardikdava (Hardik Dava), @onuralpszr (Onuralp SEZER), @mayankagarwals (Mayank Agarwal), @rizavelioglu (Riza Velioglu), @arjun-234 (Arjun D.), @mwitiderrick (Derrick Mwiti), @ShubhamKanitkar32, @gasparitiago (Tiago De Gaspari), @capjamesg (James Gallagher), @SkalskiP (Piotr Skalski)
supervision-0.13.0
π Added
- Support for mean average precision (mAP) for object detection models with
sv.MeanAveragePrecision
. (#236)
>>> import supervision as sv
>>> from ultralytics import YOLO
>>> dataset = sv.DetectionDataset.from_yolo(...)
>>> model = YOLO(...)
>>> def callback(image: np.ndarray) -> sv.Detections:
... result = model(image)[0]
... return sv.Detections.from_yolov8(result)
>>> mean_average_precision = sv.MeanAveragePrecision.benchmark(
... dataset = dataset,
... callback = callback
... )
>>> mean_average_precision.map50_95
0.433
- Support for
ByteTrack
for object tracking withsv.ByteTrack
. (#256)
>>> import supervision as sv
>>> from ultralytics import YOLO
>>> model = YOLO(...)
>>> byte_tracker = sv.ByteTrack()
>>> annotator = sv.BoxAnnotator()
>>> def callback(frame: np.ndarray, index: int) -> np.ndarray:
... results = model(frame)[0]
... detections = sv.Detections.from_yolov8(results)
... detections = byte_tracker.update_from_detections(detections=detections)
... labels = [
... f"#{tracker_id} {model.model.names[class_id]} {confidence:0.2f}"
... for _, _, confidence, class_id, tracker_id
... in detections
... ]
... return annotator.annotate(scene=frame.copy(), detections=detections, labels=labels)
>>> sv.process_video(
... source_path='...',
... target_path='...',
... callback=callback
... )
byte_track_result_small.mp4
-
sv.Detections.from_ultralytics
to enable seamless integration with Ultralytics framework. This will enable you to usesupervision
with all models that Ultralytics supports. (#222)Warning
sv.Detections.from_yolov8
is now deprecated and will be removed withsupervision-0.15.0
release. -
sv.Detections.from_paddledet
to enable seamless integration with PaddleDetection framework. (#191) -
Support for loading PASCAL VOC segmentation datasets with
sv.DetectionDataset.
. (#245)
π Contributors
@hardikdava (Hardik Dava), @kirilllzaitsev (Kirill Zaitsev), @onuralpszr (Onuralp SEZER), @dbroboflow, @mayankagarwals (Mayank Agarwal), @danigarciaoca (Daniel M. GarcΓa-OcaΓ±a), @capjamesg (James Gallagher), @SkalskiP (Piotr Skalski)