diff --git a/README.md b/README.md index 1fd46c2c..4ac35a81 100644 --- a/README.md +++ b/README.md @@ -46,17 +46,17 @@ Read more about desktop, headless, and local installation in our [guide](https:/ Supervision was designed to be model agnostic. Just plug in any classification, detection, or segmentation model. For your convenience, we have created [connectors](https://supervision.roboflow.com/detection/core/#detections) for the most popular libraries like Ultralytics, Transformers, or MMDetection. ```python ->>> import cv2 ->>> import supervision as sv ->>> from ultralytics import YOLO +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) +image = cv2.imread(...) +model = YOLO('yolov8s.pt') +result = model(image)[0] +detections = sv.Detections.from_ultralytics(result) ->>> len(detections) -5 +len(detections) +# 5 ```
@@ -67,17 +67,17 @@ Supervision was designed to be model agnostic. Just plug in any classification, Running with [Inference](https://github.com/roboflow/inference) requires a [Roboflow API KEY](https://docs.roboflow.com/api-reference/authentication#retrieve-an-api-key). ```python - >>> import cv2 - >>> import supervision as sv - >>> from inference.models.utils import get_roboflow_model + import cv2 + import supervision as sv + from inference.models.utils import get_roboflow_model - >>> image = cv2.imread(...) - >>> model = get_roboflow_model(model_id="yolov8s-640", api_key=) - >>> result = model.infer(image)[0] - >>> detections = sv.Detections.from_inference(result) + image = cv2.imread(...) + model = get_roboflow_model(model_id="yolov8s-640", api_key=) + result = model.infer(image)[0] + detections = sv.Detections.from_inference(result) - >>> len(detections) - >>> 5 + len(detections) + # 5 ``` @@ -88,17 +88,17 @@ Supervision was designed to be model agnostic. Just plug in any classification, Supervision offers a wide range of highly customizable [annotators](https://supervision.roboflow.com/annotators/), allowing you to compose the perfect visualization for your use case. ```python ->>> import cv2 ->>> import supervision as sv +import cv2 +import supervision as sv ->>> image = cv2.imread(...) ->>> detections = sv.Detections(...) +image = cv2.imread(...) +detections = sv.Detections(...) ->>> bounding_box_annotator = sv.BoundingBoxAnnotator() ->>> annotated_frame = bounding_box_annotator.annotate( -... scene=image.copy(), -... detections=detections -... ) +bounding_box_annotator = sv.BoundingBoxAnnotator() +annotated_frame = bounding_box_annotator.annotate( + scene=image.copy(), + detections=detections +) ``` https://github.com/roboflow/supervision/assets/26109316/691e219c-0565-4403-9218-ab5644f39bce @@ -108,19 +108,19 @@ https://github.com/roboflow/supervision/assets/26109316/691e219c-0565-4403-9218- Supervision provides a set of [utils](https://supervision.roboflow.com/datasets/) that allow you to load, split, merge, and save datasets in one of the supported formats. ```python ->>> import supervision as sv +import supervision as sv ->>> dataset = sv.DetectionDataset.from_yolo( -... images_directory_path=..., -... annotations_directory_path=..., -... data_yaml_path=... -... ) +dataset = sv.DetectionDataset.from_yolo( + images_directory_path=..., + annotations_directory_path=..., + data_yaml_path=... +) ->>> dataset.classes +dataset.classes ['dog', 'person'] ->>> len(dataset) -1000 +len(dataset) +# 1000 ```
@@ -129,86 +129,86 @@ Supervision provides a set of [utils](https://supervision.roboflow.com/datasets/ - load ```python - >>> dataset = sv.DetectionDataset.from_yolo( - ... images_directory_path=..., - ... annotations_directory_path=..., - ... data_yaml_path=... - ... ) + 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_pascal_voc( + images_directory_path=..., + annotations_directory_path=... + ) - >>> dataset = sv.DetectionDataset.from_coco( - ... images_directory_path=..., - ... annotations_path=... - ... ) + dataset = sv.DetectionDataset.from_coco( + images_directory_path=..., + annotations_path=... + ) ``` - split ```python - >>> train_dataset, test_dataset = dataset.split(split_ratio=0.7) - >>> test_dataset, valid_dataset = test_dataset.split(split_ratio=0.5) + 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) + len(train_dataset), len(test_dataset), len(valid_dataset) + # (700, 150, 150) ``` - merge ```python - >>> ds_1 = sv.DetectionDataset(...) - >>> len(ds_1) - 100 - >>> ds_1.classes - ['dog', 'person'] + 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_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'] + ds_merged = sv.DetectionDataset.merge([ds_1, ds_2]) + len(ds_merged) + # 300 + ds_merged.classes + # ['cat', 'dog', 'person'] ``` - save ```python - >>> dataset.as_yolo( - ... images_directory_path=..., - ... annotations_directory_path=..., - ... data_yaml_path=... - ... ) + dataset.as_yolo( + images_directory_path=..., + annotations_directory_path=..., + data_yaml_path=... + ) - >>> dataset.as_pascal_voc( - ... images_directory_path=..., - ... annotations_directory_path=... - ... ) + dataset.as_pascal_voc( + images_directory_path=..., + annotations_directory_path=... + ) - >>> dataset.as_coco( - ... images_directory_path=..., - ... annotations_path=... - ... ) + dataset.as_coco( + images_directory_path=..., + annotations_path=... + ) ``` - convert ```python - >>> sv.DetectionDataset.from_yolo( - ... images_directory_path=..., - ... annotations_directory_path=..., - ... data_yaml_path=... - ... ).as_pascal_voc( - ... images_directory_path=..., - ... annotations_directory_path=... - ... ) + sv.DetectionDataset.from_yolo( + images_directory_path=..., + annotations_directory_path=..., + data_yaml_path=... + ).as_pascal_voc( + images_directory_path=..., + annotations_directory_path=... + ) ```