Compare commits

...
17 Commits
Author SHA1 Message Date
Piotr Skalski bcb26f9edd Merge pull request #663 from roboflow/develop
`supervision-0.17.1` release
2023-12-08 15:09:58 +01:00
SkalskiP ee697cad3e Update version number to 0.17.1 in pyproject.toml
The version number in `pyproject.toml` has been updated from 0.17.1rc2 to 0.17.1, reflecting the latest stable release of the Supervision package.
2023-12-08 15:05:49 +01:00
Piotr Skalski a53e39d097 Merge pull request #660 from roboflow/example-fixes
fix(examples): 🐞 tracking LabelAnnotator and traffic_analysis deps fixed
2023-12-08 15:03:07 +01:00
SkalskiP 08f7838f1f Changed the version number in the pyproject.toml from 0.17.1rc1 to 0.17.1rc2 for the Supervision package. 2023-12-08 14:53:49 +01:00
SkalskiP 4388f03a51 The version of the Supervision package has been updated from "0.17.0" to "0.17.1rc1". 2023-12-08 09:39:26 +01:00
Piotr Skalski f2334936e6 Merge pull request #659 from roboflow/py12-upgrade
feat: ✨ Python 3.12 support added
2023-12-08 09:37:30 +01:00
Onuralp SEZER 6d3c7f7e1d feat(notebook): ✨ using supervision[assets] instead of wget download in demo notebook
Signed-off-by: Onuralp SEZER <thunderbirdtr@gmail.com>
2023-12-08 05:34:13 +03:00
Onuralp SEZER 180fdf2168 fix(examples): 🐞 tracking LabelAnnotator and traffic_analysis deps fixed
Signed-off-by: Onuralp SEZER <thunderbirdtr@gmail.com>
2023-12-08 02:56:23 +03:00
Onuralp SEZER 4079188368 Merge branch 'develop' into py12-upgrade
Signed-off-by: Onuralp SEZER <thunderbirdtr@gmail.com>
2023-12-08 00:09:48 +03:00
Onuralp SEZER e42770eedb feat(py-version): ✨ Python 3.12 support added
Signed-off-by: Onuralp SEZER <thunderbirdtr@gmail.com>
2023-12-07 19:54:52 +03:00
Onuralp SEZER 2f6195ad5d Merge pull request #657 from roboflow/dependabot/github_actions/actions/setup-python-5
⬆️ Bump actions/setup-python from 4 to 5
2023-12-07 19:13:36 +03:00
Piotr Skalski cec537cb89 Merge pull request #655 from roboflow/main
Merge pull request #627 from roboflow/develop
2023-12-07 11:07:15 +01:00
dependabot[bot] ef292fe2a8 ⬆️ Bump actions/setup-python from 4 to 5
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-07 00:47:37 +00:00
Piotr Skalski 36ab9dcb8e Merge pull request #627 from roboflow/develop
`supervision-0.17.0` release
2023-12-06 15:50:31 +01:00
SkalskiP 01d6c5386a Update Supervision package to version 0.17.0
The package version has been updated from 0.17.0rc8 to 0.17.0. Alongside the version, the changelog has also been updated to reflect the newly introduced or modified features, improvements in existing features, and bug fixes.
2023-12-06 15:48:03 +01:00
SkalskiP 7a1863835b Refactor Detections function's docstrings in core.py 2023-12-06 15:26:04 +01:00
Piotr Skalski fb66e57103 Update README.md 2023-12-06 14:37:45 +01:00
16 changed files with 715 additions and 617 deletions
-17
View File
@@ -1,17 +0,0 @@
contourpy==1.1.0 ; python_version >= "3.8" and python_full_version < "3.12.0"
cycler==0.11.0 ; python_version >= "3.8" and python_full_version < "3.12.0"
fonttools==4.41.1 ; python_version >= "3.8" and python_full_version < "3.12.0"
importlib-resources==6.0.0 ; python_version >= "3.8" and python_version < "3.10"
kiwisolver==1.4.4 ; python_version >= "3.8" and python_full_version < "3.12.0"
matplotlib==3.7.2 ; python_version >= "3.8" and python_full_version < "3.12.0"
numpy==1.24.4 ; python_version >= "3.8" and python_version < "3.12"
opencv-python-headless==4.8.0.74 ; python_version >= "3.8" and python_full_version < "3.12.0"
packaging==23.1 ; python_version >= "3.8" and python_full_version < "3.12.0"
pillow==10.0.1 ; python_version >= "3.8" and python_full_version < "3.12.0"
pyparsing==3.0.9 ; python_version >= "3.8" and python_full_version < "3.12.0"
python-dateutil==2.8.2 ; python_version >= "3.8" and python_full_version < "3.12.0"
pyyaml==6.0.1 ; python_version >= "3.8" and python_full_version < "3.12.0"
scipy==1.10.1 ; python_version >= "3.8" and python_version < "3.12"
six==1.16.0 ; python_version >= "3.8" and python_full_version < "3.12.0"
zipp==3.16.2 ; python_version >= "3.8" and python_version < "3.10"
pytest==7.4.0 ; python_version >= "3.8" and python_full_version < "3.12.0"
+1 -1
View File
@@ -17,7 +17,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
- run: pip install mkdocs-material
+1 -1
View File
@@ -19,7 +19,7 @@ jobs:
uses: actions/checkout@v4
- name: 🐍 Set up Python 3.8 environment for build
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: "3.8"
+1 -1
View File
@@ -21,7 +21,7 @@ jobs:
with:
ref: ${{ github.head_ref }}
- name: 🐍 Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
- name: 🛎️ Checkout
uses: actions/checkout@v4
- name: 🐍 Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
uses: actions/setup-python@v5
# id based on python version
id: python-setup
with:
+4 -7
View File
@@ -9,24 +9,21 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10","3.11"]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
steps:
- name: 🛎️ Checkout
uses: actions/checkout@v4
- name: 🐍 Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
# id based on python version
id: python-setup
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
check-latest: true
cache: 'pip'
cache-dependency-path: '**/requirements-dev.txt'
- name: 📦 Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r .github/requirements-dev.txt
pip install .
pip install pytest
- name: 🧪 Test
run: "python -m pytest ./test"
+2 -2
View File
@@ -31,10 +31,10 @@
## 💻 install
Pip install the supervision package in a
[**3.11>=Python>=3.8**](https://www.python.org/) environment.
[**Python>=3.8**](https://www.python.org/) environment.
```bash
pip install supervision[desktop]
pip install supervision
```
Read more about desktop, headless, and local installation in our [guide](https://roboflow.github.io/supervision/).
Vendored
+14 -5
View File
@@ -226,7 +226,7 @@
"output_type": "stream",
"text": [
"\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/45.4 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m45.4/45.4 kB\u001b[0m \u001b[31m3.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25h0.16.0\n"
"\u001b[?25h0.17.0\n"
]
}
],
@@ -803,6 +803,15 @@
"**NOTE:** During our demo, we will need some example videos."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!pip install -q supervision[assets]"
]
},
{
"cell_type": "code",
"execution_count": 63,
@@ -831,9 +840,7 @@
},
"outputs": [],
"source": [
"%cd {HOME}/videos\n",
"\n",
"!wget --load-cookies /tmp/cookies.txt \"https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1pz68D1Gsx80MoPg-_q-IbEdESEmyVLm-' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\\1\\n/p')&id=1pz68D1Gsx80MoPg-_q-IbEdESEmyVLm-\" -O vehicle-counting.mp4 && rm -rf /tmp/cookies.txt"
"%cd {HOME}/videos"
]
},
{
@@ -844,7 +851,9 @@
},
"outputs": [],
"source": [
"VIDEO_PATH = f\"{HOME}/videos/vehicle-counting.mp4\""
"from supervision.assets import download_assets, VideoAssets\n",
"download_assets(VideoAssets.VEHICLES)\n",
"VIDEO_PATH = f\"{HOME}/videos/vehicle.mp4\""
]
},
{
+53
View File
@@ -1,3 +1,56 @@
### 0.17.0 <small>December 06, 2023</small>
- Added [#633](https://github.com/roboflow/supervision/pull/633): [`sv.PixelateAnnotator`](https://supervision.roboflow.com/annotators/#supervision.annotators.core.PixelateAnnotator) allowing to pixelate objects on images and videos.
- Added [#652](https://github.com/roboflow/supervision/pull/652): [`sv.TriangleAnnotator`](https://supervision.roboflow.com/annotators/#supervision.annotators.core.TriangleAnnotator) allowing to annotate images and videos with triangle markers.
- Added [#602](https://github.com/roboflow/supervision/pull/602): [`sv.PolygonAnnotator`](https://supervision.roboflow.com/annotators/#supervision.annotators.core.PolygonAnnotator) allowing to annotate images and videos with segmentation mask outline.
```python
>>> import supervision as sv
>>> image = ...
>>> detections = sv.Detections(...)
>>> polygon_annotator = sv.PolygonAnnotator()
>>> annotated_frame = polygon_annotator.annotate(
... scene=image.copy(),
... detections=detections
... )
```
- Added [#476](https://github.com/roboflow/supervision/pull/476): [`sv.assets`](https://supervision.roboflow.com/assets/) allowing download of video files that you can use in your demos.
```python
>>> from supervision.assets import download_assets, VideoAssets
>>> download_assets(VideoAssets.VEHICLES)
"vehicles.mp4"
```
- Added [#605](https://github.com/roboflow/supervision/pull/605): [`Position.CENTER_OF_MASS`](https://supervision.roboflow.com/geometry/core/#position) allowing to place labels in center of mass of segmentation masks.
- Added [#651](https://github.com/roboflow/supervision/pull/651): [`sv.scale_boxes`](https://supervision.roboflow.com/detection/utils/#supervision.detection.utils.scale_boxes) allowing to scale [`sv.Detections.xyxy`](https://supervision.roboflow.com/detection/core/#supervision.detection.core.Detections) values.
- Added [#637](https://github.com/roboflow/supervision/pull/637): [`sv.calculate_dynamic_text_scale`](https://supervision.roboflow.com/draw/utils/#supervision.draw.utils.calculate_dynamic_text_scale) and [`sv.calculate_dynamic_line_thickness`](https://supervision.roboflow.com/draw/utils/#supervision.draw.utils.calculate_dynamic_line_thickness) allowing text scale and line thickness to match image resolution.
- Added [#620](https://github.com/roboflow/supervision/pull/620): [`sv.Color.as_hex`](https://supervision.roboflow.com/draw/color/#supervision.draw.color.Color.as_hex) allowing to extract color value in HEX format.
- Added [#572](https://github.com/roboflow/supervision/pull/572): [`sv.Classifications.from_timm`](https://supervision.roboflow.com/classification/core/#supervision.classification.core.Classifications.from_timm) allowing to load classification result from [timm](https://huggingface.co/docs/hub/timm) models.
- Added [#478](https://github.com/roboflow/supervision/pull/478): [`sv.Classifications.from_clip`](https://supervision.roboflow.com/classification/core/#supervision.classification.core.Classifications.from_clip) allowing to load classification result from [clip](https://github.com/openai/clip) model.
- Added [#571](https://github.com/roboflow/supervision/pull/571): [`sv.Detections.from_azure_analyze_image`](https://supervision.roboflow.com/detection/core/#supervision.detection.core.Detections.from_azure_analyze_image) allowing to load detection results from [Azure Image Analysis](https://learn.microsoft.com/en-us/azure/ai-services/computer-vision/concept-object-detection-40).
- Changed [#646](https://github.com/roboflow/supervision/pull/646): `sv.BoxMaskAnnotator` renaming it to [`sv.ColorAnnotator`](https://supervision.roboflow.com/annotators/#supervision.annotators.core.ColorAnnotator).
- Changed [#606](https://github.com/roboflow/supervision/pull/606): [`sv.MaskAnnotator`](https://supervision.roboflow.com/annotators/#supervision.annotators.core.MaskAnnotator) to make it **5x faster**.
- Fixed [#584](https://github.com/roboflow/supervision/pull/584): [`sv.DetectionDataset.from_yolo`](https://supervision.roboflow.com/datasets/#supervision.dataset.core.DetectionDataset.from_yolo) to ignore empty lines in annotation files.
- Fixed [#555](https://github.com/roboflow/supervision/pull/555): [`sv.BlurAnnotator`](https://supervision.roboflow.com/annotators/#supervision.annotators.core.BlurAnnotator) to trim negative coordinates before bluring detections.
- Fixed [#511](https://github.com/roboflow/supervision/pull/511): [`sv.TraceAnnotator`](https://supervision.roboflow.com/annotators/#supervision.annotators.core.TraceAnnotator) to respect trace position.
### 0.16.0 <small>October 19, 2023</small>
- Added [#422](https://github.com/roboflow/supervision/pull/422): [`sv.BoxMaskAnnotator`](https://supervision.roboflow.com/annotators/#supervision.annotators.core.BoxMaskAnnotator) allowing to annotate images and videos with mox masks.
+1 -1
View File
@@ -16,7 +16,7 @@ We write your reusable computer vision tools. Whether you need to load your data
## 💻 Install
You can install `supervision` with pip in a
[**3.11>=Python>=3.8**](https://www.python.org/) environment.
[**Python>=3.8**](https://www.python.org/) environment.
!!! example "pip install (recommended)"
+10
View File
@@ -9,6 +9,16 @@ detection and Supervision for tracking and annotation.
pip install -r requirements.txt
```
## ⚙️ run
```bash
python script.py \
--source_weights_path yolov8s.pt \
--source_video_path input.mp4 \
--target_video_path tracking_result.mp4
```
## ⚙️ parameters
| parameter | required | description |
+1 -1
View File
@@ -17,7 +17,7 @@ def process_video(
tracker = sv.ByteTrack()
box_annotator = sv.BoundingBoxAnnotator()
label_annotator = sv.LabelAnnotator(classes=model.names)
label_annotator = sv.LabelAnnotator()
frame_generator = sv.get_video_frames_generator(source_path=source_video_path)
video_info = sv.VideoInfo.from_video_path(video_path=source_video_path)
+1 -1
View File
@@ -1,4 +1,4 @@
supervision>=0.15.0rc1
supervision
tqdm
ultralytics
gdown
Generated
+614 -567
View File
File diff suppressed because it is too large Load Diff
+6 -10
View File
@@ -1,6 +1,6 @@
[tool.poetry]
name = "supervision"
version = "0.17.0rc8"
version = "0.17.1"
description = "A set of easy-to-use utils that will come in handy in any Computer Vision project"
authors = ["Piotr Skalski <piotr.skalski92@gmail.com>"]
maintainers = ["Piotr Skalski <piotr.skalski92@gmail.com>"]
@@ -10,7 +10,7 @@ packages = [{include = "supervision"}]
homepage = "https://github.com/roboflow/supervision"
repository = "https://github.com/roboflow/supervision"
documentation = "https://github.com/roboflow/supervision/blob/main/README.md"
keywords = ["machine-learning", "deep-learning", "vision", "ML", "DL", "AI", "YOLOv5", "YOLOv8", "Roboflow"]
keywords = ["machine-learning", "deep-learning", "vision", "ML", "DL", "AI", "Roboflow"]
classifiers=[
'Development Status :: 4 - Beta',
@@ -19,10 +19,6 @@ classifiers=[
'Intended Audience :: Science/Research',
'License :: OSI Approved :: MIT License',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3 :: Only',
'Topic :: Software Development',
'Topic :: Scientific/Engineering',
@@ -35,14 +31,14 @@ classifiers=[
]
[tool.poetry.dependencies]
python = ">=3.8,<3.12.0"
python = "^3.8"
numpy = ">=1.21.2"
scipy = ">=1.9.0"
matplotlib = ">=3.5.0"
pyyaml = ">=5.3,<=6.0.1"
pyyaml = ">=5.3"
pillow = ">=9.4"
opencv-python = { version = ">=4.5.5.64,<=4.8.1.78", optional = true }
opencv-python-headless = ">=4.5.5.64,<=4.8.1.78"
scipy = ">=1.9.0,<=2.0.0"
requests = { version = ">=2.26.0,<=2.31.0", optional = true }
tqdm = { version = ">=4.62.3,<=4.66.1", optional = true }
@@ -62,7 +58,7 @@ isort = "^5.12.0"
black = "^23.7.0"
mypy = "^1.4.1"
pre-commit = "^3.3.3"
flake8 = { version = "*", python = ">=3.8.1,<3.12.0" }
flake8 = { version = "*", python = ">=3.8.1" }
[tool.poetry.group.docs.dependencies]
+5 -2
View File
@@ -64,6 +64,7 @@ def _validate_tracker_id(tracker_id: Any, n: int) -> None:
class Detections:
"""
Data class containing information about the detections in a video frame.
Attributes:
xyxy (np.ndarray): An array of shape `(n, 4)` containing
the bounding boxes coordinates in format `[x1, y1, x2, y2]`
@@ -489,8 +490,9 @@ class Detections:
cls, azure_result: dict, class_map: Optional[Dict[int, str]] = None
) -> Detections:
"""
Creates a Detections instance from Azure Image Analysis 4.0
(https://learn.microsoft.com/en-us/azure/ai-services/computer-vision/concept-object-detection-40)
Creates a Detections instance from [Azure Image Analysis 4.0](
https://learn.microsoft.com/en-us/azure/ai-services/computer-vision/
concept-object-detection-40).
Args:
azure_result (dict): The result from Azure Image Analysis. It should
@@ -522,6 +524,7 @@ class Detections:
... ).json()
>>> detections = sv.Detections.from_azure_analyze_image(response)
```
"""
if "error" in azure_result:
raise ValueError(