Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
169 commits
Select commit Hold shift + click to select a range
f737782
initial commit
SkalskiP Apr 7, 2025
9e2a535
Merge branch 'develop' into feat/from_deepseek_vl_2_support
onuralpszr Jul 11, 2025
8e845ca
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Jul 11, 2025
535cb2a
fix(vlm): πŸ“ correct formatting in docstring for from_deepseek_vl_2 fu…
onuralpszr Jul 11, 2025
1e84351
:arrow_up: Bump astral-sh/setup-uv from 6.3.1 to 6.4.1
dependabot[bot] Jul 21, 2025
b1780fb
chore(pre_commit): ⬆ pre_commit autoupdate
pre-commit-ci[bot] Jul 21, 2025
cf725dd
Merge branch 'develop' into feat/from_deepseek_vl_2_support
soumik12345 Jul 23, 2025
a470bc2
chore: make pre-commit happy
soumik12345 Jul 23, 2025
76ee054
exposing `box_iou_batch` in `supervision/detection/utils__init__.py`
rcvsq Jul 23, 2025
932c1aa
Merge pull request #1910 from rafaelpadilla/fix/import_box_iou_batch
soumik12345 Jul 23, 2025
b3aee43
update: from_deepseek_vl_2 logic
soumik12345 Jul 24, 2025
cc15257
update: docstring for Detections.from_vlm
soumik12345 Jul 24, 2025
da70389
add: prompt engineering tip for deepseek-vl2
soumik12345 Jul 24, 2025
8fa21dd
update: from_deepseek_vl_2
soumik12345 Jul 24, 2025
1370786
add: tests
soumik12345 Jul 24, 2025
72fe0bf
initial version of `edit_distance` and `fuzzy_match_index` that will …
SkalskiP Jul 24, 2025
8262b6e
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Jul 24, 2025
58bdce5
tests fixed
SkalskiP Jul 24, 2025
ec189bf
new, more memory efficient `edit_distance` implementation
SkalskiP Jul 25, 2025
00817df
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Jul 25, 2025
9679cd5
Merge pull request #1912 from roboflow/feature/edit_distance_and_fuzz…
SkalskiP Jul 25, 2025
bc1d73a
chore: address feedback
soumik12345 Jul 25, 2025
8ca2e9f
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Jul 25, 2025
b381fa1
Merge pull request #1884 from roboflow/feat/from_deepseek_vl_2_support
SkalskiP Jul 25, 2025
036a956
fix for #1911
SkalskiP Jul 26, 2025
98a4391
Merge pull request #1913 from roboflow/fix/pending_track_id
SkalskiP Jul 26, 2025
1362850
Merge pull request #1904 from roboflow/pre-commit-ci-update-config
SkalskiP Jul 26, 2025
8873da4
Merge pull request #1902 from roboflow/dependabot/github_actions/deve…
SkalskiP Jul 26, 2025
96b58c2
:arrow_up: Bump astral-sh/setup-uv from 6.4.1 to 6.4.3
dependabot[bot] Jul 28, 2025
beaf89c
initial version of advanced key points filtering and slicing + some n…
SkalskiP Jul 28, 2025
f4561f9
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Jul 28, 2025
9a04834
fixed docs
AlexBodner Jul 28, 2025
8bbe80e
Merge pull request #1916 from AlexBodner/fix/docs-vitpose
soumik12345 Jul 28, 2025
cb215d2
add: support for an additional parameter text_anchor_offset in _BaseL…
soumik12345 Jul 28, 2025
063e209
chore(pre_commit): ⬆ pre_commit autoupdate
pre-commit-ci[bot] Jul 28, 2025
1cfaef9
Merge branch 'develop' into feature/advanced_keypoints_indexing_and_s…
SkalskiP Jul 29, 2025
6d26a97
Merge pull request #1915 from roboflow/feature/advanced_keypoints_ind…
SkalskiP Jul 29, 2025
35fdcb0
Merge branch 'develop' into feat/label-annotator-offset
SkalskiP Jul 29, 2025
71a1481
`LabelAnnotator` and `RichLabelAnnotator` docs improvement
SkalskiP Jul 29, 2025
21e311a
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Jul 29, 2025
4a9d06e
Merge pull request #1918 from roboflow/pre-commit-ci-update-config
SkalskiP Jul 29, 2025
6f2490c
fix formatting
SkalskiP Jul 29, 2025
ac0c367
Merge pull request #1914 from roboflow/dependabot/github_actions/deve…
SkalskiP Jul 29, 2025
dda3900
Merge pull request #1917 from roboflow/feat/label-annotator-offset
SkalskiP Jul 29, 2025
22b6d3d
ADD: Added a spline annotator
Ashp116 Jul 30, 2025
8c6ac2d
UPDATE: Made smoothing and spline_order as hyperparameters
Ashp116 Jul 30, 2025
f447b6f
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Jul 30, 2025
eaf6cdd
Precommit
Ashp116 Jul 30, 2025
8407d5a
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Jul 30, 2025
cdca2e6
UPDATE: Removed SplineAnnotator and added smooth flag for TraceAnnotator
Ashp116 Jul 30, 2025
0c9fea4
UPDATE: Change Smooth to bool
Ashp116 Jul 30, 2025
90f8582
Merge pull request #1919 from Ashp116/feature/spline-tracer
SkalskiP Jul 31, 2025
e139369
bump version from `0.26.1` to `0.27.0rc0`
SkalskiP Jul 31, 2025
6f87e26
:arrow_up: Update mkdocstrings requirement
dependabot[bot] Aug 4, 2025
652b0a1
:arrow_up: Update build requirement from <1.3,>=0.10 to >=0.10,<1.4
dependabot[bot] Aug 4, 2025
a08cda3
ready for review
SkalskiP Aug 6, 2025
13ab215
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Aug 6, 2025
aab3160
make ruff happy
SkalskiP Aug 6, 2025
46e5965
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Aug 6, 2025
ade2668
Merge pull request #1932 from roboflow/fix/numpy.int64-object-has-no-…
SkalskiP Aug 6, 2025
005cdbd
bump version from `0.27.0rc0` to `0.27.0rc1`
SkalskiP Aug 6, 2025
83d490d
initial support for `pycon` docs examples
SkalskiP Aug 6, 2025
5c67452
after few tests drop support for `pycon` in docs examples
SkalskiP Aug 7, 2025
4b7b347
drop create tiles from public API
SkalskiP Aug 7, 2025
8fc22f0
move `ImageType` to a more suitable location
SkalskiP Aug 7, 2025
cbb58a8
`tint_image` and `grayscale_image` functions added
SkalskiP Aug 7, 2025
a933b93
update image utils docs; deprecate `overlay_image` image
SkalskiP Aug 7, 2025
4ad36db
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Aug 7, 2025
8c49465
align new utils with naming conventions
SkalskiP Aug 7, 2025
098d5e3
Merge remote-tracking branch 'origin/docs/refactor_0.27.0' into docs/…
SkalskiP Aug 7, 2025
72621dc
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Aug 7, 2025
c8b966b
align new utils with naming conventions
SkalskiP Aug 7, 2025
3fcbef9
Merge remote-tracking branch 'origin/docs/refactor_0.27.0' into docs/…
SkalskiP Aug 7, 2025
dce96d4
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Aug 7, 2025
2ef029e
visualize examples
SkalskiP Aug 7, 2025
2cdb70e
Merge remote-tracking branch 'origin/docs/refactor_0.27.0' into docs/…
SkalskiP Aug 7, 2025
c7de70e
Merge pull request #1943 from roboflow/docs/refactor_0.27.0
SkalskiP Aug 7, 2025
6679b1f
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Aug 7, 2025
deb1c9c
Merge pull request #1945 from roboflow/docs/refactor_0.27.0
SkalskiP Aug 7, 2025
86e10db
:arrow_up: Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0
dependabot[bot] Sep 8, 2025
50358e9
:arrow_up: Bump actions/github-script from 7.0.1 to 8.0.0
dependabot[bot] Sep 22, 2025
421ad21
Fixed: random print("hm") in merge_metadata
kshitijaucharmal Sep 24, 2025
171687f
Merge pull request #1968 from kshitijaucharmal/develop
SkalskiP Sep 25, 2025
371f8ec
fix: added precommit under dev group
kshitijaucharmal Oct 3, 2025
272d9ed
fix: Overlapmetric should check string using uppercase conversion
ernestlwt Oct 16, 2025
03eed3f
:arrow_up: Bump astral-sh/setup-uv from 6.4.3 to 7.1.2
dependabot[bot] Oct 27, 2025
35ff87b
feat: speed up box iou batch using 2d in-place ops instead of 3d
AnonymDevOSS Oct 28, 2025
98476df
feat: add threaded I/O pipeline for video processing
AnonymDevOSS Oct 28, 2025
03f6239
feat: tests for add threaded I/O pipeline for video processing
AnonymDevOSS Oct 28, 2025
32dca29
`xyxy_to_mask` implementation + tests
SkalskiP Nov 5, 2025
a3ea8cd
bump version from `0.27.0rc1` to `0.27.0rc2`
SkalskiP Nov 5, 2025
3e7e4ca
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Nov 5, 2025
1c83989
docs and examples
SkalskiP Nov 5, 2025
89ee57f
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Nov 5, 2025
b02ec93
Merge pull request #2006 from roboflow/feature/xyxy_to_mask
SkalskiP Nov 5, 2025
0bd6087
bump version from `0.27.0rc2` to `0.27.0rc3`
SkalskiP Nov 5, 2025
6578b4e
initial version of `filter_segments_by_distance`
SkalskiP Nov 5, 2025
9340cb9
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Nov 5, 2025
4c3d51f
making flake8 happy
SkalskiP Nov 5, 2025
1fef946
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Nov 5, 2025
65f6e41
making flake8 happy
SkalskiP Nov 5, 2025
c7e9548
Merge pull request #2008 from roboflow/feature/filter_segments_by_dis…
SkalskiP Nov 5, 2025
52be9dc
fix `filter_segments_by_distance` docstring
SkalskiP Nov 5, 2025
b1b69ad
bump version from `0.27.0rc3` to `0.27.0rc4`
SkalskiP Nov 5, 2025
6c7c49e
Merge pull request #1974 from kshitijaucharmal/fix/add-pre-commit-in-…
SkalskiP Nov 5, 2025
b66416e
Merge pull request #1993 from ernestlwt/fix/overlapmetric-to-upper
SkalskiP Nov 5, 2025
78439e0
Merge pull request #1999 from roboflow/dependabot/github_actions/deve…
SkalskiP Nov 5, 2025
ceefe0b
feat/ speed up box iou - replaced original function; added tests
AnonymDevOSS Nov 6, 2025
da7c5cd
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Nov 6, 2025
bb87ab0
fixed autoformat errors
AnonymDevOSS Nov 6, 2025
eee6a85
Merge branch 'feat/speed-up-box-iou-batch' of github.com:AnonymDevOSS…
AnonymDevOSS Nov 6, 2025
9ad850a
fix: correct numpy indexing in denormalize_boxes and add ultralytics …
jackiehimel Nov 13, 2025
61cca76
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Nov 13, 2025
f6d52b5
docs: Update JSONSink example path
dominikWin Nov 13, 2025
f716b7f
improve docstrings, examples, variable naming conventions and unit tests
SkalskiP Nov 14, 2025
1e2dc8f
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Nov 14, 2025
42d92ba
making `ruff` happy
SkalskiP Nov 14, 2025
d109fba
Merge pull request #2001 from AnonymDevOSS/feat/speed-up-box-iou-batch
SkalskiP Nov 14, 2025
9320be5
Merge pull request #2013 from dominikWin/docs/how-to-json-path
SkalskiP Nov 14, 2025
35272b4
remove ultralytics tests
SkalskiP Nov 14, 2025
f563c5a
update `denormalize_boxes` docstring and examples
SkalskiP Nov 14, 2025
dfd2a60
update `denormalize_boxes` docstring and examples; update `from_googl…
SkalskiP Nov 14, 2025
1d73468
Merge pull request #2012 from jackiehimel/fix/bugs-1959-2000
SkalskiP Nov 14, 2025
b0bbb74
Merge pull request #1965 from roboflow/dependabot/github_actions/deve…
SkalskiP Nov 14, 2025
97bf652
Merge pull request #1927 from roboflow/dependabot/pip/develop/build-g…
SkalskiP Nov 14, 2025
8b91d73
Merge pull request #1955 from roboflow/dependabot/github_actions/deve…
SkalskiP Nov 14, 2025
d330baf
Merge pull request #1926 from roboflow/dependabot/pip/develop/mkdocst…
SkalskiP Nov 14, 2025
db0892f
remove unnecessary package-level import
SkalskiP Nov 14, 2025
4663fab
update `new` docs page marks
SkalskiP Nov 14, 2025
fae1bc2
bump version from `0.27.0rc4` to `0.27.0rc5`
SkalskiP Nov 14, 2025
ce28ab7
fix uti tests for `InferenceSlicer._generate_offset`
SkalskiP Nov 14, 2025
8d464aa
improve `InferenceSlicer` implementation lowering the count of genera…
SkalskiP Nov 14, 2025
c8f5c74
reimplement `crop_image` to skip type casting when Pillow Image given
SkalskiP Nov 14, 2025
e82b5b9
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Nov 14, 2025
15364ac
Rename process_video_threads to process_video and remove legacy imple…
AnonymDevOSS Nov 14, 2025
fc0e133
added example as it was delited by mistake
AnonymDevOSS Nov 14, 2025
2c522a9
improved `InferenceSlicer` docstring
SkalskiP Nov 14, 2025
c8223cb
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Nov 14, 2025
12d7c36
Merge pull request #2014 from roboflow/0.27.0-deprecations
SkalskiP Nov 14, 2025
a296712
improved `InferenceSlicer` docstring
SkalskiP Nov 14, 2025
80d76e7
style and docstring improvements
SkalskiP Nov 15, 2025
38f8912
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Nov 15, 2025
70e9af9
make `ruff` happy
SkalskiP Nov 15, 2025
316cb62
make `ruff` happy
SkalskiP Nov 15, 2025
25c2f5c
Merge pull request #1997 from AnonymDevOSS/feat/threads-queues-video-…
SkalskiP Nov 15, 2025
2edcbdc
initial commit with `from_qwen_3_vl` added, `from_qwen_2_5_vl` improved
SkalskiP Nov 15, 2025
e68c908
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Nov 15, 2025
7301156
plug Qwen3-VL into `sv.Detections.from_vlm`
SkalskiP Nov 15, 2025
353bd53
Merge remote-tracking branch 'origin/feature/support_for_qwen_3_vl' i…
SkalskiP Nov 15, 2025
9ab9650
plug Qwen3-VL into `sv.Detections.from_vlm`
SkalskiP Nov 15, 2025
31db2de
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Nov 15, 2025
0422a66
plug Qwen3-VL into `sv.Detections.from_vlm`
SkalskiP Nov 15, 2025
a287e68
Merge remote-tracking branch 'origin/feature/support_for_qwen_3_vl' i…
SkalskiP Nov 15, 2025
e29e383
plug Qwen3-VL into `sv.Detections.from_vlm`
SkalskiP Nov 15, 2025
9bd8f71
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Nov 15, 2025
c35a35c
plug Qwen3-VL into `sv.Detections.from_vlm`
SkalskiP Nov 15, 2025
e0edb28
Merge remote-tracking branch 'origin/feature/support_for_qwen_3_vl' i…
SkalskiP Nov 15, 2025
5af13c0
add Qwen3-VL prompting example
SkalskiP Nov 15, 2025
52c772d
fix(pre_commit): 🎨 auto format pre-commit hooks
pre-commit-ci[bot] Nov 15, 2025
a99015a
more Qwen2.5-VL tests
SkalskiP Nov 15, 2025
790ccac
Merge remote-tracking branch 'origin/feature/support_for_qwen_3_vl' i…
SkalskiP Nov 15, 2025
373fbae
Merge pull request #2015 from roboflow/feature/support_for_qwen_3_vl
SkalskiP Nov 16, 2025
e12bfe2
add `box_aspect_ratio` property to `sv.Detections`
SkalskiP Nov 16, 2025
bbc37b4
fix failing tests
SkalskiP Nov 16, 2025
6119f20
Merge pull request #2016 from roboflow/feature/make_box_aspect_ratio_…
SkalskiP Nov 16, 2025
47574ed
supervision 0.27.0 changelog
SkalskiP Nov 16, 2025
c5cc24f
Merge pull request #2017 from roboflow/0.27.0-changelog
SkalskiP Nov 16, 2025
7250688
bump version from `0.27.0rc5` to `0.27.0rc6`
SkalskiP Nov 16, 2025
7f7b25d
bump version from `0.27.0rc6` to `0.27.0`
SkalskiP Nov 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/clear-cache.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
timeout-minutes: 10
steps:
- name: Clear cache
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
console.log("Starting cache cleanup...")
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
fetch-depth: 0

- name: 🐍 Install uv and set Python ${{ matrix.python-version }}
uses: astral-sh/setup-uv@bd01e18f51369d5a26f1651c3cb451d3417e3bba # v6.3.1
uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2
with:
python-version: ${{ matrix.python-version }}
activate-environment: true
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/publish-pre-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- name: 🐍 Install uv and set Python version ${{ matrix.python-version }}
uses: astral-sh/setup-uv@bd01e18f51369d5a26f1651c3cb451d3417e3bba # v6.3.1
uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2
with:
python-version: ${{ matrix.python-version }}
activate-environment: true
Expand All @@ -42,6 +42,6 @@ jobs:
uv run twine check --strict dist/*

- name: πŸš€ Publish to PyPi
uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
with:
attestations: true
4 changes: 2 additions & 2 deletions .github/workflows/publish-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- name: 🐍 Install uv and set Python version ${{ matrix.python-version }}
uses: astral-sh/setup-uv@bd01e18f51369d5a26f1651c3cb451d3417e3bba # v6.3.1
uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2
with:
python-version: ${{ matrix.python-version }}
activate-environment: true
Expand All @@ -40,6 +40,6 @@ jobs:
uv run twine check --strict dist/*

- name: πŸš€ Publish to PyPi
uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
with:
attestations: true
4 changes: 2 additions & 2 deletions .github/workflows/publish-testpypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- name: 🐍 Install uv and set Python version ${{ matrix.python-version }}
uses: astral-sh/setup-uv@bd01e18f51369d5a26f1651c3cb451d3417e3bba # v6.3.1
uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2
with:
python-version: ${{ matrix.python-version }}
activate-environment: true
Expand All @@ -37,7 +37,7 @@ jobs:
uv run twine check --strict dist/*

- name: πŸš€ Publish to Test-PyPi
uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
with:
repository-url: https://test.pypi.org/legacy/
attestations: true
2 changes: 1 addition & 1 deletion .github/workflows/test-doc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
fetch-depth: 0

- name: 🐍 Install uv and set Python ${{ matrix.python-version }}
uses: astral-sh/setup-uv@bd01e18f51369d5a26f1651c3cb451d3417e3bba # v6.3.1
uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2
with:
python-version: ${{ matrix.python-version }}
activate-environment: true
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/uv-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- name: 🐍 Install uv and set Python version ${{ matrix.python-version }}
uses: astral-sh/setup-uv@bd01e18f51369d5a26f1651c3cb451d3417e3bba # v6.3.1
uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2
with:
python-version: ${{ matrix.python-version }}
activate-environment: true
Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ repos:
additional_dependencies: ["bandit[toml]"]

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.12.3
rev: v0.12.5
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
Expand Down
68 changes: 68 additions & 0 deletions docs/changelog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,73 @@
# Changelog

### 0.27.0 <small>Nov 16, 2025</small>

- Added [#2008](https://github.com/roboflow/supervision/pull/2008): [`sv.filter_segments_by_distance`](https://supervision.roboflow.com/0.27.0/detection/utils/masks/#supervision.detection.utils.masks.filter_segments_by_distance) to keep the largest connected component and nearby components within an absolute or relative distance threshold. Useful for cleaning segmentation predictions from models such as SAM, SAM2, YOLO segmentation, and RF-DETR segmentation.

- Added [#2006](https://github.com/roboflow/supervision/pull/2006): [`sv.xyxy_to_mask`](https://supervision.roboflow.com/0.27.0/detection/utils/converters/#supervision.detection.utils.converters.xyxy_to_mask) to convert bounding boxes into 2D boolean masks, where each mask corresponds to a single box.

- Added [#1943](https://github.com/roboflow/supervision/pull/1943): [`sv.tint_image`](https://supervision.roboflow.com/0.27.0/utils/image/#supervision.utils.image.tint_image) to apply a solid color overlay to an image at a given opacity. Works with both NumPy and PIL inputs.

- Added [#1943](https://github.com/roboflow/supervision/pull/1943): [`sv.grayscale_image`](https://supervision.roboflow.com/0.27.0/utils/image/#supervision.utils.image.tint_image) to convert an image to 3 channel grayscale for compatibility with color based drawing utilities.

- Added [#2014](https://github.com/roboflow/supervision/pull/2014): [`sv.get_image_resolution_wh`](https://supervision.roboflow.com/0.27.0/utils/image/#supervision.utils.image.get_image_resolution_wh) as a unified way to read image width and height from NumPy and PIL inputs.

- Added [#1912](https://github.com/roboflow/supervision/pull/1912): [`sv.edit_distance`](https://supervision.roboflow.com/0.27.0/detection/utils/vlms/#supervision.detection.utils.vlms.edit_distance) for Levenshtein distance between two strings. Supports insert, delete, and substitute operations.

- Added [#1912](https://github.com/roboflow/supervision/pull/1912): [`sv.fuzzy_match_index`](https://supervision.roboflow.com/0.27.0/detection/utils/vlms/#supervision.detection.utils.vlms.fuzzy_match_index) to find the first close match in a list using edit distance.

- Changed [#2015](https://github.com/roboflow/supervision/pull/2015): [`sv.Detections.from_vlm`](https://supervision.roboflow.com/0.27.0/detection/core/#supervision.detection.core.Detections.from_vlm) and legacy `from_lmm` now support Qwen3 VL via `vlm=sv.VLM.QWEN_3_VL`.

- Changed [#1884](https://github.com/roboflow/supervision/pull/1884): [`sv.Detections.from_vlm`](https://supervision.roboflow.com/0.27.0/detection/core/#supervision.detection.core.Detections.from_vlm) and legacy `from_lmm` now support DeepSeek VL 2 via `vlm=sv.VLM.DEEPSEEK_VL_2`.

- Changed [#2015](https://github.com/roboflow/supervision/pull/2015): [`sv.Detections.from_vlm`](https://supervision.roboflow.com/0.27.0/detection/core/#supervision.detection.core.Detections.from_vlm) now parses Qwen 2.5 VL outputs more robustly and handles incomplete or truncated JSON responses.

- Changed [#2014](https://github.com/roboflow/supervision/pull/2014): [`sv.InferenceSlicer`](https://supervision.roboflow.com/0.27.0/detection/tools/inference_slicer/#supervision.detection.tools.inference_slicer.InferenceSlicer) now uses a new offset generation logic that removes redundant tiles and aligns borders cleanly. This reduces the number of processed tiles and shortens inference time without hurting detection quality.

- Changed [#2016](https://github.com/roboflow/supervision/pull/2016): [`sv.Detections`](https://supervision.roboflow.com/0.27.0/detection/core/#supervision.detection.core.Detections) now includes a `box_aspect_ratio` property for vectorized aspect ratio computation, useful for filtering detections based on box shape.

- Changed [#2001](https://github.com/roboflow/supervision/pull/2001): Significantly improved the performance of [`sv.box_iou_batch`](https://supervision.roboflow.com/0.27.0/detection/utils/iou_and_nms/#supervision.detection.utils.iou_and_nms.box_iou_batch). On internal benchmarks, processing runs approximately 2x to 5x faster.

- Changed [#1997](https://github.com/roboflow/supervision/pull/1997): [`sv.process_video`](https://supervision.roboflow.com/0.27.0/utils/video/#supervision.utils.video.process_video) now uses a threaded reader, processor, and writer pipeline. This removes I/O stalls and improves throughput while keeping the callback single threaded and safe for stateful models.

- Changed: [`sv.denormalize_boxes`](https://supervision.roboflow.com/0.27.0/detection/utils/boxes/#supervision.detection.utils.boxes.denormalize_boxes) now supports batch conversion of bounding boxes. The function accepts arrays of shape `(N, 4)` and returns a batch of absolute pixel coordinates.

- Changed [#1917](https://github.com/roboflow/supervision/pull/1917): [`sv.LabelAnnotator`](https://supervision.roboflow.com/develop/0.27.0/annotators/#supervision.annotators.core.LabelAnnotator) and [`sv.RichLabelAnnotator`](https://supervision.roboflow.com/develop/0.27.0/annotators/#supervision.annotators.core.LabelAnnotator) now accept `text_offset=(x, y)` to shift the label relative to `text_position`. Works with smart label position and line wrapping.

!!! failure "Removed"
Removed the deprecated `overlap_ratio_wh` argument from `sv.InferenceSlicer`. Use the pixel based `overlap_wh` argument to control slice overlap.

!!! info "Tip"
Convert your old ratio based overlap to pixel based overlap by multiplying each ratio by the slice dimensions.

```python
# before

