[go: nahoru, domu]

Skip to content

Releases: roboflow/supervision

supervision-0.12.0

24 Jul 07:59
800e39d
Compare
Choose a tag to compare

Warning
With the supervision-0.12.0 release, we are terminating official support for Python 3.7. (#179)

๐Ÿš€ Added

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

>>> confusion_matrix = sv.ConfusionMatrix.benchmark(
...     dataset = dataset,
...     callback = callback
... )

>>> confusion_matrix.matrix
array([
    [0., 0., 0., 0.],
    [0., 1., 0., 1.],
    [0., 1., 1., 0.],
    [1., 1., 0., 0.]
])

Snap (51)

๐ŸŒฑ Changed

  • Packing method from setup.py to pyproject.toml. (#180)

๐Ÿ› ๏ธ Fixed

๐Ÿ† Contributors

@kirilllzaitsev @hardikdava @onuralpszr @Ucag @SkalskiP @capjamesg

supervision-0.11.1

29 Jun 13:10
Compare
Choose a tag to compare

๐Ÿ› ๏ธ Fixed

๐Ÿ† Contributors

@capjamesg @SkalskiP

supervision-0.11.0

28 Jun 21:03
Compare
Choose a tag to compare

๐Ÿš€ Added

>>> import supervision as sv

>>> ds = sv.DetectionDataset.from_coco(
...     images_directory_path='...',
...     annotations_path='...'
... )

>>> ds.as_coco(
...     images_directory_path='...',
...     annotations_path='...'
... )
>>> import supervision as sv

>>> 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']

Snap (47)

๐Ÿ› ๏ธ Fixed

  • Incorrect loading of YOLO dataset class names from data.yaml. (#157)

๐Ÿ† Contributors

@SkalskiP @hardikdava

supervision-0.10.0

14 Jun 14:52
9cff624
Compare
Choose a tag to compare

๐Ÿš€ Added

>>> import supervision as sv

>>> cs = sv.ClassificationDataset.from_folder_structure(
...     root_directory_path='...'
... )

>>> cs.as_folder_structure(
...     root_directory_path='...'
... )
>>> import supervision as sv

>>> cs = sv.ClassificationDataset(...)
>>> train_cs, test_cs = cs.split(split_ratio=0.7, random_state=42, shuffle=True)

>>> len(train_cs), len(test_cs)
(700, 300)

Screenshot 2023-06-14 at 15 33 27

๐ŸŒฑ Changed

  • sv.get_video_frames_generator documentation to better describe actual behavior. (#135)

Snap (45)

๐Ÿ† Contributors

@capjamesg @dankresio @SkalskiP

supervision-0.9.0

07 Jun 11:17
Compare
Choose a tag to compare

๐Ÿš€ Added

  • Ability to select sv.Detections by index, list of indexes or slice. Here is an example illustrating the new selection methods. (#118)
>>> import supervision as sv

>>> detections = sv.Detections(...)
>>> len(detections[0])
1
>>> len(detections[[0, 1]])
2
>>> len(detections[0:2])
2

supervision-0_9_0-Snap (4)

  • Ability to extract masks from YOLOv8 results using sv.Detections.from_yolov8. Here is an example illustrating how to extract boolean masks from the result of the YOLOv8 model inference. (#101)
>>> import cv2
>>> from ultralytics import YOLO
>>> import supervision as sv

>>> image = cv2.imread(...)
>>> image.shape
(640, 640, 3)

>>> model = YOLO('yolov8s-seg.pt')
>>> result = model(image)[0]
>>> detections = sv.Detections.from_yolov8(result)
>>> detections.mask.shape
(2, 640, 640)
  • Ability to crop the image using sv.crop. Here is an example showing how to get a separate crop for each detection in sv.Detections. (#122)
>>> import cv2
>>> import supervision as sv

>>> image = cv2.imread(...)
>>> detections = sv.Detections(...)
>>> len(detections)
2
>>> crops = [
...     sv.crop(image=image, xyxy=xyxy) 
...     for xyxy 
...     in detections.xyxy
... ]
>>> len(crops)
2
  • Ability to conveniently save multiple images into directory using sv.ImageSink. An example shows how to save every tenth video frame as a separate image. (#120)
>>> import supervision as sv

>>> with sv.ImageSink(target_dir_path='target/directory/path') as sink:
...     for image in sv.get_video_frames_generator(source_path='source_video.mp4', stride=10):
...         sink.save_image(image=image)

๐Ÿ› ๏ธ Fixed

  • Inconvenient handling of sv.PolygonZone coordinates. Now sv.PolygonZone accepts coordinates in the form of [[x1, y1], [x2, y2], ...] that can be both integers and floats. (#106)

๐Ÿ† Contributors

@SkalskiP @lomnes-atlast-food @hardikdava

supervision-0.8.0

17 May 19:28
Compare
Choose a tag to compare

๐Ÿš€ Added

  • Support for dataset inheritance. The current Dataset got renamed to DetectionDataset. Now DetectionDataset inherits from BaseDataset. This change was made to enforce the future consistency of APIs of different types of computer vision datasets. (#100)
  • Ability to save datasets in YOLO format using DetectionDataset.as_yolo. (#100)
>>> import supervision as sv

>>> ds = sv.DetectionDataset(...)
>>> ds.as_yolo(
...     images_directory_path='...',
...     annotations_directory_path='...',
...     data_yaml_path='...'
... )
>>> import supervision as sv

>>> ds = sv.DetectionDataset(...)
>>> train_ds, test_ds = ds.split(split_ratio=0.7, random_state=42, shuffle=True)

>>> len(train_ds), len(test_ds)
(700, 300)

๐ŸŒฑ Changed

  • Default value of approximation_percentage parameter from 0.75 to 0.0 in DetectionDataset.as_yolo and DetectionDataset.as_pascal_voc. (#100)

1

๐Ÿ† Contributors

supervision-0.7.0

10 May 22:43
Compare
Choose a tag to compare

๐Ÿš€ Added

  • Detections.from_yolo_nas to enable seamless integration with YOLO-NAS model. (#91)
  • Ability to load datasets in YOLO format using Dataset.from_yolo. (#86)
  • Detections.merge to merge multiple Detections objects together. (#84)

๐ŸŒฑ Changed

  • LineZoneAnnotator.annotate to allow for the custom text for the in and out tags. (#44)

๐Ÿ› ๏ธ Fixed

  • LineZoneAnnotator.annotate does not return annotated frame. (#81)

๐Ÿ† Contributors

supervision-0.6.0

19 Apr 21:08
2945013
Compare
Choose a tag to compare

๐Ÿš€ Added

  • Initial Dataset support and ability to save Detections in Pascal VOC XML format. (#71)
  • New mask_to_polygons, filter_polygons_by_area, polygon_to_xyxy and approximate_polygon utilities. (#71)
  • Ability to load Pascal VOC XML object detections dataset as Dataset. (#72)

๐ŸŒฑ Changed

  • order of Detections attributes to make it consistent with order of objects in __iter__ tuple. (#70)
  • generate_2d_mask to polygon_to_mask. (#71)

๐Ÿ† Contributors

supervision-0.5.2

13 Apr 09:10
7497f8d
Compare
Choose a tag to compare

๐Ÿ› ๏ธ Fixed

  • Fixed LineZone.trigger function expects 4 values instead of 5 (#63)

๐Ÿ† Contributors

supervision-0.5.1

12 Apr 16:00
Compare
Choose a tag to compare

๐Ÿ› ๏ธ Fixed

  • Fixed Detections.__getitem__ method did not return mask for selected item.
  • Fixed Detections.area crashed for mask detections.

๐Ÿ† Contributors