What’s New

supervision 0.29.0

0.29.0

supervision-0.29.0

Added
  • Added sv.VertexEllipseAreaAnnotator, sv.VertexEllipseOutlineAnnotator, and sv.VertexEllipseHaloAnnotator for visualizing keypoint uncertainty as covariance ellipses
  • Added sv.oriented_box_non_max_suppression and sv.oriented_box_non_max_merge for performing NMS and NMM directly on oriented bounding boxes
  • Added OBB (Oriented Bounding Box) support to sv.ConfusionMatrix via MetricTarget.ORIENTED_BOUNDING_BOXES
  • Added preserve_audio parameter to sv.process_video to mux the audio stream from the source video into the output using ffmpeg
  • Added is_obb parameter to sv.DetectionDataset.as_yolo for exporting oriented bounding box annotations in the YOLO OBB format
Changed
  • sv.EdgeAnnotator and sv.VertexAnnotator now respect the visible mask, skipping invisible keypoints and their edges during rendering
  • sv.EdgeAnnotator and sv.VertexLabelAnnotator now support per-class skeleton definitions for correct rendering with multiple skeleton topologies
  • sv.Detections.with_nms and sv.Detections.with_nmm are now OBB-aware, using oriented-box IoU automatically when oriented box coordinates are present
🚀 Added
🌱 Changed
  • sv.Detections.area is now OBB-aware. When oriented box coordinates are present, the property returns the polygon area of the rotated bounding box (via the shoelace formula) instead of the axis-aligned box area. (#2306)

  • sv.InferenceSlicer now detects OBB outputs from callbacks and automatically falls back to sequential processing to avoid thread-safety issues when thread_workers > 1. (#2256)

  • Fixed sv.oriented_box_iou_batch to correctly handle non-square canvases. Previously, rasterization assumed square dimensions, leading to incorrect IoU values for tall or wide images. (#2282)

🔧 Fixed
  • Fixed sv.process_video audio stream handling. The audio muxing path now correctly creates temp files on the same filesystem, decodes ffmpeg errors, and avoids muxing incomplete output. (#2252)

  • Fixed sv.Detections.from_vlm returning None for class_id on empty VLM parses. Now returns an empty int ndarray. (#2239)

  • Fixed sv.Detections.from_inference to preserve class_name as a string-dtype array when predictions are empty. Previously it returned an untyped empty array. (#2270)

  • Fixed sv.HeatMapAnnotator divide-by-zero crash when called with empty detections. (#2269)

  • Fixed COCO export emitting 0-indexed category_id values. Now correctly emits 1-indexed IDs as per the COCO specification. (#2276)

  • Fixed COCO annotation and image IDs not being chainable across dataset splits. IDs are now sequential across train/val/test. (#2267)

  • Fixed sv.DetectionDataset.as_yolo losing OBB rotation when exporting oriented bounding boxes. (#2289)

  • Fixed YOLO dataset loading to sort class names by numeric keys when the data.yaml uses integer class IDs. (#2296)

  • Fixed letterbox utility to support grayscale images. (#2297)

  • Fixed file extension filters to normalize casing (e.g. .JPG now matches .jpg). (#2298)

⚠️ Deprecated
DeprecatedRemovalReplacement
KeyPoints.confidence0.32.0KeyPoints.keypoint_confidence
merge_inner_detection_object_pair0.32.0None (internal use only)
merge_inner_detections_objects0.32.0None (internal use only)
merge_inner_detections_objects_without_iou0.32.0None (internal use only)
validate_detections_fields0.32.0None (internal use only)
validate_vlm_parameters0.32.0None (internal use only)
validate_fields_both_defined_or_none0.32.0None (internal use only)
validate_xyxy0.32.0None (internal use only)
validate_mask0.32.0None (internal use only)
validate_class_id0.32.0None (internal use only)
validate_confidence0.32.0None (internal use only)
validate_tracker_id0.32.0None (internal use only)
validate_data0.32.0None (internal use only)
validate_xy0.32.0None (internal use only)
validate_key_point_confidence0.32.0None (internal use only)
validate_key_points_fields0.32.0None (internal use only)
validate_resolution0.32.0None (internal use only)
validate_custom_values0.32.0None (internal use only)
validate_input_tensors0.32.0None (internal use only)
validate_labels0.32.0None (internal use only)
🏆 Contributors

@SkalskiP (Piotr Skalski), @Borda (Jirka Borovec), @kounelisagis (Agis Kounelis), @RitwijParmar (Ritwij Aryan Parmar), @Khanz9664 (Shahid Ul Islam), @satishkc7 (SATISH K C), @Ace3Z (Mahbod Tajdini), @Madhav-C, @RubenHaisma (Ruben Haisma), @adhavan18 (Tamil Adhavan), @Bortlesboat (Andrew Barnes), @Lourdhu02, @tarunbommawar27, @YousefZahran1 (Youssef Ibrahim), @JFrench-Enterprise, @Patel-Prem (Premkumar Patel)

View original