slice_wh = (640, 640)
overlap_ratio_wh = (0.25, 0.25)

slicer = sv.InferenceSlicer(
callback=callback,
slice_wh=slice_wh,
overlap_ratio_wh=overlap_ratio_wh,
overlap_filter=sv.OverlapFilter.NON_MAX_SUPPRESSION,
)

# after

overlap_wh = (
int(overlap_ratio_wh[0] * slice_wh[0]),
int(overlap_ratio_wh[1] * slice_wh[1]),
)

slicer = sv.InferenceSlicer(
callback=callback,
slice_wh=slice_wh,
overlap_wh=overlap_wh,
overlap_filter=sv.OverlapFilter.NON_MAX_SUPPRESSION,
)
```

### 0.26.1 <small>Jul 22, 2025</small>

- Fixed [1894](https://github.com/roboflow/supervision/pull/1894): Error in [`sv.MeanAveragePrecision`](https://supervision.roboflow.com/0.26.1/metrics/mean_average_precision/#supervision.metrics.mean_average_precision.MeanAveragePrecision) where the area used for size-specific evaluation (small / medium / large) was always zero unless explicitly provided in `sv.Detections.data`.
Expand Down
1 change: 0 additions & 1 deletion docs/detection/annotators.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
comments: true
status: new
---

# Annotators
Expand Down
1 change: 0 additions & 1 deletion docs/detection/core.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
comments: true
status: new
---

# Detections
Expand Down
1 change: 0 additions & 1 deletion docs/detection/utils/boxes.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
comments: true
status: new
---

# Boxes Utils
Expand Down
6 changes: 6 additions & 0 deletions docs/detection/utils/converters.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,9 @@ status: new
</div>

:::supervision.detection.utils.converters.polygon_to_xyxy

<div class="md-typeset">
<h2><a href="#supervision.detection.utils.converters.xyxy_to_mask">xyxy_to_mask</a></h2>
</div>

:::supervision.detection.utils.converters.xyxy_to_mask
1 change: 0 additions & 1 deletion docs/detection/utils/iou_and_nms.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
comments: true
status: new
---

# IoU and NMS Utils
Expand Down
6 changes: 6 additions & 0 deletions docs/detection/utils/masks.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,9 @@ status: new
</div>

:::supervision.detection.utils.masks.contains_multiple_segments

<div class="md-typeset">
<h2><a href="#supervision.detection.utils.masks.filter_segments_by_distance">filter_segments_by_distance</a></h2>
</div>

:::supervision.detection.utils.masks.filter_segments_by_distance
1 change: 0 additions & 1 deletion docs/detection/utils/polygons.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
comments: true
status: new
---

# Polygons Utils
Expand Down
18 changes: 18 additions & 0 deletions docs/detection/utils/vlms.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
comments: true
status: new
---

# VLMs Utils

<div class="md-typeset">
<h2><a href="#supervision.detection.utils.vlms.edit_distance">edit_distance</a></h2>
</div>

:::supervision.detection.utils.vlms.edit_distance

<div class="md-typeset">
<h2><a href="#supervision.detection.utils.vlms.fuzzy_match_index">fuzzy_match_index</a></h2>
</div>

:::supervision.detection.utils.vlms.fuzzy_match_index
1 change: 0 additions & 1 deletion docs/how_to/benchmark_a_model.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
comments: true
status: new
---

![Corgi Example](https://media.roboflow.com/supervision/image-examples/how-to/benchmark-models/corgi-sorted-2.png)
Expand Down
5 changes: 1 addition & 4 deletions docs/how_to/process_datasets.md
Original file line number Diff line number Diff line change
Expand Up @@ -331,12 +331,9 @@ for i in range(16):
annotated_image = label_annotator.annotate(annotated_image, annotations, labels)
annotated_images.append(annotated_image)

grid = sv.create_tiles(
sv.plot_images_grid(
annotated_images,
grid_size=(4, 4),
single_tile_size=(400, 400),
tile_padding_color=sv.Color.WHITE,
tile_margin_color=sv.Color.WHITE
)
```

