New Release: Ultralytics v8.4.8

:rocket: Ultralytics v8.4.8 is live β€” better end-to-end control for YOLO26 & YOLOv10 :white_check_mark:

Ultralytics v8.4.8 makes end-to-end (NMS-free) inference for YOLO26 (recommended) and YOLOv10 actually honor max_det and agnostic_nms β€” so you get predictable caps on detections and consistent class-agnostic behavior across predict, val, and exports :control_knobs::package:

If you run YOLO26 in end2end=True, this is a practical quality-of-life upgrade. :rocket:


:glowing_star: New Features (high impact)

:control_knobs: End2end now supports max_det + agnostic_nms (core change)

  • PR #23396 by @Y-T-G
    • Adds a safe set_head_attr(**kwargs) helper to set head/last-layer attributes like end2end, max_det, agnostic_nms :puzzle_piece:
    • When end2end=True, predict and val now push max_det + agnostic_nms into the model head, so these flags take effect :gear:
    • Adds agnostic_nms support inside the Detect head (impacts end-to-end top-k selection logic) :bullseye:
    • Export now carries agnostic_nms into the exported head for better parity between Python and deployment :package:

:books: Clearer end2end controls across CLI/docs

  • PR #23333 by @Y-T-G
    • Adds ability to override end2end mode (cleaner control surface) :receipt:

:bullseye: Why it matters (Purpose & Impact)

  • Predictable end-to-end outputs :brain:
    max_det now reliably limits results in end2end mode (no more β€œwhy didn’t it cap?” confusion).
  • Better class-agnostic behavior :broom:
    agnostic_nms becomes meaningful in end2end workflowsβ€”useful when classes overlap heavily or you want β€œbest boxes regardless of class”.
  • Closer parity between local and exported models :delivery_truck:
    Fewer surprises where Python and exported inference behave differently due to missing head settings.
  • Safer behavior across export targets :white_check_mark:
    Better handling for runtimes with limited operator support.

:hammer_and_wrench: Improvements & Reliability

:package: Export reliability

  • PR #23312 by @Laughing-q
    • Exporter auto-disables end2end for formats that don’t support required ops (rknn, ncnn, executorch, paddle, imx) and stores end2end in metadata :toolbox:

:card_index_dividers: YOLOE / YOLO-World training usability

  • PR #23427 by @ShuaiLYU
    • Supports multi-source data configs via YAML (and Path) :card_index_dividers:

:compass: Docs navigation & discovery


:bug: Bug Fixes & Stability


:technologist: Quick start

Update to v8.4.8:

pip install -U ultralytics

Example end-to-end inference controls (now honored :white_check_mark:):

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
results = model.predict(source="image.jpg", end2end=True, max_det=50, agnostic_nms=True)

:raising_hands: New contributor

Welcome @PT0X0E :tada: first contribution in PR #23369!


:magnifying_glass_tilted_right: Links & feedback

You can review the release details in the official Ultralytics v8.4.8 release page and browse changes in the full v8.4.7 β†’ v8.4.8 changelog comparison.

Tried v8.4.8 with YOLO26 end-to-end? Share results, edge cases, and export targets that matter to youβ€”feedback helps us keep behavior consistent across training, inference, and deployment :folded_hands: