Merge branch 'develop' into feature/pip-package-configuration
This commit is contained in:
15 files changed
+958
-967
No files matched your search
+8
-1
@@ -6,7 +6,7 @@ We are actively improving this library to reduce the amount of work you need to
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
Please read and adhere to our [Code of Conduct](CODE_OF_CONDUCT.md). This document outlines the expected behavior for all participants in our project.
|
||||
Please read and adhere to our [Code of Conduct](https://supervision.roboflow.com/latest/code_of_conduct/). This document outlines the expected behavior for all participants in our project.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
@@ -86,6 +86,7 @@ Use conventional commit messages to clearly describe your changes. The format is
|
||||
<type>[optional scope]: <description>
|
||||
|
||||
Common types include:
|
||||
|
||||
- feat: A new feature
|
||||
- fix: A bug fix
|
||||
- docs: Documentation only changes
|
||||
@@ -128,13 +129,16 @@ PRs must pass all tests and linting requirements before they can be merged.
|
||||
Before starting your work on the project, set up your development environment:
|
||||
|
||||
1. Clone your fork of the project:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/YOUR_USERNAME/supervision.git
|
||||
cd supervision
|
||||
```
|
||||
|
||||
Replace `YOUR_USERNAME` with your GitHub username.
|
||||
|
||||
2. Create and activate a virtual environment:
|
||||
|
||||
```bash
|
||||
python3 -m venv .venv
|
||||
source .venv/bin/activate
|
||||
@@ -143,17 +147,20 @@ Before starting your work on the project, set up your development environment:
|
||||
3. Install Poetry:
|
||||
|
||||
Using pip:
|
||||
|
||||
```bash
|
||||
pip install -U pip setuptools
|
||||
pip install poetry
|
||||
```
|
||||
|
||||
Or using pipx (recommended for global installation):
|
||||
|
||||
```bash
|
||||
pipx install poetry
|
||||
```
|
||||
|
||||
4. Install project dependencies:
|
||||
|
||||
```bash
|
||||
poetry install
|
||||
```
|
||||
|
||||
+37
-37
@@ -1,6 +1,6 @@
|
||||
### 0.23.0 <small>Aug 28, 2024</small>
|
||||
|
||||
- Added [#930](https://github.com/roboflow/supervision/pull/930): `IconAnnotator`, a [new annotator](https://supervision.roboflow.com/latest/detection/annotators/#supervision.annotators.core.IconAnnotator) that allows drawing icons on each detection. Useful if you want to draw a specific icon for each class.
|
||||
- Added [#930](https://github.com/roboflow/supervision/pull/930): `IconAnnotator`, a [new annotator](https://supervision.roboflow.com/0.23.0/detection/annotators/#supervision.annotators.core.IconAnnotator) that allows drawing icons on each detection. Useful if you want to draw a specific icon for each class.
|
||||
|
||||
```python
|
||||
import supervision as sv
|
||||
@@ -31,7 +31,7 @@ annotated_frame = icon_annotator.annotate(
|
||||
)
|
||||
```
|
||||
|
||||
- Added [#1385](https://github.com/roboflow/supervision/pull/1385): [`BackgroundColorAnnotator`](https://supervision.roboflow.com/latest/detection/annotators/#supervision.annotators.core.BackgroundColorAnnotator), that draws an overlay on the background images of the detections.
|
||||
- Added [#1385](https://github.com/roboflow/supervision/pull/1385): [`BackgroundColorAnnotator`](https://supervision.roboflow.com/0.23.0/detection/annotators/#supervision.annotators.core.BackgroundColorAnnotator), that draws an overlay on the background images of the detections.
|
||||
|
||||
```python
|
||||
import supervision as sv
|
||||
@@ -50,7 +50,7 @@ annotated_frame = background_overlay_annotator.annotate(
|
||||
)
|
||||
```
|
||||
|
||||
- Added [#1386](https://github.com/roboflow/supervision/pull/1386): Support for Transformers v5 functions in [`sv.Detections.from_transformers`](https://supervision.roboflow.com/latest/detection/core/#supervision.detection.core.Detections.from_transformers). This includes the `DetrImageProcessor` methods `post_process_object_detection`, `post_process_panoptic_segmentation`, `post_process_semantic_segmentation`, and `post_process_instance_segmentation`.
|
||||
- Added [#1386](https://github.com/roboflow/supervision/pull/1386): Support for Transformers v5 functions in [`sv.Detections.from_transformers`](https://supervision.roboflow.com/0.23.0/detection/core/#supervision.detection.core.Detections.from_transformers). This includes the `DetrImageProcessor` methods `post_process_object_detection`, `post_process_panoptic_segmentation`, `post_process_semantic_segmentation`, and `post_process_instance_segmentation`.
|
||||
|
||||
```python
|
||||
import torch
|
||||
@@ -76,7 +76,7 @@ detections = sv.Detections.from_transformers(
|
||||
id2label=model.config.id2label)
|
||||
```
|
||||
|
||||
- Added [#1354](https://github.com/roboflow/supervision/pull/1354): Ultralytics SAM (Segment Anything Model) support in [`sv.Detections.from_ultralytics`](https://supervision.roboflow.com/latest/detection/core/#supervision.detection.core.Detections.from_ultralytics). [SAM2](https://sam2.metademolab.com/) was released during this update, and is already supported via [`sv.Detections.from_sam`](https://supervision.roboflow.com/latest/detection/core/#supervision.detection.core.Detections.from_sam).
|
||||
- Added [#1354](https://github.com/roboflow/supervision/pull/1354): Ultralytics SAM (Segment Anything Model) support in [`sv.Detections.from_ultralytics`](https://supervision.roboflow.com/0.23.0/detection/core/#supervision.detection.core.Detections.from_ultralytics). [SAM2](https://sam2.metademolab.com/) was released during this update, and is already supported via [`sv.Detections.from_sam`](https://supervision.roboflow.com/0.23.0/detection/core/#supervision.detection.core.Detections.from_sam).
|
||||
|
||||
```python
|
||||
import supervision as sv
|
||||
@@ -92,15 +92,15 @@ sam_result = mask_generator.generate(IMAGE)
|
||||
detections = sv.Detections.from_sam(sam_result=sam_result)
|
||||
```
|
||||
|
||||
- Added [#1458](https://github.com/roboflow/supervision/pull/1458): `outline_color` options for [`TriangleAnnotator`](https://supervision.roboflow.com/latest/detection/annotators/#supervision.annotators.core.TriangleAnnotator) and [`DotAnnotator`](https://supervision.roboflow.com/latest/detection/annotators/#supervision.annotators.core.DotAnnotator).
|
||||
- Added [#1458](https://github.com/roboflow/supervision/pull/1458): `outline_color` options for [`TriangleAnnotator`](https://supervision.roboflow.com/0.23.0/detection/annotators/#supervision.annotators.core.TriangleAnnotator) and [`DotAnnotator`](https://supervision.roboflow.com/0.23.0/detection/annotators/#supervision.annotators.core.DotAnnotator).
|
||||
|
||||
- Added [#1409](https://github.com/roboflow/supervision/pull/1409): `text_color` option for [`VertexLabelAnnotator`](https://supervision.roboflow.com/latest/keypoint/annotators/#supervision.keypoint.annotators.VertexLabelAnnotator) keypoint annotator.
|
||||
- Added [#1409](https://github.com/roboflow/supervision/pull/1409): `text_color` option for [`VertexLabelAnnotator`](https://supervision.roboflow.com/0.23.0/keypoint/annotators/#supervision.keypoint.annotators.VertexLabelAnnotator) keypoint annotator.
|
||||
|
||||
- Changed [#1434](https://github.com/roboflow/supervision/pull/1434): [`InferenceSlicer`](https://supervision.roboflow.com/latest/detection/tools/inference_slicer/) now features an `overlap_ratio_wh` parameter, making it easier to compute slice sizes when handling overlapping slices.
|
||||
- Changed [#1434](https://github.com/roboflow/supervision/pull/1434): [`InferenceSlicer`](https://supervision.roboflow.com/0.23.0/detection/tools/inference_slicer/) now features an `overlap_ratio_wh` parameter, making it easier to compute slice sizes when handling overlapping slices.
|
||||
|
||||
- Fix [#1448](https://github.com/roboflow/supervision/pull/1448): Various annotator type issues have been resolved, supporting expanded error handling.
|
||||
|
||||
- Fix [#1348](https://github.com/roboflow/supervision/pull/1348): Introduced a new method for [seeking to a specific video frame](https://supervision.roboflow.com/latest/utils/video/#supervision.utils.video.get_video_frames_generator), addressing cases where traditional seek methods were failing. It can be enabled with `iterative_seek=True`.
|
||||
- Fix [#1348](https://github.com/roboflow/supervision/pull/1348): Introduced a new method for [seeking to a specific video frame](https://supervision.roboflow.com/0.23.0/utils/video/#supervision.utils.video.get_video_frames_generator), addressing cases where traditional seek methods were failing. It can be enabled with `iterative_seek=True`.
|
||||
|
||||
```python
|
||||
import supervision as sv
|
||||
@@ -133,7 +133,7 @@ for frame in sv.get_video_frames_generator(
|
||||
|
||||
### 0.22.0 <small>Jul 12, 2024</small>
|
||||
|
||||
- Added [#1326](https://github.com/roboflow/supervision/pull/1326): [`sv.DetectionsDataset`](https://supervision.roboflow.com/latest/datasets/core/#supervision.dataset.core.DetectionDataset) and [`sv.ClassificationDataset`](https://supervision.roboflow.com/latest/datasets/core/#supervision.dataset.core.ClassificationDataset) allowing to load the images into memory only when necessary (lazy loading).
|
||||
- Added [#1326](https://github.com/roboflow/supervision/pull/1326): [`sv.DetectionsDataset`](https://supervision.roboflow.com/0.22.0/datasets/core/#supervision.dataset.core.DetectionDataset) and [`sv.ClassificationDataset`](https://supervision.roboflow.com/0.22.0/datasets/core/#supervision.dataset.core.ClassificationDataset) allowing to load the images into memory only when necessary (lazy loading).
|
||||
|
||||
!!! failure "Deprecated"
|
||||
|
||||
@@ -166,15 +166,15 @@ for path, image, annotation in ds_train:
|
||||
# loads image on demand
|
||||
```
|
||||
|
||||
- Added [#1296](https://github.com/roboflow/supervision/pull/1296): [`sv.Detections.from_lmm`](https://supervision.roboflow.com/latest/detection/core/#supervision.detection.core.Detections.from_lmm) now supports parsing results from the [Florence 2](https://huggingface.co/microsoft/Florence-2-large) model, extending the capability to handle outputs from this Large Multimodal Model (LMM). This includes detailed object detection, OCR with region proposals, segmentation, and more. Find out more in our [Colab notebook](https://colab.research.google.com/github/roboflow-ai/notebooks/blob/main/notebooks/how-to-finetune-florence-2-on-detection-dataset.ipynb).
|
||||
- Added [#1296](https://github.com/roboflow/supervision/pull/1296): [`sv.Detections.from_lmm`](https://supervision.roboflow.com/0.22.0/detection/core/#supervision.detection.core.Detections.from_lmm) now supports parsing results from the [Florence 2](https://huggingface.co/microsoft/Florence-2-large) model, extending the capability to handle outputs from this Large Multimodal Model (LMM). This includes detailed object detection, OCR with region proposals, segmentation, and more. Find out more in our [Colab notebook](https://colab.research.google.com/github/roboflow-ai/notebooks/blob/main/notebooks/how-to-finetune-florence-2-on-detection-dataset.ipynb).
|
||||
|
||||
- Added [#1232](https://github.com/roboflow/supervision/pull/1232) to support keypoint detection with Mediapipe. Both [legacy](https://colab.research.google.com/github/googlesamples/mediapipe/blob/main/examples/pose_landmarker/python/%5BMediaPipe_Python_Tasks%5D_Pose_Landmarker.ipynb) and [modern](https://ai.google.dev/edge/mediapipe/solutions/vision/pose_landmarker/python) pipelines are supported. See [`sv.KeyPoints.from_mediapipe`](https://supervision.roboflow.com/latest/keypoint/core/#supervision.keypoint.core.KeyPoints.from_mediapipe) for more.
|
||||
- Added [#1232](https://github.com/roboflow/supervision/pull/1232) to support keypoint detection with Mediapipe. Both [legacy](https://colab.research.google.com/github/googlesamples/mediapipe/blob/main/examples/pose_landmarker/python/%5BMediaPipe_Python_Tasks%5D_Pose_Landmarker.ipynb) and [modern](https://ai.google.dev/edge/mediapipe/solutions/vision/pose_landmarker/python) pipelines are supported. See [`sv.KeyPoints.from_mediapipe`](https://supervision.roboflow.com/0.22.0/keypoint/core/#supervision.keypoint.core.KeyPoints.from_mediapipe) for more.
|
||||
|
||||
- Added [#1316](https://github.com/roboflow/supervision/pull/1316): [`sv.KeyPoints.from_mediapipe`](https://supervision.roboflow.com/latest/keypoint/core/#supervision.keypoint.core.KeyPoints.from_mediapipe) extended to support FaceMesh from Mediapipe. This enhancement allows for processing both face landmarks from `FaceLandmarker`, and legacy results from `FaceMesh`.
|
||||
- Added [#1316](https://github.com/roboflow/supervision/pull/1316): [`sv.KeyPoints.from_mediapipe`](https://supervision.roboflow.com/0.22.0/keypoint/core/#supervision.keypoint.core.KeyPoints.from_mediapipe) extended to support FaceMesh from Mediapipe. This enhancement allows for processing both face landmarks from `FaceLandmarker`, and legacy results from `FaceMesh`.
|
||||
|
||||
- Added [#1310](https://github.com/roboflow/supervision/pull/1310): [`sv.KeyPoints.from_detectron2`](https://supervision.roboflow.com/latest/keypoint/core/#supervision.keypoint.core.KeyPoints.from_detectron2) is a new `KeyPoints` method, adding support for extracting keypoints from the popular [Detectron 2](https://github.com/facebookresearch/detectron2) platform.
|
||||
- Added [#1310](https://github.com/roboflow/supervision/pull/1310): [`sv.KeyPoints.from_detectron2`](https://supervision.roboflow.com/0.22.0/keypoint/core/#supervision.keypoint.core.KeyPoints.from_detectron2) is a new `KeyPoints` method, adding support for extracting keypoints from the popular [Detectron 2](https://github.com/facebookresearch/detectron2) platform.
|
||||
|
||||
- Added [#1300](https://github.com/roboflow/supervision/pull/1300): [`sv.Detections.from_detectron2`](https://supervision.roboflow.com/latest/detection/core/#supervision.detection.core.Detections.from_detectron2) now supports segmentation models detectron2. The resulting masks can be used with [`sv.MaskAnnotator`](https://supervision.roboflow.com/latest/annotators/#supervision.annotators.core.MaskAnnotator) for displaying annotations.
|
||||
- Added [#1300](https://github.com/roboflow/supervision/pull/1300): [`sv.Detections.from_detectron2`](https://supervision.roboflow.com/0.22.0/detection/core/#supervision.detection.core.Detections.from_detectron2) now supports segmentation models detectron2. The resulting masks can be used with [`sv.MaskAnnotator`](https://supervision.roboflow.com/0.22.0/detection/annotators/#supervision.annotators.core.MaskAnnotator) for displaying annotations.
|
||||
|
||||
```python
|
||||
import supervision as sv
|
||||
@@ -196,7 +196,7 @@ mask_annotator = sv.MaskAnnotator()
|
||||
annotated_frame = mask_annotator.annotate(scene=image.copy(), detections=detections)
|
||||
```
|
||||
|
||||
- Added [#1277](https://github.com/roboflow/supervision/pull/1277): if you provide a font that supports symbols of a language, [`sv.RichLabelAnnotator`](https://supervision.roboflow.com/latest/detection/annotators/#supervision.annotators.core.LabelAnnotator.annotate) will draw them on your images.
|
||||
- Added [#1277](https://github.com/roboflow/supervision/pull/1277): if you provide a font that supports symbols of a language, [`sv.RichLabelAnnotator`](https://supervision.roboflow.com/0.22.0/detection/annotators/#supervision.annotators.core.LabelAnnotator.annotate) will draw them on your images.
|
||||
- Various other annotators have been revised to ensure proper in-place functionality when used with `numpy` arrays. Additionally, we fixed a bug where `sv.ColorAnnotator` was filling boxes with solid color when used in-place.
|
||||
|
||||
```python
|
||||
@@ -232,25 +232,25 @@ obb_annotator = OrientedBoxAnnotator()
|
||||
annotated_image = obb_annotator.annotate(scene=image.copy(), detections=detections)
|
||||
```
|
||||
|
||||
- Fixed [#1312](https://github.com/roboflow/supervision/pull/1312): Fixed [`CropAnnotator`](https://supervision.roboflow.com/latest/detection/annotators/#supervision.annotators.core.TraceAnnotator.annotate).
|
||||
- Fixed [#1312](https://github.com/roboflow/supervision/pull/1312): Fixed [`CropAnnotator`](https://supervision.roboflow.com/0.22.0/detection/annotators/#supervision.annotators.core.TraceAnnotator.annotate).
|
||||
|
||||
!!! failure "Removed"
|
||||
|
||||
`BoxAnnotator` was removed, however `BoundingBoxAnnotator` has been renamed to `BoxAnnotator`. Use a combination of [`BoxAnnotator`](https://supervision.roboflow.com/latest/detection/annotators/#supervision.annotators.core.BoxAnnotator) and [`LabelAnnotator`](https://supervision.roboflow.com/latest/detection/annotators/#supervision.annotators.core.LabelAnnotator) to simulate old `BoundingBox` behavior.
|
||||
`BoxAnnotator` was removed, however `BoundingBoxAnnotator` has been renamed to `BoxAnnotator`. Use a combination of [`BoxAnnotator`](https://supervision.roboflow.com/0.22.0/detection/annotators/#supervision.annotators.core.BoxAnnotator) and [`LabelAnnotator`](https://supervision.roboflow.com/0.22.0/detection/annotators/#supervision.annotators.core.LabelAnnotator) to simulate old `BoundingBox` behavior.
|
||||
|
||||
!!! failure "Deprecated"
|
||||
|
||||
The name `BoundingBoxAnnotator` has been deprecated and will be removed in `supervision-0.26.0`. It has been renamed to [`BoxAnnotator`](https://supervision.roboflow.com/latest/detection/annotators/#supervision.annotators.core.BoxAnnotator).
|
||||
The name `BoundingBoxAnnotator` has been deprecated and will be removed in `supervision-0.26.0`. It has been renamed to [`BoxAnnotator`](https://supervision.roboflow.com/0.22.0/detection/annotators/#supervision.annotators.core.BoxAnnotator).
|
||||
|
||||
- Added [#975](https://github.com/roboflow/supervision/pull/975) 📝 New Cookbooks: serialize detections into [json](https://github.com/roboflow/supervision/blob/de896189b83a1f9434c0a37dd9192ee00d2a1283/docs/notebooks/serialise-detections-to-json.ipynb) and [csv](https://github.com/roboflow/supervision/blob/de896189b83a1f9434c0a37dd9192ee00d2a1283/docs/notebooks/serialise-detections-to-csv.ipynb).
|
||||
|
||||
- Added [#1290](https://github.com/roboflow/supervision/pull/1290): Mostly an internal change, our file utility function now support both `str` and `pathlib` paths.
|
||||
|
||||
- Added [#1340](https://github.com/roboflow/supervision/pull/1340): Two new methods for converting between bounding box formats - [`xywh_to_xyxy`](https://supervision.roboflow.com/latest/detection/utils/#supervision.detection.utils.xywh_to_xyxy) and [`xcycwh_to_xyxy`](https://supervision.roboflow.com/latest/detection/utils/#supervision.detection.utils.xcycwh_to_xyxy)
|
||||
- Added [#1340](https://github.com/roboflow/supervision/pull/1340): Two new methods for converting between bounding box formats - [`xywh_to_xyxy`](https://supervision.roboflow.com/0.22.0/detection/utils/#supervision.detection.utils.xywh_to_xyxy) and [`xcycwh_to_xyxy`](https://supervision.roboflow.com/0.22.0/detection/utils/#supervision.detection.utils.xcycwh_to_xyxy)
|
||||
|
||||
!!! failure "Removed"
|
||||
|
||||
`from_roboflow` method has been removed due to deprecation. Use [from_inference](https://supervision.roboflow.com/latest/detection/core/#supervision.detection.core.Detections.from_inference) instead.
|
||||
`from_roboflow` method has been removed due to deprecation. Use [from_inference](https://supervision.roboflow.com/0.22.0/detection/core/#supervision.detection.core.Detections.from_inference) instead.
|
||||
|
||||
!!! failure "Removed"
|
||||
|
||||
@@ -274,17 +274,17 @@ annotated_image = obb_annotator.annotate(scene=image.copy(), detections=detectio
|
||||
|
||||
!!! failure "Removed"
|
||||
|
||||
`ColorPalette.default()` has been removed due to deprecation. Use [ColorPalette.DEFAULT](https://supervision.roboflow.com/latest/utils/draw/#supervision.draw.color.ColorPalette.DEFAULT) instead.
|
||||
`ColorPalette.default()` has been removed due to deprecation. Use [ColorPalette.DEFAULT](https://supervision.roboflow.com/0.22.0/utils/draw/#supervision.draw.color.ColorPalette.DEFAULT) instead.
|
||||
|
||||
!!! failure "Removed"
|
||||
|
||||
`FPSMonitor.__call__` has been removed due to deprecation. Use the attribute [FPSMonitor.fps](https://supervision.roboflow.com/latest/utils/video/#supervision.utils.video.FPSMonitor.fps) instead.
|
||||
`FPSMonitor.__call__` has been removed due to deprecation. Use the attribute [FPSMonitor.fps](https://supervision.roboflow.com/0.22.0/utils/video/#supervision.utils.video.FPSMonitor.fps) instead.
|
||||
|
||||
### 0.21.0 <small>Jun 5, 2024</small>
|
||||
|
||||
- Added [#500](https://github.com/roboflow/supervision/pull/500): [`sv.Detections.with_nmm`](https://supervision.roboflow.com/latest/detection/core/#supervision.detection.core.Detections.with_nmm) to perform non-maximum merging on the current set of object detections.
|
||||
- Added [#500](https://github.com/roboflow/supervision/pull/500): [`sv.Detections.with_nmm`](https://supervision.roboflow.com/0.21.0/detection/core/#supervision.detection.core.Detections.with_nmm) to perform non-maximum merging on the current set of object detections.
|
||||
|
||||
- Added [#1221](https://github.com/roboflow/supervision/pull/1221): [`sv.Detections.from_lmm`](https://supervision.roboflow.com/latest/detection/core/#supervision.detection.core.Detections.from_lmm) allowing to parse Large Multimodal Model (LMM) text result into [`sv.Detections`](https://supervision.roboflow.com/latest/detection/core/) object. For now `from_lmm` supports only [PaliGemma](https://colab.research.google.com/github/roboflow-ai/notebooks/blob/main/notebooks/how-to-finetune-paligemma-on-detection-dataset.ipynb) result parsing.
|
||||
- Added [#1221](https://github.com/roboflow/supervision/pull/1221): [`sv.Detections.from_lmm`](https://supervision.roboflow.com/0.21.0/detection/core/#supervision.detection.core.Detections.from_lmm) allowing to parse Large Multimodal Model (LMM) text result into [`sv.Detections`](https://supervision.roboflow.com/0.21.0/detection/core/) object. For now `from_lmm` supports only [PaliGemma](https://colab.research.google.com/github/roboflow-ai/notebooks/blob/main/notebooks/how-to-finetune-paligemma-on-detection-dataset.ipynb) result parsing.
|
||||
|
||||
```python
|
||||
import supervision as sv
|
||||
@@ -303,7 +303,7 @@ detections.class_id
|
||||
# array([0])
|
||||
```
|
||||
|
||||
- Added [#1236](https://github.com/roboflow/supervision/pull/1236): [`sv.VertexLabelAnnotator`](https://supervision.roboflow.com/latest/keypoint/annotators/#supervision.keypoint.annotators.EdgeAnnotator.annotate) allowing to annotate every vertex of a keypoint skeleton with custom text and color.
|
||||
- Added [#1236](https://github.com/roboflow/supervision/pull/1236): [`sv.VertexLabelAnnotator`](https://supervision.roboflow.com/0.21.0/keypoint/annotators/#supervision.keypoint.annotators.EdgeAnnotator.annotate) allowing to annotate every vertex of a keypoint skeleton with custom text and color.
|
||||
|
||||
```python
|
||||
import supervision as sv
|
||||
@@ -321,15 +321,15 @@ annotated_frame = edge_annotator.annotate(
|
||||
)
|
||||
```
|
||||
|
||||
- Added [#1147](https://github.com/roboflow/supervision/pull/1147): [`sv.KeyPoints.from_inference`](https://supervision.roboflow.com/develop/keypoint/core/#supervision.keypoint.core.KeyPoints.from_inference) allowing to create [`sv.KeyPoints`](https://supervision.roboflow.com/develop/keypoint/core/#supervision.keypoint.core.KeyPoints) from [Inference](https://github.com/roboflow/inference) result.
|
||||
- Added [#1147](https://github.com/roboflow/supervision/pull/1147): [`sv.KeyPoints.from_inference`](https://supervision.roboflow.com/0.21.0/keypoint/core/#supervision.keypoint.core.KeyPoints.from_inference) allowing to create [`sv.KeyPoints`](https://supervision.roboflow.com/0.21.0/keypoint/core/#supervision.keypoint.core.KeyPoints) from [Inference](https://github.com/roboflow/inference) result.
|
||||
|
||||
- Added [#1138](https://github.com/roboflow/supervision/pull/1138): [`sv.KeyPoints.from_yolo_nas`](https://supervision.roboflow.com/develop/keypoint/core/#supervision.keypoint.core.KeyPoints.from_yolo_nas) allowing to create [`sv.KeyPoints`](https://supervision.roboflow.com/develop/keypoint/core/#supervision.keypoint.core.KeyPoints) from [YOLO-NAS](https://github.com/Deci-AI/super-gradients/blob/master/YOLONAS.md) result.
|
||||
- Added [#1138](https://github.com/roboflow/supervision/pull/1138): [`sv.KeyPoints.from_yolo_nas`](https://supervision.roboflow.com/0.21.0/keypoint/core/#supervision.keypoint.core.KeyPoints.from_yolo_nas) allowing to create [`sv.KeyPoints`](https://supervision.roboflow.com/0.21.0/keypoint/core/#supervision.keypoint.core.KeyPoints) from [YOLO-NAS](https://github.com/Deci-AI/super-gradients/blob/master/YOLONAS.md) result.
|
||||
|
||||
- Added [#1163](https://github.com/roboflow/supervision/pull/1163): [`sv.mask_to_rle`](https://supervision.roboflow.com/develop/datasets/utils/#supervision.dataset.utils.rle_to_mask) and [`sv.rle_to_mask`](https://supervision.roboflow.com/develop/datasets/utils/#supervision.dataset.utils.rle_to_mask) allowing for easy conversion between mask and rle formats.
|
||||
- Added [#1163](https://github.com/roboflow/supervision/pull/1163): [`sv.mask_to_rle`](https://supervision.roboflow.com/0.21.0/datasets/utils/#supervision.dataset.utils.rle_to_mask) and [`sv.rle_to_mask`](https://supervision.roboflow.com/0.21.0/datasets/utils/#supervision.dataset.utils.rle_to_mask) allowing for easy conversion between mask and rle formats.
|
||||
|
||||
- Changed [#1236](https://github.com/roboflow/supervision/pull/1236): [`sv.InferenceSlicer`](https://supervision.roboflow.com/develop/detection/tools/inference_slicer/) allowing to select overlap filtering strategy (`NONE`, `NON_MAX_SUPPRESSION` and `NON_MAX_MERGE`).
|
||||
- Changed [#1236](https://github.com/roboflow/supervision/pull/1236): [`sv.InferenceSlicer`](https://supervision.roboflow.com/0.21.0/detection/tools/inference_slicer/) allowing to select overlap filtering strategy (`NONE`, `NON_MAX_SUPPRESSION` and `NON_MAX_MERGE`).
|
||||
|
||||
- Changed [#1178](https://github.com/roboflow/supervision/pull/1178): [`sv.InferenceSlicer`](https://supervision.roboflow.com/develop/detection/tools/inference_slicer/) adding instance segmentation model support.
|
||||
- Changed [#1178](https://github.com/roboflow/supervision/pull/1178): [`sv.InferenceSlicer`](https://supervision.roboflow.com/0.21.0/detection/tools/inference_slicer/) adding instance segmentation model support.
|
||||
|
||||
```python
|
||||
import cv2
|
||||
@@ -356,9 +356,9 @@ annotated_image = label_annotator.annotate(
|
||||
scene=annotated_image, detections=detections)
|
||||
```
|
||||
|
||||
- Changed [#1228](https://github.com/roboflow/supervision/pull/1228): [`sv.LineZone`](https://supervision.roboflow.com/develop/detection/tools/line_zone/) making it 10-20 times faster, depending on the use case.
|
||||
- Changed [#1228](https://github.com/roboflow/supervision/pull/1228): [`sv.LineZone`](https://supervision.roboflow.com/0.21.0/detection/tools/line_zone/) making it 10-20 times faster, depending on the use case.
|
||||
|
||||
- Changed [#1163](https://github.com/roboflow/supervision/pull/1163): [`sv.DetectionDataset.from_coco`](https://supervision.roboflow.com/develop/datasets/core/#supervision.dataset.core.DetectionDataset.from_coco) and [`sv.DetectionDataset.as_coco`](https://supervision.roboflow.com/develop/datasets/core/#supervision.dataset.core.DetectionDataset.as_coco) adding support for run-length encoding (RLE) mask format.
|
||||
- Changed [#1163](https://github.com/roboflow/supervision/pull/1163): [`sv.DetectionDataset.from_coco`](https://supervision.roboflow.com/0.21.0/datasets/core/#supervision.dataset.core.DetectionDataset.from_coco) and [`sv.DetectionDataset.as_coco`](https://supervision.roboflow.com/0.21.0/datasets/core/#supervision.dataset.core.DetectionDataset.as_coco) adding support for run-length encoding (RLE) mask format.
|
||||
|
||||
### 0.20.0 <small>April 24, 2024</small>
|
||||
|
||||
@@ -485,11 +485,11 @@ annotated_frame = crop_annotator.annotate(
|
||||
)
|
||||
```
|
||||
|
||||
- Changed [#827](https://github.com/roboflow/supervision/pull/827): [`sv.ByteTrack.reset`](/0.19.0/tracking/#supervision.tracking.ByteTrack.reset) allowing users to clear trackers state, enabling the processing of multiple video files in sequence.
|
||||
- Changed [#827](https://github.com/roboflow/supervision/pull/827): [`sv.ByteTrack.reset`](/0.19.0/trackers/#supervision.tracker.ByteTrack.reset) allowing users to clear trackers state, enabling the processing of multiple video files in sequence.
|
||||
|
||||
- Changed [#802](https://github.com/roboflow/supervision/pull/802): [`sv.LineZoneAnnotator`](/0.19.0/detection/tools/line_zone/#supervision.detection.line_zone.LineZone) allowing to hide in/out count using `display_in_count` and `display_out_count` properties.
|
||||
|
||||
- Changed [#787](https://github.com/roboflow/supervision/pull/787): [`sv.ByteTrack`](/0.19.0/tracking/#supervision.tracking.ByteTrack) input arguments and docstrings updated to improve readability and ease of use.
|
||||
- Changed [#787](https://github.com/roboflow/supervision/pull/787): [`sv.ByteTrack`](/0.19.0/trackers/#supervision.tracker.ByteTrack) input arguments and docstrings updated to improve readability and ease of use.
|
||||
|
||||
!!! failure "Deprecated"
|
||||
|
||||
@@ -916,7 +916,7 @@ array([
|
||||
|
||||
- Added [#101](https://github.com/roboflow/supervision/pull/101): ability to extract masks from YOLOv8 result using [`sv.Detections.from_yolov8`](/0.8.0/detection/core/#supervision.detection.core.Detections.from_yolov8). Here is an example illustrating how to extract boolean masks from the result of the YOLOv8 model inference.
|
||||
|
||||
- Added [#122](https://github.com/roboflow/supervision/pull/122): ability to crop image using [`sv.crop`](/latest/utils/image/#crop). Here is an example showing how to get a separate crop for each detection in `sv.Detections`.
|
||||
- Added [#122](https://github.com/roboflow/supervision/pull/122): ability to crop image using [`sv.crop`](/0.9.0/utils/image/#crop). Here is an example showing how to get a separate crop for each detection in `sv.Detections`.
|
||||
|
||||
- Added [#120](https://github.com/roboflow/supervision/pull/120): ability to conveniently save multiple images into directory using [`sv.ImageSink`](/0.9.0/utils/image/#imagesink). Here is an example showing how to save every tenth video frame as a separate image.
|
||||
|
||||
@@ -928,11 +928,11 @@ array([
|
||||
... sink.save_image(image=image)
|
||||
```
|
||||
|
||||
- Fixed [#106](https://github.com/roboflow/supervision/issues/106): inconvenient handling of [`sv.PolygonZone`](/0.8.0/supervision/detection/tools/polygon_zone/#polygonzone) coordinates. Now `sv.PolygonZone` accepts coordinates in the form of `[[x1, y1], [x2, y2], ...]` that can be both integers and floats.
|
||||
- Fixed [#106](https://github.com/roboflow/supervision/issues/106): inconvenient handling of [`sv.PolygonZone`](/0.8.0/detection/tools/polygon_zone/#polygonzone) coordinates. Now `sv.PolygonZone` accepts coordinates in the form of `[[x1, y1], [x2, y2], ...]` that can be both integers and floats.
|
||||
|
||||
### 0.8.0 <small>May 17, 2023</small>
|
||||
|
||||
- Added [#100](https://github.com/roboflow/supervision/pull/100): support for dataset inheritance. The current `Dataset` got renamed to `DetectionDataset`. Now [`DetectionDataset`](/0.8.0/supervision/dataset/core/#detectiondataset) inherits from `BaseDataset`. This change was made to enforce the future consistency of APIs of different types of computer vision datasets.
|
||||
- Added [#100](https://github.com/roboflow/supervision/pull/100): support for dataset inheritance. The current `Dataset` got renamed to `DetectionDataset`. Now [`DetectionDataset`](/0.8.0/dataset/core/#detectiondataset) inherits from `BaseDataset`. This change was made to enforce the future consistency of APIs of different types of computer vision datasets.
|
||||
- Added [#100](https://github.com/roboflow/supervision/pull/100): ability to save datasets in YOLO format using [`DetectionDataset.as_yolo`](/0.8.0/dataset/core/#supervision.dataset.core.DetectionDataset.as_yolo).
|
||||
|
||||
```python
|
||||
|
||||
+2
-2
@@ -25,12 +25,12 @@ These features are phased out due to better alternatives or potential issues in
|
||||
|
||||
### 0.22.0
|
||||
|
||||
- [`Detections.from_froboflow`](detection/core.md/#supervision.detection.core.Detections.from_roboflow) is removed as of `supervision-0.22.0`. Use [`Detections.from_inference`](detection/core.md/#supervision.detection.core.Detections.from_inference) instead.
|
||||
- [`Detections.from_roboflow`](detection/core.md/#supervision.detection.core.Detections.from_roboflow) is removed as of `supervision-0.22.0`. Use [`Detections.from_inference`](detection/core.md/#supervision.detection.core.Detections.from_inference) instead.
|
||||
- The method `Color.white()` was removed as of `supervision-0.22.0`. Use the constant `Color.WHITE` instead.
|
||||
- The method `Color.black()` was removed as of `supervision-0.22.0`. Use the constant `Color.BLACK` instead.
|
||||
- The method `Color.red()` was removed as of `supervision-0.22.0`. Use the constant `Color.RED` instead.
|
||||
- The method `Color.green()` was removed as of `supervision-0.22.0`. Use the constant `Color.GREEN` instead.
|
||||
- The method `Color.blue()` was removed as of `supervision-0.22.0`. Use the constant `Color.BLUE` instead.
|
||||
- The method [`ColorPalette.default()`](draw/color.md/#supervision.draw.color.ColorPalette.default) was removed as of `supervision-0.22.0`. Use the constant [`ColorPalette.DEFAULT`](draw/color.md/#supervision.draw.color.ColorPalette.DEFAULT) instead.
|
||||
- The method `ColorPalette.default()` was removed as of `supervision-0.22.0`. Use the constant [`ColorPalette.DEFAULT`](draw/color/#supervision.draw.color.ColorPalette.DEFAULT) instead.
|
||||
- `BoxAnnotator` was removed as of `supervision-0.22.0`, however `BoundingBoxAnnotator` was immediately renamed to `BoxAnnotator`. Use [`BoxAnnotator`](detection/annotators.md/#supervision.annotators.core.BoxAnnotator) and [`LabelAnnotator`](detection/annotators.md/#supervision.annotators.core.LabelAnnotator) instead of the old `BoxAnnotator`.
|
||||
- The method [`FPSMonitor.__call__`](utils/video.md/#supervision.utils.video.FPSMonitor.__call__) was removed as of `supervision-0.22.0`. Use the attribute [`FPSMonitor.fps`](utils/video.md/#supervision.utils.video.FPSMonitor.fps) instead.
|
||||
@@ -6,7 +6,7 @@ comments: true
|
||||
|
||||
Supervision provides a seamless process for annotating predictions generated by various
|
||||
object detection and segmentation models. This guide shows how to perform inference
|
||||
with the [Inference](https://github.com/roboflow/inference),
|
||||
with the [Inference](https://github.com/roboflow/inference),
|
||||
[Ultralytics](https://github.com/ultralytics/ultralytics) or
|
||||
[Transformers](https://github.com/huggingface/transformers) packages. Following this,
|
||||
you'll learn how to import these predictions into Supervision and use them to annotate
|
||||
@@ -69,7 +69,7 @@ Now that we have predictions from a model, we can load them into Supervision.
|
||||
|
||||
=== "Inference"
|
||||
|
||||
We can do so using the [`sv.Detections.from_inference`](detection/core/#supervision.detection.core.Detections.from_inference) method, which accepts model results from both detection and segmentation models.
|
||||
We can do so using the [`sv.Detections.from_inference`](/latest/detection/core/#supervision.detection.core.Detections.from_inference) method, which accepts model results from both detection and segmentation models.
|
||||
|
||||
```{ .py hl_lines="2 8" }
|
||||
import cv2
|
||||
@@ -84,7 +84,7 @@ Now that we have predictions from a model, we can load them into Supervision.
|
||||
|
||||
=== "Ultralytics"
|
||||
|
||||
We can do so using the [`sv.Detections.from_ultralytics`](detection/core/#supervision.detection.core.Detections.from_ultralytics) method, which accepts model results from both detection and segmentation models.
|
||||
We can do so using the [`sv.Detections.from_ultralytics`](/latest/detection/core/#supervision.detection.core.Detections.from_ultralytics) method, which accepts model results from both detection and segmentation models.
|
||||
|
||||
```{ .py hl_lines="2 8" }
|
||||
import cv2
|
||||
@@ -99,7 +99,7 @@ Now that we have predictions from a model, we can load them into Supervision.
|
||||
|
||||
=== "Transformers"
|
||||
|
||||
We can do so using the [`sv.Detections.from_transformers`](detection/core/#supervision.detection.core.Detections.from_transformers) method, which accepts model results from both detection and segmentation models.
|
||||
We can do so using the [`sv.Detections.from_transformers`](/latest/detection/core/#supervision.detection.core.Detections.from_transformers) method, which accepts model results from both detection and segmentation models.
|
||||
|
||||
```{ .py hl_lines="2 19-21" }
|
||||
import torch
|
||||
@@ -135,7 +135,7 @@ You can load predictions from other computer vision frameworks and libraries usi
|
||||
|
||||
## Annotate Image with Detections
|
||||
|
||||
Finally, we can annotate the image with the predictions. Since we are working with an object detection model, we will use the [`sv.BoxAnnotator`](/latest/annotators/#supervision.annotators.core.BoxAnnotator) and [`sv.LabelAnnotator`](/latest/annotators/#supervision.annotators.core.LabelAnnotator) classes.
|
||||
Finally, we can annotate the image with the predictions. Since we are working with an object detection model, we will use the [`sv.BoxAnnotator`](/latest/detection/annotators/#supervision.annotators.core.BoxAnnotator) and [`sv.LabelAnnotator`](/latest/detection/annotators/#supervision.annotators.core.LabelAnnotator) classes.
|
||||
|
||||
=== "Inference"
|
||||
|
||||
@@ -217,7 +217,7 @@ Finally, we can annotate the image with the predictions. Since we are working wi
|
||||
|
||||
## Display Custom Labels
|
||||
|
||||
By default, [`sv.LabelAnnotator`](/latest/annotators/#supervision.annotators.core.LabelAnnotator)
|
||||
By default, [`sv.LabelAnnotator`](/latest/detection/annotators/#supervision.annotators.core.LabelAnnotator)
|
||||
will label each detection with its `class_name` (if possible) or `class_id`. You can
|
||||
override this behavior by passing a list of custom `labels` to the `annotate` method.
|
||||
|
||||
@@ -320,9 +320,9 @@ override this behavior by passing a list of custom `labels` to the `annotate` me
|
||||
## Annotate Image with Segmentations
|
||||
|
||||
If you are running the segmentation model
|
||||
[`sv.MaskAnnotator`](/latest/annotators/#supervision.annotators.core.MaskAnnotator)
|
||||
[`sv.MaskAnnotator`](/latest/detection/annotators/#supervision.annotators.core.MaskAnnotator)
|
||||
is a drop-in replacement for
|
||||
[`sv.BoxAnnotator`](/latest/annotators/#supervision.annotators.core.BoxAnnotator)
|
||||
[`sv.BoxAnnotator`](/latest/detection/annotators/#supervision.annotators.core.BoxAnnotator)
|
||||
that will allow you to draw masks instead of boxes.
|
||||
|
||||
=== "Inference"
|
||||
|
||||
@@ -148,7 +148,7 @@ enabling the continuous following of the object's motion path across different f
|
||||
|
||||
Annotating the video with tracking IDs helps in distinguishing and following each object
|
||||
distinctly. With the
|
||||
[`sv.LabelAnnotator`](/latest/annotators.md/#supervision.annotators.core.LabelAnnotator)
|
||||
[`sv.LabelAnnotator`](/latest/detection/annotators/#supervision.annotators.core.LabelAnnotator)
|
||||
in Supervision, we can overlay the tracker IDs and class labels on the detected objects,
|
||||
offering a clear visual representation of each object's class and unique identifier.
|
||||
|
||||
@@ -230,7 +230,7 @@ offering a clear visual representation of each object's class and unique identif
|
||||
|
||||
Adding traces to the video involves overlaying the historical paths of the detected
|
||||
objects. This feature, powered by the
|
||||
[`sv.TraceAnnotator`](/latest/annotators/#supervision.annotators.core.TraceAnnotator),
|
||||
[`sv.TraceAnnotator`](/latest/detection/annotators/#supervision.annotators.core.TraceAnnotator),
|
||||
allows for visualizing the trajectories of objects, helping in understanding the
|
||||
movement patterns and interactions between objects in the video.
|
||||
|
||||
|
||||
+4
-2
@@ -125,13 +125,15 @@ You can install `supervision` in a
|
||||
|
||||
[:octicons-arrow-right-24: Tutorial](how_to/detect_small_objects.md)
|
||||
|
||||
- > **Count Objects Crossing Line**
|
||||
- **Count Objects Crossing Line**
|
||||
|
||||
---
|
||||
|
||||
Explore methods to accurately count and analyze objects crossing a predefined line
|
||||
|
||||
- > **Filter Objects in Zone**
|
||||
[:octicons-arrow-right-24: Notebook](https://supervision.roboflow.com/latest/notebooks/count-objects-crossing-the-line/)
|
||||
|
||||
- **Filter Objects in Zone**
|
||||
|
||||
---
|
||||
|
||||
|
||||
+4
-4
@@ -287,10 +287,10 @@
|
||||
],
|
||||
"source": [
|
||||
"# Create a bounding box annotator object.\n",
|
||||
"bounding_box = sv.BoundingBoxAnnotator()\n",
|
||||
"box_annotator = sv.BoxAnnotator()\n",
|
||||
"\n",
|
||||
"# Annotate our frame with detections.\n",
|
||||
"annotated_frame = bounding_box.annotate(scene=frame.copy(), detections=detections)\n",
|
||||
"annotated_frame = box_annotator.annotate(scene=frame.copy(), detections=detections)\n",
|
||||
"\n",
|
||||
"# Display the frame.\n",
|
||||
"sv.plot_image(annotated_frame)"
|
||||
@@ -302,7 +302,7 @@
|
||||
"id": "o8SsyCid6YV3"
|
||||
},
|
||||
"source": [
|
||||
"Notice that we create a `box_annoator` variable by initalizing a [BoundingBoxAnnotator](https://supervision.roboflow.com/latest/annotators/#boundingboxannotator). We can change the color and thickness, but for simplicity we keep the defaults. There are a ton of easy to use [annotators](https://supervision.roboflow.com/latest/annotators/) available in the Supervision package other than a bounding box that are fun to play with."
|
||||
"Notice that we create a `box_annotator` variable by initalizing a [BoxAnnotator](https://supervision.roboflow.com/latest/detection/annotators/#boxannotator). We can change the color and thickness, but for simplicity we keep the defaults. There are a ton of easy to use [annotators](https://supervision.roboflow.com/latest/detection/annotators/) available in the Supervision package other than a bounding box that are fun to play with."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -342,7 +342,7 @@
|
||||
" detections = sv.Detections.from_inference(result)\n",
|
||||
"\n",
|
||||
" # Apply bounding box to detections on a copy of the frame.\n",
|
||||
" annotated_frame = bounding_box.annotate(\n",
|
||||
" annotated_frame = box_annotator.annotate(\n",
|
||||
" scene=frame.copy(),\n",
|
||||
" detections=detections\n",
|
||||
" )\n",
|
||||
|
||||
+223
-223
@@ -17,12 +17,12 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"Click the `Open in Colab` button to run the cookbook on Google Colab."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "IyC-iI62u9y7"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"Click the `Open in Colab` button to run the cookbook on Google Colab."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -47,8 +47,8 @@
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Mon Feb 12 13:03:38 2024 \n",
|
||||
"+---------------------------------------------------------------------------------------+\n",
|
||||
@@ -79,12 +79,12 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"**NOTE:** To make it easier for us to manage datasets, images and models we create a `HOME` constant."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "S_coxWaEwNpB"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"**NOTE:** To make it easier for us to manage datasets, images and models we create a `HOME` constant."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
@@ -98,8 +98,8 @@
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/content\n"
|
||||
]
|
||||
@@ -113,49 +113,49 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "PE1dQcgiLuvV"
|
||||
},
|
||||
"source": [
|
||||
"## Install required packages\n",
|
||||
"\n",
|
||||
"In this cookbook, we'll leverage two Python packages - `ultralytics` for running object detection, and `supervision` for tracking, visualizing detections, and crucially, counting objects that cross a line."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "PE1dQcgiLuvV"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"!pip install -q ultralytics supervision==0.18.0"
|
||||
],
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "Yy86T0CJLz1Y"
|
||||
},
|
||||
"execution_count": null,
|
||||
"outputs": []
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"!pip install -q ultralytics supervision==0.18.0"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"## Imports"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "FC-EZ6-fMEfA"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Imports"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {
|
||||
"id": "Q8rPpDW4MEGU"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import numpy as np\n",
|
||||
"import supervision as sv\n",
|
||||
"\n",
|
||||
"from ultralytics import YOLO\n",
|
||||
"from supervision.assets import download_assets, VideoAssets"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "Q8rPpDW4MEGU"
|
||||
},
|
||||
"execution_count": 4,
|
||||
"outputs": []
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -168,33 +168,33 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "Ax3dupz7z0vn"
|
||||
},
|
||||
"source": [
|
||||
"\n",
|
||||
"As an example input video, we will use one of the videos available in [`supervision.assets`](https://supervision.roboflow.com/develop/assets/). Supervision offers an assets download utility that allows you to download video files that you can use in your demos."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "Ax3dupz7z0vn"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"download_assets(VideoAssets.VEHICLES)"
|
||||
],
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "tmfK_kmjMtHp"
|
||||
},
|
||||
"execution_count": null,
|
||||
"outputs": []
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"download_assets(VideoAssets.VEHICLES)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"**NOTE:** If you want to run the cookbook using your own file as input, simply upload video to Google Colab and replace `SOURCE_VIDEO_PATH` with the path to your file."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "-G9vhVBl2i-P"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"**NOTE:** If you want to run the cookbook using your own file as input, simply upload video to Google Colab and replace `SOURCE_VIDEO_PATH` with the path to your file."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
@@ -209,6 +209,9 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "cZaQUyUrZAek"
|
||||
},
|
||||
"source": [
|
||||
"As a result of executing the above commands, you will download a video file and save it at the `SOURCE_VIDEO_PATH`. Keep in mind that the video preview below works only in the web version of the cookbooks and not in Google Colab.\n",
|
||||
"\n",
|
||||
@@ -218,37 +221,29 @@
|
||||
" type=\"video/mp4\"\n",
|
||||
" >\n",
|
||||
"</video>"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "cZaQUyUrZAek"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"## Read single frame from video"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "iiS871HqNnll"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Read single frame from video"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"The [`get_video_frames_generator`](https://supervision.roboflow.com/latest/utils/video/#supervision.utils.video.get_video_frames_generator) enables us to easily iterate over video frames. Let's create a video generator for our sample input file and display its first frame on the screen."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "MPMlQs-22HX9"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"The [`get_video_frames_generator`](https://supervision.roboflow.com/latest/utils/video/#supervision.utils.video.get_video_frames_generator) enables us to easily iterate over video frames. Let's create a video generator for our sample input file and display its first frame on the screen."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"generator = sv.get_video_frames_generator(SOURCE_VIDEO_PATH)\n",
|
||||
"frame = next(generator)\n",
|
||||
"\n",
|
||||
"sv.plot_image(frame, (12, 12))"
|
||||
],
|
||||
"execution_count": 7,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
@@ -257,35 +252,38 @@
|
||||
"id": "6jm4yX-3Ou_B",
|
||||
"outputId": "b5799261-2ac9-40a3-ae4a-cb0548a2c034"
|
||||
},
|
||||
"execution_count": 7,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 1200x1200 with 1 Axes>"
|
||||
],
|
||||
"image/png": "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 truncated
|
||||
]
|
||||
},
|
||||
"metadata": {}
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"generator = sv.get_video_frames_generator(SOURCE_VIDEO_PATH)\n",
|
||||
"frame = next(generator)\n",
|
||||
"\n",
|
||||
"sv.plot_image(frame, (12, 12))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "L4pt1XDO3D7q"
|
||||
},
|
||||
"source": [
|
||||
"\n",
|
||||
"We can also use [`VideoInfo.from_video_path`](https://supervision.roboflow.com/develop/utils/video/#supervision.utils.video.VideoInfo) to learn basic information about our video, such as duration, resolution, or FPS."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "L4pt1XDO3D7q"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"sv.VideoInfo.from_video_path(SOURCE_VIDEO_PATH)"
|
||||
],
|
||||
"execution_count": 8,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
@@ -293,48 +291,45 @@
|
||||
"id": "eVLsW_I72eXa",
|
||||
"outputId": "9182624b-2de5-47d1-a5ed-73dc60ed5e8a"
|
||||
},
|
||||
"execution_count": 8,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "execute_result",
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"VideoInfo(width=3840, height=2160, fps=25, total_frames=538)"
|
||||
]
|
||||
},
|
||||
"execution_count": 8,
|
||||
"metadata": {},
|
||||
"execution_count": 8
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"sv.VideoInfo.from_video_path(SOURCE_VIDEO_PATH)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "N0-qK6vDPsr-"
|
||||
},
|
||||
"source": [
|
||||
"## Run Object Detection\n",
|
||||
"\n",
|
||||
"Let's start by running the detection model on the first frame and annotating the results. In this cookbook, we use [Ultralytics](https://github.com/ultralytics/ultralytics) YOLOv8, but it can be successfully replaced with [other models](https://supervision.roboflow.com/latest/detection/core)."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "N0-qK6vDPsr-"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"We initiate the model and perform detection on the first frame of the video. Then, we convert the result into a [`sv.Detections`](https://supervision.roboflow.com/latest/detection/core/) object, which will be useful in the later parts of the cookbook."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "uGJKBHXnc1w3"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"We initiate the model and perform detection on the first frame of the video. Then, we convert the result into a [`sv.Detections`](https://supervision.roboflow.com/latest/detection/core/) object, which will be useful in the later parts of the cookbook."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"model = YOLO(\"yolov8x.pt\")\n",
|
||||
"\n",
|
||||
"results = model(frame, verbose=False)[0]\n",
|
||||
"detections = sv.Detections.from_ultralytics(results)"
|
||||
],
|
||||
"execution_count": 9,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
@@ -342,41 +337,42 @@
|
||||
"id": "NW0G6ZKX1e1E",
|
||||
"outputId": "91687b08-667e-46c2-a421-e26fefc3388b"
|
||||
},
|
||||
"execution_count": 9,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Downloading https://github.com/ultralytics/assets/releases/download/v8.1.0/yolov8x.pt to 'yolov8x.pt'...\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 131M/131M [00:00<00:00, 241MB/s]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"model = YOLO(\"yolov8x.pt\")\n",
|
||||
"\n",
|
||||
"results = model(frame, verbose=False)[0]\n",
|
||||
"detections = sv.Detections.from_ultralytics(results)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"\n",
|
||||
"The results we've obtained can be easily visualized with [`sv.BoundingBoxAnnotator`](https://supervision.roboflow.com/latest/annotators/#supervision.annotators.core.BoundingBoxAnnotator). By default, this annotator uses the same color to highlight objects of the same category. However, with the integration of a [tracker](https://supervision.roboflow.com/latest/trackers/), it becomes possible to assign unique colors to each tracked object. We can easily define our [own color palettes](https://supervision.roboflow.com/latest/draw/color/#supervision.draw.color.ColorPalette) and adjust parameters such as line thickness, allowing for a highly tailored visualization experience."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "zL56OvvfdYpB"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"\n",
|
||||
"The results we've obtained can be easily visualized with [`sv.BoundingBoxAnnotator`](https://supervision.roboflow.com/latest/detection/annotators/#supervision.annotators.core.BoundingBoxAnnotator). By default, this annotator uses the same color to highlight objects of the same category. However, with the integration of a [tracker](https://supervision.roboflow.com/latest/trackers/), it becomes possible to assign unique colors to each tracked object. We can easily define our [own color palettes](https://supervision.roboflow.com/latest/utils/draw/#supervision.draw.color.ColorPalette) and adjust parameters such as line thickness, allowing for a highly tailored visualization experience."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"bounding_box_annotator = sv.BoundingBoxAnnotator(thickness=4)\n",
|
||||
"annotated_frame = bounding_box_annotator.annotate(frame.copy(), detections)\n",
|
||||
"sv.plot_image(annotated_frame, (12, 12))"
|
||||
],
|
||||
"execution_count": 10,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
@@ -385,40 +381,65 @@
|
||||
"id": "qpjNci4iRGkJ",
|
||||
"outputId": "b0ddb63b-9640-40b9-d8f4-e555195f0134"
|
||||
},
|
||||
"execution_count": 10,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 1200x1200 with 1 Axes>"
|
||||
],
|
||||
"image/png": "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 truncated
|
||||
]
|
||||
},
|
||||
"metadata": {}
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"bounding_box_annotator = sv.BoundingBoxAnnotator(thickness=4)\n",
|
||||
"annotated_frame = bounding_box_annotator.annotate(frame.copy(), detections)\n",
|
||||
"sv.plot_image(annotated_frame, (12, 12))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"## Improve Visualizations"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "HsPNfuM_3ENR"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Improve Visualizations"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"Supervision annotators can be easily combined with one another. Let's enhance our visualization by adding [`sv.LabelAnnotator`](https://supervision.roboflow.com/latest/annotators/#supervision.annotators.core.PolygonAnnotator.annotate), which we will use to mark detections with a label indicating their category and confidence level."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "H4lp2Ao_fHit"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"Supervision annotators can be easily combined with one another. Let's enhance our visualization by adding [`sv.LabelAnnotator`](https://supervision.roboflow.com/latest/detection/annotators/#supervision.annotators.core.PolygonAnnotator.annotate), which we will use to mark detections with a label indicating their category and confidence level."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 560
|
||||
},
|
||||
"id": "lIYQULBI3Tf3",
|
||||
"outputId": "8cd8d367-9003-4ac8-d62e-d81d38d2faeb"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 1200x1200 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"labels = [\n",
|
||||
" f\"{results.names[class_id]} {confidence:0.2f}\"\n",
|
||||
@@ -433,54 +454,31 @@
|
||||
"annotated_frame = bounding_box_annotator.annotate(annotated_frame, detections)\n",
|
||||
"annotated_frame = label_annotator.annotate(annotated_frame, detections, labels)\n",
|
||||
"sv.plot_image(annotated_frame, (12, 12))"
|
||||
],
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 560
|
||||
},
|
||||
"id": "lIYQULBI3Tf3",
|
||||
"outputId": "8cd8d367-9003-4ac8-d62e-d81d38d2faeb"
|
||||
},
|
||||
"execution_count": 12,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"<Figure size 1200x1200 with 1 Axes>"
|
||||
],
|
||||
"image/png": "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 truncated
|
||||
},
|
||||
"metadata": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"## Define Line Position"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "WZHe1xq_633e"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Define Line Position"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "iniUELOr5hZ_"
|
||||
},
|
||||
"source": [
|
||||
"To set the position of `sv.LineZone`, we need to define the `start` and `end` points. The position of each point is defined as a pair of coordinates `(x, y)`. The origin of the coordinate system is located in the top-left corner of the frame. The `x` axis runs from left to right, and the `y` axis runs from top to bottom.\n",
|
||||
"\n",
|
||||
"I decided to place my line horizontally, at the midpoint of the frame's height. I obtained the full dimensions of the frame using [`sv.VideoInfo`](https://supervision.roboflow.com/develop/utils/video/#supervision.utils.video.VideoInfo).\n"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "iniUELOr5hZ_"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"sv.VideoInfo.from_video_path(SOURCE_VIDEO_PATH)"
|
||||
],
|
||||
"execution_count": 14,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
@@ -488,31 +486,54 @@
|
||||
"id": "pqwq-1OYihyB",
|
||||
"outputId": "3c74086d-7c1c-42f9-b8dc-25dc74b2e35a"
|
||||
},
|
||||
"execution_count": 14,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "execute_result",
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"VideoInfo(width=3840, height=2160, fps=25, total_frames=538)"
|
||||
]
|
||||
},
|
||||
"execution_count": 14,
|
||||
"metadata": {},
|
||||
"execution_count": 14
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"sv.VideoInfo.from_video_path(SOURCE_VIDEO_PATH)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"The line we've created, together with the `in_count` and `out_count`, can be elegantly visualized using [`sv.LineZoneAnnotator`](https://supervision.roboflow.com/latest/detection/tools/line_zone/#supervision.detection.line_zone.LineZoneAnnotator). This tool also allows for extensive customization options; we can alter the color of both the line and the text, opt to hide the in/out counts, and adjust the labels. By default, the labels are set to `in` and `out`, but they can be tailored to fit the context of our project, providing a clear and intuitive display of object movement across the designated line."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "WBavHZsdijjR"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"The line we've created, together with the `in_count` and `out_count`, can be elegantly visualized using [`sv.LineZoneAnnotator`](https://supervision.roboflow.com/latest/detection/tools/line_zone/#supervision.detection.line_zone.LineZoneAnnotator). This tool also allows for extensive customization options; we can alter the color of both the line and the text, opt to hide the in/out counts, and adjust the labels. By default, the labels are set to `in` and `out`, but they can be tailored to fit the context of our project, providing a clear and intuitive display of object movement across the designated line."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 22,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 560
|
||||
},
|
||||
"id": "gqdGQABx7BzA",
|
||||
"outputId": "42bb2e1c-ab6c-4e3d-b286-d78f0a959d7c"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 1200x1200 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"START = sv.Point(0, 1500)\n",
|
||||
"END = sv.Point(3840, 1500)\n",
|
||||
@@ -527,82 +548,66 @@
|
||||
"annotated_frame = frame.copy()\n",
|
||||
"annotated_frame = line_zone_annotator.annotate(annotated_frame, line_counter=line_zone)\n",
|
||||
"sv.plot_image(annotated_frame, (12, 12))"
|
||||
],
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 560
|
||||
},
|
||||
"id": "gqdGQABx7BzA",
|
||||
"outputId": "42bb2e1c-ab6c-4e3d-b286-d78f0a959d7c"
|
||||
},
|
||||
"execution_count": 22,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"<Figure size 1200x1200 with 1 Axes>"
|
||||
],
|
||||
"image/png": "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 truncated
|
||||
},
|
||||
"metadata": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"## Process Video"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "2Mq56vXt8H9b"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Process Video"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"byte_tracker = sv.ByteTrack()"
|
||||
],
|
||||
"execution_count": 18,
|
||||
"metadata": {
|
||||
"id": "ayaocyX28ykm"
|
||||
},
|
||||
"execution_count": 18,
|
||||
"outputs": []
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"byte_tracker = sv.ByteTrack()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"For an even better visualization, we will add another annotator - `sv.TraceAnnotator`, which allows for drawing the path traversed by each object over the last few frames. We will use it in combination with `sv.BoundingBoxAnnotator` and `sv.LabelAnnotator`, which we became familiar with earlier."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "UJwZ8KVSln-_"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"For an even better visualization, we will add another annotator - `sv.TraceAnnotator`, which allows for drawing the path traversed by each object over the last few frames. We will use it in combination with `sv.BoundingBoxAnnotator` and `sv.LabelAnnotator`, which we became familiar with earlier."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 17,
|
||||
"metadata": {
|
||||
"id": "WpKDAJny9n3D"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"bounding_box_annotator = sv.BoundingBoxAnnotator(thickness=4)\n",
|
||||
"label_annotator = sv.LabelAnnotator(text_thickness=4, text_scale=2)\n",
|
||||
"trace_annotator = sv.TraceAnnotator(thickness=4)"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "WpKDAJny9n3D"
|
||||
},
|
||||
"execution_count": 17,
|
||||
"outputs": []
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"All the operations we plan to perform for each frame of our video - detection, tracking, annotation, and counting - are encapsulated in a function named `callback`."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "8_slr3hrlX20"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"All the operations we plan to perform for each frame of our video - detection, tracking, annotation, and counting - are encapsulated in a function named `callback`."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 19,
|
||||
"metadata": {
|
||||
"id": "-Qs07-Ml-ETD"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def callback(frame: np.ndarray, index:int) -> np.ndarray:\n",
|
||||
" results = model(frame, verbose=False)[0]\n",
|
||||
@@ -630,50 +635,48 @@
|
||||
" line_zone.trigger(detections)\n",
|
||||
"\n",
|
||||
" return line_zone_annotator.annotate(annotated_frame, line_counter=line_zone)"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "-Qs07-Ml-ETD"
|
||||
},
|
||||
"execution_count": 19,
|
||||
"outputs": []
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"Finally, we are ready to process our entire video. We will use [`sv.process_video`](https://supervision.roboflow.com/develop/utils/video/#supervision.utils.video.process_video) and pass to it the previously defined `SOURCE_VIDEO_PATH`, `TARGET_VIDEO_PATH`, and `callback`."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "h8ip4Nmm5Gcm"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"Finally, we are ready to process our entire video. We will use [`sv.process_video`](https://supervision.roboflow.com/develop/utils/video/#supervision.utils.video.process_video) and pass to it the previously defined `SOURCE_VIDEO_PATH`, `TARGET_VIDEO_PATH`, and `callback`."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"TARGET_VIDEO_PATH = f\"{HOME}/count-objects-crossing-the-line-result.mp4\""
|
||||
],
|
||||
"execution_count": 21,
|
||||
"metadata": {
|
||||
"id": "2RHSS5hAmlnd"
|
||||
},
|
||||
"execution_count": 21,
|
||||
"outputs": []
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"TARGET_VIDEO_PATH = f\"{HOME}/count-objects-crossing-the-line-result.mp4\""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 20,
|
||||
"metadata": {
|
||||
"id": "a7F5Ij-Q-TWx"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"sv.process_video(\n",
|
||||
" source_path = SOURCE_VIDEO_PATH,\n",
|
||||
" target_path = TARGET_VIDEO_PATH,\n",
|
||||
" callback=callback\n",
|
||||
")"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "a7F5Ij-Q-TWx"
|
||||
},
|
||||
"execution_count": 20,
|
||||
"outputs": []
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "Oxc4X5S7ffEw"
|
||||
},
|
||||
"source": [
|
||||
" Keep in mind that the video preview below works only in the web version of the cookbooks and not in Google Colab.\n",
|
||||
"\n",
|
||||
@@ -683,10 +686,7 @@
|
||||
" type=\"video/mp4\"\n",
|
||||
" >\n",
|
||||
"</video>"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "Oxc4X5S7ffEw"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
|
||||
+218
-218
@@ -1,23 +1,10 @@
|
||||
{
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 0,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"provenance": [],
|
||||
"gpuType": "T4"
|
||||
},
|
||||
"kernelspec": {
|
||||
"name": "python3",
|
||||
"display_name": "Python 3"
|
||||
},
|
||||
"language_info": {
|
||||
"name": "python"
|
||||
},
|
||||
"accelerator": "GPU"
|
||||
},
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "pviK1VFFNp8h"
|
||||
},
|
||||
"source": [
|
||||
"# Evaluating Alignment of Text-to-image Diffusion Models\n",
|
||||
"\n",
|
||||
@@ -26,32 +13,29 @@
|
||||
"[](https://colab.research.google.com/github/roboflow/supervision/blob/develop/docs/notebooks/evaluating-alignment-of-text-to-image-diffusion-models.ipynb)\n",
|
||||
"\n",
|
||||
"Click the `Open in Colab` button to run the cookbook on Google Colab."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "pviK1VFFNp8h"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "FtZXoFjPt569"
|
||||
},
|
||||
"source": [
|
||||
"## Introduction\n",
|
||||
"\n",
|
||||
"It is a common scenario to evaluate text-to-image models for its alignment to the prompt. One way to test it is to use a set of prompts, consisting of number of objects and their basic physical properties (e.g. color), to generate images and manually evaluate the results. This process can be greatly improved using object detection models."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "FtZXoFjPt569"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "1yOkAwH-UYPM"
|
||||
},
|
||||
"source": [
|
||||
"## Before you start\n",
|
||||
"\n",
|
||||
"Let's make sure that we have access to GPU. We can use `nvidia-smi` command to do that. In case of any problems navigate to `Edit` -> `Notebook settings` -> `Hardware accelerator`, set it to `GPU`, and then click `Save`."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "1yOkAwH-UYPM"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
@@ -65,8 +49,8 @@
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Thu Feb 29 18:16:26 2024 \n",
|
||||
"+---------------------------------------------------------------------------------------+\n",
|
||||
@@ -97,6 +81,9 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "xg5JFGa4UjZq"
|
||||
},
|
||||
"source": [
|
||||
"## Install required packages\n",
|
||||
"\n",
|
||||
@@ -104,33 +91,35 @@
|
||||
"* [diffusers](https://huggingface.co/docs/diffusers/en/index) for image generation pipelines,\n",
|
||||
"* [inference](https://inference.roboflow.com/) for running object detection,\n",
|
||||
"* [supervision](https://supervision.roboflow.com/) for visualizing detections."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "xg5JFGa4UjZq"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"!pip install -q torch diffusers accelerate inference-gpu[yolo-world] dill git+https://github.com/openai/CLIP.git supervision==0.19.0rc5"
|
||||
],
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "ri8GPZ3SD7LT"
|
||||
},
|
||||
"execution_count": null,
|
||||
"outputs": []
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"!pip install -q torch diffusers accelerate inference-gpu[yolo-world] dill git+https://github.com/openai/CLIP.git supervision==0.19.0rc5"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"## Imports"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "U0qBpU5YU3P9"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Imports"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "sBKUQMdwJTv1"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import itertools\n",
|
||||
"import cv2\n",
|
||||
@@ -140,26 +129,26 @@
|
||||
"import supervision as sv\n",
|
||||
"import torch\n",
|
||||
"from inference.models import YOLOWorld"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "sBKUQMdwJTv1"
|
||||
},
|
||||
"execution_count": null,
|
||||
"outputs": []
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "ZzEhndAyU_EF"
|
||||
},
|
||||
"source": [
|
||||
"## Generating an image\n",
|
||||
"\n",
|
||||
"We'll use [SDXL](https://huggingface.co/docs/diffusers/using-diffusers/sdxl) model to generate our image. Let's initialize our pipeline first:"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "ZzEhndAyU_EF"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "qCwxwGcuEHJ-"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"pipeline = StableDiffusionXLPipeline.from_pretrained(\n",
|
||||
" \"stabilityai/stable-diffusion-xl-base-1.0\",\n",
|
||||
@@ -167,39 +156,20 @@
|
||||
" variant=\"fp16\",\n",
|
||||
" use_safetensors=True,\n",
|
||||
").to(\"cuda\")"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "qCwxwGcuEHJ-"
|
||||
},
|
||||
"execution_count": null,
|
||||
"outputs": []
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"In this example, we'll focus on generating an image of a black cat playing with a blue ball next to a parked white car. We don't care about the aesthetic aspect of the image."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "XrQ8ose0Vm-T"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"In this example, we'll focus on generating an image of a black cat playing with a blue ball next to a parked white car. We don't care about the aesthetic aspect of the image."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"PROMPT = \"a black cat playing with a blue ball next to a parked white car, wide angle, photorealistic\"\n",
|
||||
"NEGATIVE_PROMPT = \"low quality, blurred, text, illustration\"\n",
|
||||
"WIDTH, HEIGHT = 1024, 768\n",
|
||||
"SEED = 9213799\n",
|
||||
"\n",
|
||||
"image = pipeline(\n",
|
||||
" prompt=PROMPT,\n",
|
||||
" negative_prompt=NEGATIVE_PROMPT,\n",
|
||||
" generator=torch.manual_seed(SEED),\n",
|
||||
" width=WIDTH,\n",
|
||||
" height=HEIGHT,\n",
|
||||
").images[0]\n",
|
||||
"image"
|
||||
],
|
||||
"execution_count": 41,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
@@ -221,83 +191,92 @@
|
||||
"id": "TaWaIpjQERtf",
|
||||
"outputId": "236e6107-b50f-4eb8-8db8-234519245264"
|
||||
},
|
||||
"execution_count": 41,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "80345cfe8a724651a287a20078218742",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
" 0%| | 0/50 [00:00<?, ?it/s]"
|
||||
],
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"version_major": 2,
|
||||
"version_minor": 0,
|
||||
"model_id": "80345cfe8a724651a287a20078218742"
|
||||
}
|
||||
},
|
||||
"metadata": {}
|
||||
},
|
||||
{
|
||||
"output_type": "execute_result",
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"<PIL.Image.Image image mode=RGB size=1024x768>"
|
||||
],
|
||||
"image/png": "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 truncated
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"execution_count": 41
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<PIL.Image.Image image mode=RGB size=1024x768>"
|
||||
]
|
||||
},
|
||||
"execution_count": 41,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"PROMPT = \"a black cat playing with a blue ball next to a parked white car, wide angle, photorealistic\"\n",
|
||||
"NEGATIVE_PROMPT = \"low quality, blurred, text, illustration\"\n",
|
||||
"WIDTH, HEIGHT = 1024, 768\n",
|
||||
"SEED = 9213799\n",
|
||||
"\n",
|
||||
"image = pipeline(\n",
|
||||
" prompt=PROMPT,\n",
|
||||
" negative_prompt=NEGATIVE_PROMPT,\n",
|
||||
" generator=torch.manual_seed(SEED),\n",
|
||||
" width=WIDTH,\n",
|
||||
" height=HEIGHT,\n",
|
||||
").images[0]\n",
|
||||
"image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "wKuyU-GDXPhr"
|
||||
},
|
||||
"source": [
|
||||
"Not bad! The results seem to be well-aligned with the prompt.\n",
|
||||
"\n",
|
||||
"## Detecting objects\n",
|
||||
"\n",
|
||||
"Now, let's see how can we detect the objects automatically. For this, we'll use [YOLO-World](https://inference.roboflow.com/) model from `inference` library."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "wKuyU-GDXPhr"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"model = YOLOWorld(model_id=\"yolo_world/l\")"
|
||||
],
|
||||
"execution_count": 42,
|
||||
"metadata": {
|
||||
"id": "R9pERjDkGIlN"
|
||||
},
|
||||
"execution_count": 42,
|
||||
"outputs": []
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"model = YOLOWorld(model_id=\"yolo_world/l\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [],
|
||||
"metadata": {
|
||||
"id": "G0PlnmZckOCH"
|
||||
}
|
||||
},
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"YOLO-World model allows us to [define our own set of labels](https://docs.ultralytics.com/models/yolo-world/#set-prompts). Let's create it by combining lists of pre-defined colors and objects."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "VOxtES_qaoWe"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"YOLO-World model allows us to [define our own set of labels](https://docs.ultralytics.com/models/yolo-world/#set-prompts). Let's create it by combining lists of pre-defined colors and objects."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"COLORS = [\"green\", \"yellow\", \"black\", \"blue\", \"red\", \"white\", \"orange\"]\n",
|
||||
"OBJECTS = [\"car\", \"cat\", \"ball\", \"dog\", \"tree\", \"house\", \"person\"]\n",
|
||||
"CLASSES = [f\"{color} {obj}\" for color, obj in itertools.product(COLORS, OBJECTS)]\n",
|
||||
"print(\"Number of labels:\", len(CLASSES))"
|
||||
],
|
||||
"execution_count": 43,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
@@ -305,116 +284,114 @@
|
||||
"id": "SkY3TI4JHmkj",
|
||||
"outputId": "253a95a8-0c32-403a-db63-82e529de2eba"
|
||||
},
|
||||
"execution_count": 43,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Number of labels: 49\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"COLORS = [\"green\", \"yellow\", \"black\", \"blue\", \"red\", \"white\", \"orange\"]\n",
|
||||
"OBJECTS = [\"car\", \"cat\", \"ball\", \"dog\", \"tree\", \"house\", \"person\"]\n",
|
||||
"CLASSES = [f\"{color} {obj}\" for color, obj in itertools.product(COLORS, OBJECTS)]\n",
|
||||
"print(\"Number of labels:\", len(CLASSES))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"Let's feed these labels into our model:"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "by_NYnqkoET-"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"Let's feed these labels into our model:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"model.set_classes(CLASSES)"
|
||||
],
|
||||
"execution_count": 44,
|
||||
"metadata": {
|
||||
"id": "oinXZU3YWZqw"
|
||||
},
|
||||
"execution_count": 44,
|
||||
"outputs": []
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"model.set_classes(CLASSES)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"Time to detect some objects!"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "RTHHpRsFoJsk"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"Time to detect some objects!"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"results = model.infer(image)"
|
||||
],
|
||||
"execution_count": 45,
|
||||
"metadata": {
|
||||
"id": "zDPd-LOqGLHJ"
|
||||
},
|
||||
"execution_count": 45,
|
||||
"outputs": []
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"results = model.infer(image)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"We'll convert the results to the [sv.Detections](https://supervision.roboflow.com/latest/detection/core/#supervision.detection.core.Detections) format to enable features like filtering or annotations."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "TGCRxUpeu8Vi"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"We'll convert the results to the [sv.Detections](https://supervision.roboflow.com/latest/detection/core/#supervision.detection.core.Detections) format to enable features like filtering or annotations."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"detections = sv.Detections.from_inference(results)"
|
||||
],
|
||||
"execution_count": 46,
|
||||
"metadata": {
|
||||
"id": "GWbmFKscvUhU"
|
||||
},
|
||||
"execution_count": 46,
|
||||
"outputs": []
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"detections = sv.Detections.from_inference(results)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"Speaking of which: we only care about strong detections, so we filter out ones that are below 0.6 confidence."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "AscEY8SioQQ7"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"Speaking of which: we only care about strong detections, so we filter out ones that are below 0.6 confidence."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"valid_detections = detections[detections.confidence >= 0.6]"
|
||||
],
|
||||
"execution_count": 47,
|
||||
"metadata": {
|
||||
"id": "f2fvqc8lWxGT"
|
||||
},
|
||||
"execution_count": 47,
|
||||
"outputs": []
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"valid_detections = detections[detections.confidence >= 0.6]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"A quick peek on the detected labels and their score:"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "klstslXPop-9"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"A quick peek on the detected labels and their score:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"labels = [\n",
|
||||
" f\"{CLASSES[class_id]} {confidence:0.2f}\"\n",
|
||||
" for class_id, confidence\n",
|
||||
" in zip(valid_detections.class_id, valid_detections.confidence)\n",
|
||||
"]\n",
|
||||
"labels"
|
||||
],
|
||||
"execution_count": 48,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
@@ -422,62 +399,64 @@
|
||||
"id": "0jbyOEGdGOhd",
|
||||
"outputId": "a7a90eb0-d829-40d3-8090-151e2c735d8c"
|
||||
},
|
||||
"execution_count": 48,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "execute_result",
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"['blue ball 0.95', 'black cat 0.72', 'white car 0.68']"
|
||||
]
|
||||
},
|
||||
"execution_count": 48,
|
||||
"metadata": {},
|
||||
"execution_count": 48
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"labels = [\n",
|
||||
" f\"{CLASSES[class_id]} {confidence:0.2f}\"\n",
|
||||
" for class_id, confidence\n",
|
||||
" in zip(valid_detections.class_id, valid_detections.confidence)\n",
|
||||
"]\n",
|
||||
"labels"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "GOccbqMDo2Ec"
|
||||
},
|
||||
"source": [
|
||||
"## Visualizing results\n",
|
||||
"\n",
|
||||
"Now, let's use the power of `supervision` to visualize them. Our output image is in [Pillow](https://pillow.readthedocs.io/en/stable/index.html) format, but annotators can accept the image to be a BGR `np.ndarray` or pillow's `PIL.Image.Image`.\n",
|
||||
"\n",
|
||||
"Time to define how we want our detections to be visualized. A combination of [sv.BoundingBoxAnnotator](https://supervision.roboflow.com/latest/annotators/#supervision.annotators.core.BoundingBoxAnnotator) and [sv.LabelAnnotator](https://supervision.roboflow.com/latest/annotators/#supervision.annotators.core.LabelAnnotator) should be perfect."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "GOccbqMDo2Ec"
|
||||
}
|
||||
"Time to define how we want our detections to be visualized. A combination of [sv.BoundingBoxAnnotator](https://supervision.roboflow.com/latest/detection/annotators/#supervision.annotators.core.BoundingBoxAnnotator) and [sv.LabelAnnotator](https://supervision.roboflow.com/latest/detection/annotators/#supervision.annotators.core.LabelAnnotator) should be perfect."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"bounding_box_annotator = sv.BoundingBoxAnnotator(thickness=2)\n",
|
||||
"label_annotator = sv.LabelAnnotator(text_thickness=1, text_scale=0.5,text_color=sv.Color.BLACK)"
|
||||
],
|
||||
"execution_count": 49,
|
||||
"metadata": {
|
||||
"id": "X9HMMnTppp-c"
|
||||
},
|
||||
"execution_count": 49,
|
||||
"outputs": []
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"bounding_box_annotator = sv.BoundingBoxAnnotator(thickness=2)\n",
|
||||
"label_annotator = sv.LabelAnnotator(text_thickness=1, text_scale=0.5,text_color=sv.Color.BLACK)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"Finally, annotating our image is as simple as calling `annotate` methods from our annotators:"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "u3y59TgWp4Fx"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"Finally, annotating our image is as simple as calling `annotate` methods from our annotators:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"annotated_image = bounding_box_annotator.annotate(image, valid_detections)\n",
|
||||
"annotated_image = label_annotator.annotate(annotated_image, valid_detections, labels)\n",
|
||||
"\n",
|
||||
"sv.plot_image(annotated_image, (12, 12))"
|
||||
],
|
||||
"execution_count": 50,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
@@ -486,39 +465,39 @@
|
||||
"id": "UdDEwjhoIiHo",
|
||||
"outputId": "c56bd631-653c-4fd6-cc41-653abc49b0e7"
|
||||
},
|
||||
"execution_count": 50,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 1200x1200 with 1 Axes>"
|
||||
],
|
||||
"image/png": "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 truncated
|
||||
]
|
||||
},
|
||||
"metadata": {}
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"annotated_image = bounding_box_annotator.annotate(image, valid_detections)\n",
|
||||
"annotated_image = label_annotator.annotate(annotated_image, valid_detections, labels)\n",
|
||||
"\n",
|
||||
"sv.plot_image(annotated_image, (12, 12))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "kl5kO59CquMq"
|
||||
},
|
||||
"source": [
|
||||
"## Testing it automatically\n",
|
||||
"\n",
|
||||
"We can also test if all requested objects are in the generated image by comparing a set of ground-truth labels with predicted ones:"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "kl5kO59CquMq"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"GROUND_TRUTH = {\"black cat\", \"blue ball\", \"white car\"}\n",
|
||||
"prediction = {CLASSES[class_id] for class_id in valid_detections.class_id}\n",
|
||||
"\n",
|
||||
"prediction.issubset(GROUND_TRUTH)"
|
||||
],
|
||||
"execution_count": 51,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
@@ -526,41 +505,62 @@
|
||||
"id": "laJS1E76qynK",
|
||||
"outputId": "de193606-b41a-445d-8107-de02218190bd"
|
||||
},
|
||||
"execution_count": 51,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "execute_result",
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"True"
|
||||
]
|
||||
},
|
||||
"execution_count": 51,
|
||||
"metadata": {},
|
||||
"execution_count": 51
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"GROUND_TRUTH = {\"black cat\", \"blue ball\", \"white car\"}\n",
|
||||
"prediction = {CLASSES[class_id] for class_id in valid_detections.class_id}\n",
|
||||
"\n",
|
||||
"prediction.issubset(GROUND_TRUTH)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"Using [sv.Detections](https://supervision.roboflow.com/latest/detection/core/#supervision.detection.core.Detections) makes it super easy to do."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "8L4lXpvFvxZR"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"Using [sv.Detections](https://supervision.roboflow.com/latest/detection/core/#supervision.detection.core.Detections) makes it super easy to do."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "j2GgYtNGqYmY"
|
||||
},
|
||||
"source": [
|
||||
"## Next steps\n",
|
||||
"\n",
|
||||
"In this tutorial you learned how to detect and visualize objects for a simple image generation evaluation study.\n",
|
||||
"\n",
|
||||
"Having a pipeline capable of evaluating a single image, the natural next step should be to run it on a set of pre-defined scenarios and calculate metrics."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "j2GgYtNGqYmY"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"accelerator": "GPU",
|
||||
"colab": {
|
||||
"gpuType": "T4",
|
||||
"provenance": []
|
||||
},
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"name": "python"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 0
|
||||
}
|
||||
Vendored
+6
-6
@@ -12,7 +12,7 @@
|
||||
"\n",
|
||||
"[](https://colab.research.google.com/github/roboflow/supervision/blob/develop/docs/notebooks/object-tracking.ipynb)\n",
|
||||
"\n",
|
||||
"In some cases, it's important for us to track objects across multiple frames of a video. For example, we may need to figure out the direction a vehicle is moving, or count objects in a frame. Some Supervision [Annotators](https://supervision.roboflow.com/latest/annotators/) and Tools like [LineZone](https://supervision.roboflow.com/latest/detection/tools/line_zone/) require tracking to be setup. In this cookbook, we'll cover how to get a tracker up and running for use in your computer vision applications.\n",
|
||||
"In some cases, it's important for us to track objects across multiple frames of a video. For example, we may need to figure out the direction a vehicle is moving, or count objects in a frame. Some Supervision [Annotators](https://supervision.roboflow.com/latest/detection/annotators/) and Tools like [LineZone](https://supervision.roboflow.com/latest/detection/tools/line_zone/) require tracking to be setup. In this cookbook, we'll cover how to get a tracker up and running for use in your computer vision applications.\n",
|
||||
"\n",
|
||||
"## What is a Tracker?\n",
|
||||
"\n",
|
||||
@@ -45,8 +45,8 @@
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Fri Feb 23 03:18:02 2024 \n",
|
||||
"+---------------------------------------------------------------------------------------+\n",
|
||||
@@ -160,14 +160,14 @@
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 1200x1200 with 1 Axes>"
|
||||
],
|
||||
"image/png": "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 truncated
|
||||
]
|
||||
},
|
||||
"metadata": {}
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
|
||||
Vendored
+94
-94
@@ -71,16 +71,16 @@
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {
|
||||
"id": "1Pwtk-9CQWsH",
|
||||
"outputId": "c8a33db4-f95e-49db-c080-6ac431f84e3a",
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
}
|
||||
},
|
||||
"id": "1Pwtk-9CQWsH",
|
||||
"outputId": "c8a33db4-f95e-49db-c080-6ac431f84e3a"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Wed Jul 17 14:51:30 2024 \n",
|
||||
"+---------------------------------------------------------------------------------------+\n",
|
||||
@@ -122,16 +122,16 @@
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {
|
||||
"id": "dwGOFWdJnr3T",
|
||||
"outputId": "b121cc01-3a8b-4847-8e3d-80808ab36bea",
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
}
|
||||
},
|
||||
"id": "dwGOFWdJnr3T",
|
||||
"outputId": "b121cc01-3a8b-4847-8e3d-80808ab36bea"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/content\n"
|
||||
]
|
||||
@@ -185,8 +185,8 @@
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/content/images\n"
|
||||
]
|
||||
@@ -218,16 +218,16 @@
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"metadata": {
|
||||
"id": "Lo8hLtZ2LPWp",
|
||||
"outputId": "18c43a29-fa01-4d29-9e84-3411d2924b0c",
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
}
|
||||
},
|
||||
"id": "Lo8hLtZ2LPWp",
|
||||
"outputId": "18c43a29-fa01-4d29-9e84-3411d2924b0c"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"\u001b[?25l \u001b[90m\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u001b[0m \u001b[32m0.0/135.7 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[90m\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u001b[0m \u001b[32m135.7/135.7 kB\u001b[0m \u001b[31m3.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
||||
"\u001b[?25h0.22.0\n"
|
||||
@@ -265,7 +265,7 @@
|
||||
"source": [
|
||||
"## \ud83d\udd0c Plug in your model\n",
|
||||
"\n",
|
||||
"**NOTE:** In our example, we will focus only on integration with YOLO-NAS and YOLOv8. However, keep in mind that supervision allows seamless integration with many other models like SAM, Transformers, and YOLOv5. You can learn more from our [documentation](https://roboflow.github.io/supervision/detection/core/#detections)."
|
||||
"**NOTE:** In our example, we will focus only on integration with YOLO-NAS and YOLOv8. However, keep in mind that supervision allows seamless integration with many other models like SAM, Transformers, and YOLOv5. You can learn more from our [documentation](https://supervision.roboflow.com/latest/detection/core/#supervision.detection.core.Detections)."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -320,89 +320,89 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"\"detections\", len(detections)"
|
||||
],
|
||||
"execution_count": 9,
|
||||
"metadata": {
|
||||
"id": "0laYCojABX8I",
|
||||
"outputId": "c72e9f77-311a-451e-907f-ebcac738884f",
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
}
|
||||
},
|
||||
"id": "0laYCojABX8I",
|
||||
"outputId": "c72e9f77-311a-451e-907f-ebcac738884f"
|
||||
},
|
||||
"execution_count": 9,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "execute_result",
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"('detections', 4)"
|
||||
]
|
||||
},
|
||||
"execution_count": 9,
|
||||
"metadata": {},
|
||||
"execution_count": 9
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"\"detections\", len(detections)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"### Inference [\ud83d\udcda](https://roboflow.github.io/supervision/detection/core/#supervision.detection.core.Detections.from_inference)"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "-G8T5ShwC5PL"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"### Inference [\ud83d\udcda](https://roboflow.github.io/supervision/detection/core/#supervision.detection.core.Detections.from_inference)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"!pip install -q inference"
|
||||
],
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "YbSD9YkGDMJh"
|
||||
},
|
||||
"execution_count": null,
|
||||
"outputs": []
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"!pip install -q inference"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "MkA6CzVNDikG"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from inference import get_model\n",
|
||||
"\n",
|
||||
"model = get_model(model_id=\"yolov8s-640\")\n",
|
||||
"result = model.infer(image)[0]\n",
|
||||
"detections = sv.Detections.from_inference(result)"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "MkA6CzVNDikG"
|
||||
},
|
||||
"execution_count": null,
|
||||
"outputs": []
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"\"detections\", len(detections)"
|
||||
],
|
||||
"execution_count": 12,
|
||||
"metadata": {
|
||||
"id": "A0y7n3meD8gE",
|
||||
"outputId": "bf9443cf-84ab-4775-c997-0d196b538f06",
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
}
|
||||
},
|
||||
"id": "A0y7n3meD8gE",
|
||||
"outputId": "bf9443cf-84ab-4775-c997-0d196b538f06"
|
||||
},
|
||||
"execution_count": 12,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "execute_result",
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"('detections', 4)"
|
||||
]
|
||||
},
|
||||
"execution_count": 12,
|
||||
"metadata": {},
|
||||
"execution_count": 12
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"\"detections\", len(detections)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -445,22 +445,22 @@
|
||||
"cell_type": "code",
|
||||
"execution_count": 15,
|
||||
"metadata": {
|
||||
"id": "jdOW9a0P30ar",
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "jdOW9a0P30ar",
|
||||
"outputId": "2171b154-a579-4e20-ea23-ca9179cbee78"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "execute_result",
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"('detections', 7)"
|
||||
]
|
||||
},
|
||||
"execution_count": 15,
|
||||
"metadata": {},
|
||||
"execution_count": 15
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
@@ -487,18 +487,18 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "8gg8C_7rQ_9F"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from ultralytics import YOLO\n",
|
||||
"\n",
|
||||
"model = YOLO(\"yolov8x.pt\")\n",
|
||||
"result = model(image, verbose=False)[0]\n",
|
||||
"detections = sv.Detections.from_ultralytics(result)"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "8gg8C_7rQ_9F"
|
||||
},
|
||||
"execution_count": null,
|
||||
"outputs": []
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
@@ -513,14 +513,14 @@
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 800x800 with 1 Axes>"
|
||||
],
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAJ8CAYAAADeVEuCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOz9SZMlSZImiH0sovoWW3yJcI/IyKjMrKylC10EDNFgCASaAUAgHOaGA34B8Dfmhn+BG/7ADA4gEJYDQITTXHp6qLu6Uct0ZlZlZWRkrL7Y+hZVEcaBhWVT0WfPzN1jyXbJ9DCz91Rll4+ZP2FhIWZmvE/v0/v0Pr1PP5pkvu8KvE/v0/v0Pr1P90vvgft9ep/ep/fpR5beA/f79D69T+/Tjyy9B+736X16n96nH1l6D9zv0/v0Pr1PP7L0Hrjfp/fpfXqffmTpPXC/T+/T+/Q+/cjSe+B+n96n9+l9+pGl98D9Pr1P79P79CNL3bEP/lf/539V/O29BxEBAAwROpNkgB7G7LoO1loYC+jX+h0zx39+dAAAIor/rLUwxsAYwBqDUBSICMaYWDaHf957MDOcc/Dex78ZBIBi3YgIzIxxHDGODoMDvE/v6TOtVB8yZY8i7+I7AEyAR2rv5IGqbofKaqXYB/c8/Hqf59/Gwdppf7bbLF95hM6JSeaBgSVCF0a0zjufO3li5jgX8mdaz9fv6nvy0wHkY3/oHNS61fnV87hVZpz/GMBmD4znsP4EHa5we/l3+Kdf/Sv89le/xk8/+Us8+vAXuLi8xs12j0cfPMcnP/s5nn30CWy/gOeyx/K1lY+f/j2OY1HPvL51+70jMBMAhmQlPzUvawFj2n1pjYljWfeNMSaMoy/GOK8nmGCMje8558K6HSfjmbeFmePS0rXtHMM7bQMB5MDsIo5Za9F1HbquC3VjGFOOU2uO5GXmuFSPQ94H3qW5VeBg+Oz/+H/4z3FXOhq4H7KAtTIggBkgmjZGn1NAzcuSTjBg9gCmE+shqehEY4AxgfXbyP99OiYdmEvVPCNDIOgCnb5az53i3fB5Pd/0u2nR7WdkrlgAFOYimoCd/6uBvVWHWA4sgAUYDDI7uOEKry+/xTffvsTjxx/j57/4K3z4yS9xu9vjZrvDydkjrM4ewXQLOB8W1oFUK0stsG4BkrQbINZh0bWjfxOIuMi/AC6o0lUKq7Kvy7oVz1TPK7DV7arbYowBg+E5KZfI6qYCwmdYoMBtbRAUYZzzsnU+tbCipUC0hKYKldacvQ/+vHPgFi2YQVllVbMFwmfycPGZ9x7OORBJQ2tp9pBUSzfvPHwlEd+HbnnX6XD/1tydAWAIMKDw3fzCbY1dCxD092Pmky5qsQQA75PGaK2dPDungc+CNhEACz8aEHsYc4Xt8DVevPgCwwj8/Gd/hafPf4Hu9ByPzzs8IgMPCyYLB8Axw3CwQg40J5/7x2jbsT0EgCho2So503siyKZ9TAHdiUyRX14f+WyqzMW+YoCRrdfMkq7z0d9zFgAEOBesJvZiAgdhQ4YAn7T5qGlrXxCBsn5T4NZ51hr7WnDX2na0/EARvB+ajgbuh6Rk8jCYEKWz9z6Mv3Qi8sFGaqSYdBZkzVGA2nwmDH7+jOY9Og+wKcqeW/ztv99AkDS0x/umH62QIZ6MS9KGSBYdIPNGfgHBy3zRNV1rZ8FUzdMhoD6kAed1inPSmOKz3LTP868XbavcSZvRwZgexNdwwwu8fPFbvH79Ak8++ARPnv8Ci7MPwV0fKBHR/pUe4Vj2NP+6rXMa6pzWHSoX52nStBM9Atimuc/MEXTrPk0adVr7LStcTfUcuOfGTBREl8YlYyGZffgHEAyYSRQBQ2CebvMxM0zVn/U8a1kuh2iS8u92f99nPb814G6BW6oYIY2RmL4MBnuGB6MzFDXyWnPy3oPNtFNyE8hVg1pqOukd/V6fNUTgOzSit5Xapvk7LfKHnUi5apFgRIAxFp0RbanQUAJNMicmcwuu1oSAqUapYy0W3Tw3ru8aY4L2WFIkrbxbmv/c37FsMCwIBntc33yDr7/8DGCDZ89+hqfPPwV3S3gIG8xgwDkRZUpfUBBwBxmopDUCmAgerc/k77Bupc6yZxQ1RqT1mlvS+rshgidf9FE+VnclwpRe0feLfa4KIKWdCJo1w1jAMgVrCUL/BAouf3+W2kAa17rMXEuvOfo6vyjUsn5qlXNMemfAnTewtShyqQxKYj2XaPWzeTlp8xFRGuflpopI1vXEkXdpMtfzsu9q4zFpbiDuyupNpPFd6V3mPVdGKCn8ywFEzVeCNbKhZQNKGyLhKavN5UP1PkaLPvR8Dsg5IBkAprvf5mZeRkvjNVGL9wAP2O8v8OKbz3Hx4hU+ev7n+Mknv8Ti9Ax7Fssw11AJDBM3DKeY3dZg5ymiObqEg1DVosOqDuDN8D6VYYyBc65aoz62ddJfKPneXLDE0vk466jGB3gRaNBNRmsCmJuwYWwjTVMLk+bMbWBQXW7LmiocJfQZNpN36/zuSm8FuBVA60rXpkH5TqYNey+cE1AMsDT4DvBGMhdbqZ6MqpFJfgDIZBpFKqsWBDrh37Vm/sefVLPQRWQCZUbojEVvIMANgA3D+3qCl2bqIe32kPZSa1J50jlYaEE09UoxFX3SWoitek0/8/B+g9evvsLXX/4B6+UZPv7oFzg9+xDeAsQMdj4smqBN6kYpMxwTfMNzak75aQmb0kqt+1D/1jYqgk89ZDRFzZjKMop+JoreZnmdE900D4ytNBXK6jEioG28zDljbNqgzDYdD6VDwD33uYK2c674PlkyUxrmOwVuYN5KiyaW2nIMoOpg3RnvQofGvAKnFsE5lJSEKsvmoj6e0Scpi2Bjs5RhsrLZM8hTBH7PmSlHidCTPALfdmeLH5p4+tcfgYwowYIi90iBYzTGyOIGwZrcBCZQEPqeg3lJVGjfh8CwNm1THVB8f0gDLagEapuyd9Ek4RsQWXAgPJikXQQLwxbwDpvr3+PrL36H21uHP/n0L3D+waegfoX94MDkYBAUjriG8lURgCBuHKZFI6Z5mMrZ2ksgUW4g1n0pj2vb01rW76TNbdDhsOakepmmptooM4iNtipaxkTB48OnsubrV1pGUbsHAk+t1hxkbxJGPF0Mhb02RvRag7b1bos0Kp0sVoe1YWKz0L/sGWNwMWbPcT+HQCDDgS4ulV4O9T0mHQ3cB7UXlBgjnUb6IpQS8T4slIycjwsaFiArtAkDZAwMM0A++ENrkyjtNDe0CM4mB0EBQIFQvjMQosuTB5lQLwAg2USNHQkAPtMWCCDO/IwP9nFphdSJSJobn64nKE8LmNMyv490LBc3eS/udhlYGNgwPgQvjhtkM+2RAGPBzoHJpPHL6Kw5E1/TMX1V0x5tKsQH4DpeQyppncBRGw8mj950MB4wDnC7W9y8+jVevfgSJ+c/xfqDX8KvH2NHBEM24DAFWpESCAdByCwus4qTCVQg/stefLGJREgqoHsvmqC1833IxTzUvahSi2+Z+grAMNlKoPS5zvfR+fiZ8P0IgsaLsOapVdCyJGqqxRoLsAntztxJIQJIgZ1JNyIZgIBsLtzyfZY0pqQoC+8A9h6GbABiYWmcl7apZa+UEhFglH4CIoZJ/cyxuP1uvUry1BrkmIpJk3dwWjRA0oZz3ijnz+bKjZpHVX7iWcXNy4DgiQVIKEPw7yFFLf+PLpVjrVaMrJ3cbSulqBnXOd2TulIf7LgIjVIeCmoUwO84n/5jQVu0Wl2sCxAzyIsSwHyDm5uv8PXX3wDo8Pzjn+LpB88yTRYJrKE/a6EwFSj6UwCdJuCT6VUPTkQUfaG5ACAdF1XKEH9P7ZADMch8rXNhyaHxugGqazzffK6Bu1R8pppzXff8Z55fnlqfiWJc5j2OY3qegqDlJKBqGqnmwPP2H5O+c+DW3/PkKj45351F2AjhYEup9BpH1RYsvFezDciBX82vvOzah7yQ4FDQDqBAmsn3kCgZb8APQ8t+F0ktIVYKzHOx3lTrAcQKQ72IJrzmVDAXpVHuyoYCFCi4ts2/X+V2LHATQORh2IDRgdiCeAT8Ffbbb/HNN7/Gq4sbPHn2Ezz98Dm6xQIwQYvOqq6WK9WAxO31pX3nHEWaQ6mDXPu8T6pBUrX/GrhjHwTBo3SOCiHduIzKeEOTprCWW77x+YZf7WlijAnum8dZW9baSdm5YjgB72pt6nvOOegI1Vq7/p5+5sDtkHDrHQJ3renUdIV+ps/lndxKaYK5yecgwJIBUe4bq8dw9UBEEoCytgVxWW2XhlTOOdBoqkHnWGZrfk/gOVmcP+I0B4DeJ1JEqTRAJjEwBWHVwurv5sqYaDAkAFa784WvZr1X8nRoDjfLjK1RbYJgmGDA8MMtrl5/jhdf/zOWq6f4ySe/xNmjJ2BjwBT4XSBSfVGDC+RkrnjUYJ2DW0l15G1M9crbVXt15W2crGVO77eEHudyOAA5s/DuhzQjIoIh4aNT+Ity07jWVIvTqmSgh6ZaY1mPV95ftWNC3s9KlcwqDJWin9c1jVXeZ4D3pXV2TLoXcNcNySvWAu88HQS9Kr9CK47mVtnY9HfSzOXvsNkRJpIBZ++l33WAYylxnLnZd/cHbYqKxrHvTxf83ULj0FgcXdN7aa33S1Mgy4HAx5OIHizeE9nYTuoQkGxqkktq+SUX/Cb5QFlMvSFSuaWrVsqMo//t8W2N30i9PYP9HkwEa0ZsN5d48eXn8KPD80/+BI+efATTLeHJwvtQ57D/ohvndXuJplpwXn/pq/yz+fXJnA4xteZUbtbLh/KftAZb68xkvwM1Z4zGXNV+7KwtQLu0xCV57yeCWPuFGvOhaRVkZebtq/s0n18tqip9l7pnjs5TzptZzi/cd+0+mCrJO+FNNVFC20SJk8enuAISNMaHgDE8mYdywi79zdlGANCeYEQAOG16cgb835XmOLine truncated
|
||||
]
|
||||
},
|
||||
"metadata": {}
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
@@ -556,14 +556,14 @@
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 800x800 with 1 Axes>"
|
||||
],
|
||||
"image/png": "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 truncated
|
||||
]
|
||||
},
|
||||
"metadata": {}
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
@@ -594,18 +594,18 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 33,
|
||||
"metadata": {
|
||||
"id": "yM6dmicTRGl6"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from ultralytics import YOLO\n",
|
||||
"\n",
|
||||
"model = YOLO(\"yolov8x-seg.pt\")\n",
|
||||
"result = model(image, verbose=False)[0]\n",
|
||||
"detections = sv.Detections.from_ultralytics(result)"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "yM6dmicTRGl6"
|
||||
},
|
||||
"execution_count": 33,
|
||||
"outputs": []
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
@@ -620,14 +620,14 @@
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 800x800 with 1 Axes>"
|
||||
],
|
||||
"image/png": "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 truncated
|
||||
]
|
||||
},
|
||||
"metadata": {}
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
@@ -685,14 +685,14 @@
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA7YAAAIQCAYAAAC1yPLfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOy9eYBlRXn//X2qzr3dPT09C9DDNjqMo5FFkYi4gMqmIAoIaAgSBFEEBQVMjJoYA7hG0YhiUFF/4DuKCxpB4wKoGHGNBlBEjSiLsg8Ms/V276l63j+eqjp1zj23+3ZP96z1QE/3PbdOrU996p7nPvUUMTMjSZIkSZIkSZIkSZIkSZIk2UpFbe4KJEmSJEmSJEmSJEmSJEmSJBsj6cE2SZIkSZIkSZIkSZIkSZJs1ZIebJMkSZIkSZIkSZIkSZIkyVYt6cE2SZIkSZIkSZIkSZIkSZJs1ZIebJMkSZIkSZIkSZIkSZIkyVYt6cE2SZIkSZIkSZIkSZIkSZJs1ZIebJMkSZIkSZIkSZIkSZIkyVYt6cE2SZIkSZIkSZIkSZIkSZJs1ZIebJMkSZIkSZIkSZIkSZIkyVYt28SD7YUXXggiwiOPPDKn5RxyyCE45JBDtvg8N5UQES688MLNXY0ZyZbS70QUfj74wQ/OKI/99tsv5HH00UfPcg2T1ElizvSlyosrr7wSRIS77757k9dlOvKDH/wARIQf/OAHm7sqM5ItgdO+D/3PL3/5y/DeIYccst3wa82aNV2Zf/7554fr8+fP34y13LIksXb2pY5pr3rVq7DHHntstjrNVLaWdaRO7r77bhARrrzyys1aD9+H/mc259o111zTlf1zJdvEg22SrUvuv/9+XHjhhbj11lvntJzf/va3uPDCC7d44B1//PFYuXIlXvKSl5SuW2vxgQ98AMuXL0d/fz/23XdffOELX+i4/73vfS9WrlyJnXbaaVNVOUmSzSKjo6O48MILt5qHzJ/85Ce48MILsWbNmjkt51vf+tZmf3jtRf75n/8ZK1euxBOe8ITS9T333BMrV67Em9/85o57vv71r+PpT386+vv78fjHPx4XXHAB8jyfcR2uv/56vOY1r8FTnvIUaK1n5cP81772NRx55JHYbbfd0NfXh6VLl+LlL385fvOb35TSDQ4OYuXKlfjwhz/ckccrX/lKrFy5Es973vM2uj5JkiSZWjYVN6+66ipccsklc17OxsqHP/xhrFy5EkNDQ5OmGx0dxX/8x3/giCOOwK677oqhoSH89V//NT7+8Y/DGFNK+4xnPAMrV67EmWeeOZdVL0l6sJ2GXH/99bj++us3dzW2ern//vtx0UUXbZIH24suuqj2wXZLGst9990Xp5xyCvbaa6/S9be//e1461vfihe+8IW49NJL8fjHPx4nn3wyvvjFL5bSvfjFL8Ypp5yCwcHBTVntJJtAtiQ9nW155StfibGxMSxbtqzne0ZHR3HRRRdtVQ+2F1100SZ5sL3oootq3xsbG8O//Mu/zGn5vcoLX/hCnHLKKdhhhx1K13feeWeccsopHd9uffvb38Zxxx2HRYsW4dJLL8Vxxx2Hd7/73XjjG9844zpcddVVuOqqq7Bw4ULstttuM84nlttuuw2LFy/Geeedh8suuwyvf/3rccstt+CZz3wmfvWrX4V0jUYDp5xyCo477riOPPbff3+ccsopHQ/9STaNbMus7UU+9alP4f/+7/82dzU2qUzGzdmUbg+2y5Ytw9jYGF75ylfOeR16keOOOw6nnHIK+vr6Jk1355134o1vfCOYGX//93+PD37wg1i+fDnOPvtsvPrVry6lXbp0KU455RQ85znPmcuqlyTbZCVtA9JsNjd3FZLMkmzpY3nffffhQx/6EM455xx87GMfAwCcccYZOPjgg/GP//iP+Ju/+RtorTdzLZPMtWzperoxorVOOrwJpL+/f3NXYcby5je/Gfvuuy+uv/56ZJl8XFmwYAHe+9734rzzzsOee+457Tzf+9734lOf+hQajQaOPvrojm9VZyL/+q//2nHtjDPOwNKlS/Hxj38cn/jEJza6jCRzK9sya3uRRqOxuauw3QkRbZV83mWXXXDbbbdhn332CdfOOussvPrVr8YVV1yBd7zjHXjiE5+42eq3TX1j+8gjj+DEE0/EggULsOOOO+K8887D+Ph4eP/ggw/G0572tNp7n/zkJ+PII4+cNP/qfgm/T+HLX/4y3vOe92Dp0qXo7+/H4Ycfjj/+8Y8d919++eVYsWIFBgYG8MxnPhM33XRTbTkTExO44IIL8MQnPhF9fX143OMeh7e85S2YmJgIaU477TT09/fjd7/7XeneI488EosXL8b9998/aVumIxMTE3jTm96E4eFhDA0N4dhjj8W9995bm/a+++7Dq1/9auy8887o6+vDPvvsg//3//5feP8HP/gBDjjgAADA6aefHvzu4z0GP//5z/GiF70ICxcuxLx583DwwQfjxz/+cW1Zr3nNa4L71/Lly/H6178erVYLV155Jf7mb/4GAHDooYeGcvw3PXV7Xx5++GG85jWvwc4774z+/n487WlPw2c/+9lSGr8n4oMf/GAYz76+PhxwwAH4xS9+UUr74IMP4vTTT8fSpUvR19eHXXfdFS996Ut7co2+9tpr0W63cfbZZ4drRITXv/71uPfee/HTn/50yjySzL0k5sycOXV7o375y1/iyCOPxE477YSBgQEsX748WIDvvvtuDA8PAwAuuuiiMKdn05Xs3nvvxXHHHYfBwUEsWbIEb3rTm0p9EMtUnLrwwgvxj//4jwCA5cuXh/rG7f3c5z6H/fffHwMDA9hhhx1w0kkn4S9/+UttWS9+8YuxePFiDA4OYt9998VHPvIRALI37j/+4z8AlPfse6nro1tuuQVHHXUUFixYgPnz5+Pwww/Hz372s1IaPz4//vGP8fd///cYHh7G4OAgjj/+eKxataqUdrJxm6n89re/xW9/+1uceeaZ4aEWAM4++2wwM77yla/MKN/ddtttk3yIX7JkCebNmzfn39ZvL5JY2ztrv/jFL2L//ffH0NAQFixYgKc+9amBF92kbo+ttRYf+chH8NSnPhX9/f0YHh7Gi170oo59kr1ybGPl9ttvx2GHHYaBgQEsXboU7373u2GtrU377W9/G8973vMwODiIoaEhvOQlL8Htt99eau9k3LTW4pJLLsE+++yD/v5+7LzzzjjrrLPw2GOP1ZZ18MEHh/4+4IADcNVVVwEQvfrmN7+Je+65J5Th+7nbHtvvf//7oe6LFi3CS1/60g5d8HvP//jHP+JVr3oVFi1ahIULF+L000/H6OhoKe0NN9yA5z73uVi0aBHmz5+PJz/5yfjnf/7nnvp8dHQUv//970v7bnfaaafSQ62X448/HgA66rqpZZv6xvbEE0/EHnvsgfe973342c9+ho9+9KN47LHH8P/9f/8fAHF9e+1rX4vf/OY3eMpTnhLu+8UvfoE//OEPM3bX+rd/+zcopfDmN78Za9euxQc+8AH83d/9HX7+85+HNJ/5zGdw1lln4cADD8T555+PO++8E8ceeyx22GEHPO5xjwvprLU49thj8aMf/Qhnnnkm9tprL9x222348Ic/jD/84Q+45pprAAAf+chH8P3vfx+nnXYafvrTn0JrjU9+8pO4/vrrsXLlyllzsQLE8vy5z30OJ598Mg488EB8//vf79gPCgAPPfQQnv3sZ4OI8IY3vAHDw8P49re/jde85jVYt24dzj//fOy111545zvfiX/913/FmWeeGfYTHXjggQBkQh911FHYf//9ccEFF0AphSuuuAKHHXYYbrrpJjzzmc8EIO7Mz3zmM7FmzRqceeaZ2HPPPXHffffhK1/5CkZHR/H85z8f5557Lj760Y/in//5n4Obb9Xd18vY2BgOOeQQ/PGPf8Qb3vAGLF++HFdffTVe9apXYc2aNTjvvPNK6a+66iqsX78eZ511FogIH/jAB3DCCSfgzjvvDB+aXvayl+H222/HG9/4Ruyxxx54+OGHccMNN+DPf/7zlPu6brnlFgwODnbU17f/lltuwXOf+9xJ80gy95KYM3vMefjhh3HEEUdgeHgYb3vb27Bo0SLcfffd+M///E8AwPDwMD7+8Y/j9a9/PY4//niccMIJAMSVfzZkbGwMhx9+OP785z/j3HPPxW677YaVK1fi+9//fkfaXjh1wgkn4A9/+AO+8IUv4MMf/nDYA+8fzt/znvfgHe94B0488UScccYZWLVqFS699FI8//nPxy233IJFixYBkA8lRx99NHbddVecd9552GWXXfC73/0O//Vf/4XzzjsPZ511Fu6//37ccMMNWLly5ZTtvP322/G85z0PCxYswFve8hY0Gg188pOfxCGHHIL//u//xrOe9axS+je+8Y1YvHgxLrjgAtx999245JJL8IY3vAFf+tKXAEw9bjOVW265BYDs0Yplt912w9KlS8P7W5KsWbMG7XYbDz74IC655BKsW7cOhx9++Oau1jYhibW9sfaGG27AK17xChx++OF4//vfD0AeNH784x93fI6ZSl7zmtfgyiuvxFFHHYUzzjgDeZ7jpptuws9+9rMwL3vl2MbKgw8+iEMPPRR5nuNtb3sbBgcHcfnll2NgYKAj7cqVK3HaaafhyCOPxPvf/36Mjo7i4x//OJ773OfilltuwR577DElN8866yxceeWVOP3003Huuefirrvuwsc+9jHccsst+PGPfxw+51155ZV49atfjX322Qf/9E//hEWLFuGWW27Bd77zHZx88sl4+9vfjrVr1+Lee+8Ne+snCw733e9+F0cddRSe8IQn4MILL8TY2BguvfRSHHTQQbj55ps7PjueeOKJWL58Od73vvfh5ptvxqc//WksWbIkjP3tt9+Oo48+Gvvuuy/e+c53oq+vD3/84x9rvyyqk//5n//BoYceigsuuLine truncated
|
||||
"text/plain": [
|
||||
"<Figure size 1200x1200 with 3 Axes>"
|
||||
],
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA7YAAAIQCAYAAAC1yPLfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOy9eYBlRXn//X2qzr3dPT09C9DDNjqMo5FFkYi4gMqmIAoIaAgSBFEEBQVMjJoYA7hG0YhiUFF/4DuKCxpB4wKoGHGNBlBEjSiLsg8Ms/V276l63j+eqjp1zj23+3ZP96z1QE/3PbdOrU996p7nPvUUMTMjSZIkSZIkSZIkSZIkSZIk2UpFbe4KJEmSJEmSJEmSJEmSJEmSJBsj6cE2SZIkSZIkSZIkSZIkSZJs1ZIebJMkSZIkSZIkSZIkSZIkyVYt6cE2SZIkSZIkSZIkSZIkSZJs1ZIebJMkSZIkSZIkSZIkSZIkyVYt6cE2SZIkSZIkSZIkSZIkSZJs1ZIebJMkSZIkSZIkSZIkSZIkyVYt6cE2SZIkSZIkSZIkSZIkSZJs1ZIebJMkSZIkSZIkSZIkSZIkyVYt28SD7YUXXggiwiOPPDKn5RxyyCE45JBDtvg8N5UQES688MLNXY0ZyZbS70QUfj74wQ/OKI/99tsv5HH00UfPcg2T1ElizvSlyosrr7wSRIS77757k9dlOvKDH/wARIQf/OAHm7sqM5ItgdO+D/3PL3/5y/DeIYccst3wa82aNV2Zf/7554fr8+fP34y13LIksXb2pY5pr3rVq7DHHntstjrNVLaWdaRO7r77bhARrrzyys1aD9+H/mc259o111zTlf1zJdvEg22SrUvuv/9+XHjhhbj11lvntJzf/va3uPDCC7d44B1//PFYuXIlXvKSl5SuW2vxgQ98AMuXL0d/fz/23XdffOELX+i4/73vfS9WrlyJnXbaaVNVOUmSzSKjo6O48MILt5qHzJ/85Ce48MILsWbNmjkt51vf+tZmf3jtRf75n/8ZK1euxBOe8ITS9T333BMrV67Em9/85o57vv71r+PpT386+vv78fjHPx4XXHAB8jyfcR2uv/56vOY1r8FTnvIUaK1n5cP81772NRx55JHYbbfd0NfXh6VLl+LlL385fvOb35TSDQ4OYuXKlfjwhz/ckccrX/lKrFy5Es973vM2uj5JkiSZWjYVN6+66ipccsklc17OxsqHP/xhrFy5EkNDQ5OmGx0dxX/8x3/giCOOwK677oqhoSH89V//NT7+8Y/DGFNK+4xnPAMrV67EmWeeOZdVL0l6sJ2GXH/99bj++us3dzW2ern//vtx0UUXbZIH24suuqj2wXZLGst9990Xp5xyCvbaa6/S9be//e1461vfihe+8IW49NJL8fjHPx4nn3wyvvjFL5bSvfjFL8Ypp5yCwcHBTVntJJtAtiQ9nW155StfibGxMSxbtqzne0ZHR3HRRRdtVQ+2F1100SZ5sL3oootq3xsbG8O//Mu/zGn5vcoLX/hCnHLKKdhhhx1K13feeWeccsopHd9uffvb38Zxxx2HRYsW4dJLL8Vxxx2Hd7/73XjjG9844zpcddVVuOqqq7Bw4ULstttuM84nlttuuw2LFy/Geeedh8suuwyvf/3rccstt+CZz3wmfvWrX4V0jUYDp5xyCo477riOPPbff3+ccsopHQ/9STaNbMus7UU+9alP4f/+7/82dzU2qUzGzdmUbg+2y5Ytw9jYGF75ylfOeR16keOOOw6nnHIK+vr6Jk1355134o1vfCOYGX//93+PD37wg1i+fDnOPvtsvPrVry6lXbp0KU455RQ85znPmcuqlyTbZCVtA9JsNjd3FZLMkmzpY3nffffhQx/6EM455xx87GMfAwCcccYZOPjgg/GP//iP+Ju/+RtorTdzLZPMtWzperoxorVOOrwJpL+/f3NXYcby5je/Gfvuuy+uv/56ZJl8XFmwYAHe+9734rzzzsOee+457Tzf+9734lOf+hQajQaOPvrojm9VZyL/+q//2nHtjDPOwNKlS/Hxj38cn/jEJza6jCRzK9sya3uRRqOxuauw3QkRbZV83mWXXXDbbbdhn332CdfOOussvPrVr8YVV1yBd7zjHXjiE5+42eq3TX1j+8gjj+DEE0/EggULsOOOO+K8887D+Ph4eP/ggw/G0572tNp7n/zkJ+PII4+cNP/qfgm/T+HLX/4y3vOe92Dp0qXo7+/H4Ycfjj/+8Y8d919++eVYsWIFBgYG8MxnPhM33XRTbTkTExO44IIL8MQnPhF9fX143OMeh7e85S2YmJgIaU477TT09/fjd7/7XeneI488EosXL8b9998/aVumIxMTE3jTm96E4eFhDA0N4dhjj8W9995bm/a+++7Dq1/9auy8887o6+vDPvvsg//3//5feP8HP/gBDjjgAADA6aefHvzu4z0GP//5z/GiF70ICxcuxLx583DwwQfjxz/+cW1Zr3nNa4L71/Lly/H6178erVYLV155Jf7mb/4GAHDooYeGcvw3PXV7Xx5++GG85jWvwc4774z+/n487WlPw2c/+9lSGr8n4oMf/GAYz76+PhxwwAH4xS9+UUr74IMP4vTTT8fSpUvR19eHXXfdFS996Ut7co2+9tpr0W63cfbZZ4drRITXv/71uPfee/HTn/50yjySzL0k5sycOXV7o375y1/iyCOPxE477YSBgQEsX748WIDvvvtuDA8PAwAuuuiiMKdn05Xs3nvvxXHHHYfBwUEsWbIEb3rTm0p9EMtUnLrwwgvxj//4jwCA5cuXh/rG7f3c5z6H/fffHwMDA9hhhx1w0kkn4S9/+UttWS9+8YuxePFiDA4OYt9998VHPvIRALI37j/+4z8AlPfse6nro1tuuQVHHXUUFixYgPnz5+Pwww/Hz372s1IaPz4//vGP8fd///cYHh7G4OAgjj/+eKxataqUdrJxm6n89re/xW9/+1uceeaZ4aEWAM4++2wwM77yla/MKN/ddtttk3yIX7JkCebNmzfn39ZvL5JY2ztrv/jFL2L//ffH0NAQFixYgKc+9amBF92kbo+ttRYf+chH8NSnPhX9/f0YHh7Gi170oo59kr1ybGPl9ttvx2GHHYaBgQEsXboU7373u2GtrU377W9/G8973vMwODiIoaEhvOQlL8Htt99eau9k3LTW4pJLLsE+++yD/v5+7LzzzjjrrLPw2GOP1ZZ18MEHh/4+4IADcNVVVwEQvfrmN7+Je+65J5Th+7nbHtvvf//7oe6LFi3CS1/60g5d8HvP//jHP+JVr3oVFi1ahIULF+L000/H6OhoKe0NN9yA5z73uVi0aBHmz5+PJz/5yfjnf/7nnvp8dHQUv//970v7bnfaaafSQ62X448/HgA66rqpZZv6xvbEE0/EHnvsgfe973342c9+ho9+9KN47LHH8P/9f/8fAHF9e+1rX4vf/OY3eMpTnhLu+8UvfoE//OEPM3bX+rd/+zcopfDmN78Za9euxQc+8AH83d/9HX7+85+HNJ/5zGdw1lln4cADD8T555+PO++8E8ceeyx22GEHPO5xjwvprLU49thj8aMf/Qhnnnkm9tprL9x222348Ic/jD/84Q+45pprAAAf+chH8P3vfx+nnXYafvrTn0JrjU9+8pO4/vrrsXLlyllzsQLE8vy5z30OJ598Mg488EB8//vf79gPCgAPPfQQnv3sZ4OI8IY3vAHDw8P49re/jde85jVYt24dzj//fOy111545zvfiX/913/FmWeeGfYTHXjggQBkQh911FHYf//9ccEFF0AphSuuuAKHHXYYbrrpJjzzmc8EIO7Mz3zmM7FmzRqceeaZ2HPPPXHffffhK1/5CkZHR/H85z8f5557Lj760Y/in//5n4Obb9Xd18vY2BgOOeQQ/PGPf8Qb3vAGLF++HFdffTVe9apXYc2aNTjvvPNK6a+66iqsX78eZ511FogIH/jAB3DCCSfgzjvvDB+aXvayl+H222/HG9/4Ruyxxx54+OGHccMNN+DPf/7zlPu6brnlFgwODnbU17f/lltuwXOf+9xJ80gy95KYM3vMefjhh3HEEUdgeHgYb3vb27Bo0SLcfffd+M///E8AwPDwMD7+8Y/j9a9/PY4//niccMIJAMSVfzZkbGwMhx9+OP785z/j3HPPxW677YaVK1fi+9//fkfaXjh1wgkn4A9/+AO+8IUv4MMf/nDYA+8fzt/znvfgHe94B0488UScccYZWLVqFS699FI8//nPxy233IJFixYBkA8lRx99NHbddVecd9552GWXXfC73/0O//Vf/4XzzjsPZ511Fu6//37ccMMNWLly5ZTtvP322/G85z0PCxYswFve8hY0Gg188pOfxCGHHIL//u//xrOe9axS+je+8Y1YvHgxLrjgAtx999245JJL8IY3vAFf+tKXAEw9bjOVW265BYDs0Yplt912w9KlS8P7W5KsWbMG7XYbDz74IC655BKsW7cOhx9++Oau1jYhibW9sfaGG27AK17xChx++OF4//vfD0AeNH784x93fI6ZSl7zmtfgyiuvxFFHHYUzzjgDeZ7jpptuws9+9rMwL3vl2MbKgw8+iEMPPRR5nuNtb3sbBgcHcfnll2NgYKAj7cqVK3HaaafhyCOPxPvf/36Mjo7i4x//OJ773OfilltuwR577DElN8866yxceeWVOP3003Huuefirrvuwsc+9jHccsst+PGPfxw+51155ZV49atfjX322Qf/9E//hEWLFuGWW27Bd77zHZx88sl4+9vfjrVr1+Lee+8Ne+snCw733e9+F0cddRSe8IQn4MILL8TY2BguvfRSHHTQQbj55ps7PjueeOKJWL58Od73vvfh5ptvxqc//WksWbIkjP3tt9+Oo48+Gvvuuy/e+c53oq+vD3/84x9rvyyqk//5n//BoYceigsuuLine truncated
|
||||
]
|
||||
},
|
||||
"metadata": {}
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
@@ -748,14 +748,14 @@
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 800x800 with 1 Axes>"
|
||||
],
|
||||
"image/png": "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 truncated
|
||||
]
|
||||
},
|
||||
"metadata": {}
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
@@ -803,14 +803,14 @@
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 800x800 with 1 Axes>"
|
||||
],
|
||||
"image/png": "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 truncated
|
||||
]
|
||||
},
|
||||
"metadata": {}
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
@@ -868,14 +868,14 @@
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 800x800 with 1 Axes>"
|
||||
],
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAJ8CAYAAADeVEuCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOz9WbMlSZImhn1q5n6Wu8SSGZFVWWvXVC+cEXIgxFBIAqQQEPIFT/gBFFKIn8E3/hL+Aj6RQoyQAlBIgQhfBj2C6R5MT89UdXd1ZWXlGstdz+JupnhQU9vc/Nxzb0TkUh1WFXnPOe5ubuunqp+pqREzM96n9+l9ep/ep+9NMt92Ad6n9+l9ep/ep/ul98D9Pr1P79P79D1L74H7fXqf3qf36XuW3gP3+/Q+vU/v0/csvQfu9+l9ep/ep+9Zeg/c79P79D69T9+z9B6436f36X16n75n6T1wv0/v0/v0Pn3P0nvgfp/ep/fpffqepe7YG//P/9d/UXz33oOIAACGCJ1JMkA3Y3ZdB2stjAX0sl5j5vjPjw4AQETxn7UWxhgYA1hjEF4FIoIxJr6bwz/vPZgZzjl47+N3BgGgWDYiAjNjHEeMo8PgAO/Tc3pPK9WbTNmjyLu4BoAJ8Ej1ndxQle3Qu1optsE9N7/e5/63sbF22p7tOsslj9A4Mck4MLBE6EKP1nnnYydPzBzHQn5P6/76WX1O/jqAfGwPHYNatjq/ehy33hnHPwaw2QPjOaw/QYcr3F7+Ff7uV/8Cv/nVr/Gjj/8Ejz78OS4ur3Gz3ePRB8/x8U9/hmcffQzbL+C5bLF8buX9p9/HcSzKmZe3rr93BGYCwJCs5K/mZS1gTLstrTGxL+u2McaEfvRFH+flBBOMsfE551yYt+OkP/O6MHOcWjq3nWN4p3UggByYXcQxay26rkPXdaFsDGPKfmqNkfydOS7V/ZC3gXdpbBU4GH77v/yf/iPclY4G7odMYC0MCGAGiKaV0fsUUPN3SSMYMHsA04H1kFQ0ojHAmMD6beT/Ph2TDoylapyRIRB0gk4frcdO8Wz4vR5vem366vY9MlYsAApjEU3Azv/VwN4qQ3wPLIAFGAwyO7jhCq8vv8ZXX7/E48c/wM9+/mf48ONf4Ha3x812h5OzR1idPYLpFnA+TKwDqVaWWmDdAiSpN0Cs3aJzR78TiLjIvwAuqNJVCquyrcuyFfdU9yuw1fWq62KMAYPhOSmXyMqmAsJnWKDAbW0QFKGf83freGphRUuBaAlNFSqtMXsf/HnnwC1aMIOywqpmC4Tf5ObiN+89nHMgkorW0uwhqZZu3nn4SiK+D93yrtPh9q25OwPAEGBA4dr8xG31XQsQ9PMx40kntVgCgPdJY7TWTu6d08BnQZsIgIUfDYg9jLnCdvgSL158hmEEfvbTP8PT5z9Hd3qOx+cdHpGBhwWThQPgmGE4WCEHqpOP/WO07VgfAkAUtGyVnOk5EWTTNqaA7kSmyC8vj/w2VeZiWzHAyOZrZknX+ejnnAUAAc4Fq4m9mMBB2JAhwCdtPmra2hZEoKzdFLh1nLX6vhbctbYdLT9QBO+HpqOB+yEpmTwMJkTp7L0P/S+NiLyzkSopJp0FWXMUoDbvCZ2f36N5j84DbIp3z03+9vc3ECQN7fG+6XsrZIgn/ZK0IZJJB8i4kQ8geBkvOqdr7SyYqnk6BNSHNOC8THFMGlP8lpv2ef71pG29d1JndDCmB/E13PACL1/8Bq9fv8CTDz7Gk+c/x+LsQ3DXB0pEtH+lRzi+e5p/Xdc5DXVO6w6Fi+M0adqJHgFs09xn5gi6dZsmjTrN/ZYVrqZ6DtxzfSYKokv9krGQzD78AwgGzCSKgCEwT5f5mBmmas96nLUsl0M0Sfm93d73mc9vDbhb4JYKRkh9JKYvg8Ge4cHoDEWNvNacvPdgM22U3ARyVaeWmk56Rq/rvYYIfIdG9LZS2zR/p6/8bidSrlokGBFgjEVnRFsqNJRAk8yJydyCqzUhYKpRal+LRTfPjeuzxpigPZYUSSvvluY/9z2+GwwLgsEe1zdf4cvPPwHY4Nmzn+Lp8x+DuyU8hA1mMOCciDKlLygIuIMMVNIaAUwEj5Zn8j3MWymzrBlFjRFpvuaWtH42RPDkizbK++quRJjSK/p8sc5VAaTUE0GzZhgLWKZgLUHon0DB5c/PUhtI/Vq/M9fSa46+zi8KtaydWu85Jr0z4M4r2JoUuVQGJbGeS7T63vw9afERURrn700FkazrgSPP0mSs5+++q47HpLmOuCurN5HGd6V3mffcO8Kbwr8cQNR8JVgjC1o2oLQhEp6yWlw+VO5jtOhD9+eAnAOSAWC6+y1u5u9oabwmavEe4AH7/QVefPUpLl68wkfPf4kffvwLLE7PsGexDHMNlcAwccFwitltDXaeIpqjSzgIVX11mNUBvBnep3cYY+Ccq+aoj3WdtBdKvjcXLPHtfJx1VOMDvAg06CKjNQHMTVgwtpGmqYVJc+Q2MKh+b8uaKhwl9B42k2fr/O5KbwW4FUDrQtemQflMpg17L5wTUHSwVPgO8EYyF1upHoyqkUl+AMhkGkV6Vy0IdMC/a838Dz+pZqGTyATKjNAZi95AgBsAG4b39QAvzdRD2u0h7aXWpPKkY7DQgmjqlWIq+qQ1EVvlmv7m4f0Gr199gS8//z3WyzP84KOf4/TsQ3gLEDPY+TBpgjapC6XMcEzwDc+pOeWnJWxKK7VuQ/2udVQEn3rIaIqaMZXvKNqZKHqb5WVOdNM8MLbSVCirx4iAtvEy5oyxaYEyW3Q8lA4B99zvCtrOueJ6smSmNMw3CtzAvJUWTSy15RhA1cC6Mt6FBo15BU4tgnN4UxKqLIuLentGn6Qsgo3N8g6TvZs9gzxF4PecmXKUCD3JI/Btd9b4oYmn3/4AZEQJFhS5RwocozFGJjcI1uQmMIGC0PcczEuiQvs+BIa1aZvKgOL6IQ20oBKobcreRZOEKyCy4EB4MEm9CBaGLeAdNte/w5ef/Ra3tw4/+fEf4/yDH4P6FfaDA5ODQVA44hzKZ0UAgrhwmCaNmOZhKGdzL4FEuYBYt6XcrnVPc1mvSZ3boMNhzknxMk1NtVFmEButVbSMiYLHh0/vmi9faRlF7R4IPLVac5C1SRjxdDEU1toY0WsNWte7LdKodLJYHdaGgc1C/7JnjMHFmD3H9RwCgQwHurhUejmU95h0NHAf1F5QYow0GumDUErE+zBRMnI+TmhYgKzQJgyQMTDMAPngD61VorTS3NAiOBscBAUABUK5ZiBElycPMqFcAECyiBobEgB8pi0QQJz5GR9s49IKqRORVDfeXQ9Qnr5gTsv8NtKxXNzkubjaZWBhYEP/ELw4bpDNtEcCjAU7ByaT+i+js+ZMfE3HtFVNe7SpEB+A63gNqaR1AkdtPJg8etPBeMA4wO1ucfPq13j14nOcnP8I6w9+Ab9+jB0RDNmAwxRoRUogHAQhs7jMKk4mUIH4L3vxxSYSIamA7r1ogtbOtyEX41DXokotvmXqKwDDZDOB0u863kfn42/C9yMIGi/CmqdWQcuSqKkWayzAJtQ7cyeFCCAFdiZdiGQAArK5cMvXWVKfkqIsvAPYexiyAYiFpXFe6qaWvVJKRIBR+gmIGCblM8fi9rv1KslTq5NjKgZN3sBp0gBJG855o5w/m3tv1Dyq9yeeVdy8DAieWICEMgT/FlLU8v/gUtnXasXI3MndtlKKmnGd0z2pK/XBjpPQKOWhoEYB/I7z6T8WtEWr1cm6ADGDvCgBzDe4ufkCX375FYAOz3/wIzz94FmmySKBNfRvLRSmAkX/CqDTBHwyverBiYiiLzQXAKT9okoZ4udUD9kQg8zXOheWHCqvC6A6x/PF5xq4S8VnqjnXZc//5vnlqfWbKMZl3uM4pvspCFpOAqqmkWoOPK//MekbB279nCdX8cn56izCQggHW0ql1ziqtmDhvZptQA78an7l7659yAsJDgXtAAqkmXwLiZLxBnw3tOx3kdQSYqXAPBfzTbUeQKww1JNowmtOBXPxNspd2VCAAgXXtvnnq9yOBW4CiDwMGzA6EFsQj4C/wn77Nb766td4dXGDJ89+iKcfPke3WAAmaNFZ0dVypRqQuD2/tO2co0hzKHWQa5/3STVIqvZfA3dsgyB4lM5RIaQLl1EZb2jSFOZyyzc+X/CrPU2MMcF98zhry1o7eXeuGE7Au5qb+pxzDtpDtdaun9PfHLgdEm69Q+CuNZ2artDf9L68kVspDTA3+R0EWDIgyn1jdRuubohIAlDmtiAuq+3SkMo5BxpNNegYy2zNbwk8J5Pze5zmAND7RIoolQbIIAamIKxaWH1t7h0TDYYEwGp3vnBp1nslT4fGcPOdsTaqTRAMEwwYfrjF1etP8eLLv8dy9RQ//PgXOHv0BGwMmAK/C0SqL2pwgZzMFY8arHNwK6mOvI6pXHm9aq+uvI6Tuczp+ZbQ41wOByBnFt79kGZERDAkfHQKf1EuGteaarFblQx001SrL+v+yturdkzI21mpklmFoVL087KmvsrbDPC+tM6OSfcC7roiecFa4J2ng6BX5VdoxdHcKiubvifNXL6HxY4wkAw4ey591g6Ob4n9zM22uz9oU1Q0jn1+OuHvFhqH+uLokt5La71fmgJZDgQ+7kT0YPGeyPp2UoaAZFOTXFLLL7ngN8kHymLqDZHeW7pqpcw4+t8eX9d4RcrtGez3YCJYM2K7ucSLzz+FHx2ef/wTPHryEUy3hCcL70OZw/qLLpzX9SWaasF5+aWt8t/m5ydz2sTUGlO5WS8/yn/SHGzNM5N9BmrOGI2xqu3YWVuAdmmJS/LeTwSxtgs1xkPTKsjemdevbtN8fLWoqnQtNc8cnaecN7PsX7jv3H0wVZI3wptqooS2iRIHj09xBSRojA8BY3gyDmWHXfrO2UIA0B5gRAA4LXpyBvzflLine truncated
|
||||
]
|
||||
},
|
||||
"metadata": {}
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
@@ -1459,10 +1459,11 @@
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"accelerator": "GPU",
|
||||
"colab": {
|
||||
"provenance": [],
|
||||
"gpuType": "L4",
|
||||
"machine_shape": "hm",
|
||||
"gpuType": "L4"
|
||||
"provenance": []
|
||||
},
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
@@ -1470,8 +1471,7 @@
|
||||
},
|
||||
"language_info": {
|
||||
"name": "python"
|
||||
},
|
||||
"accelerator": "GPU"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 0
|
||||
|
||||
+347
-347
File diff suppressed because it is too large.
Load diff
@@ -109,24 +109,6 @@ tests = ["B201", "B301", "B318", "B314", "B303", "B413", "B412", "B410"]
|
||||
check = true
|
||||
imports = ["cv2", "supervision"]
|
||||
|
||||
[tool.black]
|
||||
target-version = ["py38"]
|
||||
line-length = 88
|
||||
include = '\.pyi?$'
|
||||
exclude = '''
|
||||
/(
|
||||
\.git
|
||||
| \.hg
|
||||
| \.mypy_cache
|
||||
| \.tox
|
||||
| \.venv
|
||||
| _build
|
||||
| buck-out
|
||||
| build
|
||||
| dist
|
||||
| docs
|
||||
)/
|
||||
'''
|
||||
|
||||
[tool.ruff]
|
||||
target-version = "py38"
|
||||
|
||||
@@ -45,7 +45,7 @@ class Detections:
|
||||
The `sv.Detections` class in the Supervision library standardizes results from
|
||||
various object detection and segmentation models into a consistent format. This
|
||||
class simplifies data manipulation and filtering, providing a uniform API for
|
||||
integration with Supervision [trackers](/trackers/), [annotators](/detection/annotators/), and [tools](/detection/tools/line_zone/).
|
||||
integration with Supervision [trackers](/trackers/), [annotators](/latest/detection/annotators/), and [tools](/detection/tools/line_zone/).
|
||||
|
||||
=== "Inference"
|
||||
|
||||
|
||||
@@ -18,11 +18,11 @@ class KeyPoints:
|
||||
The `sv.KeyPoints` class in the Supervision library standardizes results from
|
||||
various keypoint detection and pose estimation models into a consistent format. This
|
||||
class simplifies data manipulation and filtering, providing a uniform API for
|
||||
integration with Supervision [keypoints annotators](/keypoint/annotators).
|
||||
integration with Supervision [keypoints annotators](/latest/keypoint/annotators).
|
||||
|
||||
=== "Ultralytics"
|
||||
|
||||
Use [`sv.KeyPoints.from_ultralytics`](/keypoint/core/#supervision.keypoint.core.KeyPoints.from_ultralytics)
|
||||
Use [`sv.KeyPoints.from_ultralytics`](/latest/keypoint/core/#supervision.keypoint.core.KeyPoints.from_ultralytics)
|
||||
method, which accepts [YOLOv8](https://github.com/ultralytics/ultralytics)
|
||||
pose result.
|
||||
|
||||
@@ -40,7 +40,7 @@ class KeyPoints:
|
||||
|
||||
=== "Inference"
|
||||
|
||||
Use [`sv.KeyPoints.from_inference`](/keypoint/core/#supervision.keypoint.core.KeyPoints.from_inference)
|
||||
Use [`sv.KeyPoints.from_inference`](/latest/keypoint/core/#supervision.keypoint.core.KeyPoints.from_inference)
|
||||
method, which accepts [Inference](https://inference.roboflow.com/) pose result.
|
||||
|
||||
```python
|
||||
@@ -57,7 +57,7 @@ class KeyPoints:
|
||||
|
||||
=== "MediaPipe"
|
||||
|
||||
Use [`sv.KeyPoints.from_mediapipe`](/keypoint/core/#supervision.keypoint.core.KeyPoints.from_mediapipe)
|
||||
Use [`sv.KeyPoints.from_mediapipe`](/latest/keypoint/core/#supervision.keypoint.core.KeyPoints.from_mediapipe)
|
||||
method, which accepts [MediaPipe](https://github.com/google-ai-edge/mediapipe)
|
||||
pose result.
|
||||
|
||||
|
||||
Reference in new issue
Block a user