Expand Down
6 changes: 3 additions & 3 deletions docs/how_to/save_detections.md
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ with
model = get_model(model_id="yolov8n-640")
frames_generator = sv.get_video_frames_generator(<SOURCE_VIDEO_PATH>)

with sv.JSONSink(<TARGET_CSV_PATH>) as sink:
with sv.JSONSink(<TARGET_JSON_PATH>) as sink:
for frame_index, frame in enumerate(frames_generator):

results = model.infer(image)[0]
Expand All @@ -250,7 +250,7 @@ with
model = YOLO("yolov8n.pt")
frames_generator = sv.get_video_frames_generator(<SOURCE_VIDEO_PATH>)

with sv.JSONSink(<TARGET_CSV_PATH>) as sink:
with sv.JSONSink(<TARGET_JSON_PATH>) as sink:
for frame_index, frame in enumerate(frames_generator):

results = model(frame)[0]
Expand All @@ -268,7 +268,7 @@ with
model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50")
frames_generator = sv.get_video_frames_generator(<SOURCE_VIDEO_PATH>)

with sv.JSONSink(<TARGET_CSV_PATH>) as sink:
with sv.JSONSink(<TARGET_JSON_PATH>) as sink:
for frame_index, frame in enumerate(frames_generator):

frame = sv.cv2_to_pillow(frame)
Expand Down
5 changes: 2 additions & 3 deletions docs/how_to/track_objects.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
comments: true
status: new
---

