supervision/docs
Arthi Arumugam 7fc91180fe
fix(metrics): track prediction-only classes in Recall (#2468)
#2331 made Precision and F1Score include classes that appear only in
predictions, and added regression tests to both. Recall was not touched, so
the line #2331 replaced is still there and the three metrics disagree about
which classes exist for identical input:

    precision.matched_classes -> [0 1]   precision_per_class (2, 10)
    recall.matched_classes    -> [0]     recall_per_class    (1, 10)
    f1.matched_classes        -> [0 1]

These read as parallel outputs, so zipping them silently truncates rather
than raising.

Recall for a class with no ground-truth instances is 0.0 rather than
undefined, which is what sklearn reports (it infers labels from the union of
y_true and y_pred) and what #2331 cited as its own standard. MICRO is
unchanged because an absent class contributes no false negatives, and
WEIGHTED is unchanged because its ground-truth support is zero. MACRO does
change, and the changelog says so.

Also of note: recall.py already carried #2331's WEIGHTED zero-support guard,
whose comment refers to 'only false-positive classes'. That state could not
arise in recall.py, because unique_classes came from ground truth alone. The
guard was propagated; the union that gives it meaning was not.

Addresses the review on #2468. Building the class union inside
_compute_recall_for_classes only covers samples that reach it, and samples with
predictions but no targets are skipped earlier in _compute. So matched_classes
could still disagree with Precision and F1Score for list inputs containing a
background image, which is the exact invariant the new test asserts.

Before, for one normal sample plus one background image predicting class 2:

    precision.matched_classes -> [0 2]
    recall.matched_classes    -> [0]

Recall now handles len(targets) == 0 and len(predictions) > 0 the way Precision
does. No recall value changes, since a background image produces no false
negatives; only the tracked class set does.

* test: cover Recall bg-image size-bucket, dup & non-contiguous ids
* docs: strengthen Recall changelog migration note
* docs+perf: Recall doctest example; dedupe-then-union micro-opt

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Jirka Borovec <6035284+Borda@users.noreply.github.com>
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: OpenAI Codex <codex@openai.com>
2026-08-03 20:57:05 +02:00
..
assets
classification
datasets feat(dataset): add LabelMe format support to DetectionDataset (#2299) 2026-06-25 17:07:39 +02:00
detection feat: Add soft Non-Max suppression (#1624) 2026-07-21 10:25:14 +02:00
how_to feat(cv2): remove OpenCV dependency (#2443) 2026-07-31 22:19:33 +02:00
javascripts docs: fix copy doctests without `>>>` and `...` by button & ctr+c (#2138) 2026-02-04 23:09:16 +09:00
keypoint fix: remaining review findings in dataset, docs, and tests (#2416) 2026-07-08 23:00:32 +02:00
metrics fix(docs): resolve review deprecation follow-ups (#2415) 2026-07-08 14:30:32 +02:00
notebooks Add cookbook for blurring faces with hosted api (#923) 2026-07-11 01:41:49 +02:00
stylesheets
theme Add cookbook for blurring faces with hosted api (#923) 2026-07-11 01:41:49 +02:00
utils feat: add image URL loader (#2372) 2026-07-28 21:24:55 +02:00
0d5d9799b1cc4a39825146388c6781eb.txt feat(docs): add GEO infrastructure for AI search visibility (#2224) 2026-04-21 11:40:44 +02:00
CNAME
_headers docs: improve SEO and GEO docs publishing (#2232) 2026-04-24 23:39:22 +02:00
about.md docs: improve SEO and GEO docs publishing (#2232) 2026-04-24 23:39:22 +02:00
assets.md chore: update `mdformat` hook arguments to disable wrapping (#2307) 2026-06-09 16:15:05 +02:00
changelog.md fix(metrics): track prediction-only classes in Recall (#2468) 2026-08-03 20:57:05 +02:00
code_of_conduct.md move CODE_OF_CONDUCT.md and CONTRIBUTING.md for improved accessibility (#2036) 2026-02-03 03:58:28 +01:00
contact.md docs: improve SEO and GEO docs publishing (#2232) 2026-04-24 23:39:22 +02:00
contributing.md move CODE_OF_CONDUCT.md and CONTRIBUTING.md for improved accessibility (#2036) 2026-02-03 03:58:28 +01:00
cookbooks.md fix(docs): expand llms.txt, add FAQ schema, author attribution to how… (#2231) 2026-04-23 18:33:14 +02:00
deprecated.md fix(docs): resolve review deprecation follow-ups (#2415) 2026-07-08 14:30:32 +02:00
faq.md feat(cv2): remove OpenCV dependency (#2443) 2026-07-31 22:19:33 +02:00
index.md chore: bump minimum Python to 3.10 (#2260) 2026-06-29 14:45:30 +02:00
license.md
llms-100k.txt feat(dataset): add LabelMe format support to DetectionDataset (#2299) 2026-06-25 17:07:39 +02:00
llms.full.txt chore: bump minimum Python to 3.10 (#2260) 2026-06-29 14:45:30 +02:00
llms.txt chore: bump minimum Python to 3.10 (#2260) 2026-06-29 14:45:30 +02:00
robots.txt docs: improve SEO and GEO docs publishing (#2232) 2026-04-24 23:39:22 +02:00
trackers.md fix(docs): resolve review deprecation follow-ups (#2415) 2026-07-08 14:30:32 +02:00