# Track Objects
Expand Down Expand Up @@ -345,7 +344,7 @@ Supervision is versatile and compatible with various models. Check this [link](/

We will define a `callback` function, which will process each frame of the video by obtaining model predictions and then annotating the frame based on these predictions.

Let's immediately visualize the results with our [`EdgeAnnotator`](/latest/keypoint/annotators/#supervision.keypoint.annotators.EdgeAnnotator) and [`VertexAnnotator`](https://supervision.roboflow.com/latest/keypoint/annotators/#supervision.keypoint.annotators.VertexAnnotator).
Let's immediately visualize the results with our [`EdgeAnnotator`](/latest/keypoint/annotators/#supervision.key_points.annotators.EdgeAnnotator) and [`VertexAnnotator`](https://supervision.roboflow.com/latest/keypoint/annotators/#supervision.key_points.annotators.VertexAnnotator).

=== "Ultralytics"

Expand Down Expand Up @@ -408,7 +407,7 @@ Let's immediately visualize the results with our [`EdgeAnnotator`](/latest/keypo

### Convert to Detections

Keypoint tracking is currently supported via the conversion of `KeyPoints` to `Detections`. This is achieved with the [`KeyPoints.as_detections()`](/latest/keypoint/core/#supervision.keypoint.core.KeyPoints.as_detections) function.
Keypoint tracking is currently supported via the conversion of `KeyPoints` to `Detections`. This is achieved with the [`KeyPoints.as_detections()`](/latest/keypoint/core/#supervision.key_points.core.KeyPoints.as_detections) function.

Let's convert to detections and visualize the results with our [`BoxAnnotator`](/latest/detection/annotators/#supervision.annotators.core.BoxAnnotator).

Expand Down
12 changes: 6 additions & 6 deletions docs/keypoint/annotators.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,19 +78,19 @@ comments: true
</div>

<div class="md-typeset">
<h2><a href="#supervision.keypoint.annotators.VertexAnnotator">VertexAnnotator</a></h2>
<h2><a href="#supervision.key_points.annotators.VertexAnnotator">VertexAnnotator</a></h2>
</div>

:::supervision.keypoint.annotators.VertexAnnotator
:::supervision.key_points.annotators.VertexAnnotator

<div class="md-typeset">
<h2><a href="#supervision.keypoint.annotators.EdgeAnnotator">EdgeAnnotator</a></h2>
<h2><a href="#supervision.key_points.annotators.EdgeAnnotator">EdgeAnnotator</a></h2>
</div>

:::supervision.keypoint.annotators.EdgeAnnotator
:::supervision.key_points.annotators.EdgeAnnotator

<div class="md-typeset">
<h2><a href="#supervision.keypoint.annotators.VertexLabelAnnotator">VertexLabelAnnotator</a></h2>
<h2><a href="#supervision.key_points.annotators.VertexLabelAnnotator">VertexLabelAnnotator</a></h2>
</div>

:::supervision.keypoint.annotators.VertexLabelAnnotator
:::supervision.key_points.annotators.VertexLabelAnnotator
3 changes: 1 addition & 2 deletions docs/keypoint/core.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
---
comments: true
status: new
---

# Keypoint Detection

:::supervision.keypoint.core.KeyPoints
:::supervision.key_points.core.KeyPoints
1 change: 0 additions & 1 deletion docs/metrics/mean_average_precision.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
comments: true
status: new
---

# Mean Average Precision
Expand Down
17 changes: 15 additions & 2 deletions docs/utils/image.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
comments: true
status: new
---

# Image Utils
Expand Down Expand Up @@ -29,10 +30,22 @@ comments: true
:::supervision.utils.image.letterbox_image

<div class="md-typeset">
<h2><a href="#supervision.utils.image.overlay_image">overlay_image</a></h2>
<h2><a href="#supervision.utils.image.tint_image">tint_image</a></h2>
</div>

:::supervision.utils.image.overlay_image
:::supervision.utils.image.tint_image

<div class="md-typeset">
<h2><a href="#supervision.utils.image.grayscale_image">grayscale_image</a></h2>
</div>

:::supervision.utils.image.grayscale_image

<div class="md-typeset">
<h2><a href="#supervision.utils.image.get_image_resolution_wh">get_image_resolution_wh</a></h2>
</div>

:::supervision.utils.image.get_image_resolution_wh

<div class="md-typeset">
<h2><a href="#supervision.utils.image.ImageSink">ImageSink</a></h2>
Expand Down
Loading
Loading